/
dstemnik
/
DSServices
Обзор
Документация
Войти
/
dstemnik
/
DSServices
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
staticfiles/admin/js/theme.js
51 строка
2 KB
Tem
first commit
03 дек 2025, 11:03
03 дек 2025, 11:03
8cd0ecb
Код
Авторство
О чём код?
'use strict'; { function setTheme(mode) { if (mode !== "light" && mode !== "dark" && mode !== "auto") { console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`); mode = "auto"; } document.documentElement.dataset.theme = mode; localStorage.setItem("theme", mode); } function cycleTheme() { const currentTheme = localStorage.getItem("theme") || "auto"; const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches; if (prefersDark) { // Auto (dark) -> Light -> Dark if (currentTheme === "auto") { setTheme("light"); } else if (currentTheme === "light") { setTheme("dark"); } else { setTheme("auto"); } } else { // Auto (light) -> Dark -> Light if (currentTheme === "auto") { setTheme("dark"); } else if (currentTheme === "dark") { setTheme("light"); } else { setTheme("auto"); } } } function initTheme() { // set theme defined in localStorage if there is one, or fallback to auto mode const currentTheme = localStorage.getItem("theme"); currentTheme ? setTheme(currentTheme) : setTheme("auto"); } window.addEventListener('load', function(_) { const buttons = document.getElementsByClassName("theme-toggle"); Array.from(buttons).forEach((btn) => { btn.addEventListener("click", cycleTheme); }); }); initTheme(); }