components

Breadcrumbs

A navigation trail. Every item but the last renders as a link; the last is always plain text marked aria-current="page", regardless of whether it was given an href — the current page shouldn't link to itself. Server-renderable: no hooks, since a breadcrumb trail is derived from the current route, not interactive state.

tsx
<Breadcrumbs />

Examples

items takes plain data — omit href on the last entry, or leave it in; either way it renders as the current page:

tsx
<Breadcrumbs
  items={[
    { label: "Home", href: "/" },
    { label: "Components", href: "/components" },
    { label: "Breadcrumbs" },
  ]}
/>

as takes your router's own link component, the same convention Card/Button use for href — applied to every non-current item at once, since a trail's links all go through the same router:

tsx
import Link from "next/link";

<Breadcrumbs as={Link} items={items} />;

separator swaps the icon between items — anything from the Icon catalog works:

tsx
<Breadcrumbs
  separator="arrow-right"
  items={[{ label: "Home", href: "/" }, { label: "Settings" }]}
/>

Props

PropTypeDefaultDescription
asreadonly—Your router's own link component, e.g. Next's `Link` — passed through to every non-current item, the same `as` convention `Card`/`Button` use for `href`.
classNametext——
items *readonly——
separatorwarning | chevron-down | chevron-up | chevron-left | chevron-right | close | check | plus | minus | search | arrow-right | arrow-left | menu | info | circle | eye | eye-off | trash | edit | copy | download | upload | external-link | star | calendar | clock | user | settings | filter | more-horizontal | refresh | lock | maximize | minimizechevron-right—