diff --git a/continue.md b/continue.md index 82e4b0f8d..852193934 100644 --- a/continue.md +++ b/continue.md @@ -2,6 +2,34 @@ Fecha de corte: 2026-05-17. Rama: `active-uix`. +## Corte para continuar manana + +- Rama `active-uix` queda con la tanda Soma -> Eidos commitada por fases. +- No se tocaron demos ni rutas; el trabajo fue en `src/uix/eidos/components`, + `src/uix/eidos/lib/recipes/base.ts`, `src/uix/eidos/index.css`, CSS generado + y documentacion. +- Validacion de la ultima tanda: + - `npx vitest run src/uix/eidos` -> 7 archivos, 84 tests OK. + - `npm run check` -> 0 errores, 0 warnings. + - `node --import tsx/esm scripts/eidos-lint-all.ts` -> 0 invalid, sin drift + hotspots. +- Componentes Eidos nuevos desde Soma: + - `meter` + - `progress` + - `slider` + - `pagination` + - `rating-group` + - `search-field` + - `number-field` +- Siguiente decision antes de seguir migrando: + - Continuar con componentes de riesgo bajo/medio (`field`, `toolbar`, + `breadcrumb`, `tag-group`) o parar a definir una tabla de migracion por + componente para los grandes (`select`, `combobox`, `calendar`, + `date-field`). + - Para cada componente nuevo conviene escribir primero: partes Soma, + props visuales Eidos, `data-*` que estampa el wrapper, tokens de recipe y + attrs morfo-backed que consumira el CSS. + Actualizacion Eidos component migration 2026-05-17: - Inicio de la migracion Soma -> Eidos siguiendo `soma/COMPONENT_GUIDE.md` diff --git a/src/uix/README.md b/src/uix/README.md index 72e26f78d..6541fbd9c 100644 --- a/src/uix/README.md +++ b/src/uix/README.md @@ -159,6 +159,12 @@ y `themes/base/` se retiraron del arbol activo; el contrato se obtiene desde `getRecipeTokens(component)` exponen esos aliases para editores de theme sin leer CSS. +La migración de componentes Soma -> Eidos se retoma por tandas pequeñas. A fecha +2026-05-17, además de los pilotos previos, ya están migrados `meter`, +`progress`, `slider`, `pagination`, `rating-group`, `search-field` y +`number-field`; cada uno envuelve partes públicas de Soma y añade únicamente +superficie visual. + Eidos lee del DOM lo que las otras capas escriben (parts, data-attrs, ARIA, event signals) — nunca importa internals de soma ni de sema. diff --git a/src/uix/active_architecture.md b/src/uix/active_architecture.md index 740ccb1c0..d01925fd2 100644 --- a/src/uix/active_architecture.md +++ b/src/uix/active_architecture.md @@ -834,7 +834,7 @@ Para evitar mission creep, conviene fijar lo que UIX **no quiere ser**: --- -## 10. Estado actual (2026-05-14) +## 10. Estado actual (2026-05-17) **Implementado y verificado**: @@ -878,6 +878,10 @@ Para evitar mission creep, conviene fijar lo que UIX **no quiere ser**: delegarse a CSS externo via `themeSource`. La persistencia queda definida como `EidosConfigDocument` versionado; `ActiveEidos` puede bootear desde ese documento y exponerlo de nuevo via `toDocument()` / `serialize()`. + La tanda de wrappers migrados desde Soma queda documentada en + `eidos/components/README.md`; a fecha 2026-05-17 incluye primitives de estado + y formulario como `progress`, `meter`, `slider`, `pagination`, + `rating-group`, `search-field` y `number-field`. - `adom` — `dom.apply(change)`, `dom.remove(target, names)`. Toda la superficie reactiva (viewport, breakpoints, listeners, observers, BodyScrollLock, DOMContext, RovingFocusGroup) ya estable. diff --git a/src/uix/eidos/README.md b/src/uix/eidos/README.md index 91b1931b9..5d41233c8 100644 --- a/src/uix/eidos/README.md +++ b/src/uix/eidos/README.md @@ -25,6 +25,11 @@ wrappers. Eidos queda congelado a nivel de componentes hasta reauditar la arquitectura de UIX. No tocar `src/uix/eidos/components/*` salvo orden explicita. +Actualización 2026-05-17: la migración de componentes se reanudó por orden +explícita. La regla vigente no cambia: cada componente nuevo debe seguir +`components/README.md`, envolver partes públicas de Soma directamente y añadir +sólo superficie visual de Eidos. + Antes de seguir con wrappers o recipes por componente hay que respetar estas decisiones: @@ -668,7 +673,7 @@ existe sólo para la porción CSS-pura que aún no consume el morfo a través de TypeScript. Cuando los recipes migren a un builder, el lint podrá retirarse. -## Estado actual (2026-05-14) +## Estado actual (2026-05-17) - **ActiveEidos**: implementado como runtime/contexto visual y superficie de configuracion. Gestiona primitivas, roles canonicos, themes, validacion, @@ -686,6 +691,12 @@ podrá retirarse. fuentes explicitas `modeSource` / `densitySource`, soporta themes de config y CSS-only via `themeSource`, acepta variables runtime en un style block propio, y con `applyDom:false` no escribe en el DOM. +- **Wrappers por componente**: la superficie migrada desde Soma ya incluye + `toggle`, `switch`, `collapsible`, `dialog`, `drawer`, `popover`, `toast`, + `accordion`, `avatar`, `tooltip`, `tabs`, `checkbox`, `radio-group`, + `meter`, `progress`, `slider`, `pagination`, `rating-group`, + `search-field` y `number-field`. Todos usan root visual + partes attached, + sin `Provider` público ni API flat. - **Color**: basado en roles canonicos de jerarquia e intents (`primary`, `secondary`, `tertiary`, `neutral`, `affirm`, `fulfill`, `risk`, `threat`, `loss`) y escalas de 12 pasos. Por cada escala genera @@ -710,9 +721,9 @@ podrá retirarse. libres por key y estilos tipograficos (`h1`, `h2`, `body`, etc.) como `Record`. - **Convencion del API de componentes**: disciplined option C esta - documentada en [`components/README.md`](./components/README.md), pero - la migracion de componentes/rutas no debe mezclarse con el trabajo del - modulo general. + documentada en [`components/README.md`](./components/README.md). La migracion + de componentes avanza por tandas pequenas y no debe arrastrar cambios de + demos/rutas ni reimplementar comportamiento que pertenece a Soma. - **CSS generado**: `generated/base.css` ya se genera desde la config base de Eidos con `npm run generate:eidos-css` y se importa como foundation estatica. Los CSS historicos de `contracts/` y `themes/base/` ya no existen diff --git a/src/uix/eidos/components/README.md b/src/uix/eidos/components/README.md index 459d334b4..3d66ab447 100644 --- a/src/uix/eidos/components/README.md +++ b/src/uix/eidos/components/README.md @@ -342,26 +342,41 @@ su subdirectorio. ## Estado actual de la migración (2026-05-17) -| Componente | Forma canónica | Notas | -| ----------- | -------------- | ---------------------------------------------------------------------------- | -| toggle | ✅ single-part | piloto | -| switch | ✅ single-part | | -| collapsible | ✅ multi-part | Trigger, Content | -| dialog | ✅ multi-part | Trigger, Portal, Overlay, Content, Title, Description, Close, Header, Footer | -| drawer | ✅ multi-part | + Handle | -| popover | ✅ multi-part | + Arrow, Anchor | -| toast | ✅ multi-part | + Toaster separate | -| accordion | ✅ multi-part | Item, Header, Trigger, Content | -| avatar | ✅ multi-part | Image, Fallback (eidos-native) | -| icon | ✅ single-part | + 1697 lucide glyphs | -| meter | ✅ multi-part | Indicator | -| number-field | ✅ multi-part | Input, IncrementTrigger, DecrementTrigger, Scrubber | -| pagination | ✅ multi-part | PrevTrigger, NextTrigger, Item, Ellipsis | -| progress | ✅ multi-part | Indicator | -| rating-group | ✅ multi-part | Item | -| search-field | ✅ multi-part | Input, ClearTrigger | -| slider | ✅ multi-part | Range, Thumb, Tick | -| tooltip | ✅ multi-part | + Group | -| tabs | ✅ multi-part | List, Trigger, Content, Indicator | -| checkbox | ✅ multi-part | Indicator, HiddenInput, Group, GroupLabel | -| radio-group | ✅ multi-part | Item, Indicator, HiddenInput, Label | +La tanda 2026-05-17 reanuda la migración Soma -> Eidos por orden explícita. +Los wrappers nuevos siguen el mismo criterio: envolver partes públicas de Soma, +añadir sólo props visuales (`size` en esta tanda) y dejar comportamiento, +estado, ARIA, traducciones y escritura headless en Soma/Morfo. + +| Componente | Forma canónica | Notas | +| ------------ | -------------- | ---------------------------------------------------------------------------- | +| toggle | ✅ single-part | piloto | +| switch | ✅ single-part | | +| collapsible | ✅ multi-part | Trigger, Content | +| dialog | ✅ multi-part | Trigger, Portal, Overlay, Content, Title, Description, Close, Header, Footer | +| drawer | ✅ multi-part | + Handle | +| popover | ✅ multi-part | + Arrow, Anchor | +| toast | ✅ multi-part | + Toaster separate | +| accordion | ✅ multi-part | Item, Header, Trigger, Content | +| avatar | ✅ multi-part | Image, Fallback (eidos-native) | +| icon | ✅ single-part | + 1697 lucide glyphs | +| meter | ✅ multi-part | Indicator | +| number-field | ✅ multi-part | Input, IncrementTrigger, DecrementTrigger, Scrubber | +| pagination | ✅ multi-part | PrevTrigger, NextTrigger, Item, Ellipsis | +| progress | ✅ multi-part | Indicator | +| rating-group | ✅ multi-part | Item | +| search-field | ✅ multi-part | Input, ClearTrigger | +| slider | ✅ multi-part | Range, Thumb, Tick | +| tooltip | ✅ multi-part | + Group | +| tabs | ✅ multi-part | List, Trigger, Content, Indicator | +| checkbox | ✅ multi-part | Indicator, HiddenInput, Group, GroupLabel | +| radio-group | ✅ multi-part | Item, Indicator, HiddenInput, Label | + +### Orden recomendado para continuar + +1. Componentes simples de composición/formulario: `field`, `toolbar`, + `breadcrumb`, `tag-group`. +2. Componentes medianos con más partes o layout interno: `file-upload`, + `tags-input`, `editable`, `stepper`. +3. Componentes grandes sólo con tabla previa de migración: `select`, + `combobox`, `calendar`, `date-field`, `date-picker`, + `date-range-picker`, `time-field`, `time-picker`.