Skip to Content
⭐️ Leave a star →
ComponentsBreadcrumb

Breadcrumb

A navigation trail. Renders as <nav><ol> with proper landmark and list semantics. Mark the current page with current and customize the separator however you like.

Features

Semantic <nav> + <ol> structure with built-in aria-label.
Current-page marking via current (adds aria-current="page").
Customizable separator content — text, character, or icon.
asChild on Link to wrap router links (Next, React Router, etc.).

Example

import { Breadcrumb } from '@wire-ui/react' <Breadcrumb.Root> <Breadcrumb.List> <Breadcrumb.Item> <Breadcrumb.Link href="/">Home</Breadcrumb.Link> </Breadcrumb.Item> <Breadcrumb.Separator /> <Breadcrumb.Item> <Breadcrumb.Link href="/settings">Settings</Breadcrumb.Link> </Breadcrumb.Item> <Breadcrumb.Separator /> <Breadcrumb.Item current>Profile</Breadcrumb.Item> </Breadcrumb.List> </Breadcrumb.Root>

Styling

The current item exposes data-current. Use it to style the active page differently from the link siblings.

<Breadcrumb.Item current className=" text-black font-medium data-[current]:cursor-default "> Current page </Breadcrumb.Item>

Using data attributes

The current Item sets data-current="" and aria-current="page".

li[data-current] { color: black; font-weight: 500; } li[data-current] a { pointer-events: none; }

asChild lets you replace the <a> with a framework router link (Next.js <Link>, React Router <Link>, etc.) while keeping the Breadcrumb semantics.

<Breadcrumb.Link asChild> <NextLink href="/dashboard">Dashboard</NextLink> </Breadcrumb.Link>

Root props

PropTypeDefaultDescription
aria-labelstring'Breadcrumb'Accessible label for the navigation landmark
...restHTMLAttributes<HTMLElement>All standard HTML nav attributes

List props

PropTypeDescription
...restOlHTMLAttributes<HTMLOListElement>All standard HTML ol attributes

Item props

PropTypeDefaultDescription
currentbooleanfalseMarks this item as the current page
...restLiHTMLAttributes<HTMLLIElement>All standard HTML li attributes
PropTypeDefaultDescription
asChildbooleanfalseRender the child element instead of an <a>
hrefstringAnchor target (when not using asChild)
...restAnchorHTMLAttributes<HTMLAnchorElement>All standard HTML anchor attributes

Separator props

PropTypeDescription
childrenReactNodeCustom separator content (defaults to /)
...restHTMLAttributes<HTMLSpanElement>All standard HTML span attributes

Data attributes

AttributeElementWhen present
data-currentItemPresent when current is true

Item also sets aria-current="page" when current. Separator sets role="presentation" and aria-hidden="true".

Accessibility

  • Root renders as a <nav> landmark with aria-label="Breadcrumb" by default.
  • List renders as an ordered list (<ol>) so screen readers announce position.
  • The current Item is exposed via aria-current="page" — most assistive tech announces it.
  • Separators are decorative: role="presentation", aria-hidden="true".
Last updated on

MIT License © 2026 wire-ui

Breadcrumb – Wire UI