Перейти к содержимому

UI-дизайн

UI-дизайн (user interface design) отвечает за то, как интерфейс выглядит и как его элементы представлены на экране. Он задаёт композицию, визуальную иерархию, компоненты, типографику, цвет, иконки, состояния и адаптивное поведение.

UI связан с UX, но решает отдельную часть задачи. UX проектирует сценарии и помогает человеку достигать цели; UI делает эти сценарии видимыми и понятными через конкретные экраны и элементы управления. Например, UX определяет последовательность оформления заказа, а UI показывает шаги, поля, ошибки и подтверждение.

UI — это не набор цветов и кнопок, а согласованная система решений для всего интерфейса:

  • Информационная и визуальная иерархия — что пользователь замечает первым, как сгруппированы данные и куда ведёт взгляд.
  • Макет и адаптивность — сетка, отступы, ширина контента и поведение экрана при изменении viewport.
  • Визуальный язык — типографика, цвет, форма, иконки, иллюстрации, движение и плотность элементов.
  • Компоненты и паттерны — кнопки, поля, таблицы, меню, диалоги и повторяемые способы решать типовые задачи.
  • Состояния и обратная связь — hover, focus, active, disabled, loading, empty, error и success.
  • Доступность — контраст, клавиатурная навигация, видимый фокус, подписи контролов и поддержка вспомогательных технологий.

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

Дизайн-система — не набор красивых макетов, а согласованные решения, из которых собираются экраны: токены, сетка, компоненты и правила их применения. UI-kit — практическая часть системы в дизайн-инструменте.

СлойЧто фиксируетЧто происходит без него
ТокеныЦвета, типографику, отступы, радиусы, тени, уровни наложенияЗначения берут «на глаз», расхождения накапливаются от экрана к экрану
Сетка и раскладкаКолонки, контейнеры, breakpoints, плотностьКаждый экран придумывает свою ширину и ритм
Иконки и графикаСтиль, размер, толщину линии, правила использованияИконки из разных наборов выглядят как разные продукты
Компоненты и вариантыКнопки, поля, таблицы, диалоги, навигациюОдинаковые задачи решаются разными элементами
ПравилаКогда применять компонент и чего избегатьБиблиотека существует, но ей не пользуются

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

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

Компонент: анатомия, варианты и состояния

Заголовок раздела «Компонент: анатомия, варианты и состояния»

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

СостояниеЧто показываетЧастая ошибка
DefaultОбычный вид—
HoverРеакцию на наведениеЭффект есть, но он не отличает кликабельное от некликабельного
FocusПоложение клавиатурного фокусаКонтур убран ради «чистоты» без замены
Active / pressedПодтверждение нажатияСостояние ничем не отличается от hover
DisabledНедоступность действияНет объяснения, какого условия не хватает
LoadingЧто операция выполняетсяКнопка блокируется молча, без индикатора
ErrorЧто пошло не так и что исправитьОшибка показана только цветом или только текстом внизу формы
SuccessЧто действие завершилосьУспех не подтверждается, пользователь нажимает повторно
EmptyЧто данных ещё нет и как они появятсяПустая область без объяснения и первого шага

Состояния проектируются вместе с поведением: что происходит при двойном клике, потере сети, повторной отправке и переходе назад. Это уже область проектирования взаимодействия.

Документация компонента снимает разрыв между макетом и реализацией. Минимальный состав:

  • назначение и случаи, когда компонент уместен;
  • анатомия и все варианты;
  • состояния и правила поведения;
  • требования к контенту: длина текста, числа, локали, переносы;
  • ограничения и запреты — что с компонентом делать нельзя;
  • спецификация для разработки: пропсы, используемые токены, поведение, требования доступности;
  • ссылка на живую реализацию — Storybook, UI-kit или тестовую страницу.

Без документации UI-kit быстро превращается в набор несвязанных макетов, а разработка начинает трактовать состояния по-своему. Хорошая спецификация описывает не пиксели, а правила: какие токены применены, как элемент ведёт себя при переполнении и что происходит на узком экране.

  • Breakpoints выбираются по контенту: там, где ломается сетка или таблица, а не по названиям устройств.
  • Первый экран сохраняет главное действие и не требует прокрутки, чтобы понять предложение.
  • Переполнение проверяется на длинных заголовках, адресах почты, больших числах и узких колонках.
  • Интерактивные цели — не меньше 24 × 24 CSS-пикселя; комфортная зона для пальца начинается примерно с 44 × 44.
  • Таблицы на мобильном превращаются в карточки или получают приоритетные колонки, а не сжимаются в нечитаемую сетку.
  • Мобильные меню и диалоги удерживают фокус, закрываются по Escape и не блокируют прокрутку страницы навсегда.
  • Медленная сеть проектируется заранее: скелетоны, placeholder-ы и локальные индикаторы вместо пустого экрана.
ЗадачаЧто делает агентЧто проверить вручную
Компоненты и вариантыСоздаёт компоненты и их варианты по правилам системыСоответствие токенам и существующим паттернам
Полнота состоянийПредлагает hover, focus, disabled, loading, error, success, emptyПоведение при прерывании и повторном действии
Работа с токенамиБерёт цвета, отступы, типографику и радиусы из токеновНет «магических» значений в макете
Аудит доступностиПроверяет контраст, фокус, подписи, ARIA, размер целейРеальная работа с клавиатуры и экранным диктором
АдаптивностьПредлагает поведение на разных breakpoints и при переполненииПроверка на реальных устройствах и с длинным контентом
КонсистентностьСверяет макеты с UI-kit и находит отклоненияОтклонение не является осознанным исключением
Документация и handoffГенерирует анатомию, правила, do/don’t и спецификациюСпецификация совпадает с реализацией
Визуальный QAСравнивает скриншоты и находит регрессииРегрессия не вызвана намеренным изменением

Инструменты: Figma API и плагины, design tokens в JSON, Storybook, axe и Lighthouse, сравнение скриншотов. Сквозные требования к работе агента — в статье ИИ-дизайн: сервисы и процесс.

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

daisyUI добавляет к стандартному Tailwind CSS семантические классы компонентов — например, btn, card и toggle — и готовые темы. Это не UI-фреймворк для одного JavaScript-стека: библиотека написана на чистом CSS, не требует собственного JS-бандла и работает в разных фреймворках и шаблонизаторах, если в проекте подключён Tailwind CSS. Поэтому её можно рассматривать как переносимый компонентный слой для проектов на разных стеках.

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

ПодходПримерыКогда подходит
Компонентный слой поверх Tailwind CSSdaisyUIНужны семантические классы готовых компонентов и темы, а сам проект использует Tailwind CSS. Подходит для разных JavaScript-фреймворков и серверных шаблонизаторов.
Полноценная стилизованная система компонентовMaterial UI (MUI), Ant Design, Chakra UIНужно быстро собрать большой React-интерфейс из готовых компонентов, тем и общих правил. MUI следует языку Material Design; Ant Design ориентирован на насыщенные веб-приложения; Chakra предоставляет компоненты и настраиваемую систему стилей и токенов.
Исходный код компонентов в проектеshadcn/uiНужны готовые компоненты и возможность владеть их исходниками и менять их под собственную систему. Это способ собирать собственную библиотеку из распространяемого кода, а не обычный пакет компонентов с закрытой внутренней реализацией. Часто используется с React и Tailwind CSS.
Неоформленные доступные примитивыRadix Primitives, React Aria ComponentsВажны готовое сложное поведение, клавиатурная работа и доступность, а внешний вид нужно проектировать самостоятельно.
Утилитарный CSSTailwind CSSНужны низкоуровневые utility-классы и полный контроль над сборкой визуальных компонентов без готового компонентного слоя.

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

  1. Сверьте библиотеку со стеком. Проверьте поддерживаемый фреймворк, версии, способ рендеринга и интеграцию с текущими стилями.
  2. Определите нужный уровень готовности. Готовая стилизованная система экономит время; примитивы дают больше контроля, но требуют собрать визуальный слой и документацию.
  3. Проверьте реальные сложные компоненты. Нужные таблицы, date picker, combobox, меню и диалоги должны работать с клавиатурой, экранным диктором и мобильным экраном.
  4. Оцените настройку бренда. Убедитесь, что токены, типографика, состояния и варианты можно менять без хрупких переопределений.
  5. Посмотрите на стоимость сопровождения. Учитывайте обновления, размер зависимости, качество документации, тестирование и возможность заменить отдельные компоненты.
  6. Сделайте вертикальный срез. Реализуйте один типичный экран с формой, состояниями и адаптивом и оцените его до фиксации выбора.

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

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

В базе знаний UX-дизайн описывает задачи и сценарии пользователей, проектирование взаимодействия — поведение элементов и состояний, а эта статья — визуальную основу интерфейсов. Платформенные практики WordPress собраны в разделе тем WordPress.