Make your AI a shadcn expert

Shadcn Breadcrumb

React breadcrumb for docs and store category trails. Built with TypeScript and Tailwind CSS for Next.js using Base UI — Slot links, custom separators, collapsed paths.

A breadcrumb is the path from home to the page you are on. Ancestors are links; the last item is BreadcrumbPage. Use it on docs, store categories, and nested resources where the URL alone is not enough to scan.

Scroll to load preview...

Looking for a neobrutalism version for shadcn?

Same breadcrumb, thicker borders. The NeoBrutalism breadcrumb is the kit if you want that look.

Usage

import {
  Breadcrumb,
  BreadcrumbItem,
  BreadcrumbLink,
  BreadcrumbList,
  BreadcrumbPage,
  BreadcrumbSeparator,
} from "@/components/ui/breadcrumb"
<Breadcrumb>
  <BreadcrumbList>
    <BreadcrumbItem>
      <BreadcrumbLink href="/">Home</BreadcrumbLink>
    </BreadcrumbItem>
    <BreadcrumbSeparator />
    <BreadcrumbItem>
      <BreadcrumbLink href="/components">Components</BreadcrumbLink>
    </BreadcrumbItem>
    <BreadcrumbSeparator />
    <BreadcrumbItem>
      <BreadcrumbPage>Breadcrumb</BreadcrumbPage>
    </BreadcrumbItem>
  </BreadcrumbList>
</Breadcrumb>

The last item is BreadcrumbPage. render={<Link href="…" />} on BreadcrumbLink for your router Link.

Composition

BreadcrumbLink
BreadcrumbSeparator
BreadcrumbSeparator

Basic

Home, a parent, the current page.

Scroll to load preview...

Custom separator

Pass children to BreadcrumbSeparator — a slash, a DotIcon, anything.

Scroll to load preview...

Compose BreadcrumbItem with a DropdownMenu for siblings or hidden ancestors.

Scroll to load preview...

Collapsed

BreadcrumbEllipsis stands in for the middle when the trail is too long.

Scroll to load preview...

render={<Link href="…" />} on BreadcrumbLink so Next.js Link is the actual <a>.

Scroll to load preview...

RTL

Wrap with DirectionProvider and dir="rtl". Copy in Arabic; DotIcon does not flip.

Scroll to load preview...

API

Breadcrumb is a nav with aria-label="breadcrumb". BreadcrumbList is an ol. Items and separators are lis. BreadcrumbPage is a span with aria-current="page".

Prop

Type

Prop

Type

Notes

Don't nest two links

render={<Link href="…" />} on BreadcrumbLink. A href on the crumb plus a Next.js Link child is two <a>s.

Current page is BreadcrumbPage, not a link.

With other components

Questions

Was this page helpful?

Sign in to leave feedback.