Красивый макет умирает на второй неделе разработки, если в нём нет состояний: пустого списка, длинного имени, ошибки загрузки и текста на трёх языках разной длины.
Как экран превращается в переиспользуемый компонент
Каждый элемент проходит один и тот же путь — иначе через полгода в продукте будет пять разных кнопок.
design.vmtech.rs
Компонент: карточка заказа
LIVE
переиспользуется
Сетка и типографика
шкала 4 px
Цвет и контраст
AA · light + dark
Состояния
6 состояний
Три языка
sr · en · ru
Компонент в системе
в библиотеке
Живёт в коде
переиспользуется
ОТ МАКЕТА К СИСТЕМЕ
01Сетка и типографикаСначала задаются шкала размеров, отступы и правила заголовков — не декор, а каркас
02Цвет и контрастПалитра проверяется на контраст и работает в светлой и тёмной теме одновременно
03СостоянияПустое, загрузка, ошибка, длинный текст, отключено — то, что обычно всплывает уже в коде
04Три языкаНемецкой длины строк здесь нет, но сербский и русский тексты длиннее английского — макет это учитывает
05Компонент в системеЭлемент попадает в библиотеку с правилами применения, а не остаётся картинкой в макете
06Живёт в кодеРазработчик собирает новые экраны из готовых частей, не согласовывая каждую кнопку
ЗНАКОМАЯ КАРТИНА
Что происходит с дизайном через полгода
Дизайн как набор картинок
В продукте пять оттенков синего и четыре размера кнопок — каждый экран рисовался отдельно
Новый экран требует дизайнера, потому что собрать его не из чего
Длинное название товара ломает карточку, и это выясняется на продакшене
Тёмная тема выглядит как светлая с инвертированными цветами
Мелкий серый текст на сером фоне читается только на мониторе дизайнера
Дизайн как система
Цвета, размеры и отступы заданы токенами — их нельзя «случайно» изменить на одном экране
Новый экран собирается из готовых компонентов за часы, а не за неделю
Крайние случаи нарисованы заранее: пусто, много, ошибка, очень длинное имя
Тёмная тема спроектирована отдельно, с собственными значениями контраста
Контраст проверяется по стандарту, а не на глаз в идеальных условиях
ОБЪЁМ РАБОТ
Что входит в UI-работу
Визуальное направление
Два-три варианта подачи на одном реальном экране — выбор делается на содержании, а не на абстракции.
Типографика
Шкала размеров, начертания, межстрочные расстояния и правила для кириллицы и латиницы.
Палитра и темы
Светлая и тёмная темы как две полноценные схемы, а не автоматическая инверсия.
Библиотека компонентов
Кнопки, поля, таблицы, карточки и уведомления — со всеми состояниями и правилами применения.
Экраны продукта
Ключевые страницы в трёх размерах: телефон, планшет и десктоп — с реальными текстами.
Иконки и графика
Единый набор в одной толщине линий, без смешения стилей из разных источников.
Доступность
Контраст по стандарту, различимый фокус, размеры целей под палец и читаемость при увеличении.
Передача разработке
Токены, отступы и поведение компонентов в виде, который переносится в код без домысливания.
КАК ЭТО ЖИВЁТ
Из чего состоит дизайн-система
ТокеныЦвета, размеры, радиусы и тени как переменные, общие для макета и кодаКомпонентыЭлементы со всеми состояниями, а не только в идеальном видеПравила примененияКогда какой компонент уместен — чтобы новый экран не изобретали зановоСетка и адаптивПоведение блоков при изменении ширины описано, а не оставлено на верстальщикаТексты интерфейсаТон, длина подписей и формулировки ошибок — часть системы, а не случайностьПроверка в браузереГотовые экраны сверяются с макетом на реальных устройствах, а не только в редакторе
Исходные файлы макетов и библиотека компонентов передаются вам вместе с проектом: дизайн-система должна пережить смену подрядчика.
ВОПРОСЫ
Что обычно спрашивают
Нам нужен просто редизайн. Зачем система?
Если продукт состоит из пяти экранов и меняться не будет — система действительно избыточна, и мы так и скажем. Она окупается там, где экранов десятки и появляются новые: без общих правил каждый следующий экран стоит как первый, а продукт постепенно перестаёт выглядеть цельным.
Можно взять готовый шаблон и адаптировать?
Иногда да — например, для внутренней панели, где важна скорость, а не отличие от других. Но шаблон несёт чужие решения: свою сетку, свою типографику и свою логику компонентов. Если продукт клиентский и должен выглядеть как ваш, а не как ещё один шаблон, дешевле сделать своё сразу.
Кто рисует состояния ошибок и пустые экраны?
Мы, и это входит в работу по умолчанию. Пустой экран — это не «ничего нет», а место, где человеку объясняют, что сделать первым. Сообщение об ошибке — не извинение, а инструкция. Если их не нарисовать, они появятся в коде в виде серого текста «Нет данных».
Тёмная тема — это дополнительная работа?
Да, но не двойная. Если палитра с самого начала описана токенами, тёмная тема — это второй набор значений и проверка контраста, а не перерисовка всех экранов. Дороже всего добавлять её в проект, где цвета проставлены вручную на каждом элементе.
Что вы отдаёте разработчикам?
Макеты с описанными токенами и отступами, библиотеку компонентов с состояниями и правила поведения при изменении ширины. Плюс мы сверяем собранные экраны с макетом в браузере — на этом шаге обычно и находятся расхождения, которые иначе доживают до релиза.