
Привет, Хабр! Я Артём Бурунов, ведущий UI/UX-дизайнер в команде Platform V UI Kit в СберТехе. Наше решение позволяет легко создавать интерфейсы любого уровня сложности: от сайтов до корпоративных приложений. Мы развиваем библиотеку UI-компонентов, которые обеспечивают гибкость, доступность и масштабируемость сложных веб-интерфейсов.
Один из главных элементов, с которым мы работаем, — это система дизайн-токенов. Сегодня я расскажу, что это такое, зачем нужно, и поделюсь примером, как может развиваться структура дизайн-токенов с ростом бизнеса. На примере вымышленного ИT-стартапа разберём, как организовать дизайн-токены для проектов разного масштаба. Выясним, как, начиная с простого набора, построить систему, которая будет развиваться и при этом останется понятной для команды.
Материал будет полезен специалистам, которые используют систему дизайн-токенов в своих проектах и задумываются о её развитии.
Немного теории: что такое дизайн‑токены
Дизайн‑токены (design tokens) — это абстрактные единицы, которые позволяют централизованно управлять стилями (цветами, шрифтами, отступами и т. д.) и обеспечивают консистентность в интерфейсе.
Количество, семантика, уравновесить дизайн‑токенов зависит от нужд проекта. Вот наиболее распространенные значения, которые присваивают токенам:
-
Цвета: основные, акцентные и нейтральные.
-
Типографика: шрифт, размер шрифта, интервал, высота строки.
-
Пространство: отступы, размеры элементов, сетка.
-
Эффекты: тени, градиенты, прозрачность, анимация.
Использование дизайн‑токенов в проекте дает массу преимуществ:
-
Гибкость: токены позволяют легко вносить изменения в дизайн, не нарушая целостности системы.
-
Кроссплатформенность: один набор токенов удобно использовать для разных платформ: веб‑, iOS и Android.
-
Консистентность: все продукты используют единую систему токенов.
-
Масштабируемость: благодаря использованию токенов добавлять новые продукты и платформы становится проще.
-
Единый язык: логика токен‑системы облегчает коммуникацию между дизайнерами и разработчиками и позволяет тратить меньше времени на рутинные задачи.
А теперь рассмотрим, как дизайн‑токены используются в проектах разных масштабов. Поехали!
Эволюция 1: маленький проект
Пётр получил грант и нанял на проект дизайнера, фронтендера и бэкендера. Команда начала создавать своё детище. Петр читал кучу литературы и ежедневно улучшал проект. Дизайнер бесконечно менял стили и цвета. А фронтендер судорожно искал и правил хексы, отчего MVP засветился всеми цветами радуги.
И тут на помощь пришли дизайн-токены. Благодаря им разработка становится намного проще: любые базовые характеристики стиля можно править в одном месте, и изменения будут распространяться на весь проект.
Где используется: сайт.
Цели: создание единого стиля, централизованное изменение основных параметров стиля.
Структура: минимальная система токенов — только базовые токены, такие как цвета, размеры шрифтов и отступы. Достаточно нескольких ключевых токенов, чтобы задать стиль для всего проекта.

Пример структуры токенов:
{ "color": { "brand": "#0B52E4", // Основной цвет бренда "background": "#ffffff" }, "typography": { "font-family": "Arial, sans-serif" } }
Преимущества: сокращение количества ошибок, единый пульт управления в дизайне и коде. До внедрения токенов интерфейс был хаотичным: каждый элемент оформлялся по-своему, а цвета менялись в ходе проекта. Благодаря токенам команда избавилась от бесконечного копирования хексов и несогласованности в стилях. Теперь каждый цвет и размер закреплены за своим токеном, что делает стиль унифицированным и узнаваемым.
Эволюция 2: средний проект
Проект стал популярным. Пользователи просят приложение на iOS и Android, мобильную веб-версию, и Пётр замахнулся на редизайн. Дизайнер подучился, почитал W3C, понял, что всё-таки полезно учитывать рекомендации по доступности: обозначать базовый шаг, выстраивать палитру цветов. И стал закладывать систему контрастности и шага, чтобы учесть читаемость компонентов, их различимые состояния и прочие факторы.
Требования к токен-системе значительно усложнились. Базовые токены, которые отлично работали в начале, уже не справляются с новыми задачами. Начали возникать проблемы: количество токенов заметно увеличилось, стало сложно управлять ими, обеспечивать масштабируемость системы и кроссплатформенность.
Появилась потребность в более продвинутой структуре, которая поддерживала бы разные платформы и позволила учитывать требования доступности. Токены пускают корни в XML, Jetpack Compose и Swift, а система управления токенами становится двухуровневой:
-
Референсный уровень (Ref) — описывает базовые значения: цвета, формы, тени и шрифты. Позволяет хранить основные стили, на которых строится дизайн, и легко обновлять их при необходимости.
-
Системный уровень (Sys) — определяет основные правила и роли, которые формируют характер дизайн-системы: от цвета и типографики до высоты и формы.
Двухуровневая структура позволяет легко адаптировать дизайн под разные устройства и темы, обеспечивая при этом гибкость и контроль. Разделение на референсный и системный уровни сделало систему более организованной и разделило зоны ответственности. Референсный уровень содержит основные значения, а системный уровень использует их для создания семантических токенов, что упрощает навигацию и управление.
Носители: сайт, веб-приложение, приложение для iOS и Android.
Цели:
-
поддерживать кроссплатформенные стили, чтобы приложения выглядели одинаково на всех устройствах;
-
обеспечить поддержку тем, включая светлую и тёмную, и возможность добавления дополнительных тем;
-
упростить управление доступностью за счёт привязки семантических токенов к референсным.
Структура: два основных уровня токенов, каждый со своей семантикой:

Пример структуры токенов с двумя уровнями:
{ "ref": { "palette": { "primary60": "#0B52E4", // Основной цвет бренда "white": "#ffffff", "black": "#000000" }, "typography": { "font-size-base": "16px", "font-family": "Arial, sans-serif" }, "shadows": { "elevation-low": "0px 1px 2px rgba(0, 0, 0, 0.15)", "elevation-high": "0px 4px 8px rgba(0, 0, 0, 0.3)" } }, "sys": { "color": { "brand": "ref.palette.primary60", // Основной цвет бренда "text": "rgba(ref.palette.black, 0.9)", "background": "ref.palette.white" } } }
Преимущества:
-
Гибкость: двухуровневая структура упрощает редизайн. Если нужно изменить, скажем, основной цвет приложения, достаточно обновить его на ref-уровне, и изменения отразятся во всей системе. Это упрощает масштабирование и обеспечивает консистентность.
-
Кроссплатформенность: команда легко адаптирует дизайн для разных платформ и создаёт компоненты, которые выглядят консистентно на всех устройствах. Инструменты вроде Style Dictionary помогают автоматически генерировать токены для разных платформ, избегая дублирования.
-
Поддержка тем: единые значения для тем вынесены на референсный уровень — строить и переключаться между светлой и тёмной темами или добавлять новые стало удобнее. Например, цвет фона или текста меняется в одном месте, а изменения автоматически применяются во всей системе.
-
Удобство: Sys-уровень обеспечивает логичную организацию стилей: разработчик легко понимает, как использовать токены для разных компонентов и платформ.
На этом этапе, благодаря системной структуре и продвинутой организации, проект становится серьёзным продуктом с гибкой, продуманной токен-системой, готовой к дальнейшему росту и поддержке новых функций.
Эволюция 3: большой проект с множеством продуктов
Пётр так ловко направлял компанию к вершине олимпа ИТ-холдингов, что его сотрудники создали ещё десяток продуктов и поделились своим UI Kit в open source.
Но есть один момент. Система с референсным и системным уровнями отлично справлялась с базовой стилизацией и поддержкой тем. Однако количество продуктов росло, функциональность расширялась, и системе стало не хватать гибкости. Требовался более глубокий подход к токен-системе.
Так система становится трёхуровневой: к референсному и системному уровням добавляется компонентный (Comp). Он позволяет решить следующие вопросы:
-
Ограниченность точечной стилизации. Уровень системных токенов может предложить лишь общий стиль с семантическими зонами ответственности. Увеличение гибкости автоматически приводит к росту количества токенов и усложнению. Компонентный уровень позволяет управлять токенами конкретного компонента и гибко подключать его к нужной зоне ответственности системного уровня.
-
Платформенные особенности. Система не позволяла настраивать стиль вплоть до компонентов. А компонентный уровень позволяет учитывать особенности каждой платформы без нарушения общей структуры.
-
Мимикрия под внешние платформы. Встраиваемые микросервисы часто должны адаптироваться под дизайн принимающей платформы, чтобы не выглядеть чужеродно. Компонентный уровень позволяет создавать и гармонично встраивать варианты компонентов, имитируя сторонние UI Kits.
-
Интеграция сторонних плагинов. Сторонние разработчики часто сталкиваются с трудностями при адаптации компонентов под свои задачи: базовая система токенов недостаточно гибкая для создания полностью кастомизируемых решений. Компонентный уровень предоставляет готовые решения для каждого типа компонента, что упрощает интеграцию сторонних плагинов и обеспечивает консистентность.
Носители: сайт, веб-приложения, приложения для iOS и Android, интеграции с внешними сервисами, плагины сторонних разработчиков.
Цели:
-
создать единую дизайн-систему для всех продуктов;
-
обеспечить гибкость на уровне компонентов;
-
упростить интеграцию новых функций и масштабирование сервисов;
-
обеспечить мимикрию встраиваемых микросервисов под внешние платформы, чтобы они выглядели органично.
Структура: трёхуровневая структура значительно расширяет токен-систему и дает максимальную гибкость на уровне компонентов.

Пример структуры токенов с тремя уровнями:
{ "ref": { "palette": { "primary60": "#0B52E4", // Основной цвет бренда "primary50": "#376BFC", "primary40": "#0B52E4", "primary30": "#003BAF", "white": "#ffffff", "black": "#000000" }, "typography": { "font-size-base": "16px", "font-family": "Arial, sans-serif" }, "shadows": { "elevation-low": "0px 1px 2px rgba(0, 0, 0, 0.15)", "elevation-high": "0px 4px 8px rgba(0, 0, 0, 0.3)" }, "border-radius": { "small": "4px", "medium": "8px", "large": "16px" }, "spacing": { "base": "8px", "multiplier": { "x1": "1", // 8px "x2": "2", // 16px "x3": "3", // 24px "x4": "4", // 32px "x5": "5" // 40px } } }, "sys": { "color": { "brand": "ref.palette.primary60", // Основной цвет бренда "text": "ref.palette.black", "background": "ref.palette.white" }, "typography": { "body": { "font-size": "ref.typography.font-size-base", "font-family": "ref.typography.font-family" }, "heading": { "font-size": "calc({ref.typography.font-size-base} * 1.5)", // 24px "font-family": "ref.typography.font-family" } }, "shadows": { "default": "ref.shadows.elevation-low", "hover": "ref.shadows.elevation-high" }, "border-radius": { "default": "ref.border-radius.medium", // 8px "rounded": "ref.border-radius.large" // 16px }, "spacing": { "small": "calc({ref.spacing.base} * {ref.spacing.multiplier.x1})", // 8px "medium": "calc({ref.spacing.base} * {ref.spacing.multiplier.x2})", // 16px "large": "calc({ref.spacing.base} * {ref.spacing.multiplier.x3})", // 24px "xlarge": "calc({ref.spacing.base} * {ref.spacing.multiplier.x4})", // 32px "xxlarge": "calc({ref.spacing.base} * {ref.spacing.multiplier.x5})" // 40px } }, "comp": { "button": { "primary": { "background-color": "sys.color.brand", // Основной цвет бренда "text-color": "sys.color.text", // Текст "border-radius": "sys.border-radius.default", // 8px "padding": { "top": "sys.spacing.small", // 8px "bottom": "sys.spacing.small", // 8px "left": "sys.spacing.medium", // 16px "right": "sys.spacing.medium" // 16px }, "font-size": "sys.typography.body.font-size", // 16px "font-family": "sys.typography.body.font-family", // Arial, sans-serif "shadow": "sys.shadows.default", // elevation-low "hover": { "background-color": "ref.palette.primary50", // Более светлый оттенок "shadow": "sys.shadows.hover" // elevation-high }, "active": { "background-color": "ref.palette.primary40" // Более тёмный оттенок }, "disabled": { "background-color": "ref.palette.primary30", // Очень тёмный оттенок "text-color": "ref.palette.white" // Белый текст } } } } }
Преимущества компонентного уровня:
-
Глубокая стилизация: все состояния и свойства компонента описаны в одном месте, что упрощает управление.
-
Упрощение поддержки: компонентный уровень обладает понятной структурой и содержит ссылки на системные токены, минимизируя повторяемость кода.
-
Платформенная адаптация: учитываются особенности каждой платформы (веб, iOS, Android) без нарушения общей структуры.
-
Легкая интеграция: сторонние разработчики могут легко адаптировать компоненты под свои задачи, сохраняя консистентность.
-
Мимикрия под внешние платформы: компоненты могут автоматически адаптироваться под дизайн принимающей платформы.
Трёхуровневая структура позволяет компании эффективно развивать экосистему продуктов и является важной частью дизайн-системы, устраняя несогласованность в стилях за счёт единого источника правды.
Вместо заключения
Токены — фундаментальный инструмент для создания масштабируемой и поддерживаемой дизайн-системы. Семантика уровней и логика связей приведена в статье в качестве демонстрации. Вы сами создаете семантику, близкую вашим продуктам (например уровень токенов бренда или продукта) или можете перенять подходы других библиотек.
Эволюция дизайн-токенов — это путь от простого набора переменных к сложной системе, которая поддерживает множество продуктов и платформ. Токен-система —живая и гибкая структура. Ее развитие похоже на возделывание бонсая: вы следите за ней и направляете ее рост. Создание токен-системы требует внимания к деталям и регулярного ухода. Это поможет создать гибкую и масштабируемую систему, которая будет расти вместе с вашим продуктом.
Работа с дизайн-токенами актуальна уже сейчас, а в будущем нас ждут такие интересные тренды, как:
-
динамические токены: токены, которые адаптируются под контекст (например реакция интерфейса на время суток, настроение, интересы пользователя и его особенности);
-
AI-помощники: использование искусственного интеллекта для генерации и оптимизации токенов;
-
универсальные стандарты: разработка общепринятых стандартов для токенов, которые будут ускорять и повышать качество разработки.
Рекомендации:
-
Используйте семантические названия. Токены должны легко считываться, а их имена не должны дублироваться в разных уровнях, если это не оправдано архитектурой токен-системы. Например, используйте не «red», а «error»: это даст ясное понимание, где и как этот токен должен применяться.
-
Отслеживайте, в каких элементах и сочетаниях используются цвета. Учитывайте контекст применения: разные элементы могут требовать разных подходов к цветам в зависимости от их функции.
-
Токены должны быть гибкими: это поможет работать с ними на разных платформах, учитывая ограничения площадок.
-
Задокументируйте все правила использования дизайн-токенов. Это поможет новым участникам команды быстрее войти в курс дела и обеспечит единообразие в будущем.
-
Тестируйте работу токенов в реальных условиях. Убедитесь, что они корректно отображаются на всех устройствах и в разных темах.
-
Избегайте рекурсии: будьте внимательны, ссылаясь с одного токена на другой.
-
При работе с темами закладывайте сценарии статических и инверсивных токенов:
Статические (постоянные) токены не меняются при переключении светлой и темной темы и используются для элементов, которые должны оставаться неизменными (например, темный хэдер, брендовые цвета или логотипы).
Инверсированные токены максимально контрастируют с текущей темой. Часто выделяются в отдельную группу для более высокого контраста и удобства управления, например в компоненте Tooltip.
Инструменты дизайнера:
-
Guide to variables in Figma: https://help.figma.com/hc/en-us/articles/15339657135383-Guide-to-variables-in-Figma
-
Tokens Studio для передачи математических логик: https://tokens.studio/
-
Tokens Studio for Figma https://www.figma.com/community/plugin/843461159747178978
-
Pixso + Tokens Studio https://www.figma.com/community/plugin/843461159747178978
-
Построение палитры цветов: Figma plugin «Foundation: Color Generator»: https://www.figma.com/community/plugin/1024452006068794933/foundation-color-generator
Design tokens системы:
-
Material 3: https://m3.material.io/foundations/design-tokens/overview
-
Salesforce: https://www.lightningdesignsystem.com/design-tokens/
-
Adobe Spectrum: https://spectrum.adobe.com/page/design-tokens/
-
IBM Carbon Design System: https://carbondesignsystem.com/elements/color/overview/
-
Platform V UI Kit: https://gitverse.ru/sbertech/ui-kit-ce/content/develop/packages/theme/src
Статьи:
-
Design tokens explained (and how to build a design token system): https://www.contentful.com/blog/design-token-system/
-
W3C Community — Design Tokens Format Module: https://tr.designtokens.org/format/
ссылка на оригинал статьи https://habr.com/ru/articles/895306/
Добавить комментарий