|
|
5 months ago | |
|---|---|---|
| .. | ||
| README.md | 5 months ago | |
| index.ts | 5 months ago | |
| progress-indicator.svelte | 5 months ago | |
| progress-label.svelte | 5 months ago | |
| progress-value-text.svelte | 5 months ago | |
| progress.css | 5 months ago | |
| progress.svelte | 5 months ago | |
| types.ts | 5 months ago | |
README.md
Eidos Progress
Fecha de revision: 2026-05-17.
Baseline
Air no tenia progress en glm-5:src/uix/air/components; la referencia local
es el contrato Morfo/Soma actual.
Comparativa
| Referencia | Superficie relevante | Estado Eidos |
|---|---|---|
Air glm-5 |
No existe progress en Air. |
Sin baseline Air. |
| Soma actual | Provider, Label, ValueText, Indicator; determinate/indeterminate, min/max/value, valueText, orientacion, label interno o externo. |
Cubierto por passthrough. Eidos anade size, shape y receta visual. |
| Radix Progress | Root, Indicator, value, max, getValueLabel, indeterminate con value=null, data attrs y CSS vars. |
Cubierto. Radix no tiene min, Label ni ValueText como partes. |
| Ark UI Progress | Linear progress con Root, Label, Track, Range, ValueText, View; orientation, translations y value text. |
Cubierto en lineal salvo separar Track/Range: UIX usa Provider/Indicator, donde Indicator pinta el fill. |
| Bits UI Progress | Root, Indicator, value, max, getValueLabel, valueLabel, indeterminate, children snippet. |
Cubierto. Label/value visibles quedan como partes canonicas en UIX. |
| React Aria ProgressBar | Label, value label, indeterminate, min/max/value, accessible progressbar. | Cubierto en el caso lineal. |
Fuentes externas consultadas:
- Radix Progress: https://www.radix-ui.com/primitives/docs/components/progress
- Ark UI Progress: https://ark-ui.com/docs/components/progress
- Bits UI Progress: https://bits-ui.com/docs/components/progress
- React Aria ProgressBar: https://react-spectrum.adobe.com/react-aria/ProgressBar.html
Decisiones
- No se crea
Progress.Track. El root condata-progresses el contenedor semantico;Progress.Indicatorpinta el track/fill lineal o el ring circular. Crear otra parte duplicaria contenedor sin aportar estado. Progress.ValueTextno escribe estado propio. Renderiza el texto resuelto por Soma, que es el mismo quearia-valuetext.orientationpertenece a Morfo/Soma porque cambiadata-orientation; Eidos solo consume el atributo para la receta horizontal/vertical.shapees visual y vive en Eidos:linearmantiene barra,circularrenderiza ring con el mismo porcentaje de Soma. No se modela en Morfo porque no cambia ARIA ni estado headless.sizeyshapeson props visuales de Eidos. El color queda en tokens de recipe (--progress-indicator-bg,--progress-indicator-bg-loaded), no como estado funcional.
Eventos Sema
Progress declara 0 eventos semanticos de forma deliberada. Representa estado de tarea o carga, no una accion directa del usuario. La decision de anunciar un avance, completar una tarea o advertir de un bloqueo pertenece al flujo de producto que controla el valor, no al primitive visual.
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.