Компоненты макетов
Этот документ предоставляет справочник по API и паттерны построения для компонентов макетов в@ui8kit/core. Компоненты макетов организуют множество UI-компонентов в полноценные структуры приложений, таких как панели управления, целевые страницы и административные панели.
Для базовых примитивных компонентов макета (Grid, Flex, Stack) см. Базовые компоненты. Для паттернов композиции UI-компонентов см. UI-компоненты. Для общих лучших практик по построению макетов см. Лучшие практики.
Обзор
Библиотека предоставляет три специализированных компонента макета, которые составляют примитивы и UI-компоненты в шаблоны приложений:| Компонент | Назначение | Основной сценарий использования |
|---|---|---|
DashLayout | Макет панели управления с изменяемым размером боковой панели | Административные панели, дашборды |
LayoutBlock | Гибкие секции контента с режимами grid/flex/stack | Целевые страницы, маркетинговые сайты |
SplitBlock | Двухколоночные разделенные макеты | Секции функций, героические секции |
Взаимосвязи компонентов
DashLayout
Компонент макета панели управления с изменяемой боковой панелью, навигационной панелью и основной областью контента. Построен наreact-resizable-panels для функциональности изменения размера панелей.
Свойства DashLayout
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
page | React.ComponentType | - | Компонент для рендеринга в основной области контента |
children | React.ReactNode | - | Альтернатива свойству page для основного контента |
sidebar | React.ReactNode | - | Контент для изменяемой боковой панели |
navbarProps | Partial<NavbarProps> | - | Свойства для навигационной панели, включая бренд, переключатель темы |
Подкомпонент Navbar
<nav> с атрибутом data-role="dash-navbar".
Реализация: src/layouts/DashLayout.tsx34-49
Подкомпонент Sidebar
<aside>. Оборачивает дочерние элементы в Stack макет с опциональным заголовком.
Реализация: src/layouts/DashLayout.tsx14-25
Структура панелей
Паттерн импорта
LayoutBlock
Гибкий компонент секции контента, поддерживающий три режима макета: grid, flex и stack. Включает систему хуков контента для настраиваемого рендеринга и презентеры по умолчанию для распространенных паттернов.Свойства LayoutBlock
Режимы макета
| Режим | Компонент | Сценарий использования | Свойства |
|---|---|---|---|
grid | Grid | Сетки функций, галереи карточек | cols, gridCols, gap, align, justify |
flex | Group | Гибкие переносимые макеты | wrap, flexWrap, gap, align, justify |
stack | Stack | Вертикальные списки, таймлайны | stackAlign, gap |
Система хуков контента
| Набор хуков | Режим макета | Рендерер элемента | Сценарий использования |
|---|---|---|---|
defaultLayoutContentHooks.gridCards | grid | DefaultItemRenderers.gridCard | Сетки на основе карточек с изображениями |
defaultLayoutContentHooks.gridSimple | grid | DefaultItemRenderers.gridSimple | Простые сетки иконка + текст |
defaultLayoutContentHooks.flex | flex | DefaultItemRenderers.flexItem | Горизонтальные списки функций |
defaultLayoutContentHooks.stack | stack | DefaultItemRenderers.flexItem | Вертикальные списки функций |
Рендереры элементов по умолчанию
Паттерн импорта
SplitBlock
Компонент двухколоночного разделенного макета для героических секций и демонстрации функций. Поддерживает позиционирование медиа слева/справа и опциональную обертку в контейнер.Свойства SplitBlock
Режимы макета
| Режим | Описание | Структура |
|---|---|---|
splitSection={false} | Макет в контейнере | Block > Container > Grid(cols="1-2") |
splitSection={true} | Полноширинный макет | Block > Grid(cols="1-2") |
Система хуков контента
Паттерн импорта
Паттерны построения по сценариям использования
Целевые страницы
Целевые страницы обычно комбинируют множество компонентовLayoutBlock и SplitBlock для героических секций, функций и призывов к действию.
Панели управления
Панели управления используютDashLayout как основной контейнер с изменяемой боковой панелью для навигации.
Веб-сайты
Многостраничные веб-сайты составляют секцииLayoutBlock с различными режимами макета для разнообразных типов контента.
Административные панели
Административные панели расширяют паттерн панели управления с макетами форм и интерфейсами управления данными.Распространенные паттерны композиции
Конфигурации адаптивной сетки
| Сценарий использования | Значение Cols | Описание |
|---|---|---|
| Сетка функций | "1-2-3" | 1 колонка мобильная, 2 планшет, 3 десктоп |
| Карточки статистики | "1-2-4" | 1 колонка мобильная, 2 планшет, 4 десктоп |
| Две колонки | "1-2" | 1 колонка мобильная, 2 десктоп |
| Простая сетка | "2" | Всегда 2 колонки |
Композиция хуков контента
Вложенная композиция макетов
Атрибуты данных для таргетинга
Компоненты макета включают атрибутыdata-class и data-role для согласованного таргетинга DOM:
| Компонент | Атрибут | Значение | Элемент |
|---|---|---|---|
DashLayout | data-role | "dash-main" | Блок основного контента |
Navbar | data-role | "dash-navbar" | Элемент Nav |
Sidebar | data-role | "dash-sidebar-stack" | Контейнер Stack |
LayoutBlock | data-class | "layout-block" | Элемент Section |
LayoutBlock | data-class | "layout-grid" / "layout-flex" / "layout-stack" | Контейнер макета |
SplitBlock | data-class | "split-grid" | Контейнер Grid |