Задача 038: тёмная тема UI

Все цвета — CSS-переменные; тёмная палитра по prefers-color-scheme (режим «авто»)
и принудительно через data-theme; светлая тема не изменилась. Переключатель —
пиктограмма в шапке (авто / светлая / тёмная), выбор в localStorage; theme.js ставит
тему до отрисовки CSS (без вспышки, без ослабления CSP). QR 2FA на белой подложке.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ayurishchevandClaude Opus 5.5 committed 2026-09-27 17:44:48 +03:00
1 parent d3495fb077
commit a6e70ffd1a
7 files changed
+221 -47

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
// изменение 038: применяет сохранённый выбор темы до отрисовки CSS, чтобы избежать вспышки светлой темы.
// Подключается синхронно в <head> до styles.css. Инлайн-скрипт запрещён CSP (default-src 'self'), поэтому — отдельный файл.
// Нет значения в localStorage — тема остаётся «авто» (следует prefers-color-scheme через styles.css), атрибут не ставится.
(function () {
try {
var t = localStorage.getItem("ipam.theme");
if (t === "light" || t === "dark") document.documentElement.setAttribute("data-theme", t);
} catch (e) {
// localStorage недоступен (приватный режим и т.п.) — тема по умолчанию: авто по системе
}
})();