Info Block
Installation
npm i @snack-uikit/info-block
Description
- Пакет
@snack-uikit/info-blockпредоставляет компонентInfoBlockдля отображения компактных информационных блоков с заголовком, описанием, иконкой и действиями. - Компонент подходит для размещения вспомогательных или поясняющих сообщений в интерфейсе (состояния, подсказки, результаты действий) и поддерживает разные размеры (
size: 's' | 'm' | 'l') и варианты компоновки контента (align: 'horizontal' | 'vertical'). - Иконка настраивается через проп
icon(тип, декор, цветовое оформление), используетIconPredefinedи автоматически подстраивается под выбранный размер блока. - Для отображения действий предусмотрен вложенный подкомпонент
InfoBlock.Footerс основной и дополнительной кнопками, которые наследуют размер блока и могут дополняться тултипами. - Компонент поддерживает пробрасывание служебных пропов (например,
data--атрибутов) черезWithSupportPropsи позволяет кастомизировать внешний вид черезclassName. - Figma:
Info Block.
Example
import { InfoBlock } from '@snack-uikit/info-block';
import { PlaceholderSVG } from '@snack-uikit/icons';
export function InfoBlockExample() {
return (
<InfoBlock
title="Не найдено данных"
description="Проверьте параметры фильтра или попробуйте обновить страницу позже."
size="m"
align="vertical"
icon={{
icon: PlaceholderSVG,
decor: true,
appearance: 'primary',
}}
footer={
<InfoBlock.Footer
primaryButton={{
text: 'Обновить',
onClick: () => console.log('Refresh'),
}}
secondaryButton={{
text: 'Изменить фильтр',
onClick: () => console.log('Change filter'),
}}
/>
}
data-test-id="info-block-example"
/>
);
}
InfoBlock
Props
| name | type | default value | description |
|---|---|---|---|
| title | string |
- | Заголовок |
| description | ReactNode |
- | Подзаголовок |
| icon | Pick<IconPredefinedProps, "icon" | "decor" | "appearance"> |
- | Иконка |
| size | enum Size: "s", "m", "l" |
- | Размер |
| align | enum Align: "horizontal", "vertical" |
- | Расположение элементов |
| footer | ReactNode | ReactElement<FooterProps, ({ primaryButton, secondaryButton, className }: FooterProps) => Element> |
- | Вложенный Footer |
| className | string |
- | CSS-класс |