Breadcrumbs

Breadcrumbs — составной компонент хлебных крошек: клик по крошке открывает popover со смежными пунктами её уровня, переход — выбором пункта.

Breadcrumbs.Root выстраивает содержимое в строку, части внутри него свободно комбинируются: крошка-текст — Breadcrumbs.Item, крошка с popover — Breadcrumbs.Menu c парой Breadcrumbs.Trigger + Breadcrumbs.Popover. Внутри крошки любого вида — Breadcrumbs.Icon и Breadcrumbs.Label, разделители между крошками расставляются вручную (Breadcrumbs.Separator).

Компонент презентационный — контент popover (обычно список MenuItemButton) и его данные задаёт потребитель; popover монтируется лениво при открытии, так что данные можно загружать внутри него.

Анатомия

Breadcrumbs.Root
Item
Icon | Label
Separator
Menu
Trigger
Icon | Label
Popover

Примеры

Только текст

Крошки без popover — некликабельный текст с разделителями; иконки опциональны.

Два popover

Popover может быть у любого числа крошек — каждая открывает смежные пункты своего уровня и меняется независимо.

Длинный список

Высота popover ограничена — длинный список смежных пунктов скроллится внутри (ScrollArea уже встроена в Breadcrumbs.Popover, потребителю ничего делать не нужно).

API

PropTypeDefault
children*

Крошки и разделители между ними слева направо

ReactNode-

Крошка-текст без popover.

PropTypeDefault
children*

Содержимое крошки — Breadcrumbs.Icon и Breadcrumbs.Label

ReactNode-

Крошка с popover: связывает триггер и панель, собственной разметки не даёт.

PropTypeDefault
children*

Крошка-триггер (Breadcrumbs.Trigger) и панель со смежными пунктами (Breadcrumbs.Popover)

ReactNode-

Крошка-триггер — кнопка, открывающая popover своего Breadcrumbs.Menu.

PropTypeDefault
children*

Содержимое крошки — Breadcrumbs.Icon и Breadcrumbs.Label

ReactNode-

Панель со смежными пунктами уровня крошки; монтируется лениво при открытии, длинный список скроллится внутри.

PropTypeDefault
children*

Смежные пункты уровня крошки (обычно список MenuItemButton). Монтируется лениво при открытии — данные можно грузить внутри

ReactNode-

Иконка рядом с текстом крошки — масштабируется вместе с ним и не сжимается.

PropTypeDefault
children*

Иконка рядом с текстом крошки

ReactNode-

Текст крошки; обрезается многоточием, если не влезает.

PropTypeDefault
children*

Текст крошки — обрезается многоточием, если не влезает

ReactNode-

Разделитель между соседними крошками.

Компонент не принимает пропсов.