pbcomponents

Установка, настройка и справочник компонентов React.

@prosazhin/pbcomponents — библиотека компонентов для React 19. Справочник охватывает компоненты, хелперы, провайдеры и хуки с примерами и сигнатурами API.

Ресурсы: GitHub · npm · Figma Community · Behance.

Установка

npm install @prosazhin/pbcomponents @prosazhin/pbstyles

Пакет компонентов использует React 19 как peer dependency и Tailwind CSS 4. Для фирменных токенов подключите pbstyles в глобальном CSS:

@import 'tailwindcss';
@import '@prosazhin/pbstyles/styles/tailwind/theme.css';

Первая кнопка

import { Button } from '@prosazhin/pbcomponents';

export default function Example() {
  return (
    <Button
      size='m'
      color='primary'
      theme='filled'
    >
      Сохранить
    </Button>
  );
}

Диалоги и уведомления

Если используете Dialog, Notification или связанные хуки, оберните приложение в PBCProvider один раз:

import { PBCProvider } from '@prosazhin/pbcomponents';

export default function Layout({ children }: { children: React.ReactNode }) {
  return <PBCProvider notifications={{ top: 80 }}>{children}</PBCProvider>;
}

На этом сайте провайдер расположен в корневом layout. Для остальных компонентов дополнительный провайдер не нужен.

Тема и ссылки Next.js

Цвета компонентов берутся из pbstyles. Без настройки они следуют prefers-color-scheme; data-theme="dark" или data-theme="light" на <html> либо контейнере задаёт режим вручную.

Компоненты с href (Button, Tab, DropdownItem, Tag) принимают linkComponent, если вместо обычной ссылки нужен next/link:

import NextLink from 'next/link';
import { Button } from '@prosazhin/pbcomponents';

<Button
  href='/projects'
  linkComponent={NextLink}
>
  Проекты
</Button>;

Справочник

Компоненты

ЭкспортНазначение
ContainerКонтейнер страницы с основным содержимым и боковыми областями.
HeadlineЗаголовок с управляемым семантическим уровнем.
ButtonДействие или ссылка с размером, цветом, темой и состоянием загрузки.
ButtonGroupГруппа кнопок одного размера.
TagИнтерактивная метка, ссылка или фильтр.
BadgeНебольшая текстовая метка статуса или категории.
FieldОбёртка для подписи, контрола, подсказки и ошибки.
InputОднострочное поле ввода с дополнениями.
TextareaМногострочное поле ввода.
SearchПоиск и выбор вариантов из списка.
SelectВыбор одного или нескольких вариантов из списка.
CheckboxНезависимый флажок с подписью.
CheckboxGroupГруппа флажков с массивом выбранных значений.
RadioОдин вариант в наборе взаимно исключающих ответов.
RadioGroupГруппа радиокнопок с одним выбранным значением.
InlineRadioКомпактный вариант радио-кнопки.
InlineRadioGroupГруппа компактных вариантов выбора.
SwitchПереключатель булевой настройки.
TabsНабор вкладок с выбранным индексом.
TabОдна вкладка для Tabs или самостоятельной навигации.
CollapseРаскрываемый блок с заголовком.
CollapseGroupГруппа раскрываемых блоков.
DropdownРаскрывающееся меню с триггером и содержимым.
DropdownItemОтдельный пункт меню: действие или ссылка.
DialogМодальное окно с триггером, секциями и закрытием.
AlertВстроенное сообщение о состоянии с заголовком и действиями.
NotificationВсплывающее сообщение с таймером и прогрессом.

Хелперы

ЭкспортНазначение
ContentТекст с иконками слева и справа.
IconSVG-иконка с заданным размером.
TextТекст с размером и весом, выбираемым через пропсы.

Провайдеры

ЭкспортНазначение
DialogProviderКонтекст для управления диалогами из дочерних компонентов.
NotificationsProviderКонтекст для вызова уведомлений из любой вложенной части.
PBCProviderОбщий провайдер диалогов и уведомлений.

Хуки

ЭкспортНазначение
useClickOutsideВызывает callback при клике или касании вне переданных элементов.
useControllableStateСостояние, которое может управляться пропсом value или храниться внутри компонента.
useCountdownВозвращает прогресс таймера от 0 до 100 с поддержкой паузы.
useDialogЧитает диалоги из DialogProvider и закрывает активный или указанный диалог.
useHoverControllableОтслеживает наведение как управляемое или внутреннее состояние.
useKeydownВызывает callback при нажатии указанных клавиш.
useMergeRefsОбъединяет несколько React ref в один callback ref.
useNotificationsЧитает уведомления и предоставляет методы показа и скрытия.
useScreenSizeВозвращает ширину и высоту окна, обновляясь при resize.
useShowDialogРегистрирует диалог и возвращает функцию его открытия.

Типы доступны из корня пакета и @prosazhin/pbcomponents/types. На страницах экспортов приведены примеры и сигнатуры API.