Перейти к содержанию

Веб-реализация брендирования

При инициализации приложения (в bootstrap.module.ts) происходит загрузка файла ui.json. Далее с помощью сервиса ThemeService происходит генерация и установка в :root CSS переменных. Названия переменных соответствуют названиям в файле ui.json и макетах

При переключении темы переменные перезаписываются соответствующим цветом.

Использование переменных

Текст

Для основного нецветного текста используются следующие переменные:

  • var(--onsurface-primary) — чёрный текст.

  • var(--onsurface-secondary) — серый текст.

  • var(--onsurface-tertiary) — цвет для подсказок (плейсхолдеров).

  • var(--container-primary) — цвет фона.

  • var(--oncontainer-primary) — цвет текста на фоне.

Обратите внимание: переменная с приставкой on — это всегда цвет текста.

Разделители и рамки

Для рамок и разделителей используются переменные, которые начинаются с --outline.

  • var(--outline-base)

  • var(--outline-shallow)

  • var(--outline-deep)

Transition

Для плавности анимаций используется transition. Для этого созданы фронтовые переменные (не из ui.json):

  • --vh-transition-duration

  • --vh-transition-timing-function

  • --vh-transition-all — плавность перехода для всего

  • --vh-transition-bg — плавность только для фона

  • --vh-transition-colors — плавность для перехода цветов (color, background-color, border-color)

ℹ️ Если у элемента при изменении состояния меняются размеры или отступы, то --vh-transition-all может работать некорректно. Рекомендуется использовать конкретные свойства.

Переменные для состояний и модификаторы

Если в ui.json для цвета приходит shadowMode, то для этого цвета будет сгенерирована переменная тени с таким же названием, но с префиксом --shadow , например: var(--surface-one) — цвет карточки, var(--shadow-surface-one) — тень для этой карточки и т.д.

Для каждого цвета генерируется переменная для состояний hover, click, selected с соответствующим модификатором. Переменная создается с помощью css-функции color-mix().

color-mix(in oklab, color1, color2 transparency)

  • color1 — цвет для которого создается цвет состояния

  • color2 — цвет соответствующего состояния из ui.json в HEX.

Для этого цвета созданы переменные --states-(hover, click, selected)-hex. Эти переменные используется только для создания микса, использовать в коде их не нужно.

transparency — прозрачность в процентах для состояния из ui.json. Например, если переменная для кнопки var(--base-primary), то состояния будут:

var(--base-primary-hover)

var(--base-primary-click)

var(--base-primary-selected)

В некоторых случаях переменные для состояний не получится использовать. Например: нужен цвет наведения на элемент для кнопки "+" у пункта меню "Сценарии", когда пункт меню сам в состоянии hover.

В таких случаях для кнопки "+" нужно наложить фон с переменной: var(--states-hover-hex-alpha).

Обратите внимание: в данном примере фон необходимо именно наложить поверх кнопки, а не задать фон самой кнопке — в таком случае получится другой цвет.

Отступы и скругления границ блока

В ui.json приходят токены для spacing и radius. Из них генерируются переменные для отступов и скруглений.

Значения формируются умножением базового значения на значение multiplier. Базовым значением считается space-100 и radius-100 сейчас оно 8px.