feat: split logo scale by viewport
This commit is contained in:
@@ -115,7 +115,8 @@ Email-шаблоны берут тот же бренд из настроек в
|
||||
"font_sans": "Inter, system-ui, sans-serif",
|
||||
"font_logo": "Inter, system-ui, sans-serif",
|
||||
"font_mono": "\"JetBrains Mono\", \"Fira Code\", monospace",
|
||||
"home_logo_scale": 120,
|
||||
"home_logo_scale_desktop": 120,
|
||||
"home_logo_scale_mobile": 95,
|
||||
"admin_bg": "#05040a",
|
||||
"admin_surface": "#11101c",
|
||||
"admin_surface_2": "#090815",
|
||||
@@ -131,52 +132,54 @@ Email-шаблоны берут тот же бренд из настроек в
|
||||
|
||||
Поля верхнего уровня:
|
||||
|
||||
| Поле | Назначение |
|
||||
| --- | --- |
|
||||
| `key` | Уникальный ключ темы, 1-64 символа: латиница, цифры, `_` и `-`. Если ключ не указан, берется имя папки. |
|
||||
| `names` | Локализованные названия, например `ru` и `en`. |
|
||||
| `enabled` | Показывать тему пользователям. Отключенная тема не попадает в публичный каталог. |
|
||||
| `default` | Делает тему выбранной по умолчанию, если `WEBAPP_DEFAULT_THEME` не задан. |
|
||||
| Поле | Назначение |
|
||||
| -------------------- | ------------------------------------------------------------------------------------------------------- |
|
||||
| `key` | Уникальный ключ темы, 1-64 символа: латиница, цифры, `_` и `-`. Если ключ не указан, берется имя папки. |
|
||||
| `names` | Локализованные названия, например `ru` и `en`. |
|
||||
| `enabled` | Показывать тему пользователям. Отключенная тема не попадает в публичный каталог. |
|
||||
| `default` | Делает тему выбранной по умолчанию, если `WEBAPP_DEFAULT_THEME` не задан. |
|
||||
| `use_primary_accent` | Если `true`, тема может получить accent из настройки внешнего вида, когда в `tokens.accent` ничего нет. |
|
||||
| `use_in_admin` | Если `false`, пользовательская часть использует тему, но админка откатывается на `dark`. |
|
||||
| `css_file` | CSS-файл внутри папки темы. Может быть `style.css` или вложенный путь вроде `css/theme.css`. |
|
||||
| `assets_version` | Версия ассетов. Для встроенных тем используется для обновления старых файлов в `data/themes`. |
|
||||
| `tokens` | Дизайн-токены, которые превращаются в CSS-переменные на `.app-shell`. |
|
||||
| `use_in_admin` | Если `false`, пользовательская часть использует тему, но админка откатывается на `dark`. |
|
||||
| `css_file` | CSS-файл внутри папки темы. Может быть `style.css` или вложенный путь вроде `css/theme.css`. |
|
||||
| `assets_version` | Версия ассетов. Для встроенных тем используется для обновления старых файлов в `data/themes`. |
|
||||
| `tokens` | Дизайн-токены, которые превращаются в CSS-переменные на `.app-shell`. |
|
||||
|
||||
## Токены
|
||||
|
||||
Поддерживаемые токены:
|
||||
|
||||
| Токен | CSS-переменная | Что меняет |
|
||||
| --- | --- | --- |
|
||||
| `color_scheme` | `color-scheme` | Нативная светлая/темная схема браузера: `dark` или `light`. |
|
||||
| `style_preset` | CSS-класс пресета | Сейчас `win95`/`windows95` добавляет `theme-preset-win95`; остальные значения не дают специального класса. |
|
||||
| `accent` | `--accent` | Главный акцент: активные элементы, кнопки, прогресс, фокус. Только hex `#RGB` или `#RRGGBB`. |
|
||||
| `bg` | `--bg` | Основной фон приложения. |
|
||||
| `panel` | `--panel` | Основные карточки и поверхности. |
|
||||
| `panel_2` | `--panel-2` | Вторичные поверхности. |
|
||||
| `panel_3` | `--panel-3` | Поверхности повышенной вложенности, dropdown/popover. |
|
||||
| `border` | `--border` | Обычные границы. |
|
||||
| `border_strong` | `--border-strong` | Усиленные границы и hover-состояния. |
|
||||
| `text` | `--text` | Основной текст. |
|
||||
| `muted` | `--muted` | Вторичный текст. |
|
||||
| `dim` | `--dim` | Еще более тихий текст и служебные подписи. |
|
||||
| `danger` | `--danger` | Ошибки и опасные действия. |
|
||||
| `blue` | `--blue` | Синий вспомогательный цвет. |
|
||||
| `radius` | `--radius` | Базовый радиус карточек, кнопок и контролов. |
|
||||
| `font_sans` | `--font-sans` | Основной шрифт интерфейса. |
|
||||
| `font_logo` | `--font-logo` | Шрифт бренда и заголовка. |
|
||||
| `font_mono` | `--font-mono` | Моноширинный шрифт. |
|
||||
| `home_logo_scale` | `--home-logo-scale` | Масштаб логотипа на главной и входе, от `50` до `300` процентов. |
|
||||
| `admin_bg` | `--admin-bg` | Фон админ-панели. |
|
||||
| `admin_surface` | `--admin-surface` | Основные карточки админки. |
|
||||
| `admin_surface_2` | `--admin-surface-2` | Вторичные поверхности админки. |
|
||||
| `admin_elev` | `--admin-elev` | Elevated-поверхности админки. |
|
||||
| `admin_border` | `--admin-border` | Границы админки. |
|
||||
| `admin_border_strong` | `--admin-border-strong` | Усиленные границы админки. |
|
||||
| `admin_text` | `--admin-text` | Основной текст админки. |
|
||||
| `admin_muted` | `--admin-muted` | Вторичный текст админки. |
|
||||
| `admin_dim` | `--admin-dim` | Тихие подписи админки. |
|
||||
| Токен | CSS-переменная | Что меняет |
|
||||
| ------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
||||
| `color_scheme` | `color-scheme` | Нативная светлая/темная схема браузера: `dark` или `light`. |
|
||||
| `style_preset` | CSS-класс пресета | Сейчас `win95`/`windows95` добавляет `theme-preset-win95`; остальные значения не дают специального класса. |
|
||||
| `accent` | `--accent` | Главный акцент: активные элементы, кнопки, прогресс, фокус. Только hex `#RGB` или `#RRGGBB`. |
|
||||
| `bg` | `--bg` | Основной фон приложения. |
|
||||
| `panel` | `--panel` | Основные карточки и поверхности. |
|
||||
| `panel_2` | `--panel-2` | Вторичные поверхности. |
|
||||
| `panel_3` | `--panel-3` | Поверхности повышенной вложенности, dropdown/popover. |
|
||||
| `border` | `--border` | Обычные границы. |
|
||||
| `border_strong` | `--border-strong` | Усиленные границы и hover-состояния. |
|
||||
| `text` | `--text` | Основной текст. |
|
||||
| `muted` | `--muted` | Вторичный текст. |
|
||||
| `dim` | `--dim` | Еще более тихий текст и служебные подписи. |
|
||||
| `danger` | `--danger` | Ошибки и опасные действия. |
|
||||
| `blue` | `--blue` | Синий вспомогательный цвет. |
|
||||
| `radius` | `--radius` | Базовый радиус карточек, кнопок и контролов. |
|
||||
| `font_sans` | `--font-sans` | Основной шрифт интерфейса. |
|
||||
| `font_logo` | `--font-logo` | Шрифт бренда и заголовка. |
|
||||
| `font_mono` | `--font-mono` | Моноширинный шрифт. |
|
||||
| `home_logo_scale_desktop` | `--home-logo-scale-desktop` | Масштаб логотипа на desktop layout, от `50` до `300` процентов. |
|
||||
| `home_logo_scale_mobile` | `--home-logo-scale-mobile` | Масштаб логотипа на mobile layout, от `50` до `300` процентов. |
|
||||
| `home_logo_scale` | `--home-logo-scale` | Legacy fallback для старых тем; используется, если desktop/mobile token не задан. |
|
||||
| `admin_bg` | `--admin-bg` | Фон админ-панели. |
|
||||
| `admin_surface` | `--admin-surface` | Основные карточки админки. |
|
||||
| `admin_surface_2` | `--admin-surface-2` | Вторичные поверхности админки. |
|
||||
| `admin_elev` | `--admin-elev` | Elevated-поверхности админки. |
|
||||
| `admin_border` | `--admin-border` | Границы админки. |
|
||||
| `admin_border_strong` | `--admin-border-strong` | Усиленные границы админки. |
|
||||
| `admin_text` | `--admin-text` | Основной текст админки. |
|
||||
| `admin_muted` | `--admin-muted` | Вторичный текст админки. |
|
||||
| `admin_dim` | `--admin-dim` | Тихие подписи админки. |
|
||||
|
||||
Если `css_file` не задан, интерфейс полностью строится на токенах и общих стилях. Если `css_file` задан, токены все равно применяются первыми, а CSS темы может уточнить или полностью переопределить внешний вид.
|
||||
|
||||
@@ -255,7 +258,8 @@ CSS можно писать для пользовательской части
|
||||
content: "";
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background: url("/webapp-theme-assets/neon/icons/spark.png") center / contain no-repeat;
|
||||
background: url("/webapp-theme-assets/neon/icons/spark.png") center / contain
|
||||
no-repeat;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -303,7 +307,7 @@ CSS можно писать для пользовательской части
|
||||
|
||||
7. Подберите accent и масштаб логотипа.
|
||||
|
||||
В админке можно менять accent и `home_logo_scale` без ручного редактирования JSON. При сохранении backend перепишет `theme.json` в `WEBAPP_THEMES_DIR`, выставит ровно один `default` и сбросит кеш публичных настроек.
|
||||
В админке можно менять accent, `home_logo_scale_desktop` и `home_logo_scale_mobile` без ручного редактирования JSON. При сохранении backend перепишет `theme.json` в `WEBAPP_THEMES_DIR`, выставит ровно один `default` и сбросит кеш публичных настроек. Старый `home_logo_scale` сохраняется как fallback для уже существующих тем.
|
||||
|
||||
8. Добавьте `style.css`, если токенов мало.
|
||||
|
||||
@@ -330,7 +334,6 @@ CSS можно писать для пользовательской части
|
||||
11. Сделайте тему дефолтной.
|
||||
|
||||
Есть два способа:
|
||||
|
||||
- в админке выбрать тему и сохранить;
|
||||
- указать `WEBAPP_DEFAULT_THEME=neon` в `.env`, если нужен жесткий override на уровне окружения.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user