46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
window.onload = init;
|
|
|
|
var darkMode = document.getElementById("dark-mode-switch");
|
|
|
|
var darkModeIcon = "darkModeIcon";
|
|
|
|
function init() {
|
|
if (darkMode) {
|
|
initTheme();
|
|
darkMode.addEventListener("change", function () {
|
|
resetTheme();
|
|
});
|
|
}
|
|
}
|
|
|
|
function initTheme() {
|
|
var darkThemeSelected =
|
|
window.matchMedia("(prefers-color-scheme: dark)").matches ||
|
|
(localStorage.getItem("dark-mode") !== null &&
|
|
localStorage.getItem("dark-mode") === "dark");
|
|
|
|
darkMode.checked = darkThemeSelected;
|
|
|
|
darkThemeSelected
|
|
? document.body.setAttribute("data-theme", "dark")
|
|
: document.body.removeAttribute("data-theme");
|
|
|
|
darkThemeSelected
|
|
? document.getElementById(darkModeIcon).classList.add("bi-moon")
|
|
: document.getElementById(darkModeIcon).classList.add("bi-sun");
|
|
}
|
|
|
|
function resetTheme() {
|
|
if (darkMode.checked) {
|
|
document.body.setAttribute("data-theme", "dark");
|
|
localStorage.setItem("dark-mode", "dark");
|
|
document.getElementById(darkModeIcon).classList.remove("bi-sun");
|
|
document.getElementById(darkModeIcon).classList.add("bi-moon");
|
|
} else {
|
|
document.body.removeAttribute("data-theme");
|
|
localStorage.removeItem("dark-mode");
|
|
document.getElementById(darkModeIcon).classList.remove("bi-moon");
|
|
document.getElementById(darkModeIcon).classList.add("bi-sun");
|
|
}
|
|
}
|