alexohneander-zola/static/js/themeSwitcher.min.js
welpo e1dfd2ea07
🐛 fix: properly initialise currentTheme
The `currentTheme` variable is now properly initialized when setting
the initial theme, which fixes the "extra click" issue observed when system preference
is `dark` and there's no saved theme in localStorage.

Also minifies the themeSwitcher.

Fixes #94
2023-07-25 00:40:45 +02:00

2 lines
615 B
JavaScript

const themeSwitcher=document.querySelector(".theme-switcher");let currentTheme=localStorage.getItem("theme")||document.documentElement.getAttribute("data-theme");function setTheme(e,t=!1){document.documentElement.setAttribute("data-theme",e),currentTheme=e,t&&localStorage.setItem("theme",e);t=new CustomEvent("themeChanged",{detail:{theme:e}});window.dispatchEvent(t)}function switchTheme(){setTheme("dark"===currentTheme?"light":"dark",!0)}themeSwitcher.addEventListener("click",switchTheme,!1),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",e=>{setTheme(e.matches?"dark":"light")});