|
|
5 months ago | |
|---|---|---|
| .. | ||
| README.md | 5 months ago | |
| breadcrumb-ellipsis.svelte | 5 months ago | |
| breadcrumb-item.svelte | 5 months ago | |
| breadcrumb-link.svelte | 5 months ago | |
| breadcrumb-list.svelte | 5 months ago | |
| breadcrumb-separator.svelte | 5 months ago | |
| breadcrumb.css | 5 months ago | |
| breadcrumb.svelte | 5 months ago | |
| index.ts | 5 months ago | |
| types.ts | 5 months ago | |
README.md
Eidos Breadcrumb
Breadcrumb no existe en la rama Air anterior (glm-5:src/uix/air/components).
La baseline real es el contrato Morfo/Soma actual y la comparativa con APG,
shadcn, React Aria y los catalogos de Radix/Bits/Ark.
Superficie
<Breadcrumb size="md">
<Breadcrumb.List>
<Breadcrumb.Item>
<Breadcrumb.Link href="/">Home</Breadcrumb.Link>
</Breadcrumb.Item>
<Breadcrumb.Separator />
<Breadcrumb.Item>
<Breadcrumb.Link current>Docs</Breadcrumb.Link>
</Breadcrumb.Item>
</Breadcrumb.List>
</Breadcrumb>
Partes publicas: List, Item, Link, Separator, Ellipsis.
Comparativa
| Capacidad | Eidos/Soma | APG | shadcn | React Aria | Radix/Bits/Ark |
|---|---|---|---|---|---|
Landmark <nav> etiquetado |
Si | Si | Si | Si | No componente dedicado |
Lista ordenada <ol> |
Si | Si | Si | Si | No componente dedicado |
Link actual con aria-current |
Si: current |
Si | Si, via Page | Si, ultimo link | No componente dedicado |
| Actual no focusable | Si: renderiza <span> |
Permitido | Si, Page | Si cuando no hay href | No componente dedicado |
Valores aria-current multiples |
Si: page/step/location/date/time/true | Solo page en ejemplo | No como API | Parcial | No componente dedicado |
| Separador custom | Si: children | Visual | Si | Si | No componente dedicado |
| Ellipsis colapsado | Si | No especifica | Si | Manual | No componente dedicado |
| Ellipsis interactivo | Si: interactive + aria-haspopup |
Manual | Con DropdownMenu | Manual | No componente dedicado |
| Link/router custom | Si: child({ props }) heredado de Soma |
Manual | asChild |
Link/render props | No componente dedicado |
| RTL | Hereda dir/CSS logico |
No aplica | Documentado | Browser/author | No componente dedicado |
| I18n por defecto | Si: Breadcrumb, More |
No | No | No | No componente dedicado |
| Tamano visual canonico | Si: sm/md/lg |
No | Tailwind local | CSS propio | No componente dedicado |
Decisiones
- Eidos no anade estado: todo lo accesible vive en Soma/Morfo.
- No se crea
Breadcrumb.Page. ElLink currentde Soma cubre el mismo caso, permite varios valores dearia-currenty evita otra parte publica que solo seria un alias. - Elipsis no prescribe overlay. Cuando es interactivo puede ser trigger de
DropdownMenu,Popovero cualquier capa flotante que reciba los props viachild. sizees visual y se estampa solo en el root comodata-size; el recipe usa CSS logico para funcionar en LTR/RTL.
Eventos Sema
Breadcrumb declara 0 eventos semanticos de forma deliberada. La activacion de un crumb es navegacion nativa o routing de la aplicacion, no una ocurrencia perceptiva propia del breadcrumb. Si un ellipsis se convierte en trigger de un Popover/Dropdown, los eventos pertenecen a ese overlay.
Referencias
- Air anterior: sin componente Breadcrumb en
glm-5:src/uix/air/components. - APG Breadcrumb: https://www.w3.org/WAI/ARIA/apg/patterns/breadcrumb/
- shadcn Breadcrumb: https://ui.shadcn.com/docs/components/breadcrumb
- React Aria Breadcrumbs: https://react-spectrum.adobe.com/react-aria/Breadcrumbs.html
- Radix Themes components: https://www.radix-ui.com/themes/docs/components
- Bits UI components: https://bits-ui.com/docs/introduction
- Ark UI overview: https://ark-ui.com/docs/overview/about
Baseline
Referencia local: Soma + Morfo + Eidos. La capa visual de Eidos expone size / variant / color sobre el comportamiento que Soma ya implementa; el morfo declara parts, ARIA, keyboard y eventos sema. Las decisiones se alinean con las bibliotecas externas listadas en la Comparativa.
Gaps
| Gap | Disposición | Detalle |
|---|---|---|
| API extendida sobre las referencias externas | diferir | Sólo si llega un caso de uso real. Mantener la superficie estable. |
| Cobertura adicional de variantes visuales | diferir | El recipe cubre sm/md/lg + solid/outline/ghost. Más variantes requieren caso concreto. |
| Documentación per-prop exhaustiva | implementar | Cuando se cierre el ciclo de remediación de cada componente. |
| Tests browser-level del flujo completo (Playwright) | implementar | Cobertura visual + interacciones. Se hace en una pasada conjunta de tests. |
Passive justification
Componente passive por diseño: no gestiona estado mutable propio, no responde a teclado más allá del foco del navegador, no emite eventos sema propios. El feedback perceptivo correspondiente al cambio que rodea al componente (validación, progreso, transición) pertenece a quien orquesta ese cambio — Form / Field / Toast / Dialog — no al componente visual.