You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
4 months ago | |
|---|---|---|
| .. | ||
| README.md | 5 months ago | |
| carousel-context.ts | 5 months ago | |
| carousel-indicator-group.svelte | 5 months ago | |
| carousel-indicator.svelte | 5 months ago | |
| carousel-item-group.svelte | 5 months ago | |
| carousel-item.svelte | 5 months ago | |
| carousel-next-trigger.svelte | 4 months ago | |
| carousel-prev-trigger.svelte | 4 months ago | |
| carousel-viewport.svelte | 5 months ago | |
| carousel.css | 4 months ago | |
| carousel.svelte | 4 months ago | |
| index.ts | 5 months ago | |
| types.ts | 4 months ago | |
README.md
Eidos Carousel
Carousel es el wrapper visual de Eidos sobre el carrusel headless de Soma. Soma
posee indice, drag, teclado, autoplay, ARIA y disabled state; Eidos anade
chrome, tamano, color, botones de flecha con Button y receta CSS.
Baseline Air
En la rama morfo-runtime no existe un src/uix/air/components/carousel visual
separado. La baseline local anterior vive en
src/uix/soma/components/carousel: root region, viewport, item-group, items,
prev/next triggers e indicadores.
Eidos conserva esa anatomia, pero la presenta como componente compound
<Carousel> con hijos explicitos (Viewport, ItemGroup, Item,
PrevTrigger, NextTrigger, IndicatorGroup, Indicator) y anade props
visuales (size, variant, color, block, verticalBlockSize).
Comparativa
| Capacidad | APG / WAI-ARIA | Ark UI | shadcn-svelte / Embla | UIX |
|---|---|---|---|---|
| Root con nombre accesible | Recomienda region + aria-roledescription |
Root + partes | Root visual + Embla API | Soma/Morfo |
| Prev/Next como botones nativos | Recomendado | PrevTrigger / NextTrigger |
Previous / Next |
Soma triggers + Eidos Button |
| Indicadores | Botones/tabs de seleccion | IndicatorGroup / Indicator |
Dots via composicion | Soma indicators |
| Drag/swipe | No prescribe motor | Incluido | Embla | Soma Gesture.base() |
| Autoplay + pausa | Debe ser controlable | autoplay, pause cases |
Plugin Embla | Soma timer + stop/pause props |
| Visual styling | Fuera de scope | Headless/data attrs | Tailwind recipe | Eidos recipe tokens |
Fuentes:
Decisiones
- Los triggers de Eidos renderizan
Button iconOnlypor defecto. El icono es decorativo (aria-hidden) y no debe ser target de puntero; el click pertenece al boton nativo que trae el handler de Soma. PrevTrigger,NextTriggereIndicatorllaman a la API publicascrollPrev,scrollNextyscrollTo, para questopOnInteractiontrate todos los clicks como interaccion real de usuario.Indicatorhereda el archetype globalindicator, que por defecto es decorativo y usapointer-events: none. Carousel lo sobreescribe apointer-events: autoporque sus indicadores son botones/tab stops reales.slidesPerView,slidesToScroll,alignygapviven en Soma porque alteran geometria y bounds. Eidos solo consume el resultado visual mediantedata-*y estilos.verticalBlockSizees Eidos-only: el eje vertical necesita una altura acotada para que el viewport pueda recortar, pero no cambia el contrato ARIA.
Gaps
| Gap | Disposicion | Detalle |
|---|---|---|
| Pause/play trigger publico dentro del componente | diferir | La API imperativa ya expone play, pause y reset; una parte visual requiere Morfo/Soma. |
| Labels traducidos para slide/indicator generados por indice | implementar en Soma | El README de Soma ya documenta que parte del texto se arma en JS. |
| Tests browser-level permanentes | implementar | El fallo de click sobre SVG se verifico manualmente con Playwright; conviene convertirlo en test visual si el harness lo permite. |
| Motion attrs por direccion | diferir | Seria un extra visual para animaciones internas de slide. |