components / 25

marked breadcrumb

a route should feel traveled, not generated. each separator leaves a small trace while the current place gets the final mark.

shadcnnpx shadcn@latest add berkantay/cheez/marked-breadcrumb
live
chevron · underline
grammar
direction without an icon font
overflow
a button, not decorative dots
arrival
aria-current never changes
reference
native slots, inherited visuals
proptypedefaultpurpose
labelstring"breadcrumb"accessible navigation name
size"small" | "medium" | "large""medium"text and separator rhythm
toneMarkedBreadcrumbTone"orange"built-in ink palette
colorstringtone colorcustom ink override
separator"chevron" | "slash" | "arrow" | "dot""chevron"hand-drawn route grammar
currentMarkCheezType"underline"persistent current-page mark
hoverMarkCheezType"short-underline"link interaction mark
characterCheezCharacter"rushed"drawing personality
thicknessnumber1non-scaling pen weight
wrapbooleanfalsewrap instead of horizontal scroll
Pagespan propssets aria-current=page
Ellipsis.expandedbooleanundefineddisclosure state for omitted routes
Ellipsis.labelstringstate-awareaccessible button name
  • the root renders nav and the list renders an ordered list
  • only the final page receives aria-current="page"
  • separators are presentation-only and hidden from assistive technology
  • collapsed routes use a real button with a state-aware accessible label
  • links accept ordinary anchor props and refs without intercepting navigation
  • long current labels truncate visually while preserving their full accessible text
  • without wrap, long routes scroll horizontally instead of breaking their order