VIDEMIND
UI/UX Дизайн-системыГид

Токены: как назвать цвета, отступы и размеры

Именование определяет живучесть системы. Разбираем схемы наименования, уровни абстракции и типичные ошибки, из-за которых токены становятся бесполезными.

Токены: как назвать цвета, отступы и размеры — графика VIDEMIND
VIDEMIND · generated
Содержание · 8
  1. Имя должно пережить значение
  2. Три уровня
  3. Шкала отступов
  4. Цвет и темы
  5. Синхронизация с кодом
  6. Что происходит при расхождении с кодом
  7. Как назвать так, чтобы имя пережило значение
  8. Что в итоге

Именование определяет живучесть системы. Разбираем схемы наименования, уровни абстракции и типичные ошибки, из-за которых токены становятся бесполезными.

Имя должно пережить значение

Главное правило именования: токен называется по роли, а не по внешнему виду. «color-blue» перестанет быть верным, как только акцент станет зелёным; «color-accent» переживёт любой ребрендинг.

То же с размерами: «space-16» лучше, чем «space-medium», потому что «средний» — понятие относительное, а 16 — точное.

Три уровня

Практика сошлась на трёхуровневой схеме. Каждый следующий уровень ссылается на предыдущий, а не задаёт значение напрямую.

Цепочка токенов от базового значения к компоненту
Цепочка токенов от базового значения к компонентуVIDEMIND · generated
УровеньПримерКто использует
Базовый (primitive)blue-600 = #1B37E0Только система
Семантическийcolor-accent = blue-600Дизайнеры, разработчики
Компонентныйbutton-bg = color-accentКомпоненты

Шкала отступов

Отступы должны браться из ограниченного набора, иначе в макетах появятся значения 13, 17 и 23 пикселя. Базовая единица 4 или 8 пикселей, шкала строится умножением.

Практичный набор: 4, 8, 12, 16, 24, 32, 48, 64, 96, 128. Десяти значений хватает почти на любой интерфейс.

  • Одна базовая единица на всю систему.
  • Не больше 10–12 значений в шкале.
  • Именование по числу, а не по «small/medium/large».
  • Отдельная шкала для внутренних отступов компонентов.
Токены: как назвать цвета, отступы и размеры — графика VIDEMIND
VIDEMIND · generated

Цвет и темы

Поддержка тёмной темы решается на семантическом уровне: базовая палитра остаётся общей, а семантические токены получают разные значения в разных темах.

Именно поэтому важно не использовать базовые токены напрямую в компонентах: иначе тема не переключится.

Имя токена переживёт значение. «Цвет-опасности» живёт годами, «красный-500» умирает при первой смене палитры.

Синхронизация с кодом

Токены имеют смысл только тогда, когда одинаково называются в макетах и в коде. Расхождение в именах убивает систему быстрее всего: дизайнер говорит «акцент», разработчик ищет «primary».

Решается общим источником: файл токенов, из которого генерируются и переменные для кода, и библиотека для редактора макетов.

Токены: как назвать цвета, отступы и размеры — графика VIDEMIND
VIDEMIND · generated

Что происходит при расхождении с кодом

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

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

Как назвать так, чтобы имя пережило значение

Общий принцип: имя описывает назначение, а значение остаётся сменным. Если при смене темы или палитры приходится переименовывать токены, система названа неверно.

  • Плохо: «синий-600» — при смене фирменного цвета имя станет ложью.
  • Хорошо: «поверхность-акцент» — описывает роль, а не цвет.
  • Плохо: «отступ-16» — при смене шкалы придётся переименовывать всё.
  • Хорошо: «отступ-м» — ступень шкалы, а не абсолютная величина.
  • Плохо: «текст-серый» — не переживёт тёмную тему.
  • Хорошо: «текст-второстепенный» — в тёмной теме меняется значение, не имя.
Токены: как назвать цвета, отступы и размеры — графика VIDEMIND
VIDEMIND · generated

Что в итоге

Токены живут долго, если названы по роли, организованы в три уровня и одинаково называются в макетах и коде.

Ограничьте шкалу отступов десятью значениями и никогда не используйте базовые токены напрямую в компонентах.

Коротко

Зачем нужны токены, если есть переменные?
Токен — это переменная с назначением, а не со значением: не «серый 700», а «цвет второстепенного текста». Благодаря этому тему можно сменить целиком, не переписывая макеты и код.
Сколько уровней токенов достаточно?
Двух: базовый набор значений и смысловой слой поверх него. Третий уровень для отдельных компонентов заводят только тогда, когда без него действительно не обойтись, — иначе система становится непроходимой.
Продолжить тему · Дизайн-системы

Состояния компонентов

Загрузка, ошибка, пустота, отключено, фокус с клавиатуры. Разбираем полный набор состояний и то, почему интерфейс разваливается именно на них.Дальше

Нашли ошибку или неточность в атрибуции? Напишите нам

Обсуждение

Загружаем…

Только имя и мысль. Ссылки, разметку, код и номера телефонов журнал не публикует — учётных записей на сайте нет, и оставлять здесь ссылку бессмысленно.

0 / 1500