Skip to content

Breadcrumb ​

Where the current page is: its parents, then the page itself, e.g. School › School Structure › New School Year Setup.

Open in Storybook to try every prop.

When to use ​

Use a Breadcrumb forUse instead
Pages two or more levels deep, e.g. inside a nested SidebarTop-level pages: the page title is enough
Records inside records, e.g. Students › Year 9 › Ben BlissettSteps in a process (use a stepper)

Anatomy ​

PartRequiredNotes
step (link)NoAn earlier page: a link back (href, to) or a button (onSelect).
step (text)NoAn earlier step that isn't a page, e.g. a sidebar group: plain grey text.
current pageYesThe last step: black text, aria-current="page", not a link.
separator—› between steps.
iconNoBefore a step's label.

Properties ​

PropertyTypeDefaultDescription
items{ label, icon?, href?, to?, onSelect? }[]—Required. Top level first; the last is the current page. SidebarItems fit, so sidebarTrail(items, sections) can be passed straight in.
labelstringBreadcrumbName of the navigation landmark.
linkComponentstring | ComponentaUsed for steps with to, e.g. RouterLink.

Events: select (item, event) when an earlier step is chosen.

Sizes ​

PartSizeNotes
Text14px / 20px, regulartext-sm
Icon14px
Separator14px › in black 40%
Gap6px between step and separator; 4px between wrapped lines
Step widthUp to 240px, then cut off with …; full text on hover (title)

States ​

StateAppearance
LinkBlack 65%
Link hoveredBlack, underlined
Link focused2px focus ring #007FC9, 1px outside, 2px corners
Text stepBlack 65%, no hover
Current pageBlack

Behaviour ​

SituationResult
Narrow screenSteps wrap onto more lines
Long stepCut off with … at 240px
Earlier step chosenFollows its link, or calls onSelect; emits select

Accessibility ​

PartAnnounced as
Containernavigation landmark named "Breadcrumb", containing an ordered list
Current pagearia-current="page"
Separators and iconsHidden from assistive tech
ContrastRatio
Links and text steps (black 65%) on whiteabout 6.5:1
Separator (black 40%)Decorative

Platform adaptation ​

PlatformImplementationDifferences
Web / desktop (Vue)Breadcrumb.vue—
iOS (SwiftUI)—Use the navigation stack's back button and title instead.
Android (Compose)—Use the top app bar's up button and title instead.

Tokens used ​

TokenUsed for
color blackcurrent page, hovered link
color black (65%)links and text steps
color black (40%)separators
color focusfocus ring

Do / Don't ​

DoDon't
Follow the Sidebar with sidebarTrail(), so both agreeBuild the trail by hand where it can drift from the Sidebar
Keep the current page as the last step, not a linkLink the current page to itself
Leave groups that aren't pages as textLink a group to a page it doesn't have

Released under the PolyForm Noncommercial License 1.0.0.