typst4ei 2.0.1

The Typst4EI building and serving tool/cli
/*!
 * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
 * Copyright 2011-2025 The Bootstrap Authors
 * Licensed under the Creative Commons Attribution 3.0 Unported License.
 */

(() => {
    'use strict'

    const getStoredTheme = () => localStorage.getItem('theme')
    const setStoredTheme = theme => localStorage.setItem('theme', theme)

    const getPreferredTheme = () => {
	const storedTheme = getStoredTheme()
	if (storedTheme) {
	    return storedTheme
	}

	return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
    }

    const setTheme = theme => {
	if (theme === 'auto') {
	    document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'))
	} else {
	    document.documentElement.setAttribute('data-bs-theme', theme)
	}
    }

    const toggleLogo = (theme) => {
	if (theme === 'light') {
	    document.getElementById('logo-dark').classList.add('d-none')
	    document.getElementById('logo-light').classList.remove('d-none')
	} else if (theme === 'dark') {
	    document.getElementById('logo-dark').classList.remove('d-none')
	    document.getElementById('logo-light').classList.add('d-none')
	}
    }

    setTheme(getPreferredTheme())
    toggleLogo(getPreferredTheme())

    window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
	const storedTheme = getStoredTheme()
	if (storedTheme !== 'light' && storedTheme !== 'dark') {
	    setTheme(getPreferredTheme())
	    toggleLogo(getPreferredTheme());
	}
    })
})()