mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 13:36:36 +00:00
style: format docs markdown
This commit is contained in:
+25
-10
@@ -4,30 +4,44 @@
|
||||
|
||||
## 1. Что получается
|
||||
|
||||
Переключатель light/dark в шапке рядом с языковым. Выбор в localStorage (`theme`), первый визит — по `prefers-color-scheme`. Тёмная палитра — переопределение токенов селектором `[data-theme='dark']`; компоненты не правятся.
|
||||
Переключатель light/dark в шапке рядом с языковым. Выбор в localStorage
|
||||
(`theme`), первый визит — по `prefers-color-scheme`. Тёмная палитра —
|
||||
переопределение токенов селектором `[data-theme='dark']`; компоненты не
|
||||
правятся.
|
||||
|
||||
## 2. Решения
|
||||
|
||||
- Два состояния, без «авто»: ключ хранит только явный выбор, отсутствие ключа = системная тема.
|
||||
- Анти-вспышка: инлайн-скрипт в `app.html` до гидрации ставит `data-theme` из localStorage или `matchMedia`; пререндеренная разметка остаётся светлой.
|
||||
- `color-scheme: dark` на корне — нативные контролы (input[type=color], range, select, скроллбары) темнеют без правок.
|
||||
- Модуль `theme.svelte.ts` по образцу locale: состояние, персист, применение атрибута. Стартовую установку делает скрипт из `app.html`, модуль синхронизирует runes-состояние после гидрации.
|
||||
- Два состояния, без «авто»: ключ хранит только явный выбор, отсутствие ключа =
|
||||
системная тема.
|
||||
- Анти-вспышка: инлайн-скрипт в `app.html` до гидрации ставит `data-theme` из
|
||||
localStorage или `matchMedia`; пререндеренная разметка остаётся светлой.
|
||||
- `color-scheme: dark` на корне — нативные контролы (input[type=color], range,
|
||||
select, скроллбары) темнеют без правок.
|
||||
- Модуль `theme.svelte.ts` по образцу locale: состояние, персист, применение
|
||||
атрибута. Стартовую установку делает скрипт из `app.html`, модуль
|
||||
синхронизирует runes-состояние после гидрации.
|
||||
|
||||
## 3. Палитра
|
||||
|
||||
- Переопределяем: `--bg`, `--surface`, `--border`, `--text`, `--text-muted`.
|
||||
- Акцент `#2563eb` не меняется; `--accent-hover` — светлее для тёмного фона.
|
||||
- `--danger` осветлить для читаемости.
|
||||
- `--check-a`/`--check-b` шахматки — приглушённые серые: паттерн прозрачности остаётся узнаваемым, но не слепит.
|
||||
- `--check-a`/`--check-b` шахматки — приглушённые серые: паттерн прозрачности
|
||||
остаётся узнаваемым, но не слепит.
|
||||
- `--shadow-card` — почти чёрная с низкой альфой вместо синей.
|
||||
- Все `color-mix(… var(--surface))` пересчитаются сами — проверить визуально легенды, recalc-бейдж, drag-оверлеи.
|
||||
- Все `color-mix(… var(--surface))` пересчитаются сами — проверить визуально
|
||||
легенды, recalc-бейдж, drag-оверлеи.
|
||||
|
||||
## 4. Этапы и проверки
|
||||
|
||||
Каждый этап заканчивается зелёными test/check/build и ревью.
|
||||
|
||||
- **A. Инфраструктура** — `theme.svelte.ts`, скрипт в `app.html`, переключатель в шапке, черновая тёмная палитра. Тесты: персист выбора, игнор мусора в localStorage, применение атрибута (стаб document).
|
||||
- **B. Палитра** — выверка значений: герой, каталог, страница инструмента, цепочка, баннер ошибки, маска, текстовые инструменты; фокус-ринги и hover; обе локали.
|
||||
- **A. Инфраструктура** — `theme.svelte.ts`, скрипт в `app.html`, переключатель
|
||||
в шапке, черновая тёмная палитра. Тесты: персист выбора, игнор мусора в
|
||||
localStorage, применение атрибута (стаб document).
|
||||
- **B. Палитра** — выверка значений: герой, каталог, страница инструмента,
|
||||
цепочка, баннер ошибки, маска, текстовые инструменты; фокус-ринги и hover; обе
|
||||
локали.
|
||||
|
||||
## 5. Смоук
|
||||
|
||||
@@ -43,4 +57,5 @@ Grep: ни одного цвета вне токенов в компонента
|
||||
|
||||
## 7. Не делаем
|
||||
|
||||
Три позиции в переключателе; пользовательские цветовые схемы; автосмену по времени суток; отдельную тему для превью изображений.
|
||||
Три позиции в переключателе; пользовательские цветовые схемы; автосмену по
|
||||
времени суток; отдельную тему для превью изображений.
|
||||
|
||||
Reference in New Issue
Block a user