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/callout.md

6.8 KiB

callout — alcance de tema: análisis y propuesta

Generado por node --import tsx/esm scripts/theming-census.ts --report. Lo medido y la propuesta se regeneran; el Veredicto (§5) se conserva. Vista de conjunto: README · método y protocolo: PLAN-theming.md §1, §2, §7.

  • Medido: 2026-08-25 · Alcance: 100% — 11 de 11 knobs por token público
  • Knobs de apariencia: 14 — público 11 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 1 · estructural 0 · puente 3 · canal 0 (los cinco últimos, fuera del ratio)
  • Contrato hoy (lib/recipes/base.ts): 34 pública(s) — gap, padding, accent-width, radius, row-gap, font-size, line-height, fg, icon-size, title-font-weight, primary-track, primary-text, primary-solid, secondary-track, secondary-text, secondary-solid, neutral-track, neutral-text, neutral-solid, affirm-track, affirm-text, affirm-solid, fulfill-track, fulfill-text, fulfill-solid, risk-track, risk-text, risk-solid, threat-track, threat-text, threat-solid, loss-track, loss-text, loss-solid · 3 privada(s) forward — _palette-track, _palette-text, _palette-solid
  • Eje size: no · ficheros: callout.css

1. Knobs fuera de alcance

1.1 Directo a primitivo global (0)

Ninguno.

1.2 A través de un privado (0)

Sólo el residuo: el puente de paleta (§2-ter) y el canal de valor (§2-quater) salen aparte, porque no son deuda ni tienen nombre que acuñar.

Ninguno.

1.3 Literales (0)

Ninguno.

1.4 Excepciones firmadas (1) — fuera del ratio

Literales que llevan su anotación /* literal: <razón> */ en la propia declaración: la válvula de recipe-contract §3, la misma que honra component-audit. Una desviación firmada no es deuda — se listan para que la razón se lea, no para acuñarlas.

# fichero:línea selector propiedad valor
1 callout.css:37 [data-callout-icon] line-height 1

2. Sistema transversal (0) — informativo, fuera del ratio

Un tema los alcanza a nivel de sistema, por diseño (recipe-contract §2).

Ninguno.

2-ter. Puente de paleta THM-2 (3) — fuera del ratio

La receta lee var(--_callout-palette-{slot}), que lo escribe el forward de la cascada de paleta bajo [data-callout]:where([data-color], [data-color-custom]) (renderRecipePaletteForward, firma B′). Es el MECANISMO de la paleta por instancia, y se alcanza dos veces: por la capa compartida --palette-* y por los tonos públicos del propio componente. No se acuña: un público encima dejaría que un tema lo fijara y matara en silencio el color= de cada instancia (veredictos §5 de card, tags-input, avatar).

# fichero:línea selector propiedad valor
1 callout.css:20 [data-callout] background var(--_callout-palette-track)
2 callout.css:38 [data-callout-icon] color var(--_callout-palette-solid)
3 callout.css:51 [data-callout-title] color var(--_callout-palette-text)

3. Privados de la receta — ¿de dónde sale su valor?

La receta no declara privados propios en su CSS.

Consumidos y no declarados en el CSS (vienen de base.ts o de un estilo inline del wrapper): --_callout-palette-solid, --_callout-palette-text, --_callout-palette-track.

4. Propuesta de corrección

4.1 Tokens a declarar en lib/recipes/base.ts (0)

Valor verbatim del CSS de hoy: el default no se mueve, sólo cambia quién puede moverlo. Nombres derivados de recipe-contract §1 (ejes lógicos, talla al final) y theming §6.7 (slots de color, modificador delante). Un token con DOS valores distintos es una colisión de nombre: son dos knobs, o el nombre no distingue lo que debería — se marca ⚠.

token (--callout-…) scope TSC valor propuesto usos

4.2 Sin nombre mecánico (1)

  • ⚠ decisión: 1 es un valor identidad o geometría de layout, no un knob de tema — el perímetro de «knob» es D-TH.2, sin firmar — 1: line-height.

4.4 Lo que hay que comprobar a mano (PLAN-theming §1.3 · §7.4)

  • Privado que no deriva de un público — §3 lo marca; el privado debe leer el público o desaparecer.
  • Velo o acento en el nodo equivocado (archetype: 'item' en un envoltorio, un background en shorthand que mata la capa de estado) — se mide desde el píxel hacia arriba.
  • Doble animación al mover un sello a una superficie con animación propia — registro de animationstart/animationend.
  • Diff de computed = 0 en reposo · hover · abierto · disabled · foco, por talla, antes y después.
  • Centinela por token nuevo: valor imposible en el root → el nodo lo sigue. Si no, el token miente.

5. Veredicto

EJECUTADO 2026-08-23 — 27 % → 79 %, 7 claves nuevas (28 → 35) y un literal anotado. El 21 % que falta es el puente de paleta (_palette-track/text/solid, THM-2), que no es deuda: es la vía por la que data-color resuelve los 8 roles y las 33 escalas donantes sin una línea de CSS extra.

Cosido lo que la receta consumía a pelo: el hueco de fila, la tipografía del cuerpo (font-size + line-height, que es como se lee una admonición), la tinta del cuerpo, el tamaño del icono y el peso del título. Los pasos leen el BUNDLE (--size-md-font-size, --size-md-font-line-height, --size-md-icon-size), no el primitivo suelto.

La línea base óptica del icono deja de repetir las métricas del sistema: era calc(var(--size-md-font-size) * var(--font-line-height-md, 1.5)) y ahora es calc(var(--callout-font-size) * var(--callout-line-height)) — la MISMA derivación, sobre los tokens del propio callout, así que un tema que agrande la copia mueve la caja del glifo con ella.

Tres respaldos muertos retirados: var(--callout-gap, var(--space-3)), var(--callout-padding, …), var(--callout-accent-width, 3px) y var(--callout-radius, …) llevaban un respaldo que no puede ocurrir —las cuatro claves están en el contrato— y el , 1.5 de --font-line-height-md tampoco (el token existe y vale 1.45; el respaldo mentía por 0,05).

Los 24 rojos del guard son los tonos, y NO son de este componente: es la supersesión de la cascada de paleta que button destapó el mismo día (el bloque genérico va el último y gana por orden). Adjudicados con el PATRÓN compartido.

Verificación: diff de computed = 0 sobre 896 valores en 7 estados · centinela 10/34 con los 24 tonos adjudicados por patrón · censo 79 % · component:audit PASS · suite eidos con el rojo conocido ajeno · rtl:check 0 · docs:check 0 · check sin errores propios · captura de cuatro tonos.

Powered by TurnKey Linux.