Вы когда-нибудь открывали проект, в котором одна и та же кнопка существует в 14 вариациях? Синяя, фиолетовая, с тенью, без тени, скруглённая, прямоугольная — и каждая прописана инлайново в том месте, где она используется. Именно так выглядит продукт без дизайн-системы. И именно поэтому на любое изменение интерфейса уходят дни вместо минут.

Дизайн-система — это не модный тренд и не «приятное дополнение». Это инженерный инструмент, который радикально ускоряет разработку, повышает консистентность интерфейса и сокращает количество багов. В этой статье мы разберём, как построить дизайн-систему, которая реально работает — от первых токенов до полноценной документации.

Что такое дизайн-система (и чем она не является)

Дизайн-система — это набор переиспользуемых компонентов, правил и инструментов, которые позволяют команде строить продукты быстро и единообразно. Она включает три уровня:

Дизайн-система — это не UI kit. UI kit — это набор красивых картинок в Figma. Дизайн-система — это живой продукт: Figma-компоненты синхронизированы с кодом, есть документация, есть правила использования, есть процесс обновления.

Дизайн-система — это продукт для тех, кто создаёт продукты. Относитесь к ней именно так.

Зачем дизайн-система вашему продукту

Давайте посчитаем. Без дизайн-системы разработчик тратит в среднем 30-40% времени на стилизацию компонентов: подбирает отступы, ищет нужный цвет, копирует стили из другого места. С дизайн-системой он вызывает готовый компонент с нужными параметрами — 2 минуты вместо 30.

Основные преимущества:

По данным Figma, компании с дизайн-системами выпускают продукты в среднем на 34% быстрее. А по нашему опыту, после внедрения системы количество UI-багов снижается на 60-70%.

Анатомия дизайн-системы

Уровень 1: Дизайн-токены

Токены — это фундамент. Это именованные переменные, которые хранят примитивные значения дизайна. Вместо #6c5ce7 в 47 местах кода у вас --accent — одно изменение меняет весь продукт.

Токены делятся на три категории:

Пример структуры токенов в CSS:

:root {
  /* Primitive tokens */
  --purple-500: #6c5ce7;
  --teal-500: #00cec9;
  --gray-900: #e8e8ef;
  --gray-500: #6b6b80;

  /* Semantic tokens */
  --text: var(--gray-900);
  --text-dim: var(--gray-500);
  --accent: var(--purple-500);
  --accent2: var(--teal-500);

  /* Spacing scale */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;

  /* Typography */
  --font-body: 'Inter', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
  --text-sm: 14px;
  --text-base: 16px;
  --text-lg: 18px;
  --text-xl: 24px;
  --text-2xl: 32px;
  --text-3xl: 48px;
}

Важно: используйте семантические токены в компонентах, а не примитивные. Это позволит легко добавить тёмную/светлую тему — переопределив только семантический слой.

Уровень 2: Базовые компоненты

Начните с минимального набора. Вот 12 компонентов, которые покрывают 80% интерфейса:

  1. Button — primary, secondary, ghost, danger, disabled
  2. Input — text, email, password, search, с иконками
  3. Select — выпадающий список с поиском
  4. Checkbox / Radio — с label и группировкой
  5. Card — контейнер с тенью, бордером, hover-эффектом
  6. Badge — статус, категория, count
  7. Avatar — изображение, инициалы, fallback
  8. Modal — диалог с overlay, анимация, focus trap
  9. Toast — уведомления success, error, info, warning
  10. Tooltip — подсказки по hover
  11. Tabs — горизонтальная навигация с контентом
  12. Skeleton — состояние загрузки

Каждый компонент должен поддерживать: варианты (variants), размеры (sizes), состояния (states: hover, focus, disabled, active) и accessibility (ARIA-атрибуты, keyboard navigation).

Уровень 3: Составные паттерны

Паттерны — это комбинации базовых компонентов для решения конкретных задач:

Паттерны не обязательно оформлять как отдельные компоненты — достаточно задокументировать, как комбинировать базовые элементы.

Как организовать Figma-библиотеку

Figma — стандарт де-факто для дизайн-систем в 2026. Вот как организовать библиотеку правильно:

Структура файлов

Правила для компонентов

Каждый Figma-компонент должен:

Используйте Figma Variables для токенов. Это позволяет переключать тему (светлая/тёмная) одним кликом и автоматически обновлять все компоненты.

От дизайна к коду: синхронизация

Самая большая проблема дизайн-систем — рассинхронизация между Figma и кодом. Дизайнер обновил кнопку, а в коде осталась старая версия. Через месяц система начинает расходиться.

Решение — design tokens pipeline:

  1. Определите токены в JSON/YAML (единый источник правды)
  2. Используйте Style Dictionary или Token Transformer для генерации CSS-переменных, SCSS-переменных, Tailwind-конфига
  3. Синхронизируйте токены с Figma через Tokens Studio (бывший Figma Tokens)
  4. Автоматизируйте: push в Git запускает сборку токенов, обновляет npm-пакет, уведомляет команду

Для компонентов используйте Storybook — это каталог всех компонентов с интерактивной документацией, визуальным тестированием и playground для экспериментов.

Инструменты для построения дизайн-системы

Задача Инструмент Примечание
Дизайн Figma Variables, Auto Layout, Dev Mode
Токены Tokens Studio + Style Dictionary Синхронизация Figma и код
Документация Storybook Интерактивный каталог компонентов
Компоненты (React) Radix UI / shadcn/ui Unstyled, accessible, composable
Визуальное тестирование Chromatic Ловит визуальные регрессии
Иконки Lucide / Phosphor Открытые, консистентные наборы

Типичные ошибки при создании дизайн-системы

1. Начинать слишком масштабно

Не нужно сразу строить Material Design. Начните с токенов и 10 компонентов. Добавляйте новые по мере необходимости. Лучше иметь 15 отточенных компонентов, чем 80 сырых.

2. Не документировать

Компонент без документации — это компонент, который не будут использовать. Для каждого элемента нужно: описание, примеры, do/don't, props API. Минимум — Storybook с описанием.

3. Забыть про accessibility

Доступность — это не «бонус», а требование. Каждый компонент должен быть доступен с клавиатуры, иметь правильные ARIA-атрибуты и проходить тест цветового контраста (WCAG AA).

4. Не назначить владельца

Дизайн-система без владельца — это мёртвая система. Нужен человек (или команда), который отвечает за обновления, ревью PR, разрешение конфликтов и roadmap системы.

5. Не тестировать визуально

Unit-тесты не ловят визуальные баги. Используйте Chromatic или Percy для snapshot-тестирования — они автоматически находят визуальные регрессии при каждом PR.

Пошаговый план: от нуля до дизайн-системы за 4 недели

Неделя 1: Аудит и токены. Соберите все цвета, шрифты и отступы из текущего продукта. Определите палитру, типографическую шкалу, spacing-шкалу. Создайте файл токенов.

Неделя 2: Базовые компоненты. Создайте Button, Input, Card, Badge, Avatar в Figma и в коде. Каждый с вариантами, состояниями и accessibility.

Неделя 3: Составные компоненты и паттерны. Modal, Toast, Tabs, Table. Настройте Storybook.

Неделя 4: Документация и процесс. Напишите гайдлайны, настройте CI/CD для пакета компонентов, обучите команду.

Если вам нужна помощь с созданием дизайн-системы — это одна из наших ключевых компетенций. Подробнее об услуге UI/UX дизайна.