ЗамыселЪ Глеба Киренкова

ЗамыселЪ Глеба Киренкова

Цифровые продукты ·

Дизайн-система начинается с повторяющегося решения

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

Сначала появляется повторение

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

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

Токены фиксируют отношения

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

Хороший набор токенов строится слоями. Базовый слой хранит исходные значения, смысловой связывает их с назначением, а компонентный уточняет применение. Такая структура требует дисциплины, зато делает изменения предсказуемыми. Если вся система держится на названиях вроде «серый-3» и «отступ-18», смысл снова остаётся в голове отдельных людей.

Компонент — это поведение

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

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

Контент входит в систему

Интерфейс распадается не только из-за разных цветов. Одинаковое действие может называться «Сохранить», «Готово» и «Применить»; сообщения об ошибке могут объяснять проблему или оставлять человека в тупике. Поэтому дизайн-система должна фиксировать принципы названий, длину заголовков, тон подсказок и структуру сообщений для основных состояний.

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

Дизайн и код должны встречаться

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

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

Система должна иметь владельца

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

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

Когда дизайн-система окупается

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

Работу над цифровым продуктом я начинаю с его логики и реальных сценариев. Если повторения уже мешают развитию, в рамках Метода я собираю минимальную дизайн-систему вместе с интерфейсом и кодом. Так она остаётся рабочим инструментом продукта, а не отдельным декоративным проектом.

От идеи к цифровому продукту

Если задача требует сервиса или внутреннего инструмента, определим первый законченный сценарий и путь к работающей версии.

Обсудить цифровой продукт