Аудит стилей и план по Issue #97
Цель: выбор основной системы стилей (Tailwind vs SCSS) и документирование (часть #70). Соответствует Issue #97.
Статус: стратегия зафиксирована в styling.md (вариант A — Tailwind + DaisyUI). План актуализирован с учётом требований issue, документации в docs/develop/frontend и текущего состояния папки interface. Часть плана уже выполнена (см. styles-cleanup-audit.md); ниже — актуальное состояние и оставшиеся шаги.
1. Текущее состояние (после чистки)
1.1 Что подключено и откуда грузится
| Система | Где подключается | Версии / конфиг |
|---|---|---|
| Tailwind CSS | interface/src/app.css (@import "tailwindcss"), vite.config.ts (@tailwindcss/vite) |
tailwindcss ^4.1.11 |
| DaisyUI | app.css: @plugin "daisyui" (themes: corporate — default, business — prefers-dark) |
daisyui ^5.0.46 |
| Flowbite / flowbite-svelte | Удалены (заменены на DaisyUI tooltip/loading и Tabler) | — |
| Глобальный SCSS | +layout.svelte: import '$lib/styles/open-connect-main.scss' |
sass-embedded ^1.93.2 |
1.2 Структура SCSS (актуальная)
Точка входа: interface/src/lib/styles/open-connect-main.scss.
Подключает в main:
- base: _variables.scss, _mixins.scss, _animations.scss
- layout: _container.scss, _settings-grid.scss
- themes: _dark-theme.scss (пустой блок после миграции на DaisyUI), _responsive.scss
Подключаются только в компонентах через @use в <style lang="scss">:
- _setting-containers.scss — Wizard steps 1–7, SsvcSettings, OCSettings, TelegramSettings, ChangeStageModal
- _valve-table.scss — Wizard steps 3–7, ChangeStageModal
- _profile-manager.scss — ProfileManager
- _wizard.scss (views) — StartWizard, ChangeStageModal
Удалены (чистка по styles-cleanup-audit): _buttons.scss, _inputs.scss, _modals.scss, _tabs.scss. Стили кнопок, полей ввода, модалок и вкладок задаются в +layout.svelte (:global) и в компонентах.
Не подключаются ни в main, ни в Svelte (стили дублированы/перенесены в компоненты; при необходимости можно удалить отдельной задачей):
- _sensors-view.scss, _sensor-card.scss, _toggles.scss
1.3 Использование по типам файлов
- Svelte с Tailwind/DaisyUI в разметке: menu, login, wifi, system, user, часть страниц (классы
btn,btn-ghost,menu,rounded-box,bg-base-200,text-base-contentи т.д.). - Svelte с scoped SCSS: 33 файла с
<style lang="scss">. Подключают: base/variablesи/илиbase/mixins— ProfileEditor, Ssvc.svelte, oc/settings/Settings, oc/ssvc/Settings, SensorCard, Wizard steps, SsvcSettings, OCSettings, ValveParameters, +layout и др.setting-containers— Wizard steps, SsvcSettings, OCSettings, TelegramSettings, ChangeStageModalvalve-table— Wizard steps 3–7, ChangeStageModalprofile-manager— ProfileManagerviews/wizard— StartWizard, ChangeStageModal- DaisyUI в коде:
$lib/DaisyUiHelper.ts— SystemMetrics.svelte, BatteryMetrics.svelte (цвета темы для Chart.js). - Flowbite-svelte: удалён; замены — DaisyUI tooltip/loading, Tabler (unplugin-icons).
1.4 Дизайн-токены и общие переменные
- В app.css (
@layer base)::root—--primary-*,--glass-*,--blue-*,--red-*,--gray-*, тени, радиусы, z-index; алиасы для NumberInput/TimeInput (--border-color,--input-bg,--text-colorи т.д. через oklch(var(--b2)), var(--bc))); блок@media (prefers-color-scheme: dark)с--dark-*и переопределениями для полей ввода. - В SCSS:
_variables.scss— брейкпоинты (Tailwind-aligned). Миксины в_mixins.scss(glassmorphism, flex-center, dark-theme-color, compact-points и т.д.) используют CSS-переменные из app.css.
1.5 Пересечения и риски (актуально)
- Кнопки, модалки, вкладки, поля ввода: единственный источник стилей —
+layout.svelte(:global) и компоненты (в т.ч. _wizard.scss для модалок wizard); дублирующие SCSS-файлы удалены. - Тёмная тема: длинные селекторы в
_dark-theme.scssудалены; цвета переведены на семантику DaisyUI в компонентах и в _settings-grid, _setting-containers, _valve-table, _profile-manager, Ssvc.svelte. Файл _dark-theme оставлен с пустым@media (prefers-color-scheme: dark)для возможных будущих глобальных правок.
1.6 Документация
- frontend.md — стратегия (Tailwind + DaisyUI), описание SCSS-классов и миксинов, источники стилей после чистки (+layout, компоненты).
- styling.md — стратегия для нового кода, исключения (SCSS), общие переменные/миксины, Flowbite (удалён), ссылки на аудит.
- styles-cleanup-audit.md — выполненные задачи чистки и инструкции проверки.
- README — при необходимости можно добавить ссылку на docs/develop/frontend/styling.md.
2. Сводная таблица
| Аспект | Tailwind / DaisyUI | SCSS (глобальный + компонентный) |
|---|---|---|
| Точка входа | app.css, Vite plugin | open-connect-main.scss + @use в 33 компонентах |
| Дизайн-токены | app.css (:root + dark), семантика DaisyUI | breakpoints в _variables; миксины используют CSS vars из app.css |
| Кнопки / меню / карточки в UI | menu, login, страницы (DaisyUI) | Стили кнопок — +layout.svelte (:global); _buttons удалён |
| Формы, настройки, таблицы, wizard | — | setting-containers, valve-table, wizard, profile-manager (@use в компонентах) |
| Модалки | — | Компоненты (:global) + _wizard.scss; _modals удалён |
| Вкладки | — | Локально в oc/settings/Settings, oc/ssvc/Settings; _tabs удалён |
| Тёмная тема | DaisyUI business (prefers-dark), семантика в компонентах | _dark-theme — пустой блок; переменные в app.css |
| Документация | frontend.md, styling.md | frontend.md (SCSS + стратегия), styles-cleanup-audit.md |
3. План действий (актуализированный)
Фаза 1: Решение и документ стратегии (по Issue #97) — выполнено
- [x] Принять решение: основа — вариант A (Tailwind + DaisyUI) с постепенной миграцией существующего SCSS.
- [x] Зафиксировать в репозитории: создан styling.md с правилами для нового кода, исключениями (SCSS) и подключением общих миксинов/переменных.
- [x] Ссылка на стратегию добавлена в frontend.md.
Фаза 2: Чистка и уточнения — частично выполнено
Выполнено (подробно в styles-cleanup-audit.md):
- [x] Удалены неиспользуемые SCSS: _buttons, _modals, _tabs, _inputs. Стили кнопок, модалок, вкладок и полей — в +layout.svelte и компонентах.
- [x] Тёмная тема переведена на семантику DaisyUI; длинные селекторы убраны из _dark-theme.scss (файл оставлен с пустым блоком).
- [x] Flowbite-svelte удалён; везде DaisyUI loading и Tabler.
- [x] Документация обновлена: frontend.md, styling.md, styles-cleanup-audit.md.
Оставшиеся задачи (по желанию / отдельным PR):
- [x] Зафиксировать в open-connect-main.scss актуальный список подключаемых файлов в комментариях (base, layout, themes, animations; без удалённых _buttons, _modals, _tabs, _inputs). Синхронизировано с п. 1.2 этого документа.
- [x] Неподключаемые модули _sensors-view, _sensor-card, _toggles: явно описано в комментариях в open-connect-main.scss и в styles-cleanup-audit.md (подраздел 1.1) — намеренно не подключаются; при необходимости файлы можно удалить отдельной задачей после проверки внешнего вида.
- [x] README / docs index: добавлена ссылка на стратегию стилей: в корневом README.md (раздел «Документация для разработчиков») и в docs/index.md (блок «Документация для разработчиков»).
4. Вопросы к команде / мейнтейнеру (для справки)
Решения уже приняты и зафиксированы в styling.md и styles-cleanup-audit.md:
- Основа: вариант A (Tailwind + DaisyUI); новый код — на них, существующий SCSS — постепенная миграция.
- Flowbite-svelte: удалён; используются DaisyUI и Tabler.
- Дизайн-токены: переменные в app.css, брейкпоинты в _variables.scss, миксины в _mixins.scss.
При дальнейшей миграции экранов на Tailwind/DaisyUI можно ориентироваться на приоритеты из styles-cleanup-audit (П.3): общие правила → wizard → OC Settings → телеметрия.
5. Критерии приёмки (из Issue #97)
- [x] Стратегия стилей зафиксирована в репозитории (документ styling.md + ссылка в frontend.md).
- [x] Разработчикам понятно, как писать стили в новом коде (основа Tailwind/DaisyUI, исключения для SCSS, общие миксины/переменные — см. styling.md).
Итог: Issue #97 можно считать выполненным по критериям приёмки. Детальный аудит и выполненные шаги чистки — в styles-cleanup-audit.md. Оставшиеся опциональные задачи (комментарии в open-connect-main, судьба _sensors-view/_sensor-card/_toggles, ссылка в README) — в п. 3 выше.