Observed while wiring objectui#5931 (PR #6644), which repaired the icon key on the same renderer. Filed unassigned, not fixed there — a different key, out of that card's fence.
Measured
BreadcrumbSchema declares both (packages/types/src/navigation.ts, mirrored in packages/types/src/zod/navigation.zod.ts):
separator?: string — @default '/'
maxItems?: number — "Maximum items to display before collapsing"
packages/components/src/renderers/data-display/breadcrumb.tsx reads neither: grep -c 'schema.separator' and grep -c maxItems are both 0 on the file. It always renders the bare BreadcrumbSeparator, which falls back to shadcn's ChevronRight, and it never collapses.
A repo-wide git grep 'schema.separator|\.maxItems' -- packages/ finds one unrelated hit (core/src/protocols/DndProtocol.ts, a drop-zone attribute). Nothing reads either breadcrumb key.
Why separator is the sharper half
It is not merely declared — it is advertised to authors in the component's own documentation, content/docs/components/data-display/breadcrumb.mdx:
separator?: string; // Custom separator
So an author reading the page, writing "separator": "/", and seeing a chevron has no way to tell the key from a typo. maxItems is the quieter half: declared in the type only, never documented, never authored by a fixture.
There is a second, smaller inconsistency worth noting while someone is in there: there are TWO BreadcrumbSchema declarations in packages/types — navigation.ts (the one index.ts re-exports, carrying maxItems) and data-display.ts (carrying only items/separator). Only the first is exported.
Not decided here
This is the ADR-0049 enforce-or-remove shape: either the renderer honours the two keys, or they leave the type, the Zod mirror and the docs page. Removing a documented key is a retirement and needs a maintainer's call, so nothing was stripped.
Generated by Claude Code
Observed while wiring objectui#5931 (PR #6644), which repaired the
iconkey on the same renderer. Filed unassigned, not fixed there — a different key, out of that card's fence.Measured
BreadcrumbSchemadeclares both (packages/types/src/navigation.ts, mirrored inpackages/types/src/zod/navigation.zod.ts):separator?: string—@default '/'maxItems?: number— "Maximum items to display before collapsing"packages/components/src/renderers/data-display/breadcrumb.tsxreads neither:grep -c 'schema.separator'andgrep -c maxItemsare both 0 on the file. It always renders the bareBreadcrumbSeparator, which falls back to shadcn'sChevronRight, and it never collapses.A repo-wide
git grep 'schema.separator|\.maxItems' -- packages/finds one unrelated hit (core/src/protocols/DndProtocol.ts, a drop-zone attribute). Nothing reads either breadcrumb key.Why
separatoris the sharper halfIt is not merely declared — it is advertised to authors in the component's own documentation,
content/docs/components/data-display/breadcrumb.mdx:So an author reading the page, writing
"separator": "/", and seeing a chevron has no way to tell the key from a typo.maxItemsis the quieter half: declared in the type only, never documented, never authored by a fixture.There is a second, smaller inconsistency worth noting while someone is in there: there are TWO
BreadcrumbSchemadeclarations inpackages/types—navigation.ts(the oneindex.tsre-exports, carryingmaxItems) anddata-display.ts(carrying onlyitems/separator). Only the first is exported.Not decided here
This is the ADR-0049 enforce-or-remove shape: either the renderer honours the two keys, or they leave the type, the Zod mirror and the docs page. Removing a documented key is a retirement and needs a maintainer's call, so nothing was stripped.
Generated by Claude Code