Мы переходим от создания отдельных элементов к проектированию функциональных блоков. Вы уже настроили переменные и создали атомарные компоненты (кнопки, иконки). Теперь пора объединить их в сложный компонент.
Сложный компонент — это группа атомов и молекул, которая решает конкретную задачу. В отличие от обычной кнопки, у такого блока есть внутренняя иерархия и логика распределения контента. Процесс их создания и размещения в интерфейсе называется компоновка.
Анатомия карточки: от атомов к структуре
Карточка — классический пример сложного компонента. В проектах на Next.js (списки товаров, посты, профили) карточки должны строго следовать логике Auto Layout, чтобы корректно отображать динамические данные из API.
Структура типичной карточки:
- Media (Контейнер под изображение): визуальный акцент.
- Content (Текстовый блок): заголовок и описание с вашими типографическими переменными.
- Actions (Панель управления): кнопки из темы Создание базовой кнопки с автолейаутом и вариантами.
Используйте вложенные Auto Layout фреймы. Это позволит гибко управлять отступами: внешними полями карточки и внутренними расстояниями между текстом и кнопками.
В Сравнении 1 показана разница между жестким проектированием и системным подходом.
Практикум: сборка карточки товара
Соберем карточку, которая автоматически подстраивается под длину текста. Это критично для фронтенда, где контент приходит из базы данных.
Алгоритм сборки:
- Текст: Выделите слои заголовка и описания, нажмите
Shift + A. Установите отступ через переменнуюgap-sm. Для обоих слоев выберите Fill Container, чтобы текст переносился. - Кнопка: Перетащите экземпляр кнопки в созданный фрейм.
- Контейнер: Оберните всё в финальный Auto Layout (вертикальный стек).
- Токены: Примените переменную
radius-mdдля углов иcolor-surfaceдля фона.
Ошибки компоновки:
- Фиксированная высота (Fixed Height): если текст окажется длиннее, он вылезет за границы или перекроет кнопку 🧱
- Разбирание (Detach) кнопок: если вы измените радиус скругления в системе, «разобранные» элементы придется править вручную.
Навигация и Navbar
Navbar в Next.js обычно является частью глобального Layout. В Figma мы проектируем его, опираясь на принципы CSS Flexbox. Используйте иконки из урока Создание компонента для иконок и управление их свойствами и объединяйте их с текстовыми ссылками.
Схема 1 визуализирует иерархию вложенности элементов.
Почему это важно для Next.js
Чистая структура слоев в Figma — это готовая спецификация для React-компонента:
- Auto Layout — это Flexbox.
- Fill Container — это
width: 100%илиflex-grow: 1. - Hug Contents — это отсутствие фиксированных размеров (размер по контенту).
Если ваша компоновка в Figma логична, разработчик в Dev Mode получит семантически верные параметры для верстки.
Задание:
- Объедините иконку и заголовок в один Auto Layout (Header карточки).
- Добавьте под него описание и кнопку.
- Установите для внутренних элементов Fill Container, а для внешнего контейнера — Hug Contents по вертикали.
- Проверьте: при изменении длины текста карточка должна расти в высоту автоматически.
Мы научились собирать сложные структуры, сохраняя связь с токенами. Чтобы система оставалась управляемой, нужно разобраться с глубокой вложенностью. В следующей теме мы разберем принципы вложенности компонентов, чтобы ваши макеты было легко поддерживать.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram