j3w1/theme implementation brief — breadcrumbs theme: j3w1-theme 1.1.0 profile: default sourceDigest: sha256-C+iD5Q7l0XPU/boMj003wPbPLBOq3C3ZM7s4OfzJ6mc= pin: https://raw.githubusercontent.com/j3w1/theme/v1.1.0/exports/components/breadcrumbs.json spec: spec/components/breadcrumbs.md site: https://j3w1.github.io/theme/reference/#c-breadcrumbs maturity: stable priority: R1 Summary: The path from the root to the current page as an ordered list of links separated by slashes; the last item is the current page and not a link. Use the pinned approved default profile. Pending roles in that profile use-and-report their decision IDs; this does not approve them. Proposed profiles are preview-only and blocked for delivery. Heritage profiles are historical-only. Deprecated or heritage roles are blocked for new approved-profile mappings. Consume roles within their documented scope, never primitives. Release numbering does not approve profiles or tokens. Tokens (resolved): root.bg #100c0c ({color.surface.default}) use link.text #f73f35 ({color.text.link}) use link.underline #dc282e ({color.text.link-underline}) use link.text-hover #f4eeee ({color.text.link-hover}) use link.bg-hover #630f0d ({color.interaction.hover.bg-strong}) use link.ring #e53935 ({color.interaction.focus.ring}) use current.text #ffa2a7 ({color.text.bright}) use separator.text #bd787d ({color.text.muted}) use ellipsis.text #e99499 ({color.text.default}) use ellipsis.bg-hover #1c0a09 ({color.interaction.hover.bg}) use States: default, hover, focus-visible, current, truncated default: links {color.text.link}, 1px underline; separators {color.text.muted}; current {color.text.bright} [underline on links; none on the current page] hover: link background → {color.interaction.hover.bg-strong}; text → {color.text.link-hover} [underline thickens 1px → 2px; cursor] focus-visible: ring 1px dashed {color.interaction.focus.ring} at −2px around the link [the ring] current: text {color.text.bright}; no underline; no hover [`aria-current="page"`; no underline] truncated: the middle levels are replaced by an `…` button in {color.text.default} [`aria-expanded="false"` on the button; its label counts the hidden levels] Keyboard: Tab / Shift+Tab: Moves through the links in order; the current page is skipped when it is not a link. Enter: Follows the focused link, or discloses the hidden levels from the ellipsis button. ARIA: native nav > ol with aria-current="page" on the last item (https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/) Responsive: Items wrap onto further lines at 320px with the separator staying attached to the item before it; nothing truncates by itself, the truncated variant is an explicit choice for deep trails. RTL mirrors the order and the separators through logical margins; the slash glyph is not mirrored. Portability: nav with aria-label="Breadcrumb" wrapping an ol; each level an li; ancestor levels are anchors; the last li carries aria-current="page"; separators are aria-hidden spans, never list bullets or generated content that screen readers might voice. native: GTK4 a Box of LinkButtons with Labels for the slashes; the current level a Label with the bright colour. native: Qt a QHBoxLayout of QLabels with rich-text links; the current level plain. native: Terminal UI: the trail as one line; the current level in the bright colour; slashes in the muted colour. Rules: use only these values; no invented colours; radius 0; borders 1px (2px emphasis); focus is a 1px dashed ring, selection is a fill; do not restyle unrelated elements; report deviations per agents/consume.md; record theme.lock.json at the pinned revision.