# UIX Documento corto de posicionamiento arquitectónico para `src/uix`. > **Visión de conjunto**: para entender las cuatro capas (morfo, soma, sema, > eidos) en una sola lectura, motivaciones y articulación incluidas, ir a > [active_architecture.md](./active_architecture.md). Este README mantiene la > introducción más narrativa. > > **Hand-off de continuación**: el estado actual de migración y los próximos > pasos viven en [`continue.md`](../../continue.md). > **Handoff 2026-05-14**: pausa deliberada antes de seguir programando. > Los contratos mínimos entre `active-uix`, `morfo`, `soma`, `sema`, `eidos`, > `adom`, `langs`, `format` y `prefs` quedan descritos en > [active_architecture.md](./active_architecture.md), sección > "Handoff 2026-05-14". Ya queda fijada la regla principal de ownership: > solo `ActiveApp` y `ActiveUix` standalone crean servicios compartidos. > La tabla ejecutable de contratos vive en [contracts.ts](./contracts.ts) > y se valida en [contracts.test.ts](./contracts.test.ts). > La tabla de naming canonico vive en > [active_architecture.md#01-naming-canonico](./active_architecture.md#01-naming-canonico). > Ownership DOM P1 queda cerrado: las escrituras gestionadas por UIX pasan > por `ActiveDom`. > > **Convenciones doctrinales del API** (intent ↔ color, subset por componente, > root visual con partes attached en eidos, sound prepare-time priming): viven en > [`src/docs/sema-implementation-guide.md`](../docs/sema-implementation-guide.md) > Parte IV. Autoritativo para todo wrapper / migración nueva. UIX no intenta ser "otra librería de componentes". La apuesta es más ambiciosa y estructural: **separar capas que casi todos los frameworks actuales mantienen mezcladas**. En la mayoría de sistemas de UI, estas cosas viven pegadas: - contrato público del DOM - comportamiento headless - accesibilidad - semántica del evento - capa visual - motores modales (sound, vibra, motion) - integración con servicios de app UIX intenta partir ese bloque en piezas con fronteras fuertes. --- ## 1. La idea central UIX modela la interfaz como varias capas cooperando, no como un único componente gigante que hace todo a la vez. ```text App ├─ servicios transversales (active-app) │ └─ adom, langs, format, ... └─ componentes └─ capa estructural / semántica / comportamental / visual ``` La intuición: - la estructura pública del componente no es lo mismo que su comportamiento - la semántica de un evento no es lo mismo que su materialización - el DOM activo no es lo mismo que utilidades DOM puras - la app no debería acoplar motores modales entre sí UIX pone nombres y contratos explícitos a esas separaciones. --- ## 2. Las capas de UIX ### `Morfo` (`src/uix/morfo/`) Contrato estructural cross-layer del componente. Define `parts`, `data-*`, ARIA, foco, teclado, eventos y, cuando el texto pertenece al contrato, `translations` del componente. No es prose ni runtime — es la forma canónica pública. Ver: [morfo/README.md](./morfo/README.md) ### `Sema` / Events (`src/uix/sema/`) Vocabulario semántico y orquestación de eventos perceptivos. `sema` queda como nombre historico de la carpeta; la superficie publica de `ActiveUix` usa `events`. - familias canónicas: `contact`, `commit`, `signal`, `handle`, `emerge`, `shift`, `sustain` - intents canónicos: `neutral`, `affirm`, `fulfill`, `risk`, `threat`, `loss` - `uix.events.emit(signal)` para que el provider publique ocurrencias - registry de canales (`VisualChannel`, `SoundChannel`, futuro `VibraChannel`) - semántica secuencial estricta del `VisualChannel`: prepara `data-event-*` mediante un proyector DOM, mantiene durante el `hold` y limpia ANTES de resolver la Promise Sema no decide qué ocurrió (eso lo decide el provider). Solo orquesta la ocurrencia y la despacha a los canales registrados. Ver: [sema/README.md](./sema/README.md) ### `Soma` (`src/uix/soma/`) Capa headless de comportamiento: estado, contexto, a11y, keyboard / pointer / focus, emisión de eventos. Soma no conoce la implementación concreta de los engines modales. Su trabajo es emitir hechos del componente, no materializarlos. Ver: [soma/README.md](./soma/README.md), [soma/SOMA_ARCHITECTURE.md](./soma/SOMA_ARCHITECTURE.md) ### `Eidos` (`src/uix/eidos/`) Capa visual: tokens, themes, recipes CSS por componente, archetype rules, event reactions y **wrappers Svelte** sobre los providers headless de soma con las props visuales (variant, size, block, iconOnly, icon, checkMark). El modulo general queda aplanado en `ActiveEidos`: - `ActiveEidos` — runtime activo/contexto visual creado por `ActiveEidos.create(...)`. Gestiona configuracion visual, primitivas, roles canonicos, themes, validacion, generacion de CSS y persistencia. Con servicios de `ActiveUix`, recibe `dom`, `langs`, `prefs` y `format`; `mode` y `density` llegan por fuentes explicitas o defaults propios. Inyecta `