docs(theming): el registro §8 recoge collapsible y toolbar, con su sha puesto

Las dos entradas de la sesión del 24, cada una con el sha REAL del commit del
componente (que es por lo que van en un commit aparte: trece entradas quedaron
un día con el marcador `(COMMIT)` sin resolver y hubo que arreglarlas).

- `collapsible` 90 % → 100 % (`1621de93c`) — una clave, la costura del `gap`
  del encabezado; el que ANIMA su apertura no tiene un solo knob de motion
  porque su firma es el par de eventos, no un `@keyframes`.
- `toolbar` 91 % → 94 % CERRADO (`26713f288`) — cero claves acuñadas: sus dos
  privados son conmutadores por variante cuya segunda rama es la identidad de
  la variante, y ceder el cromo del botón al `<Button>` compuesto le sale
  GRATIS, al revés que a `form`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
alpha-0.1-background
dev 2 months ago
parent acf9c3a234
commit 9e471e818d

@ -509,6 +509,56 @@ excepción abre la mano para MEDIR, no para contabilizar.
## 8. Registro
- 2026-08-24 — **`toolbar` 91 % → 94 % CERRADO** (`26713f288`), contrato **54**
claves intacto (cero acuñadas), centinela **52/54** con 2 adjudicadas. **No
había nada que acuñar, y ése es el resultado**: el censo daba `global 0` —la
receta ya lee su contrato en cada declaración, con el eje `size` resuelto por
el TSC a través de siete privados que sólo reapuntan claves públicas por
talla— así que el trabajo fue CLASIFICAR lo que quedaba fuera. Sus dos
privados son **conmutadores por variante**, medidos uno a uno en el nodo real
(`--_toolbar-bg` = `var(--toolbar-bg)` en `surface`, `transparent` en
`outline` y `ghost`; `--_toolbar-shadow` igual con `none`): esa segunda rama
es la **identidad de la variante**, no un knob — una barra `ghost` ES la que
no tiene relleno ni sombra, y un público encima dejaría que un tema la
rellenara. Y su único literal (`inline-size: 100%` del separador horizontal,
el mismo trabajo que `align-self: stretch` en el gemelo vertical, medido 112
px sobre 126) queda FIRMADO y sale del ratio. **Lo que enseñó**: (1) **ceder
el cromo al componente compuesto sale GRATIS** — `Toolbar.Button` compone el
`<Button>` canónico y sus nodos llevan `data-button` Y `data-toolbar-button`,
con `[data-button]` casando a la misma especificidad (0,1,0) pero emitiéndose
DESPUÉS; la diferencia con `form`, que conserva 24 declaraciones que Button
anula, es que esta receta **no escribe ni una regla `[data-toolbar-button]`**
(A-112), así que la cascada del compuesto no le mata una sola clave —medido
ANTES de tocar nada: 51/54, y ninguna de las tres silenciosas era del botón;
(2) el interruptor que revive `disabled-opacity` hay que elegirlo MIRANDO la
regla de hover: encender «group disabled» no tapa nada porque el hover del
bar es `[data-toolbar-link]:hover, [data-toolbar-group-item]:hover:not([data-disabled])`
y el Link no pertenece al grupo — comprobado corriendo el guard antes y
después (51/54 → 52/54, el conjunto muerto encoge en uno y no gana ninguno).
Diff de computed vacío (2.464 valores × 7 estados × 11 nodos), capturas 2×
antes/después.
- 2026-08-24 — **`collapsible` 90 % → 100 %** (`1621de93c`), contrato 11 → **12**
claves, centinela **10/12** con 2 adjudicadas. Una sola clave, y es **la
COSTURA** (§2-A): el `gap` del encabezado leía `var(--space-2)` A PELO, así
que el valor era del sistema y el knob no era de nadie. El nombre lo decidió
el **catálogo**, no la propuesta de la ficha: `trigger-gap` ya existía ocho
veces en `base.ts`, cinco con exactamente ese paso. **Lo que enseñó**: (1) **el
componente que ANIMA su apertura no tiene un solo knob de motion** — su firma
es el par de eventos `emerge-expand` / `emerge-collapse` que materializa
`EidosConfig.motion.signatures`, y la receta no declara un `@keyframes`
(recipe-contract §2, R-4.5), de modo que lo único suyo es el par
`transition-*` que ya estaba en el contrato: el aviso «nunca `@keyframes` en
una receta» aquí no tenía nada que prohibir; (2) **una silenciosa se ARREGLA
antes que adjudicarse, pero eligiendo el interruptor** — encender el
`disabled` de la demo para toda la corrida se habría llevado el tinte de hover
por delante (`pointer-events: none` en el provider, «montar más mide menos»),
así que el estado entra como **superficie extra** por la URL
(`?perm.disabled=true`, precedente `radio-group`) en vez de como línea de
ledger. Las dos que sí se adjudican son `transition-duration` /
`transition-ease`, que SON la transición que el guard congela — medidas sin
congelar sobre el encabezado real (`0.18s ×2 → 4.321s ×2`). Diff de computed
vacío (736 valores × 8 estados × 3 nodos, las tres partes del morfo en cerrado
y en abierto), capturas 2× antes/después.
- 2026-08-23 — **`card` 78 % → 78 %** (`f3189a05a`), contrato 97 → **98** claves,
centinela **49/98** con 49 adjudicadas. **Cerrado en su número, y ése es el
resultado**: sus ocho privados son TODOS, transitivamente, el puente THM-2 —

Loading…
Cancel
Save

Powered by TurnKey Linux.