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/docs/process/CONTINUE-theming.md

61 lines
3.0 KiB

docs(theming): el plan del eje theme-reach — medir qué alcanza un tema, y corregir componente a componente El autor, al ver que el radio del trigger del nav vivía en un privado clavado a --radius-default: «¿los componentes son themables? si no lo son, es un error como framework». Lo es. La doctrina ya exige que cada receta declare sus knobs en recipes/base.ts (recipe-contract §1, theming §6), pero R-1…R-4 sólo comprueban «sin literales», no «alcanzable por un tema»: una receta con todo en var(--radius-md) y privados pasa component:audit en PASS y sólo se puede temar moviendo el sistema entero. Medido, no opinado — scripts/theming-census.ts (instrumento, NO guard): de 5.205 knobs de apariencia en 162 recetas, 1.621 (33 %) pasan por un token público del componente; 1.880 atan directo a un primitivo global, 856 a privados, 614 son literales; 62 componentes no tienen una sola entrada en el contrato; 59 tienen alcance < 20 %; 6 al 100 %. navigation-menu, tras todo el día de hoy, 44 %. El plan (PLAN-theming.md): §1 el censo por familia y por componente (tabla regenerable, no editable) · §2 los cuatro ejes de «personalizable» (tokens · talla · color/variante · estados) · §3 la regla R-5 «alcance de tema» para component-audit, con su válvula de excepción · §4 ocho decisiones D-TH para el autor (R-5 dura · perímetro de knob · WIP · orden · DEFAULT IDÉNTICO · normalizar nombres de slot, que hoy incumplen tabs y el propio nav · cuándo gradúa a error · panel de temas) · §5 fases F0–F4 con gates · §6 deuda transversal · §7 el PROTOCOLO DE VERIFICACIÓN por componente, porque «lo ejecutará Opus, y Opus falla mucho»: cinco preguntas, medir ANTES (computed por parte/estado/talla, sonda headless desde la raíz, fuera de callbacks de MutationObserver), editar sólo la forma firmada, medir DESPUÉS (diff de computed = 0, prueba de CENTINELA por cada token nuevo, desde el píxel hacia arriba, registro de animationstart/end), guards por fichero, un componente = un commit con sus artefactos, y revisión adversarial por bloque. Cada paso tiene un artefacto; sin artefacto no está hecho. El instrumento se probó por mutación antes de creerle, y falló la primera vez: no contaba una regla de una sola línea (`[x] { padding-inline: 8px; }`), así que meter un literal no movía la cifra. Regex endurecido; ahora 6→7→8 con una y dos mutaciones. Las cifras del plan son las del instrumento final, y el handoff (CONTINUE-theming.md) obliga a reproducirlas antes de seguir. Nada firmado, nada construido. Gates del commit: docs:check 0/642 · prettier del script limpio · tsc del script sin errores · el plan cita ficheros que existen (los once, comprobados). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2 months ago
# CONTINUE — eje Theming «theme-reach» (handoff, act. 2026-08-19)
**Estado: PLAN ENTREGADO, NADA FIRMADO, NADA CONSTRUIDO** (salvo el
instrumento de medida, `scripts/theming-census.ts`, que no es un guard).
**La fuente viva es el plan: [`PLAN-theming.md`](./PLAN-theming.md).** Este
fichero sólo dice por dónde entrar y qué NO hacer.
## Por dónde entrar
1. Leer `PLAN-theming.md` **entero** (§0 veredicto · §1 censo · §2–§3 contratos
objetivo · §4 decisiones · §5 fases · §7 protocolo). No a medias.
2. Comprobar §4: si **D-TH.1…D-TH.8 no están firmadas**, presentarlas **una por
mensaje** con las cinco preguntas del autor y PARAR. No arrancar F0 sin
D-TH.1, D-TH.2 y D-TH.5 al menos.
3. Si están firmadas: F0 (instrumento + R-5 en `warn` + test del suelo) → F1
(doctrina + codemod de nombres si D-TH.6) → F2 por bloques, **un componente
= un commit**, cada uno con el protocolo de §7 ENTERO y sus artefactos en el
mensaje de commit.
## Reproducir la cifra antes de creerla
```bash
node --import tsx/esm scripts/theming-census.ts
```
Debe dar 162 recetas · 5.205 knobs · 1.621 públicos (33 %) · 62 sin contrato
(2026-08-19). Si la cifra no cuadra, alguien tocó recetas desde entonces:
regenerar §9 del plan con `--json` antes de seguir.
## Lo que costó cuatro commits en un día (no repetirlo)
- **Medir el nodo que el usuario señala, no el que el código toca**: el «cuadrado»
del hover del nav era el velo sobre el `<li>` (`archetype: 'item'`), no el
trigger; cuatro sondas de `getComputedStyle` sobre el trigger lo dieron por
arreglado. Desde el píxel hacia arriba (`elementsFromPoint`) y captura 2×.
- **El hover es DEL SISTEMA**: la capa de `archetypes.css` en el nodo con forma.
Ni un `background:` a mano, ni `background-image: none`, ni una escalera de
color por componente. «¿De dónde sacas esos estilos?» — de ningún sitio.
- **El default no cambia en este eje.** Un default que parezca defecto se anota
y se firma aparte (D-TH.5).
- **Doble animación** al mover un sello de sema a una superficie con entrada
propia: registro de `animationstart/end`, y la doctrina de motion.md decide
quién posee el eje (la firma en la aparición; el movimiento coordinado en el
swap).
- **Pantalla oculta = rAF congelado**; sondas con Playwright headless desde la
RAÍZ del repo. **`.ts` profundos en caché de disco**: sólo `Ctrl+Shift+R`.
- **Rama compartida**: nunca `git stash` para medir una base; `check` se
compara POR FICHERO; `git add` con rutas explícitas; `git commit -F`; nunca
`--amend`. Otra sesión puede llevarse tus hunks en SU commit si tocáis el
mismo fichero: avisarlo, no rehacerlo.
## Fuentes
- Plan y decisiones: [`PLAN-theming.md`](./PLAN-theming.md).
- Precedente ejecutado de la forma: [`PLAN-sidebar.md`](./PLAN-sidebar.md)
§3 + F3; `navigation-menu` (`ae9e277fa` · `822b78cf2` · `a82794845`).
- Doctrina: `docs/theming/reference.md` §6/§7/§12/§16 ·
`docs/canon/recipe-contract.md` · `docs/canon/tsc.md` ·
`docs/theming/motion.md`.

Powered by TurnKey Linux.