Mercurial
diff mrjunejune/src/index.js @ 84:bcc76a156aea
Updated to be called src instead of pages.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Thu, 01 Jan 2026 13:01:10 -0800 |
| parents | mrjunejune/pages/index.js@1ded13720541 |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mrjunejune/src/index.js Thu Jan 01 13:01:10 2026 -0800 @@ -0,0 +1,50 @@ +const THEME_STORAGE_KEY = 'theme-preference'; +// Get stored preference or detect system preference +function getThemePreference() +{ + const stored = localStorage.getItem(THEME_STORAGE_KEY); + if (stored) { + return stored; + } + return 'auto'; +} + +function applyTheme(preference) +{ + const root = document.documentElement; + + if (preference === 'light') { + root.classList.remove('dark', 'auto'); + root.classList.add('light-mode'); + } else if (preference === 'dark') { + root.classList.remove('light-mode', 'auto'); + root.classList.add('dark'); + } else { + // Auto - remove manual overrides and let CSS media query handle it + root.classList.remove('light-mode', 'dark'); + root.classList.add('auto'); + } +} + +(function() { + const currentPreference = getThemePreference(); + applyTheme(currentPreference); +})(); + +/* Toggle lights auto and dark */ +const toggle = document.querySelector('#themeToggle'); +toggle.addEventListener('click', function() { + let preference = getThemePreference(); + + // Cycle through: auto -> light -> dark -> auto + if (preference === 'auto') { + preference = 'light'; + } else if (preference === 'light') { + preference = 'dark'; + } else { + preference = 'auto'; + } + + localStorage.setItem(THEME_STORAGE_KEY, preference); + applyTheme(preference); +});