Document Eidos migration handoff

active-uix
dev 5 months ago
parent 4dc09c2897
commit e359cabd4b

@ -2,6 +2,34 @@
Fecha de corte: 2026-05-17. Rama: `active-uix`. 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: Actualizacion Eidos component migration 2026-05-17:
- Inicio de la migracion Soma -> Eidos siguiendo `soma/COMPONENT_GUIDE.md` - Inicio de la migracion Soma -> Eidos siguiendo `soma/COMPONENT_GUIDE.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 `getRecipeTokens(component)` exponen esos aliases para editores de theme sin
leer CSS. 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, Eidos lee del DOM lo que las otras capas escriben (parts, data-attrs, ARIA,
event signals) — nunca importa internals de soma ni de sema. event signals) — nunca importa internals de soma ni de sema.

@ -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**: **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 delegarse a CSS externo via `themeSource`. La persistencia queda definida
como `EidosConfigDocument` versionado; `ActiveEidos` puede bootear desde ese como `EidosConfigDocument` versionado; `ActiveEidos` puede bootear desde ese
documento y exponerlo de nuevo via `toDocument()` / `serialize()`. 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 - `adom` — `dom.apply(change)`, `dom.remove(target, names)`. Toda la
superficie reactiva (viewport, breakpoints, listeners, observers, superficie reactiva (viewport, breakpoints, listeners, observers,
BodyScrollLock, DOMContext, RovingFocusGroup) ya estable. BodyScrollLock, DOMContext, RovingFocusGroup) ya estable.

@ -25,6 +25,11 @@ wrappers.
Eidos queda congelado a nivel de componentes hasta reauditar la arquitectura Eidos queda congelado a nivel de componentes hasta reauditar la arquitectura
de UIX. No tocar `src/uix/eidos/components/*` salvo orden explicita. 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 Antes de seguir con wrappers o recipes por componente hay que respetar estas
decisiones: 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 través de TypeScript. Cuando los recipes migren a un builder, el lint
podrá retirarse. podrá retirarse.
## Estado actual (2026-05-14) ## Estado actual (2026-05-17)
- **ActiveEidos**: implementado como runtime/contexto visual y superficie de - **ActiveEidos**: implementado como runtime/contexto visual y superficie de
configuracion. Gestiona primitivas, roles canonicos, themes, validacion, configuracion. Gestiona primitivas, roles canonicos, themes, validacion,
@ -686,6 +691,12 @@ podrá retirarse.
fuentes explicitas `modeSource` / `densitySource`, soporta themes de config fuentes explicitas `modeSource` / `densitySource`, soporta themes de config
y CSS-only via `themeSource`, acepta variables runtime en un style block y CSS-only via `themeSource`, acepta variables runtime en un style block
propio, y con `applyDom:false` no escribe en el DOM. 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 - **Color**: basado en roles canonicos de jerarquia e intents
(`primary`, `secondary`, `tertiary`, `neutral`, `affirm`, `fulfill`, (`primary`, `secondary`, `tertiary`, `neutral`, `affirm`, `fulfill`,
`risk`, `threat`, `loss`) y escalas de 12 pasos. Por cada escala genera `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 libres por key y estilos tipograficos (`h1`, `h2`, `body`, etc.) como
`Record<string, TypographyStyle>`. `Record<string, TypographyStyle>`.
- **Convencion del API de componentes**: disciplined option C esta - **Convencion del API de componentes**: disciplined option C esta
documentada en [`components/README.md`](./components/README.md), pero documentada en [`components/README.md`](./components/README.md). La migracion
la migracion de componentes/rutas no debe mezclarse con el trabajo del de componentes avanza por tandas pequenas y no debe arrastrar cambios de
modulo general. demos/rutas ni reimplementar comportamiento que pertenece a Soma.
- **CSS generado**: `generated/base.css` ya se genera desde la config - **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 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 estatica. Los CSS historicos de `contracts/` y `themes/base/` ya no existen

@ -342,8 +342,13 @@ su subdirectorio.
## Estado actual de la migración (2026-05-17) ## Estado actual de la migración (2026-05-17)
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 | | Componente | Forma canónica | Notas |
| ----------- | -------------- | ---------------------------------------------------------------------------- | | ------------ | -------------- | ---------------------------------------------------------------------------- |
| toggle | ✅ single-part | piloto | | toggle | ✅ single-part | piloto |
| switch | ✅ single-part | | | switch | ✅ single-part | |
| collapsible | ✅ multi-part | Trigger, Content | | collapsible | ✅ multi-part | Trigger, Content |
@ -365,3 +370,13 @@ su subdirectorio.
| tabs | ✅ multi-part | List, Trigger, Content, Indicator | | tabs | ✅ multi-part | List, Trigger, Content, Indicator |
| checkbox | ✅ multi-part | Indicator, HiddenInput, Group, GroupLabel | | checkbox | ✅ multi-part | Indicator, HiddenInput, Group, GroupLabel |
| radio-group | ✅ multi-part | Item, Indicator, HiddenInput, Label | | 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`.

Loading…
Cancel
Save

Powered by TurnKey Linux.