Экраны дизайн-системы — список книг, модалка шеринга и панель свойств компонента пункта меню

Для B2B/B2C SaaS

Дизайн система

  • −30%Time-to-market
  • 300+Компонентов
  • $XXXkЭкономия за 5 лет

Из-за NDA мне пришлось изменить часть фактов: цифры и данные.

Коротко о главном

Масштабировал разрозненный UI-kit в единую дизайн-систему. Внедрил семантические токены, автоматизировал синхронизацию макетов со Storybook и сократил ручной хэндофф, ускорив Time-to-Market разработки на 30%.

Фреймы Figma с наборами компонентов дизайн-системы: кнопки, поля ввода и меню с вариантами

Обзор проекта

Бэкграунд

Когда я пришёл, у компании был только UI-kit в фигме и пара компонентов в Storybook. К тому моменту он заметно разошёлся с продом, что сильно тормозило не только мою работу, как единственного продуктового дизайнера, но и Frontend с QA.

Проблема

Проектирование новой фичи начиналось с базовых компонентов, что сильно замедляло разработку. Дизайн, фронтенд и QA тратили время на синхронизацию базовых элементов, а не на продуктовую логику.

Команда
Дизайнер, Фронтенд, QA, CEO, CTO
Моя роль
Лид, владелец ДСАрхитектура системы, DesignOps, Онбординг
Сроки
2020–2025
Платформа
Web + Desktop + Mobile

Отправная точка

Главная проблема

Каждая фича стоила дороже, чем должна

Типичный юзкейс

Нужно спроектировать новую настройку в кастомайзере. Открываю Figma, а UI-kit не бьется с продакшеном. Кнопки разных размеров, у инпутов разные отступы, сайдбар ведет себя иначе, чем в соседнем разделе. Я не могу собрать экран как из лего, поэтому каждый контрол приходится рисовать с нуля, сверяясь с продом.

~3 недели

Средний Time-to-market фичи

3+ в разных местах

Вариантов одного контрола

3 команды

Тратили время на синхронизацию базовых элементов: дизайн, фронтенд и QA

Что было на входе

Original UI-Kit
Original UI-Kit
Original product
Original product

Цели

С точки зрения дизайна

Ускорить сборку макетов за счёт компонентов

С точки зрения бизнеса

Ускорить Time-to-Market

С точки зрения разработки

Синхронизировать Figma и Storybook

С точки зрения пользователя

Снизить когнитивную нагрузку за счёт повышения консистентности продукта

Процесс

Начал с аудита, доказал ценность на пилотных фичах, получил buy-in от стейкхолдеров и залидировал масштабирование на весь продукт. Благодаря ДС получилось отказаться от хэндофф через Zeplin и экономить сотни часов в месяц как минимум у 3х команд.

1 • Подготовка и внедрение

01

RESEARCH

UI-кит разошёлся с продом

Выдержка из аудита на примере кнопки
Выдержка из аудита на примере кнопки
Предпосылки

Середина 2020. Когда я пришёл в B2B/B2C SaaS, у команды был Figma-файл с базовыми компонентами. Он назывался UI-kit, но к реальному продукту уже почти не имел отношения. Это доставляло много проблем при проектировании новых фич и сильно затягивало сроки разработки.

Исследование

Поэтому я начал с аудита, прошел экран за экраном, зафиксировал самые часто используемые паттерны и контролы. Собрал инвентаризацию в Figma со скриншотами и аннотациями, сравнивал текущий UI кит и старые макеты с продом. Частота использований определила приоритет, поэтому в первую версию пошло то, что сильнее всего тормозило фронтов и то чего мне больше всего не хватало для проектирования новых фич.

Что показал аудит
  • До 3-х вариантов одного контрола на проде без четкого понимания для чего они отличаются.
  • В каждом разделе состояния (hover, focus, error) реализованы хаотично и редко переиспользуются.
  • Тёмная тема заблокирована, все цвета зашиты напрямую в CSS.
02

STRATEGY

План из пяти шагов без остановки фич

Дорожная карта из пяти шагов: база, ядро компонентов, паттерны, связка с кодом, документацияДорожная карта из пяти шагов: база, ядро компонентов, паттерны, связка с кодом, документация
Предварительное исследование

Я выделил время на исследование и подготовку. Читал документацию крупных дизайн систем: Material, Polaris, Carbon, изучал открытые Figma-файлы крупных команд и лучшие практики на тот момент. Я читал статьи и смотрел ютуб, чтобы разобраться как крупные компании работают с неймингом, как устроена иерархия компонентов, как они используют варианты и nested instances.

Цели исследования
  1. Найти эффективные решения, которые уже проверены крупными командами и адаптировать их под наши нужды.
  2. Понять как повысить консистентность продукта за счёт переиспользования компонентов и существующих паттернов.
  3. Спланировать поэтапное создание устойчивой и гибкой системы, с помощью которой можно будет ускорить разработку.
Основное ограничение

Дизайн система должна внедряться поэтапно, не тормозя продуктовые релизы. На старте у компании не было намерения нанять второго дизайнера.

Роадмап
  1. Токены: цвета, типографика, отступы
  2. Базовые компоненты: кнопки, чекбоксы, инпуты, иконки
  3. Основные паттерны: навигация, таблицы, модалки, сайдбары, меню и т. д.
  4. Синхронизировать с кодом: общий нейминг и стейты для каждого компонента в Storybook
  5. Описать принципы работы: документация, и правила контрибуции
03

VALIDATING

Пилот внутри живых фич

Каждая фича служит пилотом: компоненты собираются внутри живых задач, библиотека растётКаждая фича служит пилотом: компоненты собираются внутри живых задач, библиотека растёт
Как строился процесс

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

Что получилось

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

И уже на основании этих стилей я собрал набор самых часто используемых контролов (молекул). С их помощью я смог кратно ускорить создание новых компонентов под текущие продуктовые задачи.

Синхронизация с фронтами

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

Выводы

Сборка интерфейсов на новых компонентах пошла заметно быстрее как с точки зрения дизайна так и с точки зрения разработки.

Но главное, я понял что даже силами одного дизайнера можно делать дизайн систему и для этого не обязательно останавливать продакшен.

04

ALIGNMENT

Одна задача, замеренная дважды, убедила CEO и CTO

От измеренного пилота к синку с лидерами: CEO и CTO согласуют, итог: зелёный свет, часы в неделю и единый источник правдыОт измеренного пилота к синку с лидерами: CEO и CTO согласуют, итог: зелёный свет, часы в неделю и единый источник правды
Buy-in

Конец 2020. После сборки и тестирования первой версии, я пришел к стейкхолдерам с цифрами. Аналогичная задача, которая раньше занимала ~21 рабочий день, с использованием новых компонентов вышла в релиз за ~14 дней.

Этого хватило для защиты инициативы перед СЕО и СТО, которые одобрили инициативу и выделили ресурсы (6 часов моего времени в неделю) на развитие и поддержания системы.

Как договаривался

Показал наработки на встрече лидов, объяснил логику построения ДС и выгоду внедрения компонентного подхода для решения рабочих задач.

  • CEO одобрил инициативу, так как цифры говорили сами за себя. Time-to-market сократился почти вдвое, а это колоссальная экономия ресурсов всех команд, связанных с разработкой.
  • CTO согласовал архитектуру: палитра цветов, стили текста, интеграция со Storybook. Также подтвердил что дизайн система критически важна для масштабирования продукта с сохранением консистентности.
  • С лидом фронтенда договорились, что со временем Figma+Storybook станут единственным источником правды, это позволит уйти от верстки через Zeplin и ещё существенней экономить ресурсы.
Результаты
  • Защитил идею реальным сокращением сроков: −30%.
  • Лид фронтенда стал главным драйвером ДС в своей команде.
  • Добился выделения времени на поддержку и развитие ДС.
05

STRATEGY

Начал без токенов осознанно

Таймлайн: старт без токенов в 2020, Figma Variables в 2023, больше 6 месяцев миграции, тёмная тема стала возможнойТаймлайн: старт без токенов в 2020, Figma Variables в 2023, больше 6 месяцев миграции, тёмная тема стала возможной
Старт без токенов

Мы решили оставить хардкод значения, чтобы не тормозить процесс. Это был осознанный техдолг, чтобы быстрее внедрить ДС и использовать её для решения реальных задач. Миграция на семантические токены позже заняла полгода (и потянула за собой частичный редизайн ЛК).

Проект развивался более 5 лет. На каждом этапе я договаривался с разработчиками и принимал осознанные решения, балансируя между скоростью сейчас и устойчивостью потом.

Вёрстка через Zeplin

Первые пару лет работы над системой я был вынужден синхронизировать все новые макеты из Figma в Zeplin. Исторически сложившийся пайплайн продакшена существенно тормозил процесс разработки.

Только web, только desktop

До старта разработки нового мобильного приложения в 2023 году дизайн система охватывала только web приложение для десктопа (с минимальной шириной экрана 960px). Компоненты мобильного приложения я потом собрал в отдельном Figma-файле, на тех же общих токенах.

Storybook over Figma

Правило «компонент готов только когда он отражен в коде» замедлило темп проектирования, но практически убрало расхождения между макетами и продом.

Ключевые инсайты

Из трёх команд систему драйвил только я, так как мне нужно было решать продуктовые задачи каждый день, а старый UI-kit ощутимо тормозил. Фронтенд и QA жили нормально и без неё. Компоненты создавались по месту, а кнопки сверялись вручную и никто не считал это проблемой.

Поэтому первым приоритетом было показать зачем она нужна остальным. Фронту, чтобы использовать единые компоненты вместо разрозненных кусков CSS. QA, чтобы положить конец ручной сверке пикселей на каждом ревью. Когда обе команды увидели разницу на реальных задачах, а не на презентации, аргумент «консистентность = хороший UX» стал общим интересом.

2 • Развитие и масштабирование

06

ARCHITECTURE

Семантические токены сделали возможной тёмную тему

Таблицы семантических токенов в тёмной теме: группы цветовых токенов и их значения
Контекст

Как только Figma выкатила Variables в 2023 году, я осознал все преимущества данной концепции, и начал подготовку к переезду на токены. Для полной синхронизации компонентов с кодом мне пришлось буквально пересобрать все компоненты с нуля, и ввести в оборот 300+ новых переменных. Так в 2023 году появилась версия 2.0.

Я провёл несколько рабочих сессий вместе с лидом фронтов, чтобы мы синхронизировались и проработали токены под новый стек.

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

Вместо хардкод значений и стилей с названиями по типу blue-500 мы перешли на семантические токены вида button-color/primary/default, внутри которых уже хранились фиксированные переменные blue-800. В итоге изменить тему продукта (например для тёмной темы или white-label) стало задачей на пару кликов.

Трудности миграции

Перевод старой системы на токены занял больше полугода, от планирования до релиза. Задача растянулась из-за того что мы решили параллельно перекрасить кабинет и освежить дизайн всего продукта.

Я отвечал за пересборку всей навигации и верхнеуровневых паттернов. За счёт выноса сайдбаров за пределы контентных «островов» удалось добиться четкого разделения элементов управления и навигации от контента.

Что это дало
  • Тёмная тема стала технически возможна
  • Глобальные цветовые изменения стали многократно быстрее через правки в базовых переменных
  • Общий нейминг создал единый язык между дизайном и кодом
  • Семантический нейминг читается как документация. Теперь токены вроде button-color/primary/default говорят сами за себя
07

ARCHITECTURE

Одна правка в .base доезжает до всех вариантов

Мастер-компонент .base для кнопки: варианты, свойства и вложенные инстансы в Figma
Наследование через .base

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

Этот принцип стал стандартом для команды. Когда мы выросли до 4 дизайнеров, это спасло нас от хаоса. А когда решили обновить стилистику во всём кабинете — сэкономило десятки часов на правки сотен вариантов в основных молекулах и организмах.

Дизайн взаимодействий

Поведение каждого компонента проектировалось по референсам лучших представителей индустрии и дорабатывалось совместно с фронтендом.

  • Зафиксировал состояния: default / hover / focus / active / selected / disabled / error / loading.
  • Пропушил Accessibility: матрицы контрастности, фокус-стейты для управления с клавиатуры, обязательные alt-description для пользователей со скрин-ридерами.
  • Переработал все навигационные и инструментальные панели в продукте под единый стандарт. Консистентные select-состояния и предсказуемое поведение элементов управления помогают пользователю понимать, где он находится, а значит ускоряют его рабочий процесс.
Микроанимации

Я сделал добавление микроанимаций в компонент обязательным пунктом. Теперь у каждого элемента были предопределённые: появление, исчезновение, state transitions, feedback-анимации. Это позволило в дальнейшем существенно ускорить сборку прототипов для тестирования гипотез, так как любой компонент в макете был отзывчивым и вёл себя точно также как в реальном продукте.

Что легло в основу ДС
  • Размерный модуль: шаг 4px для мелочей, 8px для крупных блоков.
  • Цвета: 5 семантических групп, по 10 плоских и прозрачных оттенков. Это дало необходимую гибкость для проектирования.
  • Типографика: модульная шкала на современном гротеске с открытой лицензией (Onest).
  • Иконки жестко стандартизированы. Обводка 2px, рабочая область 20×20. Всё приведено к одному оптическому весу.
08

SYNCHRONIZATION

Dev Mode вместо Zeplin, плагин проверяет файлы

Чеклист компонента: размеры кратны 4 px, все возможные состояния, адаптивность, универсальность и переиспользование, встроенные микроанимации
Панель плагина AxoLinter в Figma: группы ошибок, покрытие токенами и предложенные токены
Процесс хэнд-оффа

Синхронизировал структуру Figma со спецификациями Storybook. Одна логика, одни названия. Проектирую компонент по чеклисту, отдаю фронтам вместе с продуктовой задачей, они собирают в Storybook, а я провожу ревью. Плюс все краевые случаи и новые состояния мы обсуждали до написания кода. Это позволило существенно сократить процесс релиза новых фич.

Чеклист нового компонента

После того, как системой начали пользоваться несколько дизайнеров я сформулировал четкие критерии по добавлению новых компонентов:

  • Шаг сетки 4px (размеры, отступы).
  • Определено поведение (включая disabled, error, loading и focused).
  • Компонент поддерживает краевые сценарии и они отражены в Figma.
  • Нейминг совпадает со Storybook. Все использованные цвета, шрифты и отступы должны быть связанными токенами из библиотеки.
  • Полная поддержка адаптивности, настроены constraints и autolayout.
  • Анимации встроены, там где это нужно.
Проблема DesignOps

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

Собственный плагин

Поэтому я разработал плагин AxoLinter. Он сканирует выбранные макеты и мгновенно находит любые «оторванные» от переменных значения. Возможности плагина:

  • Разделяет ошибки по группам (цвета, радиусы, отступы, контраст и т. д.).
  • Рассчитывает общий процент покрытия библиотеки токенами.
  • Предлагает ближайший подходящий токен для каждой ошибки и позволяет связать его в один клик или массово через Fix All.
  • Общий нейминг полностью устранил путаницу в коммуникации.
  • Storybook стал единым источником правды со сквозными ссылками на макеты в Figma.
  • Разработчики получают макеты, которые на 100% соответствуют техническим требованиям и ограничениям продакшена.
  • Поддержка ДС стала значительно легче с применением собственного плагина.
09

SCALING

Новый дизайнер публикует макеты после одной сессии

Radio complex в DS Shell: один компонент с вариантами и всеми стейтами — default, hover, selected, disabled, focused
DS Core, текстовые поля: инпуты, поля с подчёркиванием, текстовые области и их базовые компоненты

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

Переход с Zeplin на Dev Mode

До этого хэндофф шёл через Zeplin: дизайнеры экспортировали ассеты, разработчики заходили за спеками. Любое изменение требовало повторного экспорта и ручной синхронизации, что создавало риски рассинхронизации макетов и кода. Кроме того, компания тратила бюджет на отдельную подписку.

С появлением Figma Dev Mode мы убрали лишнее звено. Я провел онбординг для фронтенд-разработчиков: показал, как читать спецификации и работать с компонентами напрямую из библиотек. В результате мы отключили Zeplin, сократили операционные издержки и исключили ошибки, связанные с устаревшими версиями макетов.

Передача знаний

Для бесшовного погружения новых дизайнеров я разработал формат менторства 1-на-1. Вместо чтения лонгридов новые сотрудники проходили интерактивный синк, где я подсвечивал тонкости работы с библиотекой, логику переиспользования компонентов и разбор краевых сценариев. Если в процессе работы один и тот же вопрос возникал дважды — это становилось сигналом для апдейта комментариев в Figma или дополнения спецификации в Storybook.

  • Новые дизайнеры адаптировались и начинали уверенно работать с системой после одной менторской сессии.
  • Рутинные вопросы в Slack формата «какой здесь отступ или цвет» практически исчезли.
  • Отказ от стороннего софта (Zeplin) сэкономил ресурсы компании и упростил экосистему инструментов.
10

TIMELINE

Пять лет по вехам

DS Core, кнопки: primary, secondary, success, warning, error и white, три размера, иконки и все стейты
DS Core, базовые инпуты: переключатель, чекбокс, радиокнопка, элемент группы
DS Core, селектор: база, верх, пункт списка, список и полный селектор
DS Core, пункты меню: панельные, контекстные и сложные
Ключевые этапы
  • 2020 — Старт в продакшене. Компоненты создавались прямо внутри продуктовых задач. Официального запуска не было, но команда из 2 продуктовых групп сразу заметила ускорение работы.
  • 2021 — Интеграция: проведение синхронизационных сессий с командой разработки. Итог — переход на единую терминологию и сквозные компоненты.
  • 2023 — Перезапуск v2.0. После релиза переменных в Figma мы с лидом фронтенда пересобрали токены под семантику. Это позволило технически внедрить тёмную тему и менять глобальные цвета за пару кликов.
  • 2024–2025 — Команда дизайна выросла с 1 (я) до 4 специалистов. За счёт готовой базы онбординг занимал один созвон, а система стабильно продолжала масштабироваться.
Эффективность в цифрах

На пике система обслуживала кросс-функциональную команду из 4 фронтенд-разработчиков, 4 дизайнеров и 3 QA-инженеров. Ускорение TTM продуктовых задач на 30% дало следующие результаты:

  • ~100 часов разработки ежемесячно — средняя чистая экономия времени команды фронтенда на сборке интерфейсов.
  • >6 000 рабочих часов — суммарная экономия за 5 лет работы (без учёта ускорения задач дизайна и QA).
Реакция и долгосрочный профит
  • CEO: отметил кратное ускорение циклов продуктовых итераций и согласования дизайна.
  • CTO: зафиксировал радикальное снижение вопросов «как это должно выглядеть» и ошибок на этапе код-ревью.
  • Продуктовые команды: получили предсказуемый, масштабируемый инструмент, который позволяет фокусироваться на решении пользовательских проблем, а не на рутинной отрисовке интерфейса.
Итог

Созданные процессы прошли проверку временем, поэтому построенная дизайн система продолжает успешно работать и развиваться после моего ухода из компании.

Финальное решение

Сравнение

Было: На примере редактора WYSIWYG
Стало: На примере редактора WYSIWYG
На примере редактора WYSIWYG

Архитектура ДС

Основа: шрифт, скругления, тени, система размеров с шагом 4px, палитра и стили текста
Базовая кнопка: молекула с размерами и состояниями
Базовые контролы и текстовые поля со всеми состояниями
Пункты меню и сайдбары

Несколько примеров

Шаблон списка книг, разрезанный по диагонали на светлую и тёмную темы
Шаблон страницы книги с панелью шеринга и свойствами компонента
Шаблон статистики: график, фильтры и выпадающие меню

Прототип

Интерактивный прототип подгружается из Figma только по запросу.

Открыть в Figma (откроется в новой вкладке)

Результаты

−30%

Time-to-market

>6 т.ч.

Экономия

100%

Adoption

Рефлексия

Что сделал бы иначе

Заложил бы токены с первого дня. Стартовать на хардкоде было быстрее, но переезд на Variables потом съел много ресурсов. Здорово, что сейчас с инструментами вроде Claude можно автоматизировать большую часть процессов.

Что осталось в бэклоге

  • Тёмная тема поддерживается, но пока не в релизе.
  • Документация полностью вынесена в Storybook.

Есть вопросы?

Следующий кейс

Все работы