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`.
## 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`

@ -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.

@ -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.

@ -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<string, TypographyStyle>`.
- **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

@ -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`.

Loading…
Cancel
Save

Powered by TurnKey Linux.