Breadcrumb
Eine Linkspur zur aktuellen Seite, die sicher umbricht, sich in Right-to-left-Layouts spiegelt und eingeklappte Segmente an Ort und Stelle erweitert.
pnpm dlx shadcn@latest add https://hextaui.com/r/breadcrumb.jsonFügt die Komponente, die HextaUI-Theme-Tokens und alle HextaUI-Komponenten hinzu, von denen sie abhängt.
Füge die Theme-Tokens zu deinem globalen CSS hinzu, falls du das noch nicht getan hast.
Installiere die Abhängigkeiten.
pnpm add @base-ui/react @tabler/icons-react cnKopiere den folgenden Code und füge ihn in dein Projekt ein.
components/ui/breadcrumb.tsx lib/motion.ts Passe die Importpfade an dein Projekt-Setup an.
Mit Icons
Icons sitzen in Links und in der aktuellen Seite. Gib einem reinen Icon-Link ein aria-label.
Eigenes Trennzeichen
Übergib ein beliebiges Element als children von <BreadcrumbSeparator />, um den Chevron zu ersetzen.
Dropdown
Rendere ein <BreadcrumbLink /> als Trigger eines <DropdownMenu />, um Geschwisterseiten anzubieten.
Eingeklappt
Umschließe mittlere Segmente mit <BreadcrumbCollapse />. Sie verbergen sich hinter Auslassungspunkten und gleiten an Ort und Stelle auf, und der Fokus wandert zum ersten eingeblendeten Link. Übergib open und onOpenChange, um es zu steuern.
Auslassungspunkte
Ein statisches <BreadcrumbEllipsis /> markiert übersprungene Ebenen. Es ist für assistive Technologien verborgen, sofern du es nicht interaktiv machst.
Link-Komponente
Nutze die render-Prop, um den Anker durch den Link deines Routers zu ersetzen, etwa Next.js <Link />.
Langer Inhalt
Namen ohne Umbruchstelle werden umgebrochen, statt überzulaufen, und Segmente mit einer maximalen Breite werden gekürzt.
Rechts nach links
Trennzeichen werden gespiegelt, und das Einklappen animiert von der richtigen Seite.
Links und der Einklapp-Button sind reguläre Tab-Stopps. Trennzeichen und statische Auslassungspunkte werden übersprungen.
| Taste | Aktion |
|---|---|
| TabShift + Tab | Wechselt zwischen Links und dem Einklapp-Button. |
| Enter | Folgt dem fokussierten Link. |
| EnterSpace | Am Einklapp-Button: zeigt die verborgenen Segmente an. Sobald sie fertig aufgeglitten sind, wandert der Fokus zum ersten eingeblendeten Link. |
Jeder Teil akzeptiert die Attribute des Elements, das er rendert, plus eine render-Prop, um dieses Element auszutauschen.
| Prop | Typ | Standard |
|---|---|---|
renderFür assistive Technologien mit „Breadcrumb“ beschriftet. | ReactElement | (props, state) => ReactElement | <nav> |
| Attribut | Beschreibung |
|---|---|
data-slot="breadcrumb" | Das <nav>-Landmark. |
| Prop | Typ | Standard |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <ol> |
| Attribut | Beschreibung |
|---|---|
data-slot="breadcrumb-list" | Die geordnete Liste. Einträge brechen in neue Zeilen um, wenn der Platz ausgeht. |
| Prop | Typ | Standard |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <li> |
| Attribut | Beschreibung |
|---|---|
data-slot="breadcrumb-item" | Items in CSS ansprechen. |
data-collapsed | Vorhanden, solange der Eintrag in einem geschlossenen BreadcrumbCollapse verborgen ist. |
data-breadcrumb-group | Vorhanden bei Einträgen in einem BreadcrumbCollapse. Wird von jedem Teil derselben Gruppe geteilt. |
| Prop | Typ | Standard |
|---|---|---|
href | string | – |
renderÜbergib hier die Link-Komponente deines Routers. | ReactElement | (props, state) => ReactElement | <a> |
| Attribut | Beschreibung |
|---|---|
data-slot="breadcrumb-link" | Links in CSS ansprechen. |
| Prop | Typ | Standard |
|---|---|---|
renderMit aria-current="page" markiert. | ReactElement | (props, state) => ReactElement | <span> |
| Attribut | Beschreibung |
|---|---|
data-slot="breadcrumb-page" | Die aktuelle Seite, mit aria-current="page". |
| Prop | Typ | Standard |
|---|---|---|
childrenWird in Rechts-nach-links-Layouts automatisch gespiegelt. | ReactNode | <IconChevronRight /> |
render | ReactElement | (props, state) => ReactElement | <li> |
| Attribut | Beschreibung |
|---|---|
data-slot="breadcrumb-separator" | Rein präsentational und für assistive Technologien verborgen. |
data-collapsed | Vorhanden, solange das Trennzeichen in einem geschlossenen BreadcrumbCollapse verborgen ist. |
data-breadcrumb-group | Vorhanden bei Trennzeichen in einem BreadcrumbCollapse. |
| Prop | Typ | Standard |
|---|---|---|
children | ReactNode | <IconDots /> |
renderFür assistive Technologien verborgen, sofern render oder onClick es nicht interaktiv macht. | ReactElement | (props, state) => ReactElement | <span> |
| Attribut | Beschreibung |
|---|---|
data-slot="breadcrumb-ellipsis" | Die Auslassungspunkte in CSS ansprechen. |
| Prop | Typ | Standard |
|---|---|---|
childrenDie Einträge und Trennzeichen, die hinter den Auslassungspunkten verborgen werden. | ReactNode | – |
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open: boolean) => void | – |
labelZugänglicher Name des Auslassungs-Buttons. | string | "Show full path" |
| Attribut | Beschreibung |
|---|---|
data-slot="breadcrumb-collapse" | Das <li>, das den Auslassungs-Button enthält. |
data-collapsed | Vorhanden am Auslassungs-Eintrag, sobald die Gruppe geöffnet ist, wodurch er verborgen wird. |
- MotionDie Easing-Kurven, Dauern und der Reduced-Motion-Check, mit denen jede Komponente animiert, plus Hooks für Größen-Morphs und gleitende Hervorhebungen.
- Navigation menuSeitennavigation mit Dropdowns oder einem Panel in voller Breite, das offen bleibt, während der Inhalt zwischen Menüs gleitet.
- PaginationSeitennavigation, die jeden Button an seinem Platz hält, zur aktuellen Seite gleitet und über die Auslassungspunkte zu jeder Seite springt.
- SidebarEine App-Seitenleiste, die zu Icons oder off-canvas einklappt, unter deinem Header fixiert bleibt und auf Smartphones zu einem wischbaren Sheet wird.
- TabsWechsle zwischen Ansichten mit einem Indikator, der zum aktiven Tab gleitet, als Segmented Control oder Unterstrich, und Listen, die bei Überlauf scrollen.