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.
svelte-kit-vice/src/uix/PENDIENTES.md

171 lines
10 KiB

# Pendientes UIX
> Backlog vivo. Cada entrada lleva una disposición: **implementar** /
> **diferir** / **descartar**. Mantener priorizado por capa afectada y
> dependencias.
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
## Pickers — estado consolidado 2026-05-21
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
El bloque de trabajo sobre `date-picker` y `date-range-picker` cerró en
una pasada larga el mismo día. El contrato canónico es:
- **`mode: 'inline' | 'modal'`** — modal bloquea outside-click + Escape.
- **`kind: 'date' | 'month' | 'year'`** (Chakra-style) — controla
segments del input + view del popover. Derivación vive en el
`DateFieldProvider` (soma), no en el snippet del consumer.
- **Footer = composición pura** — `<Picker.Footer>` contiene las parts
que tú compongas (`<Clear/>`, `<Cancel/>`, `<Close/>`). Sin
`clearButton`/`cancelButton`/`closeButton` props en root.
- **Provider helpers**: `commit()` / `cancel()` (revierte al snapshot
capturado en el OPEN edge vía `watch(open)`) / `clear()`.
| Item | Disposición |
| --- | --- |
| Aplicar `mode + Footer` a `date-picker` (single) | **hecho** |
| Aplicar `kind` (Chakra date/month/year) a `date-picker` | **hecho** |
| `<DatePicker.YearView>` + `<DatePicker.MonthView>` | **hecho** |
| Propagar `kind` a `date-range-picker` (ambos endpoints filtran segments) | **hecho** |
| `<DateRangePicker.YearView>` + `<DateRangePicker.MonthView>` (range state machine: start → end → reset, swap automático) | **hecho** |
| Promover `Footer/Clear/Cancel/Close` a parts canónicos Eidos (ambos pickers) | **hecho** |
| Drop `clearButton/cancelButton/closeButton` root props → composición pura | **hecho** |
| Morfo `date-picker` + `date-range-picker`: declarar parts Footer/Clear/Cancel/Close + arquetipo `footer` añadido al vocabulario | **hecho** |
| `MonthRangePicker` / `YearRangePicker` como componentes nuevos | **descartar** — cubierto por `<DateRangePicker kind='month'>` / `kind='year'`. No vale la pena duplicar superficie cuando un prop captura la variante. |
| `MonthPicker` / `YearPicker` (single) | **descartar** — idem, `<DatePicker kind='month'>` / `kind='year'`. |
| Promover `<DatePicker.YearView>` / `<DatePicker.MonthView>` a componentes independientes `<YearCalendar>` / `<MonthCalendar>` con demos aislados | **diferir** — actualmente acoplados al `DatePickerProvider`. Independizarlos requiere refactor del context-lookup. Mantener acoplados hasta que aparezca un caso de uso real fuera del picker. |
| Propagar el patrón modal+Footer a `time-picker`, `time-range-picker`, `color-picker`, `combobox`, `select`, `popover` cuando proceda | **implementar** — decidir por componente; muchos no necesitan footer. |
| Tests browser del flujo completo (Playwright): inline/modal, kind chip, range state machine, snapshot/cancel, click-outside, Escape | **implementar** — alta cobertura para flujos que ahora dependen de state machine. |
| Sema event al bloquear click cuando `mode='modal'` | **diferir** — útil para screen reader feedback. No bloquea. |
## Tooltip (warnings pendientes del audit)
| Item | Disposición |
| --- | --- |
| `A-3.6` evento `open`/`close` sin variante `{verb}-X` o `{family}-X` | **diferir** — disclosure puro, el naming actual es semánticamente válido. |
| `D-4.3` demo no emite `uix.events.emit(...)` para wirear Play buttons | **implementar** cuando se haga la próxima pasada de demos. |
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
## Eidos theming — limpieza diferida
| Item | Disposición |
| --- | --- |
| 20 tokens de color muertos (rol `tertiary` completo + `{intent}-active` × 8 + `fulfill-hover`/`loss-hover`/`loss-element`) en `themes/base.ts` + `generated/base.css` | **diferir** — no rompen nada. Validar que `tertiary` no es un hook futuro reservado antes de borrarlo. |
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
| Afinar valores de los tokens xs/xl extrapolados durante el batch de tamaños | **diferir** — la extrapolación proporcional (xs ≈ 75% de sm, xl ≈ 125% de lg) puede no proporcionarse bien en componentes concretos; revisar visualmente y reajustar caso por caso. |
| Range view-cell: differentiate visualmente start/end vs in-range (actualmente todos se ven solid primary) — pendiente afinar tinte de `data-in-range` para que sea más sutil que start/end | **implementar** cuando se haga el browser-walk del range-picker. |
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
## Audit one-by-one (post-sesión)
### Prioridad media
- [ ] dialog (verificar visual)
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
### Prioridad baja — sólo si aparece síntoma visual
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
Lista barrida en el audit script (component:audit 67/67 PASS). Cuando
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
aparezca un disparate visual, se walka el componente con browser y se
remedia. No se hace barrido proactivo de nada que ya esté PASS.
## Audit infra
| Item | Disposición |
| --- | --- |
| Audit A-3.6 falla con eventos `open`/`close` válidos de `emerge` | **diferir** — el regex pide `{verb}-X` pero muchos verbs son legítimos solos. Refinar regex para aceptar verbs canónicos. |
| Audit no verifica que el demo cierre el popover al hacer click-outside (cuando aplica) | **diferir** — verificación visual queda al browser-walk. |
| Translations check: añadir warning cuando un componente declara `texts.label` pero su catálogo no tiene `label` | **implementar** — pequeño, evita drift. |
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
| **Audit R-2.6** — `var(--color-X)` referenciado sin estar declarado en `generated/base.css` | **hecho** (`scripts/component-audit.ts`). Set declarado se calcula al inicio desde `generated/base.css`; cada componente CSS se chequea contra él. |
| **Audit D-7.4** — el array de chips de cada control (size, variant, color) enumera el tipo completo declarado en `types.ts` | **hecho** (`scripts/component-audit.ts`). Parsea `{PascalName}{Prop}` exacto, resuelve alias canónicos (`ControlVariant`, `SelectionVariant`, `ChipVariant`, `MarkerVariant`, `TabsVariant`, `ColorRole`+narrowings) vía `SHARED_VARIANT_VOCAB`. |
| Nuevo: audit que verifique que ninguna Part Eidos consulta `provider.opts.{boolean}Button.current` (composición pura) | **diferir** — chequeo defensivo, low value. |
## Doc debt
| Item | Disposición |
| --- | --- |
| READMEs/architecture docs siguen citando `morfo.translations` en muchos `.md` | **diferir** — el código está migrado a `texts`, los docs lagging. Sweep separado. |
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
| `src/uix/COMPONENT_COMPLETION_CHECKLIST.md` actualizado con C-2.6 + D-7.4 + D-7.5 | **hecho** |
| `src/uix/eidos/README.md` + `web/routes/uix/lib/DEMO_AUTHORING_GUIDE.md` actualizados con N-6 (kind) + N-7 (composition) | **hecho** |
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
## Normas implantadas
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
Resumen accionable de las decisiones adoptadas. Forman parte del
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
contrato del componente y están reflejadas en los `.md` doctrinales.
### N-1 · Cobertura de tamaños
Cada componente expone los valores de `Size` que su recipe declara. El
sistema admite `xxs · xs · sm · md · lg · xl · xxl · full`. La elección
por categoría:
| Categoría | Sizes | Componentes afectados |
| --- | --- | --- |
| Form controls táctiles | `xs · sm · md · lg · xl` | checkbox, switch, toggle, radio-group, rating-group, slider |
| Inputs de texto | `xs · sm · md · lg · xl` | search-field, number-field, date-field, editable, tags-input, combobox, select |
| Progress/meter (barra escalable) | `xs · sm · md · lg · xl` | progress, meter |
| Field / Form (layout) | `xs · sm · md · lg · xl` | field, form |
| Nav controls | `xs · sm · md · lg` | breadcrumb, pagination, tag-group, toolbar |
| Sin cambio (paneles compuestos donde sm/md/lg cubre) | `sm · md · lg` | calendar, date-picker, date-range-picker, file-upload, stepper, tooltip |
| Ya en rango ampliado | `xs · sm · md · lg · xl[+full]` | avatar, dialog, drawer, popover, tabs, icon |
### N-2 · Paridad de chips en demos
Toda variante / tamaño / color declarado en el tipo del componente
**debe** aparecer como chip seleccionable en el demo. Las `Extract<…>`
arbitrarias que truncaban la unión están eliminadas (`field`,
`toolbar` ahora exponen los 3 valores de `ControlVariant`).
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
Enforced por audit D-7.4.
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
### N-3 · Tokens del contrato deben estar declarados
Cualquier `var(--color-X)` referenciado en recipes o en `*.css` debe
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
estar declarado en `generated/base.css`. La sesión añadió
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
`content.muted` y `surface.muted` al contrato y corrigió el typo
`--color-neutral-element-hover` en form.css.
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
Enforced por audit R-2.6.
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
### N-4 · No raw colors en CSS de Eidos
`hex / rgb / hsl / named` están prohibidos en `src/uix/eidos/**/*.css`
y en `recipes/base.ts`. Todo color va por `color-mix(in srgb, var(--color-X) N%, transparent)`
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
o por token directo. Corregidos `archetypes.css` y `events.css`
(eidos-commit-settle indigo → primary-solid).
eidos: theming fixes + size/variant parity batch + docs - theme: add surface.muted + content.muted to color contract (neutral-3 + neutral-10). Plugs 17 broken --color-content-muted and 3 broken --color-surface-muted references in recipes/components. - form.css: fix --color-neutral-element-hover typo → --color-neutral-hover. - archetypes.css + events.css: replace raw hsl/rgba indigo with color-mix(var(--color-primary-solid) …) — no raw colors left in eidos. - combobox dark scrollbar: unscope ::-webkit-scrollbar rules in uix.css and duplicate --uix-line on :root + :root[data-mode='dark'] so portaled overlays (Combobox listbox, Popover, Dialog, Drawer) inherit the theme. - sizes: 20 components expand from sm/md/lg to xs..xl (form controls, text inputs, progress/meter, field/form) or xs..lg (nav controls: breadcrumb, pagination, tag-group, toolbar). Composite panels keep sm/md/lg deliberately. - variants: field + toolbar drop arbitrary ControlVariant narrowings; both expose all 3 (surface | outline | ghost) with new outline CSS. - pagination demo: disambiguate siblingCount/boundaryCount as "per side" in label + API table (Radix/MUI convention). - docs: CHECKLIST §C-2.6 (contract token presence) + §D-7.4 (chip parity) + §D-7.5 (size category) added. DEMO_AUTHORING §12.7 (chip parity) + §12.8 (size category cheatsheet) added. eidos/README + active_architecture.md sync texts/migration nomenclature. - PENDIENTES.md: normas N-1..N-5 implantadas en esta sesión. Verification: 88/88 eidos tests, 0 type errors, 67/67 component:audit PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
### N-5 · Scrollbars portaled
Las reglas `::-webkit-scrollbar*` viven sin scope en `web/routes/uix/uix.css`
para alcanzar overlays portaleados (Combobox listbox, Popover content,
Dialog, Drawer). `--uix-line` está duplicado en `:root` + override en
`:root[data-mode='dark']` (atributo escrito por `ActiveEidos.apply()`).
docs: consolidate kind contract + composition norms (sweep) After several commits on pickers, the docs lagged behind the actual contract. This sweep aligns PENDIENTES + eidos README + DEMO_AUTHORING_GUIDE with what landed. PENDIENTES.md: - 'Pickers' section rewritten as a consolidated state table. Everything done is marked hecho; the two big items (MonthPicker/YearPicker, MonthRangePicker/YearRangePicker as separate components) are explicitly **descartar** because they're achieved via <DatePicker kind='X'> / <DateRangePicker kind='X'>. Duplicating component surfaces for what a prop captures is doctrinally rejected. - Promotion of YearView/MonthView to standalone <YearCalendar> / <MonthCalendar> is **diferir** — currently coupled to picker provider context, no real use case outside picker yet. - Time picker / color picker propagation of modal+Footer pattern marked **implementar**. - Playwright browser tests for the picker flows marked **implementar** — range state machine + kind chip + modal need coverage. - Range view: 'differentiate start/end vs in-range visually' added to theming backlog (currently all 3 use primary-solid, range tint not visible). - Two new norms N-6 and N-7: * N-6 picker kind = single source for input + view. Filtering lives at DateFieldProvider (soma), consumers iterate the segments output. Views are canonical Eidos parts. * N-7 composition over visibility props. Parts opt-in by inclusion, not by boolean prop. Demo wraps parts in {#if showX} with local state so the UI toggles still work without leaking demo logic into the parts. eidos/README.md: - New 'Cambios 2026-05-21 — pickers: kind + composition' section summarising kind + Footer composition + provider helpers + the 'composition wins, no separate variant components' decision. DEMO_AUTHORING_GUIDE.md: - §12.9 'Composition over visibility props': right vs wrong example for <DatePicker.Footer> with the Clear/Cancel/Close children. - §12.10 'Chakra-style kind for picker variants': demo skeleton for the Input snippet (no filter) and the Content {#if} branch. Task list: #29 retired (MonthRangePicker/YearRangePicker as separate components — replaced by <DateRangePicker kind='X'>). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
### N-6 · Picker kind = single source for input + view
Para los pickers, `kind: 'date' | 'month' | 'year'` (Chakra-style) es
el **único** punto de configuración para variantes de granularidad.
Drives:
1. **Segments del input**: filtrado a nivel del `DateFieldProvider`
(soma). El consumer renderiza `segments` tal cual viene — no
filtra en el snippet. `kind='year'` → `YYYY`, `kind='month'` →
`MM/YYYY`, `kind='date'` → `MM/DD/YYYY`. Literales colapsados
automáticamente.
2. **View del popover**: el consumer hace branching estructural
(`{#if kind === 'year'} <YearView/> {:else if 'month'} <MonthView/> {:else} <Calendar/> {/if}`).
Las views son partes propias: `<DatePicker.YearView>`,
`<DatePicker.MonthView>`, equivalentes en `DateRangePicker`.
Implicación: **no hay** componentes separados `MonthPicker`,
`YearPicker`, `MonthRangePicker`, `YearRangePicker`. Esos casos son
`<DatePicker kind='X'>` / `<DateRangePicker kind='X'>`.
### N-7 · Composición sobre props para visibilidad de parts
Las parts opcionales (`Footer`, `Clear`, `Cancel`, `Close`, etc.) NO
exponen props `*Button` booleanos en el root del componente. La
visibilidad se controla por **composición**: si quieres `Clear`,
compones `<X.Clear/>` dentro de `<X.Footer/>`. Si no lo compones, no
aparece. Si no quieres footer entero, omites `<X.Footer/>`.
Las parts renderizan siempre que se monten — sin checks internos
contra props del provider. Esto se aplica a *derivados*: el patrón
escala a cualquier componente con sub-parts opcionales (Header,
Footer, ToolbarItem, etc.).
Demos: las parts se envuelven en `{#if showX}` con state local del
demo para dar el control UI, pero las parts en sí no leen ese state.

Powered by TurnKey Linux.