On this page
Proposed CSC Standards · 0.1.0
Breadcrumbs
The path from the home of a section to the current page.
Show hierarchy and offer a way up.
What this describes
When to use
- The page sits more than one level under a section.
- The person may need to move up one level.
When not to use
- A single top-level page.
- A wizard step list. Use Stepper.
Allowed variants
Standard
A normal trail.
- Hierarchy
- Text links.
- Use in
- Interior pages.
- Restriction
- Last item is not a link.
- Accessibility
- Named navigation landmark.
- Responsive
- Wraps or uses compact before overflow.
Compact
A short trail in a tight header.
- Hierarchy
- Smaller type.
- Use in
- Dense pages.
- Restriction
- Do not go below readable body contrast.
- Accessibility
- Same landmark.
- Responsive
- Preferred under 480px.
Boxed
A trail that needs a surface of its own.
- Hierarchy
- Tinted box.
- Use in
- Pages with a busy header.
- Restriction
- The box is not a button.
- Accessibility
- Links inside remain links.
- Responsive
- The box can be full width. It does not exceed the column.
Mandatory rules
Use a navigation landmark named Breadcrumb
The trail is a nav element with an accessible name.
Implementation detail
Without a name, it is another unlabeled navigation region.
Use Breadcrumb. If you restyle it, keep nav and aria-label="Breadcrumb".
Check: The landmark name is Breadcrumb.
The current page is text, not a link
The last crumb is the current page and is not a link to itself.
Implementation detail
A link to the current URL adds a useless stop in the tab order.
Render earlier crumbs as links. The last crumb is plain text.
Check: The last crumb has no href.
Collapse the trail on small screens instead of overflowing
Compact reduces type size. It still must not force horizontal page scroll.
Implementation detail
Proposed CSC Standard. Long trails at 320px need wrap or truncation of middle crumbs with the current page still visible.
Use variant="compact" under 480px. Do not put the trail in a nowrap row that widens the page.
Check: At 320px the page width matches the viewport.
Restrictions
No conditional or prohibited rules are published for this component.
Accessibility
- nav with an accessible name.
- Current crumb is not a link.
Responsive behavior
- Prefer compact on narrow screens.
- Do not horizontally scroll the page to read the trail.
Component states
Ancestor
A link to a parent page.
Current
Text only.
Correct implementation
Earlier crumbs are links. The last crumb is the current page and is not a link.
Imports: None. Dependencies: None. Rules: BC-001, BC-002.
export function RecordTrail() {
return (
<nav aria-label="Breadcrumb" style={{ display: 'flex', gap: 9, color: '#8290A3', fontSize: 12 }}>
<a href="/">Home</a>
<a href="/applications">Applications</a>
<strong style={{ color: '#243B5B' }}>Overview</strong>
</nav>
);
}Incorrect implementation
No incorrect example is published for this component.
Common mistakes
- Including the current page as a link.
- Using breadcrumbs as the only navigation.
Testing checklist
Agent prompts for this component are in the AI Development Hub.