Breadcrumbs

Shows where a deep page sits and links back up the path, so a reader who arrived from search can find the section.

Molecule · stable · v1.0.0 · owner: Site system lead · contract 19 of 20 points (open: figma)

Do and don't

Do: A product page

Rendered by breadcrumbs.ts

Open example: Breadcrumbs · Do: A product page Use the full-page example to follow page links.

The path back, with the current page last.

Do: Japanese

Rendered by breadcrumbs.ts

Open example: Breadcrumbs · Do: Japanese Use the full-page example to follow page links.

Labelled in Japanese.

Don't: The current page as a link

Rendered by breadcrumbs.ts

Open example: Breadcrumbs · Don't: The current page as a link Use the full-page example to follow page links.

A link to the page you are on is a dead end.

Don't: On the landing

Rendered by breadcrumbs.ts

Open example: Breadcrumbs · Don't: On the landing Use the full-page example to follow page links.

There is nothing above home.

Rules

RuleWhyCheck
The current page is the last item and is not a link.A link to the same page wastes a tab stop.Automated: tests/unit/site-system.test.ts

API

PropTypeRequiredDefaultWhat it does
itemslistYesFrom home to the current page; the last has no href.
langen | jaNo"en"Labels the nav in the page's language.

Contract details

The full contract: identity, anatomy, variants, states, tokens, layout, motion, accessibility, content, tests

Identity

AspectValue
Idbreadcrumbs
LayerMolecules
Categorynavigation
OwnerSite system lead
Statusstable
Version1.0.0
Sourceapps/showcase/site/system/molecules/breadcrumbs.ts (private repository; the contract and the render function are this one module)
VersionDateChange
1.0.02026-10-26The path back from a deep page, above its title.

Use when

  • Every deep page, above the h1. Why: Most readers arrive on deep pages from search, not from home.

Do not use when

  • On the landing or a task page. Why: There is no path above them.
  • As the only navigation. Why: Breadcrumbs go up, not across.

Anatomy

PartWhat it is
rootnav.crumbs labelled Breadcrumb
listol of links
currentThe last item, aria-current=page, not a link.

Made of: text-link, tokens:type.

Used in: page-head.

Variants

VariantWhenWhy
pathDeep pages.One form everywhere.

States

StateRendered or not applicable
defaultLinks in --ink-2
hoverUnderline in full colour.
focus-visibleThe --focus ring.
activeNot applicable: Navigation is instant.
disabledNot applicable: Every level above exists.
loadingNot applicable: Static.
emptyNot applicable: Not rendered on pages without a path.
errorNot applicable: Links are checked at build.
currentThe last item, aria-current=page, in ink.
visitedNot applicable: Same colour: it is a path, not a reading list.
expandedNot applicable: Does not open.

Tokens

PartToken
root.font--type-small-strong
link.color--ink-2
current.color--ink
separatora dot in --ink-2
--breadcrumbs-gap-space-3var(--space-3)
--breadcrumbs-gap-space-5var(--space-5)
--breadcrumbs-margin-space-9var(--space-9)
--breadcrumbs-font-type-small-strongvar(--type-small-strong)
--breadcrumbs-border-radius-radius-roundvar(--radius-round)
--breadcrumbs-color-ink-2var(--ink-2)
--breadcrumbs-color-inkvar(--ink)

Layout

AspectValue
breakpointsRequired review at 390, 768, 1024 and 1440 px; execution is not implied by this declaration; wraps on phones.
wrappingWraps between items.
textExpansionJapanese labels wrap between items.

Spacing and rhythm

AspectValue
internal--space-4 between items.
external--space-6 above the h1.
rhythmPart of the page head.

Motion

AspectValue
NoneStatic.

Runtime and reuse

  1. Render-only element; mount any registered child enhancements separately. Preserve required Site CSS, fonts, responsive and locale rules from nativeElement.

Accessibility passport

AspectValue
rolenavigation (Breadcrumb / パンくずリスト)
nameBreadcrumb
keyboardTab through the links.
focusBefore the page's h1.
screenReaderAnnounces the navigation, the list and the current page.
contrast--ink-2 on cotton 8.6:1.
targetInline links, 24 px line box.

Content

SlotLengthVoice
label3 wordsThe page's short name

Good: “Home · Product · Operations”

Bad: “Home > Pages > Product page”

Japanese: Labels come from nav-ja.ts; English-only pages are marked (英語).

Icons and illustrations

None: this element uses no icon or illustration of its own.

Decisions and exceptions

Usage

65 uses across the built pages (measured by npm run site:system).

Tests

AspectValue
unittests/unit/site-system.test.ts: renders every do and don't example through the registry and checks the classes it owns
visualNot yet: there are no screenshot baselines; the Library page is checked for sideways scroll at 1440 px by tests/site/system.spec.ts
a11ytests/site/system.spec.ts: axe (0 serious or critical) on the element's Library page in light and dark
parityscripts/site/system/check.ts: Library examples are rendered by the same render function the site imports

Figma

not-yet: The Loom Site Figma library is the last stage of the plan; this element is not mapped yet.

Open in Storybook

Start with a conversation about your system.

We read your system, show you what we found, and agree with your team what to fix first.