ObjectUIObjectUI
ComponentsData Display

Breadcrumb

Display the current location within a navigational hierarchy

The Breadcrumb component shows the current page's location within the site hierarchy.

Basic Usage

Basic Breadcrumb

With Icons

With Icons

Separator

An item trail is joined by separator, a plain string. Leave it unauthored and the trail separates with the declared default, /:

Custom Separator

The declared `separator` key, authored as ">". Left unauthored, the trail separates with the declared default "/".

Any string is accepted, including an empty one ("") for no visible separator at all.

Collapsing a long trail

maxItems bounds how many crumbs are rendered. When the trail is longer, the first crumb and the last maxItems - 1 survive and an ellipsis marks what was elided — so the current page, the crumb the trail exists to name, is never the one dropped:

Collapsed Trail

`maxItems: 3` over a five-crumb trail: the root, an elision marker, and the last two crumbs.

A trail already within maxItems is rendered whole, and a maxItems that cannot mean a count (below 1) is ignored rather than emptying the trail.

Icons

An item's icon is a kebab-case Lucide icon name, resolved against lucide's runtime icons record — the same surface ui:button and the action:* family resolve against. A name that is not a live key of that record (an unknown, or a retired spelling such as layout) renders no glyph, never a fallback glyph and never the literal name as text. The glyph is drawn for every crumb: the final one (rendered as the current page) as well as the linked ones before it.

Schema

interface BreadcrumbItem {
  label: string;
  href?: string;
  icon?: string;                  // kebab-case Lucide icon name (e.g. "panels-top-left")
}

interface BreadcrumbSchema {
  type: 'breadcrumb';
  items: BreadcrumbItem[];        // Breadcrumb items
  separator?: string;             // Separator between crumbs (default "/")
  maxItems?: number;              // Maximum crumbs to display before collapsing
  className?: string;
}

On this page