Back to Heroui

Breadcrumbs

apps/docs/content/docs/en/react/components/(navigation)/breadcrumbs.mdx

3.2.03.9 KB
Original Source

Import

tsx
import { Breadcrumbs } from '@heroui/react';

Usage

<ComponentPreview name="breadcrumbs-basic" />

Anatomy

Import the Breadcrumbs component and access all parts using dot notation.

tsx
import { Breadcrumbs } from '@heroui/react';

export default () => (
  <Breadcrumbs>
    <Breadcrumbs.Item href="#">Home</Breadcrumbs.Item>
    <Breadcrumbs.Item href="#">Category</Breadcrumbs.Item>
    <Breadcrumbs.Item>Current Page</Breadcrumbs.Item>
  </Breadcrumbs>
)

<ComponentPreview name="breadcrumbs-level-2" />

<ComponentPreview name="breadcrumbs-level-3" />

Custom Separator

<ComponentPreview name="breadcrumbs-custom-separator" />

Disabled State

<ComponentPreview name="breadcrumbs-disabled" />

Custom Render Function

<ComponentPreview name="breadcrumbs-custom-render-function" />

Styling

Passing Tailwind CSS classes

tsx
import { Breadcrumbs } from '@heroui/react';

function CustomBreadcrumbs() {
  return (
    <Breadcrumbs className="gap-2">
      <Breadcrumbs.Item href="#" className="text-blue-600">
        Home
      </Breadcrumbs.Item>
      <Breadcrumbs.Item>Current</Breadcrumbs.Item>
    </Breadcrumbs>
  );
}

Customizing the component classes

To customize the Breadcrumbs component classes, you can use the @layer components directive.

Learn more.

css
@layer components {
  .breadcrumbs {
    @apply gap-4 text-lg;
  }

  .breadcrumbs__link {
    @apply font-semibold;
  }

  .breadcrumbs__separator {
    @apply text-blue-500;
  }
}

HeroUI follows the BEM methodology to ensure component variants and states are reusable and easy to customize.

CSS Classes

The Breadcrumbs component uses these CSS classes (View source styles):

Base Classes

  • .breadcrumbs - Base breadcrumbs container
  • .breadcrumbs__item - Individual breadcrumb item wrapper
  • .breadcrumbs__link - Breadcrumb link element
  • .breadcrumbs__separator - Separator icon between items

State Classes

  • .breadcrumbs__link[data-current="true"] - Current page indicator (not a link)

Interactive States

The component supports both CSS pseudo-classes and data attributes for flexibility:

  • Current: [data-current="true"] on link (indicates current page)
  • Hover: Link elements support standard hover states
  • Disabled: isDisabled prop disables all links

API Reference

PropTypeDefaultDescription
separatorReactNodechevron-right iconCustom separator between breadcrumb items
isDisabledbooleanfalseWhether all breadcrumb links are disabled
classNamestring-Additional CSS classes
childrenReactNode-The breadcrumb items
renderDOMRenderFunction<keyof React.JSX.IntrinsicElements, undefined>-Overrides the default DOM element with a custom render function
PropTypeDefaultDescription
hrefstring-The URL to link to (omit for current page)
classNamestring-Additional CSS classes
childrenReactNode | RenderFunction-Item content or render function
renderDOMRenderFunction<keyof React.JSX.IntrinsicElements, BreadcrumbRenderProps>-Overrides the default DOM element with a custom render function

Accessibility

Breadcrumbs uses React Aria Components' Breadcrumbs primitive, which provides:

  • Proper ARIA attributes for navigation landmarks
  • Current page indication via aria-current="page"
  • Keyboard navigation support
  • Screen reader announcements for navigation context

The last breadcrumb item (without href) automatically becomes the current page indicator.