Справочник API
Этот документ предоставляет исчерпывающий справочник по всем экспортируемым API из библиотеки@ui8kit/core. Он охватывает экспорт компонентов, свойства вариантов, интерфейсы TypeScript и соглашения об именовании, используемые во всей кодовой базе.
Для архитектурного контекста и взаимосвязей компонентов см. Архитектура. Для подробной документации API отдельных компонентов см. подразделы: Базовые компоненты, UI-компоненты и Компоненты макетов. Для паттернов использования и примеров см. Руководство разработчика.
Структура экспорта
Библиотека следует плоской структуре экспорта из src/index.ts Все компоненты, варианты, хуки и утилиты реэкспортируются из этой единственной точки входа для упрощения импортов.Каталог экспортируемых компонентов
Следующая таблица документирует все экспорты компонентов с их исходными расположениями и интерфейсами TypeScript:| Имя экспорта | Тип | Исходный файл | Интерфейс свойств | Описание |
|---|---|---|---|---|
Block | Компонент | src/core/ui/Block.tsx | BlockProps | Семантический блочный контейнер с поддержкой элементов HTML5 |
Box | Компонент | src/core/ui/Box.tsx | BoxProps | Гибкий примитив с полной поддержкой вариантов |
Grid | Компонент | src/core/ui/Grid.tsx | GridProps | Примитив макета CSS Grid |
Flex | Компонент | src/core/ui/Flex.tsx | FlexProps | Примитив макета Flexbox |
Stack | Компонент | src/core/ui/Stack.tsx | StackProps | Вертикальное/горизонтальное расположение с промежутками |
Button | Компонент | src/components/ui/Button.tsx | BaseButtonProps | Кнопка действия с вариантами |
Card | Компонент | src/components/ui/Card.tsx | CardProps | Гибкая карточка с составными частями |
Card.Header | Компонент | src/components/ui/Card.tsx | CardHeaderProps | Секция заголовка карточки |
Card.Content | Компонент | src/components/ui/Card.tsx | CardContentProps | Секция содержимого карточки |
Card.Footer | Компонент | src/components/ui/Card.tsx | CardFooterProps | Секция подвала карточки |
Card.Title | Компонент | src/components/ui/Card.tsx | CardTitleProps | Элемент заголовка карточки |
Card.Description | Компонент | src/components/ui/Card.tsx | CardDescriptionProps | Текст описания карточки |
Text | Компонент | src/components/ui/Text.tsx | TextProps | Семантическая отрисовка текста |
Title | Компонент | src/components/ui/Title.tsx | TitleProps | Иерархия заголовков (h1-h6) |
Badge | Компонент | src/components/ui/Badge.tsx | BadgeProps | Компонент небольшой метки |
Container | Компонент | src/components/ui/Container.tsx | ContainerProps | Адаптивный контейнер |
Icon | Компонент | src/components/ui/Icon.tsx | IconProps | Обертка для SVG-иконок |
Image | Компонент | src/components/ui/Image.tsx | ImageProps | Оптимизированный компонент изображения |
Group | Компонент | src/components/ui/Group.tsx | GroupProps | Группировка связанных элементов |
Sheet | Компонент | src/components/ui/Sheet.tsx | SheetProps | Компонент выдвижной панели |
Accordion | Компонент | src/components/ui/Accordion.tsx | AccordionProps | Раскрывающиеся секции содержимого |
DashLayout | Компонент | src/layouts/DashLayout.tsx | DashLayoutProps | Шаблон макета дашборда |
LayoutBlock | Компонент | src/layouts/LayoutBlock.tsx | LayoutBlockProps | Гибкий макет блока содержимого |
SplitBlock | Компонент | src/layouts/SplitBlock.tsx | SplitBlockProps | Макет с двумя колонками |
API системы вариантов
Система вариантов предоставляет 12 компонуемых категорий свойств, которые применяются ко всем компонентам через движок CVA (class-variance-authority). Каждая категория вариантов сопоставляется с конкретными типами TypeScript и утилитарными классами Tailwind CSS.Типы свойств вариантов
Справочная таблица свойств вариантов
| Категория варианта | Свойства | Допустимые значения | Имя экспорта | Исходный файл |
|---|---|---|---|---|
| Внутренние отступы | p, px, py, pt, pb, pl, pr | 'none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl' | paddingVariants | src/core/variants/spacing.ts |
| Внешние отступы | m, mx, my, mt, mb, ml, mr | 'none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', 'auto' | marginVariants | src/core/variants/spacing.ts |
| Фон | bg | 'background', 'card', 'primary', 'secondary', 'destructive', 'muted', 'accent' | backgroundColorVariants | src/core/variants/colors.ts |
| Цвет текста | c | 'foreground', 'primary', 'secondary', 'muted', 'accent', 'destructive' | textColorVariants | src/core/variants/colors.ts |
| Цвет границы | borderColor | 'border', 'input', 'primary', 'secondary', 'destructive' | borderColorVariants | src/core/variants/colors.ts |
| Ширина | w | 'auto', 'full', 'screen', 'fit', 'min', 'max' | widthVariants | src/core/variants/layout.ts |
| Высота | h, minH | 'auto', 'full', 'screen', 'fit', 'min' | heightVariants | src/core/variants/layout.ts |
| Максимальная ширина | maxW | 'xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', '4xl', '5xl', '6xl', '7xl', 'full' | maxWidthVariants | src/core/variants/layout.ts |
| Позиционирование | position | 'relative', 'absolute', 'fixed', 'sticky' | positionVariants | src/core/variants/layout.ts |
| Размер шрифта | size | 'xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl', '4xl', '5xl' | fontSizeVariants | src/core/variants/typography.ts |
| Толщина шрифта | weight | 'normal', 'medium', 'semibold', 'bold' | fontWeightVariants | src/core/variants/typography.ts |
| Выравнивание текста | align | 'left', 'center', 'right', 'justify' | textAlignVariants | src/core/variants/typography.ts |
| Межстрочный интервал | leading | 'none', 'tight', 'snug', 'normal', 'relaxed', 'loose' | lineHeightVariants | src/core/variants/typography.ts |
| Закругление | rounded | 'none', 'sm', 'md', 'lg', 'xl', '2xl', 'full' | roundedVariants | src/core/variants/effects.ts |
| Тень | shadow | 'none', 'sm', 'md', 'lg', 'xl', '2xl' | shadowVariants | src/core/variants/effects.ts |
| Граница | border | '1px solid border', '2px solid border', 'default' | borderVariants | src/core/variants/effects.ts |
Паттерн пробрасывания свойств
Компоненты в библиотеке реализуют последовательный паттерн пробрасывания свойств, где составные компоненты расширяют базовые примитивы дополнительными свойствами вариантов. Это создает типобезопасную цепочку наследования.Примеры пробрасывания свойств
Следующие примеры демонстрируют, как свойства вариантов пробрасываются от составных компонентов к их базовым примитивам: Button расширяет Box:Система типов TypeScript
Библиотека предоставляет всестороннюю поддержку TypeScript с точными определениями типов для всех компонентов, вариантов и утилит.Иерархия базовых типов
Общие паттерны типов
| Паттерн | Описание | Пример интерфейса | Источник |
|---|---|---|---|
| Свойства вариантов | Свойства, извлеченные из определений вариантов CVA с использованием VariantProps<typeof variant> | VariantProps<typeof paddingVariants> | src/core/variants/ |
| Свойство Component | Тип объединения, позволяющий выбор семантического HTML-элемента | component?: 'section' | 'article' | 'nav' | 'header' | 'footer' | 'aside' | 'main' | 'div' | src/core/ui/Block.tsx |
| Свойство As | Тип объединения для полиморфной отрисовки текста | as?: 'p' | 'span' | 'div' | 'em' | 'strong' | 'small' | src/components/ui/Text.tsx |
| Свойство Order | Числовой литеральный тип для уровней заголовков | order: 1 | 2 | 3 | 4 | 5 | 6 | src/components/ui/Title.tsx |
| Пробрасывание Ref | ForwardRefExoticComponent с ComponentPropsWithRef | React.forwardRef<HTMLDivElement, BoxProps> | src/core/ui/Box.tsx |
| Составные компоненты | Паттерн пространства имен для связанных частей компонента | Card.Header, Card.Content, Card.Footer | src/components/ui/Card.tsx |
Общие свойства компонентов
Все компоненты в библиотеке разделяют последовательный набор базовых свойств, унаследованных от HTML-атрибутов React и системы вариантов.Стандартные React-свойства
| Свойство | Тип | Описание | Унаследовано от |
|---|---|---|---|
className | string | Дополнительные CSS-классы для объединения со сгенерированными классами | HTMLAttributes |
style | CSSProperties | Встроенные стили | HTMLAttributes |
children | ReactNode | Дочерние элементы для отрисовки | HTMLAttributes |
ref | Ref<HTMLElement> | Ссылка на базовый DOM-элемент | ComponentPropsWithRef |
data-* | string | Атрибуты данных для таргетирования DOM | HTMLAttributes |
aria-* | string | Атрибуты доступности | HTMLAttributes |
Пользовательские свойства компонентов
| Свойство | Тип | По умолчанию | Описание | Доступность |
|---|---|---|---|---|
component | 'section' | 'article' | 'nav' | 'header' | 'footer' | 'aside' | 'main' | 'div' | 'div' | Семантический HTML-элемент для отрисовки | Block, Grid |
as | 'p' | 'span' | 'div' | 'em' | 'strong' | 'small' | 'p' | Тип текстового элемента | Text |
order | 1 | 2 | 3 | 4 | 5 | 6 | Обязательно | Уровень заголовка | Title |
data-class | string | Имя компонента | Идентификатор компонента для таргетирования DOM | Все компоненты |
API системы тем
Система тем предоставляет поддержку темной темы, настройки доступности и сохранение темы через React Context.Провайдер темы
API вспомогательных хуков
Библиотека экспортирует утилиты адаптивного дизайна для определения области просмотра и медиа-запросов.| Хук | Параметры | Возвращаемый тип | Описание | Источник |
|---|---|---|---|---|
useMediaQuery | query: string | boolean | Соответствует CSS медиа-запросу | src/lib/hooks/useMediaQuery.ts |
useMobile | Нет | boolean | Определяет мобильную область просмотра (< 768px) | src/lib/hooks/useMobile.ts |
useViewport | Нет | { width: number, height: number } | Возвращает текущие размеры области просмотра | src/lib/hooks/useViewport.ts |
Специфичные для компонентов варианты
Некоторые компоненты определяют дополнительные варианты помимо основной системы вариантов для специализированной стилизации.Варианты кнопок
Варианты карточек
Атрибуты данных
Все компоненты отрисовываются с атрибутамиdata-class для последовательного таргетирования DOM и стилизации.
| Компонент | Значение data-class | Назначение |
|---|---|---|
Block | 'block' | Идентифицирует примитив Block |
Box | 'box' | Идентифицирует примитив Box |
Grid | 'grid' | Идентифицирует примитив Grid |
Flex | 'flex' | Идентифицирует примитив Flex |
Stack | 'stack' | Идентифицирует примитив Stack |
Button | 'button' | Идентифицирует компонент Button |
Card | 'card' | Идентифицирует компонент Card |
Card.Header | 'card-header' | Идентифицирует заголовок Card |
Card.Content | 'card-content' | Идентифицирует содержимое Card |
Card.Footer | 'card-footer' | Идентифицирует подвал Card |
Text | 'text' | Идентифицирует компонент Text |
Title | 'title' | Идентифицирует компонент Title |
Badge | 'badge' | Идентифицирует компонент Badge |
Container | 'container' | Идентифицирует компонент Container |
Подробная документация API
Для полной документации API отдельных компонентов со всеми свойствами, методами и примерами использования см.:- Базовые компоненты - Примитивы:
Block,Box,Grid,Flex,Stack - UI-компоненты - Составные компоненты:
Button,Card,Text,Title,Badgeи др. - Компоненты макетов - Шаблоны макетов:
DashLayout,LayoutBlock,SplitBlock