Files
fiveq-website-2026/massiveedit/theme.js
T
2026-08-24 15:37:08 +08:00

47 lines
1.2 KiB
JavaScript

(function () {
var STORAGE_KEY = "massiveedit-theme-mode";
var MODES = ["auto", "light", "dark"];
function normalize(mode) {
return MODES.indexOf(mode) >= 0 ? mode : "auto";
}
function readMode() {
try {
return normalize(localStorage.getItem(STORAGE_KEY));
} catch (error) {
return "auto";
}
}
function applyMode(mode) {
var normalized = normalize(mode);
document.documentElement.setAttribute("data-theme", normalized);
try {
localStorage.setItem(STORAGE_KEY, normalized);
} catch (error) {
/* ignore */
}
updateButtons(normalized);
}
function updateButtons(mode) {
document.querySelectorAll("[data-theme-mode]").forEach(function (button) {
var active = button.getAttribute("data-theme-mode") === mode;
button.classList.toggle("active", active);
button.setAttribute("aria-pressed", active ? "true" : "false");
});
}
function bindControls() {
document.querySelectorAll("[data-theme-mode]").forEach(function (button) {
button.addEventListener("click", function () {
applyMode(button.getAttribute("data-theme-mode"));
});
});
}
applyMode(readMode());
document.addEventListener("DOMContentLoaded", bindControls);
})();