Olddevs UI3.38.0
Рецепты

Свой бренд и тема

Акцент, бренд кита и свой бренд одним блоком CSS — Редактор и лист paper перекрашиваются без правки компонентов.

Цвета Редактора — токены кита. Тема, акцент и бренд — атрибуты на <html>, поэтому продукт перекрашивает всё сразу, не трогая ни одного компонента.

Переключайте варианты — вместе с Редактором перекрасится весь этот сайт: он тоже сидит на токенах кита. Светлую и тёмную тему переключает кнопка внизу меню слева.

Как устроено

  • Три оси на <html>: data-theme (dark, light, dim), data-accent (blue, violet) и data-brand. Бренд отменяет ось акцента целиком.
  • Бренд — один блок CSS: свои примитивы --od-acme-* и их присвоение ролям (--accent, --accent-soft, --focus-ring, --selection). Примитивы кита --od-* не переопределяются.
  • Светлой теме — свой блок. --accent-strong читается на подложке, и в светлой теме ему нужен тёмный шаг, а --accent-on-inverse — наоборот, светлый.
  • Блоки бренда стоят после стилей кита: у :root[data-brand] и :root[data-accent] одна специфичность, побеждает тот, что ниже.
  • Лист paper остаётся светлым в любой теме, а акцент на нём — заливка темы приложения: она держит контраст на белом у любого бренда.

Бренд, не прошедший проверку контраста, — бренд, которого нет. В ките это npm run contrast; проверьте свои цвета так же, прежде чем выпускать.

На этой странице