Breadcrumb
Shows the path to the current page within the workspace hierarchy. Deliberately quiet: a breadcrumb is a line of prose you read far more often than you click, so the whole family is colour-only on hover, with no fills, no movement inside the text line, and every separator kept silent to screen readers. Size and separator glyph are trail-wide decisions set once on the root and read by every part — a trail with a chevron at one joint and a slash at the next is a bug, not a feature.
import {
Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage,
BreadcrumbSeparator, BreadcrumbEllipsis,
} from "@pestoui/core"Default
Separators
Set the glyph once on the root and every separator in the trail picks it up — no per-joint children, no chance of two joints drifting apart on size, colour or aria. Chevron is the default. Slash and arrow are glyphs; dot and line are drawn, so their rows get a flex context to centre them against the text. Chevron and arrow flip in RTL; a slash, a dot and a hairline are direction-agnostic and deliberately do not.
Per-joint override
A separator can override the trail default with variant, and explicit children beat both. This is for a structural break — a hairline marking where the workspace root stops and the path begins — not for decoration. Mixing glyphs joint to joint for its own sake reads as an accident.
Small
One notch down in type and gap, for dense chrome — a sticky topbar sitting beside small controls. Not for page headers, where the trail is the only orientation on screen. Like the separator, size travels by context, so the list, the links, the page, the separators and the ellipsis all move together.
Icon in a crumb
Drop an icon straight into a link or the current page. A crumb only becomes a flex line when it actually holds an svg — a plain text crumb stays inline, which is what lets it wrap mid-trail the way prose does — and the icon takes its size from the trail, so it can never disagree with the text beside it.
Collapsed middle
When the trail is longer than the space it has, keep the root and the last two crumbs and fold the middle into an ellipsis. On its own the ellipsis is decorative and silent to screen readers — collapsed crumbs that cannot be reached are not worth announcing, and the reachable ones are still read out either side of it.
Collapsed middle as a menu
Pass asChild and the same ellipsis becomes a real control: it drops the aria-hidden, renders through a slot so a menu trigger's props and ref land on a focusable element, and grows the one resting box in the family — a square target where a full round cannot collapse the shape. It is the only part of a breadcrumb that gets a hover fill. The accessible name comes from label as visually hidden text rather than aria-label, so it stays translatable and survives extraction.
Props
Pesto UI · 117 documented components