COMPONENT LIBRARY

DESIGN TOKENS

Корпоративная дизайн система

Роль: Design System Lead

Команда: 2 дизайнера, 4 разработчика, 2 QA

Срок: 8 месяцев

COMPONENT LIBRARY

DESIGN TOKENS

Корпоративная дизайн система

Роль: Design System Lead

Команда: 2 дизайнера, 4 разработчика, 2 QA

Срок: 8 месяцев

COMPONENT LIBRARY

DESIGN TOKENS

Корпоративная дизайн система

Роль: Design System Lead

Команда: 2 дизайнера, 4 разработчика, 2 QA

Срок: 8 месяцев

Контекст и проблема

Контекст и проблема

Контекст и проблема

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

Я увидел следующие проблемы:

Разрозненный пользовательский опыт. В разных продуктах компоненты и паттерны взаимодействия работали по-разному.

Дублирование усилий. Иногда команды разных проектов создавали одинаковый функционал независимо друг от друга.

Проблемы с доступностью. Навигация с клавиатуры часто отсутствовала или работала некорректно. Иногда встречались элементы с недостаточной контрастностью.

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

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

Как создавалась система

Как создавалась система

Как создавалась система

Инициатива

Инициатива

Инициатива

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

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

Подготовка и старт

Подготовка и старт

Подготовка и старт

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

Также мы определили принципы будущей дизайн-системы и ознакомили с ними других дизайнеров.

Масштабируемость. Когда появляется потребность создать новые компоненты, дизайн-система остаётся последовательной. В нашем случае набор семантических токенов позволял легко создавать новые компоненты, при этом они органично сочетались с существующими.

Доступность. Сочетания цветов соответствуют стандартам WCAG. Все компоненты поддерживают навигацию с клавиатуры и работу со скрин-ридерами. Характер компонентов передаётся не только цветом, но и иконками, текстом. К компонентам прилагаются рекомендации по обеспечению доступности, где это необходимо.

Независимость. Компоненты не имеют жёстких зависимостей друг от друга, каждый существует сам по себе и может комбинироваться с другими.

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

Адаптивность. Поведение и визуальное отображение компонентов в разных темах интерфейса (светлая/тёмная), при разных размерах экрана, в различных состояниях предусмотрено на уровне дизайн-системы.

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

Далее я завёл систему дизайн-токенов и типографики, написал базовую документацию.

Сборка компонентов

Сборка компонентов

Сборка компонентов

Я начал с самых простых — кнопки, меню, различные типы инпутов. Постепенно переходил к более сложным. Сложные компоненты часто содержали в себе простые, поэтому базовые нужно было сделать в первую очередь.

Для каждого компонента я сразу писал документацию в Figma. Позже, когда у нас появился Storybook, мы её доработали и перенесли туда.

При создании компонентов я использовал:

Пропы — настройки для управления внешним видом и функционалом компонента.

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

Дефолтный контент — стандартное наполнение, которое можно было вставить на место слота, покрывавшее основные сценарии использования.

Разработка

Разработка

Разработка

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

Мы завели доску в таск-трекере с разделами для дизайна и разработки. Каждая карточка отвечала за один компонент, и сначала проходила через колонки раздела дизайна, затем перемещалась в разработку.

На ревью обсуждали, как компонент должен работать, какие у него есть пропы и за что они отвечают. Периодически возникали споры о семантике названий. Например, компонент Toast — всплывающее уведомление о событии. Некоторые разработчики хотели назвать его Alert, но Alert подразумевает тревогу или ошибку, а Toast предназначен для любого характера обратной связи. Где-то я был не прав, где-то доносил свои мысли. В ходе обсуждений происходил ценный обмен опытом.

Внедрение

Внедрение

Внедрение

Обучение дизайнеров работе с дизайн-системой началось параллельно с её созданием. С появлением новых компонентов я просил изучать документацию к ним. Проводили воркшопы, на которых со вторым дизайнером показывали, как использовать компоненты на примерах реальных задач. Дизайнеры задавали вопросы и давали обратную связь, которую я использовал для доработки компонентов.

Когда в коде была готова большая часть компонентов, система начала активно применяться в проектах.

Поддержка и развитие

Поддержка и развитие

Поддержка и развитие

С активным использованием дизайн-системы в некоторых компонентах становились понятны их недостатки, как в удобстве использования, так и в логике работы. Я оперативно их исправлял. Правки были разные, иногда мелкие, а иногда приходилось делать рефакторинг всего компонента.

Был разработан процесс управления дизайн-системой, который описывал, как дизайнеры могут предлагать изменения существующих компонентов или запрашивать новые.

Результаты

Результаты

Результаты

Основная работа по созданию дизайн-системы заняла 8 месяцев. За это время было создано около 80 компонентов.

На дизайн-системе были созданы 4 новых продукта, еще 3 частично на неё перешли.

Для команд разработки процесс стал проще. Разработчикам больше не нужно кастомизировать компоненты MUI и спрашивать у коллег из соседних проектов, делал ли кто-то подобное. Storybook стал единственным источником правды, доступным всем, с документацией и возможностью протестировать, как работают компоненты.

Дизайн-токены позволили создавать интерфейсы в светлой и темной темах без дополнительных усилий со стороны дизайнеров и разработчиков.

Что пошло не так

Что пошло не так

Что пошло не так

На первые ревью компонентов мы приглашали много разработчиков — около 10 человек. Беседа превращалась в хаотичное, непродуктивное обсуждение из-за большого количества мнений. После пары таких встреч мы ограничили состав участников, сначала до ответственного за дизайн-систему фронтенд-разработчика и тимлида фронтеда, а затем и только до ответственного разработчика.

Изначально все компоненты создавались и хранились в одном Figma-файле. Когда компонентов стало много, в том числе сложных, начались проблемы с производительностью поиска по библиотеке. Решением стало разнесение компонентов по отдельным файлам.

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

@mikegoi

mikegoi@yandex.com

+7 917 533-68-01

© 2025 Mikhail Goi

@mikegoi

mikegoi@yandex.com

+7 917 533-68-01

© 2025 Mikhail Goi

@mikegoi

mikegoi@yandex.com

+7 917 533-68-01

© 2025 Mikhail Goi