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/audit/theming/format-date.md

35 lines
1.3 KiB

docs(theming): la auditoría de alcance de tema, componente a componente, con su propuesta El censo medía el eje y no lo explicaba: 5.205 knobs en dos tablas del plan no dicen QUÉ knob de QUÉ línea no alcanza un tema, ni qué token habría que crear. Ahora `theming-census.ts --report` escribe la auditoría entera bajo `docs/audit/theming/`: un README con la vista de conjunto y 170 fichas — 162 recetas con CSS + 8 componentes sin receta, el árbol completo de `eidos/components/`. Cada ficha de receta: knobs fuera de alcance con fichero:línea Y selector (agrupados por clase), sistema transversal aparte, los privados con la columna que decide («¿deriva de un público?»), y una PROPUESTA de corrección — el token a declarar en `base.ts` con su valor VERBATIM y su scope TSC. La propuesta deriva los nombres de recipe-contract §1 y theming §6.7; donde la doctrina no decide, marca `⚠ decisión` en vez de inventar. Y no propone acuñar lo que la doctrina prohíbe: lo que posee una capa compartida, el foco, la capa de estado, un token prestado de otra receta, un shorthand o un eje físico. Las 8 fichas sin receta dicen —medido, no supuesto— dónde vive su visual: el componente que componen (icon-button → button), la capa que consumen (affix → viewport-placement) o la receta ajena que pinta sus attrs (svg → badge/button). Defectos del instrumento corregidos en el mismo pase, todos encontrados mirando la salida: un `@import` pegado al primer selector se comía 2 knobs de color-picker (el suelo del censo no puede moverse); `:not(:disabled)` se leía como estado y producía `hover-disabled-*`; un knob que lee un privado se proponía a sí mismo en vez de resolverse por talla; `--icon-size-sm` se reportaba como préstamo del componente `icon` (ahora el préstamo se verifica contra las claves del dueño en `base.ts`); y el default de talla salía sin nombrar en vez de `-md`. Verificación: censo global idéntico al suelo publicado (5205 · 1621/33% · 856 · 1880 · 614 · 234) y COMPONENTE A COMPONENTE contra la tabla §9 del plan — 0 diferencias en 162 · regenerar dos veces da el árbol idéntico · el bloque de veredicto escrito a mano sobrevive · docs:check 0 errores sobre 813 docs · prettier limpio (el árbol generado entra en .prettierignore junto a eidos/generated). Las 10 primeras fichas llevan ya su veredicto de revisión: análisis correcto en las 10, propuesta apta en 2 (gradient-builder como piloto, combobox con cinco correcciones — dos de ellas evitaban romper el default), y 5 que no se tokenizan en solitario porque son alias de --calendar-*/--field-* y esperan la decisión de familia. Cuatro destaparon privados con prefijo ajeno o abreviado declarados en su propio CSS. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2 months ago
# format-date — sin receta CSS
> Generado por `node --import tsx/esm scripts/theming-census.ts --report`.
> Vista de conjunto: [README](./README.md) · método:
> [`PLAN-theming.md`](../../process/PLAN-theming.md) §1.
uix(combobox): el campo y su panel pasan a tokens públicos, con la talla resuelta donde manda Segundo del eje theme-reach. El combobox tenía UN token propio (`content-z`) y todo lo demás atado a primitivos globales o enterrado en privados: alcance 0 %. Ahora son 106 claves públicas y el 76 % medido — lo que queda fuera son tres hovers que esperan firma, seis literales de layout y doce knobs que pasan por privados que ya derivan de un público. La talla sigue el canon de dos piezas (coordenada + nombre resuelto), pero con una diferencia que el DOM impone: los resueltos del control se emiten sobre `control` e `input`, no sobre el root, porque el `data-size` que manda vive en el control — y el input suelto lo necesita fuera de él. Los del panel se emiten sobre `content`, que viaja por portal y nunca vería un token del root. Es el precedente de `select` aplicado donde toca. Altura, tipografía y separación del control consumen la coordenada del bundle `--size-{k}-*`; el relleno inline SE DESVÍA del bundle en cuatro tallas y conserva su valor de hoy — la desviación queda visible en el contrato en vez de redondearse a la coordenada, que habría sido un cambio visual disfrazado de limpieza. El chip conserva sus expresiones (`control-height − inset`, `control-font-size − offset`), así que mover el control sigue arrastrándolo. El centinela cazó un fallo real a mitad del trabajo: la primera pasada dejó vivos los ocho bloques `[data-…][data-size='…']` de la receta, que pisaban los tokens nuevos con los valores viejos. El diff de computed daba cero JUSTAMENTE porque la ruta vieja seguía mandando; sin centinela habría pasado por bueno. Verificación: diff de computed vacío sobre 1.566 valores en ocho estados — reposo, las cinco tallas, el panel ABIERTO y hover. Centinela 67/106 automático y el resto verificado a mano: `content-z` alcanza (80 → 4321) aunque viva en el wrapper flotante; placeholder, disabled e ink del trigger forzando su estado; los del panel abriéndolo por teclado. Los siete nombres resueltos no se mueven por diseño — el tema mueve la coordenada. Los catorce `selected-tag-*`, los tres `separator-*` y `scrollbar-inset` no son verificables en esta demo (no monta modo múltiple, ni separadores, ni scroll): queda dicho, con su consumidor comprobado en la receta, en vez de darlos por buenos. Un token nace inerte y se anota como tal: `content-font-family` y `content-line-height` los pisa `[data-depth='overlay']` con la misma especificidad — es la tipografía de portal del Build contract, y tocarla sería otro eje. Guards: component:audit PASS · eidos-lint 0 invalid · suite eidos sin rojos nuevos · rtl:check 0 · docs:check 0 · el guard del bundle obligó a apuntar `indicator-size` e `item-indicator-size` a `--size-sm-icon-size`. El informe `docs/audit/theming/` se regenera entero, así que todas las fichas actualizan su fecha de medida; las que cambian de contenido son combobox y gradient-builder. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2 months ago
- **Medido**: 2026-08-20 · **Alcance**: **—** (no hay knobs que medir)
docs(theming): la auditoría de alcance de tema, componente a componente, con su propuesta El censo medía el eje y no lo explicaba: 5.205 knobs en dos tablas del plan no dicen QUÉ knob de QUÉ línea no alcanza un tema, ni qué token habría que crear. Ahora `theming-census.ts --report` escribe la auditoría entera bajo `docs/audit/theming/`: un README con la vista de conjunto y 170 fichas — 162 recetas con CSS + 8 componentes sin receta, el árbol completo de `eidos/components/`. Cada ficha de receta: knobs fuera de alcance con fichero:línea Y selector (agrupados por clase), sistema transversal aparte, los privados con la columna que decide («¿deriva de un público?»), y una PROPUESTA de corrección — el token a declarar en `base.ts` con su valor VERBATIM y su scope TSC. La propuesta deriva los nombres de recipe-contract §1 y theming §6.7; donde la doctrina no decide, marca `⚠ decisión` en vez de inventar. Y no propone acuñar lo que la doctrina prohíbe: lo que posee una capa compartida, el foco, la capa de estado, un token prestado de otra receta, un shorthand o un eje físico. Las 8 fichas sin receta dicen —medido, no supuesto— dónde vive su visual: el componente que componen (icon-button → button), la capa que consumen (affix → viewport-placement) o la receta ajena que pinta sus attrs (svg → badge/button). Defectos del instrumento corregidos en el mismo pase, todos encontrados mirando la salida: un `@import` pegado al primer selector se comía 2 knobs de color-picker (el suelo del censo no puede moverse); `:not(:disabled)` se leía como estado y producía `hover-disabled-*`; un knob que lee un privado se proponía a sí mismo en vez de resolverse por talla; `--icon-size-sm` se reportaba como préstamo del componente `icon` (ahora el préstamo se verifica contra las claves del dueño en `base.ts`); y el default de talla salía sin nombrar en vez de `-md`. Verificación: censo global idéntico al suelo publicado (5205 · 1621/33% · 856 · 1880 · 614 · 234) y COMPONENTE A COMPONENTE contra la tabla §9 del plan — 0 diferencias en 162 · regenerar dos veces da el árbol idéntico · el bloque de veredicto escrito a mano sobrevive · docs:check 0 errores sobre 813 docs · prettier limpio (el árbol generado entra en .prettierignore junto a eidos/generated). Las 10 primeras fichas llevan ya su veredicto de revisión: análisis correcto en las 10, propuesta apta en 2 (gradient-builder como piloto, combobox con cinco correcciones — dos de ellas evitaban romper el default), y 5 que no se tokenizan en solitario porque son alias de --calendar-*/--field-* y esperan la decisión de familia. Cuatro destaparon privados con prefijo ajeno o abreviado declarados en su propio CSS. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2 months ago
- **Ficheros del componente**: `format-date.svelte`, `index.ts`, `README.md`, `types.ts` — **ningún `.css`**
- **Contrato en `lib/recipes/base.ts`**: sin entrada
## 1. Dónde vive su visual
- **No pinta**: el wrapper aporta estructura, formato o comportamiento, sin superficie propia que un tema pueda mover.
«Declarado y nunca pintado» **no es deuda por sí solo**: el morfo declara la
superficie de COMPORTAMIENTO del componente, no sólo la pintable
(architecture/eidos.md, columna `unused`). Un componente sin receta sólo es
deuda si declaró un eje visual que nadie consume — el aviso de arriba lo dice
cuando ocurre.
## 2. Propuesta de corrección
**Ninguna.** Sin receta no hay knob que tokenizar, y acuñar tokens para un
componente que no pinta crearía un vocabulario huérfano. Si algún día pinta,
entra por la puerta normal: receta + tokens en `base.ts` + esta ficha con
cifras.
## 3. Veredicto
<!-- veredicto:start -->
_(pendiente — lo escribe el autor; se conserva al regenerar)_
<!-- veredicto:end -->

Powered by TurnKey Linux.