alexohneander-zola/static/js/themeSwitcher.min.js
Almost-Senseless-Coder 2eaee6557c
🌐 fix(theme-switcher): properly translate aria-label (#192)
Co-authored-by: Tim Böttcher <tim.boettcher2@rwth-aachen.de>
Co-authored-by: welpo <welpo@users.noreply.github.com>
2023-10-04 12:41:31 +02:00

2 lines
856 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;let r="dark"===e?"true":"false";themeSwitcher.setAttribute("aria-pressed",r),t&&localStorage.setItem("theme",e);const h=new CustomEvent("themeChanged",{detail:{theme:e}});window.dispatchEvent(h)}function switchTheme(){setTheme("dark"===currentTheme?"light":"dark",!0)}themeSwitcher.addEventListener("click",switchTheme,!1),themeSwitcher.setAttribute("role","button");let togglePressed="dark"===currentTheme?"true":"false";themeSwitcher.setAttribute("aria-pressed",togglePressed),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",(e=>{setTheme(e.matches?"dark":"light")}));