53 lines
1.4 KiB
JavaScript
53 lines
1.4 KiB
JavaScript
/*
|
|
* Set Theme (dark mode + color theme)
|
|
*
|
|
*/
|
|
|
|
let lHtml = document.documentElement;
|
|
let rememberDarkMode = !lHtml.classList.contains("dark-custom-defined");
|
|
let rememberTheme = lHtml.classList.contains("remember-theme");
|
|
|
|
if (rememberDarkMode) {
|
|
// Set Dark mode
|
|
let darkModePreference = localStorage.getItem("dashmixDarkMode");
|
|
|
|
if (darkModePreference === "on") {
|
|
lHtml.classList.add("dark");
|
|
} else if (darkModePreference === "off") {
|
|
lHtml.classList.remove("dark");
|
|
} else if (darkModePreference === "system") {
|
|
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
|
lHtml.classList.add("dark");
|
|
} else {
|
|
lHtml.classList.remove("dark");
|
|
}
|
|
}
|
|
}
|
|
|
|
if (rememberTheme) {
|
|
let colorTheme = localStorage.getItem("dashmixColorTheme");
|
|
|
|
// Set Color Theme
|
|
if (colorTheme) {
|
|
let themeEl = document.getElementById("css-theme");
|
|
|
|
if (themeEl && colorTheme === "default") {
|
|
themeEl.parentNode.removeChild(themeEl);
|
|
} else {
|
|
if (themeEl) {
|
|
themeEl.setAttribute("href", colorTheme);
|
|
} else {
|
|
let themeLink = document.createElement("link");
|
|
|
|
themeLink.id = "css-theme";
|
|
themeLink.setAttribute("rel", "stylesheet");
|
|
themeLink.setAttribute("href", colorTheme);
|
|
|
|
document
|
|
.getElementById("css-main")
|
|
.insertAdjacentElement("afterend", themeLink);
|
|
}
|
|
}
|
|
}
|
|
}
|