0Pricing
React Academy · Урок

Архитектура токенов для нескольких тем и брендов

Организуйте токены по уровням (примитивному, семантическому и компонентному), чтобы поддерживать светлую и тёмную темы, а также темы нескольких брендов

«Архитектура токенов для нескольких тем и брендов» — бесплатный урок React Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Тема и бренд

Тема изменяет цветовой режим одного и того же бренда — например, добавляет светлую и тёмную версии одного продукта. Бренд — это другая визуальная идентичность: одни и те же компоненты дизайн-системы отображаются с разными цветами, типографикой и отступами для разных продуктов или клиентов. В обоих случаях используется одна архитектура токенов, но на разных уровнях абстракции.

Слой примитивных токенов

Примитивные токены — это полная палитра исходных значений, доступных системе. В неё входят все оттенки цветов (color-blue-50–color-blue-900), все единицы отступов и все размеры шрифта. Примитивные токены никогда не используются непосредственно в компонентах — на них ссылаются только семантические токены. Палитра определяется один раз и используется всеми темами и брендами.

Слой семантических токенов

Семантические токены выражают назначение: color-background-page, color-text-primary, color-action-primary. Каждый семантический токен ссылается на значение примитивного токена, подходящее для текущей темы. Компоненты создаются исключительно на основе семантических токенов. Именно на этом уровне происходит темизация.

Семантические соответствия светлой темы

В светлой теме color-background-page ссылается на color-white, color-text-primary — на color-gray-900, а color-action-primary — на color-blue-500. Эти соответствия определяются в файле токенов для конкретной темы, который переопределяет семантический слой в светлом контексте.

Семантические соответствия тёмной темы

В тёмной теме color-background-page ссылается на color-gray-950, color-text-primary — на color-gray-50, а color-action-primary — на color-blue-400 (этот оттенок немного светлее, чтобы обеспечить контраст на тёмном фоне). Меняются только семантические соответствия — примитивная палитра и все компоненты остаются неизменными.

Переопределения для брендов

Бренд A использует синий как основной цвет (color-action-primary: {color-blue-500}). Бренд B использует зелёный (color-action-primary: {color-green-500}). Компонент кнопки обращается к var(--color-action-primary) и совершенно не знает, какой бренд активен. Переопределения для брендов изменяют только соответствия семантических токенов, но не код компонентов.

Переключение темы во время выполнения

Пользовательские свойства CSS делают переключение темы во время выполнения простым. Сохраните текущую тему в атрибуте данных: document.documentElement.setAttribute('data-theme', 'dark'). Правила CSS переопределяют семантические токены внутри [data-theme="dark"]. Браузер сразу разрешает все ссылки var() в новые значения — повторного рендеринга с помощью JS не требуется.

Темизация бренда во время сборки

Если разные бренды предоставляются как отдельные развёртывания, используйте темизацию во время сборки: создавайте отдельные файлы токенов CSS для каждого бренда с помощью Style Dictionary и загружайте нужный CSS бренда при запуске приложения. Такой подход подходит, когда бренд определяется во время развёртывания — например, для разных доменов, поддоменов или white-label-экземпляров, — а не во время взаимодействия с пользователем.

Объединение бренда и темы

Система с несколькими брендами и темами требует двумерной матрицы: бренд A, светлая тема; бренд A, тёмная тема; бренд B, светлая тема; бренд B, тёмная тема. Пользовательские свойства CSS элегантно обрабатывают такую структуру с помощью вложенных селекторов: [data-brand="a"][data-theme="dark"] переопределяет семантические токены для конкретного сочетания. Четыре сочетания — это четыре блока CSS, а не четыре кодовые базы.

Версионирование и устаревание токенов

По мере развития дизайн-системы токены добавляются, переименовываются или удаляются. Храните токены под контролем версий в том же репозитории, что и код. Выводя токен из использования, сохраните старое имя как псевдоним, указывающий на новое имя, на один цикл выпуска, добавьте комментарий об устаревании и обновите использующий его код. Координируйте изменения токенов между дизайном и разработкой с помощью структурированного журнала изменений.

Управление токенами: кому принадлежат токены

Управление определяет, кто может добавлять или изменять токены и какой процесс проверки требуется. Для примитивных токенов требуется одобрение команды дизайна. Семантические токены требуют проверки командами дизайна и разработки. Токенами компонентов может управлять владелец компонента. При отсутствии такого управления появляются дублирующиеся токены, и гарантия «единственного источника истины» перестаёт работать.

Различие семантических и примитивных токенов

Почему компоненты должны ссылаться на семантические токены, а не на примитивные?

Итоги урока

Темы изменяют цветовые режимы внутри бренда, а бренды представляют собой разные визуальные идентичности. Примитивные токены образуют исходную палитру, семантические токены передают смысл и позволяют менять тему. Компоненты используют только семантические токены. Тёмный режим и переопределения бренда изменяют только сопоставления семантических токенов — компоненты остаются неизменными. Темы, изменяемые во время выполнения, используют пользовательские свойства CSS с селекторами [data-theme]; брендинг во время сборки создаёт отдельный CSS для каждого бренда. Управление токенами и версионирование поддерживают согласованность системы по мере её развития.

Часто задаваемые вопросы

Урок «Архитектура токенов для нескольких тем и брендов» бесплатный?

Да — полный текст урока «Архитектура токенов для нескольких тем и брендов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Архитектура токенов для нескольких тем и брендов»?

Организуйте токены по уровням (примитивному, семантическому и компонентному), чтобы поддерживать светлую и тёмную темы, а также темы нескольких брендов Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Архитектура токенов для нескольких тем и брендов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что такое токены дизайна и почему они важны
  2. Style Dictionary: преобразование и генерация токенов
  3. Токены в Tailwind, CSS-переменные и CSS-in-JS
  4. Архитектура токенов для нескольких тем и брендов
← Назад к React Academy