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 | |
| checkbox-group-label.svelte | 5 months ago | |
| checkbox-group.svelte | 5 months ago | |
| checkbox-hidden-input.svelte | 5 months ago | |
| checkbox-indicator.svelte | 5 months ago | |
| checkbox.css | 5 months ago | |
| checkbox.svelte | 4 months ago | |
| index.ts | 5 months ago | |
| types.ts | 5 months ago | |
README.md
Eidos Checkbox
Checkbox no existe en la rama Air anterior (glm-5:src/uix/air/components), asi
que la baseline es el contrato Morfo/Soma actual y la comparativa con APG,
Radix, Bits UI, Reka/Ark y shadcn-svelte.
Superficie
<Checkbox bind:checked variant="solid" color="primary" name="terms">
<Checkbox.Indicator />
<Checkbox.HiddenInput />
</Checkbox>
<Checkbox.Group bind:value name="channels" columns={2}>
<Checkbox.GroupLabel>Notification channels</Checkbox.GroupLabel>
<Checkbox value="email"><Checkbox.Indicator /><Checkbox.HiddenInput /></Checkbox>
<Checkbox value="sms"><Checkbox.Indicator /><Checkbox.HiddenInput /></Checkbox>
</Checkbox.Group>
Partes publicas: Indicator, HiddenInput, Group, GroupLabel.
Comparativa
| Capacidad | Eidos/Soma | APG | Radix | Bits UI | Reka/Ark | shadcn-svelte |
|---|---|---|---|---|---|---|
| Dual-state | Si | Si | Si | Si | Si | Si |
| Indeterminate / mixed | Si: indeterminate |
Si | Si | Si | Si | Si |
aria-checked="mixed" |
Si | Si | Si | Si | Si | Si |
| Toggle con Space | Si | Si | Si | Si | Si | Si |
| Controlled state | Si: bind:checked |
Manual | Si | Si | Si | Si |
| Cambio de indeterminate controlado | Si: bind:indeterminate |
Manual | Si | Si | Si | Via primitive |
| Disabled | Si | Si | Si | Si | Si | Si |
| Readonly focusable | Si: readonly |
Manual | No como API principal | Parcial | Parcial | No |
| Invalid visual/a11y | Si: invalid -> aria-invalid/data-invalid |
Manual | Form layer | Manual | Form layer | Form layer |
| Hidden input para forms | Si: opt-in part | Nativo en ejemplo | Si | Si | Si | Si |
| Group con value array | Si: Checkbox.Group |
Fieldset/manual | No directo | Si | Si | Manual |
| Group label enlazado | Si: aria-labelledby |
Si | Manual | Si | Si | Manual |
| Custom indicator | Si: icon snippet o children |
Manual | Si | Si | Si | Si |
| Force-mount indicator | Si, heredado de Soma | Manual | Si | Si | Si | Via primitive |
| Variantes visuales | Si: solid/outline/ghost | No | No, primitive | No, primitive | No, primitive | Tailwind local |
| Colores canonicos UIX | Si: primary/secondary/neutral/affirm | No | No | No | No | Tailwind local |
| Layout de grupo por columnas | Si: columns |
Manual | Manual | Manual | Manual | Manual |
Decisiones
- El color visual se limita a
primary,secondary,neutralyaffirm.risk,threatylosspertenecen a validacion o contexto del formulario; para error local se usainvalid. HiddenInputes explicito para mantener clara la separacion: el control accesible es el buttonrole="checkbox"y el input existe para submit/validacion HTML.Groupvive en Soma porque coordinavalue: string[],name,requiredyaria-labelledby; Eidos solo anade layout visual (columns).GroupLabelse declara comolabeltambien en Morfo. No usafor, porque etiqueta al grupo poraria-labelledby, no a un input concreto.- El indicador por defecto usa
SvgCheckySvgDash; el consumer puede aportar un snippet para iconografia propia sin romper el contrato de estado.
Referencias
- Air anterior: sin componente Checkbox en
glm-5:src/uix/air/components. - APG Checkbox: https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/
- APG Mixed Checkbox: https://www.w3.org/WAI/ARIA/apg/patterns/checkbox/examples/checkbox-mixed/
- Radix Checkbox: https://www.radix-ui.com/primitives/docs/components/checkbox
- Bits UI Checkbox: https://bits-ui.com/docs/components/checkbox
- Reka UI Checkbox: https://reka-ui.com/docs/components/checkbox
- Ark UI Checkbox: https://ark-ui.com/react/docs/components/checkbox
- shadcn-svelte Checkbox: https://www.shadcn-svelte.com/docs/components/checkbox
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. |