Журнал · Дизайн-системы

Что входит
в дизайн-систему

~10 минут чтения Дмитрий Спиридонов

Под фразой «дизайн-система» каждый понимает своё. Один клиент имеет в виду набор макетов в Figma, второй — Storybook с React-компонентами, третий — целую внутреннюю платформу с генерацией кода. В этом гайде разберём, что реально должно быть в дизайн-системе, чтобы она называлась так оправданно — а не была просто «UI-кит с громким названием».

Дизайн-система ≠ UI-кит

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

  • Дизайн-токены (цвета, отступы, типографика, тени, радиусы) — single source of truth в форматах JSON, CSS-переменных или Style Dictionary.
  • Компоненты — реализация в Figma (для дизайнеров) И в коде (React/Vue/Web Components — для разработчиков), синхронизированные между собой.
  • Документация и принципы — гайдлайны использования, паттерны, do/don't, accessibility-нормы.

UI-кит — это первый слой. Без второго и третьего вы не получите главного эффекта дизайн-системы: единообразие продукта при росте команды.

Слой 1: токены

Токены — это атомы дизайна. Вместо «цвет #c48a28» в коде стоит --color-accent. Вместо «отступ 24px» — --space-md. Если завтра меняете акцентный цвет, меняете его в одном месте — обновляется весь продукт.

Минимальный набор токенов:

  • Цвета: primary/secondary/accent палитра + семантические (success, error, warning, info) + neutral (5-7 оттенков серого).
  • Типографика: шрифты, размеры (h1-h6, body-lg/md/sm), межстрочные, веса.
  • Отступы: 4/8/12/16/24/32/48/64/96 (модульная шкала на основе 4 или 8px).
  • Радиусы: 0/4/8/12/16/24/full.
  • Тени: sm/md/lg/xl с подписями по контексту (carded, floating, overlaid).
  • Длительности анимаций: 150/250/400ms + готовые easing-функции.
  • Z-index'ы: dropdown/sticky/fixed/modal/popover/tooltip.

Где хранить:

В Figma как Variables (Local или Library). В коде — CSS custom properties (--color-primary: #c48a28) или Style Dictionary, который генерирует CSS, JS, iOS, Android токены из одного JSON.

Слой 2: компоненты

Компонент — это переиспользуемый UI-элемент с чётким API. Не «вот картинка кнопки», а «Button с props: variant, size, icon, loading, disabled». В коде, в Figma, в документации — одинаковое поведение.

Иерархия:

  • Primitives: Box, Stack, Text, Icon — атомарные строительные блоки.
  • Inputs: Button, Input, Textarea, Select, Checkbox, Radio, Switch, Slider.
  • Display: Card, Tag, Badge, Avatar, Tooltip, Toast, Progress.
  • Layout: Container, Grid, Section, Divider, Modal, Sheet, Tabs.
  • Patterns: Form, NavBar, Footer, Hero, FeatureGrid — высокоуровневые композиции.

Что обязательно в каждом компоненте:

  • Состояния: default, hover, focus, active, disabled, loading.
  • Варианты: размеры (sm/md/lg), типы (primary/secondary/ghost/destructive).
  • Адаптив: как ведёт себя на мобильном.
  • Accessibility: aria-атрибуты, keyboard navigation, focus management, контраст.
  • Темизация: light/dark/brand вариант через токены.
Если компонент в Figma и в коде делают разные вещи — это не компонент дизайн-системы, это два разных компонента, которые просто похоже называются.

Слой 3: документация

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

Что должно быть в документации:

  • Принципы: 3-5 строчек о том, как принимать решения о дизайне ("Меньше — лучше", "Контент — главное", и т.д.).
  • Use cases: для каждого компонента — когда применять, когда НЕ применять. Примеры do/don't.
  • API: список props, событий, slots с описаниями.
  • Accessibility-чеклист: что проверить перед коммитом нового компонента.
  • Дизайн-decisions: почему мы выбрали именно эти токены, эти размеры.
  • Changelog: что менялось и почему. Breaking changes отдельно.

Где документировать:

Лучший инструмент сейчас — Storybook + MDX. Это одновременно живая песочница с компонентами и текст-документация. Дизайнеры могут смотреть как работает компонент в реальном времени, разработчики копируют сниппеты прямо оттуда.

Альтернативы: Zeroheight, Supernova, Backlight — платформы для дизайн-систем, которые синхронизируют Figma и код. Дороже Storybook, но проще для не-технических команд.

Кто и за сколько

Дизайн-система — это серьёзный проект, не отдельные часы. Реальные цифры по моему опыту:

  • Минимальная (50 компонентов): ~100 часов на дизайн + 80 часов на разработку = ~350 000 ₽ при моей ставке.
  • Полноценная (150+ компонентов с Storybook): 300+ часов суммарно = от 1 000 000 ₽.
  • Поддержка: 8-16 часов в месяц на обновления, фиксы багов, новые компоненты.

Это окупается за 6-12 месяцев на проекте с командой от 3 человек. На стартапе с одним разработчиком — может быть избыточно. Используйте готовые: Radix UI, Headless UI, shadcn — для скорости.

Топ-3 ошибки в моих кейсах

За 13 проектов я налажал во всех этих местах, и теперь стараюсь предупреждать клиентов на старте:

1. Делать дизайн-систему вначале

Соблазнительно: «давайте сразу всё правильно». Реальность: без живого продукта вы не знаете, какие компоненты нужны. Делайте сначала продукт, потом извлекайте дизайн-систему из паттернов, которые повторяются.

2. Слишком гибкие компоненты

Компонент с 25 props — это не компонент, это анти-компонент. Если разработчик может сделать с ним всё что угодно — теряется унификация. Лучше 3 чётких варианта Button, чем один с 12 настройками.

3. Дизайнер обновляет Figma, разработчик не знает

Без синхронизации Figma ↔ код — каждый месяц расхождения. Решение: либо Figma как single source of truth с экспортом токенов через CLI (Figma Tokens), либо платформа типа Supernova.

Нужна дизайн-система для продукта?

Помогу выбрать масштаб — от минимального UI-кита до полноценной системы с токенами, Storybook и документацией. Ставка 3 500 ₽/час, оценка после короткого созвона.

Обсудить проект →