## breadcrumb (`poetry_breadcrumb`)

Shows the path to the current page as a trail of links.

Class: Poetry::Ui::Breadcrumb::Component - BEM block `poetry-ui-breadcrumb`.
Slot REQUIRED: with_item (at least one item) - a call without it raises.
Slots: items (The crumbs, in declaration order. A label with href: renders a link; without one, the current page. A block makes the <li>'s content caller-owned (a dropdown crumb, a custom-rendered link).; many; with_item yields NOTHING to the block - no |param|, write content directly), separator (Replaces the separator glyph in EVERY gap: an icon name, or a block for arbitrary content. Absent, the default chevron renders (with its RTL flip - a custom glyph is used as given).; with_separator yields NOTHING to the block - no |param|, write content directly; with_separator keywords: icon: ONLY).
- PART `breadcrumb` - The <nav> landmark (aria-label=breadcrumb) around the trail
- PART `breadcrumb-list` - The <ol> laying crumbs and separators out as one wrapping row
- PART `breadcrumb-item` - One <li> of the trail - wraps a link, the current page, the ellipsis, or a block item's own content (a dropdown crumb, a custom link)
- PART `breadcrumb-link` - A crumb with href: - a real <a> to an ancestor page
- PART `breadcrumb-page` - The current page (the item without href:) - aria-current=page, not a link
- PART `breadcrumb-separator` - The chevron <li> between crumbs - presentational, aria-hidden
- PART `breadcrumb-ellipsis` - The collapsed-middle glyph (with_ellipsis) - aria-hidden; a sibling sr-only 'More' announces it
In blocks: `app-shell`, `page-header` - for a screen, start from the block (MCP compose/describe_block, or `bin/rails g poetry:block`), not from scratch.
- RULE: Declare the trail with with_item(label, href:) - never hand-build the nav/ol/li chain.
- RULE: The current page is the item WITHOUT href: (it renders aria-current=page, not a link).
- RULE: Collapse a long middle with with_ellipsis - it announces 'More' to screen readers.
- RULE: A BLOCK item (with_item { ... }) renders your content inside the <li> - the seat for a dropdown crumb or a custom-rendered link; you own its semantics (aria-current only applies to label items).
- RULE: with_separator(icon: :dot) - or a block - replaces the chevron in EVERY gap; the default chevron RTL-flips, a custom glyph is used as given.
