Files
marketplaces/docs/platform/03-theme-system.md
sdarbinyan 10251f2fc6
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
docs
2026-07-05 04:23:47 +04:00

69 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 03. Тема и дизайн-система
## Назначение
Тема задает визуальные токены бренда tenant: цвета, типографику, радиусы, тени и базовые параметры визуальной консистентности.
## Поведение системы
- Theme токены загружаются из bootstrap.json.
- Frontend применяет токены через CSS-переменные.
- Компоненты и виджеты используют только токены, а не hardcoded brand-значения.
## Обязательные свойства JSON
- theme.themeId
- theme.palette.primary
- theme.palette.textPrimary
- theme.palette.backgroundPrimary
- theme.typography.primaryFontFamily
- theme.typography.baseFontSize
## Опциональные свойства JSON
- theme.palette.secondary
- theme.palette.accent
- theme.borderRadiusScale
- theme.shadows
- theme.iconSet
- theme.mode
## Строгие правила
- Нельзя хардкодить tenant-цвета в компонентах.
- Нельзя задавать типографику вне theme токенов для брендовых элементов.
- Нельзя смешивать несколько themeId одновременно для одной витрины.
- При отсутствии опционального токена используется системный fallback.
## Пример theme JSON
```json
{
"theme": {
"themeId": "novo-light",
"mode": "light",
"palette": {
"primary": "#2F6E5D",
"secondary": "#8FA9A2",
"accent": "#B9D9CF",
"textPrimary": "#1F322D",
"backgroundPrimary": "#FFFFFF"
},
"typography": {
"primaryFontFamily": "DM Sans, sans-serif",
"headingFontFamily": "DM Sans, sans-serif",
"baseFontSize": 16
},
"borderRadiusScale": {
"sm": "8px",
"md": "12px",
"lg": "16px"
}
}
}
```
## Ответственность Frontend
- Маппить токены в CSS custom properties.
- Применять fallback токены для опциональных полей.
- Обеспечивать визуальную консистентность между страницами и виджетами.
## Ответственность Backend
- Выдавать валидный theme объект для каждого tenant.
- Контролировать полноту обязательных токенов.
- Поддерживать совместимость theme-контракта между версиями.