Breadcrumb
Navigation trail with separators, collapsed ellipsis and variant-capable links.
pnpm dlx @glinui/cli@latest add breadcrumbInstallation
pnpm dlx @glinui/cli@latest add breadcrumbPrefer the package?
Usage
Separators
Pass any node as the separator, and keep the current page as plain text with BreadcrumbPage.
"use client"
import { FileText } from "@phosphor-icons/react"import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator} from "@glinui/ui"
export function BreadcrumbFilesExample() { return ( <div className="mx-auto grid w-full max-w-xl gap-4"> <Breadcrumb> <BreadcrumbList> <BreadcrumbItem><BreadcrumbLink href="#">Documents</BreadcrumbLink></BreadcrumbItem> <BreadcrumbSeparator>/</BreadcrumbSeparator> <BreadcrumbItem><BreadcrumbLink href="#">Contracts</BreadcrumbLink></BreadcrumbItem> <BreadcrumbSeparator>/</BreadcrumbSeparator> <BreadcrumbItem><BreadcrumbPage><FileText aria-hidden="true" className="me-1 inline size-4" />Vendor agreement.pdf</BreadcrumbPage></BreadcrumbItem> </BreadcrumbList> </Breadcrumb> <Breadcrumb> <BreadcrumbList> <BreadcrumbItem><BreadcrumbLink href="#">Settings</BreadcrumbLink></BreadcrumbItem> <BreadcrumbSeparator /> <BreadcrumbItem><BreadcrumbPage>Billing</BreadcrumbPage></BreadcrumbItem> </BreadcrumbList> </Breadcrumb> </div> )}Variants
Every look of the shared vocabulary: glinr (the default), plain (shadcn), solid, soft, outline, ghost, gradient and glass. Omit `variant` to follow the ambient design style.
import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "@glinui/ui"
const variants = ["glinr", "plain", "solid", "soft", "outline", "ghost", "gradient", "glass"] as const
export function Demo() { return ( <div className="grid gap-3"> {variants.map((variant) => ( <Breadcrumb key={variant} variant={variant}> <BreadcrumbList> <BreadcrumbItem><BreadcrumbLink href="#">Home</BreadcrumbLink></BreadcrumbItem> <BreadcrumbSeparator /> <BreadcrumbItem><BreadcrumbLink href="#">Docs</BreadcrumbLink></BreadcrumbItem> <BreadcrumbSeparator /> <BreadcrumbItem><BreadcrumbPage>Breadcrumb</BreadcrumbPage></BreadcrumbItem> </BreadcrumbList> </Breadcrumb> ))} </div> )}Glass (opt-in)
Glass is opt-in and needs a colourful or photographic backdrop to read as frosted. Pick one in the stage header.
import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "@glinui/ui"
export function Demo() { return ( <Breadcrumb variant="glass"> <BreadcrumbList> <BreadcrumbItem><BreadcrumbLink href="/">Home</BreadcrumbLink></BreadcrumbItem> <BreadcrumbSeparator /> <BreadcrumbItem><BreadcrumbEllipsis /></BreadcrumbItem> <BreadcrumbSeparator /> <BreadcrumbItem><BreadcrumbPage>Settings</BreadcrumbPage></BreadcrumbItem> </BreadcrumbList> </Breadcrumb> )}Accessibility
- Rendered as a nav landmark labelled breadcrumb with an ordered list.
- The current page is marked with aria-current=page.
- Separators are hidden from assistive tech; the ellipsis exposes a screen reader label.
Keyboard Interactions
| Key | Action |
|---|---|
| Tab | Move through breadcrumb links in order. |
ARIA Attributes
- `aria-label="breadcrumb"` on nav
- `aria-current="page"` on BreadcrumbPage
- `aria-hidden` on separators
Reduced Motion
Only color transitions are used, and they are disabled with prefers-reduced-motion.
Affected properties
colorAPI Reference
Breadcrumb
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
variant | "glinr" | "plain" | "solid" | "soft" | "outline" | "ghost" | "gradient" | "glass" | - | ambient style (glinr) | Omit it for the ambient design style: a bare trail whose current page is a raised pill. `plain` is a flat trail, `solid`, `soft`, `outline` and `gradient` wrap it in a pill, `glass` is opt-in and needs a backdrop. Legacy `default` follows the ambient style, `frosted` maps to `glass`. |
asChild | boolean | No | - | Auto-generated from TypeScript source. |
BreadcrumbLink
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
asChild | boolean | No | false | Render your router link instead of an anchor. |
BreadcrumbSeparator / BreadcrumbEllipsis / BreadcrumbPage
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
children | ReactNode | - | CaretRight | Separator only: custom separator icon. Flips automatically in RTL. |
asChild | boolean | No | - | Auto-generated from TypeScript source. |
Source
Import directly from the package or browse the source on GitHub. Click any file to view it.
Import
import { Breadcrumb } from "@glinui/ui"Source Files
Dependencies
@glinui/ui@phosphor-icons/react@radix-ui/react-slotclass-variance-authorityGenerated API Snapshot
Beta
Generated API Snapshot
BetaAuto-extracted from TypeScript source in packages/ui/src/components/breadcrumb.tsx. This section is in beta and may lag behind hand-curated docs. Regenerate with pnpm --filter @glinui/docs api:generate.
Generated: 2026-10-08T01:41:21.546Z · Full index: /docs/api-metadata
Primary Props Type
BreadcrumbProps
BreadcrumbLinkProps
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
asChild | boolean | No | - | - |
BreadcrumbProps
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
variant | PanelVariantProp | No | - | Surface look. Omit for the ambient design style (glinr by default): a bare trail whose current page is a raised pill. `solid`, `soft`, `outline`, `gradient` and `glass` wrap the trail in a pill; `glass` is opt-in and needs a rich backdrop. |