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/text-circular.md

3.4 KiB

text-circular — 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-22 · Alcance: 100% — 6 de 6 knobs por token público
  • Knobs de apariencia: 6 — público 6 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 (los dos últimos, fuera del ratio)
  • Contrato hoy (lib/recipes/base.ts): 6 pública(s) — size, radius, weight, fg, font-size, char-transition
  • Eje size: no · ficheros: text-circular.css

1. Knobs fuera de alcance

1.1 Directo a primitivo global (0)

Ninguno.

1.2 A través de un privado (0)

Ninguno.

1.3 Literales (0)

Ninguno.

1.4 Excepciones firmadas (0) — 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.

Ninguno.

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

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

Ninguno.

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

La receta no declara privados propios en su CSS.

4. Propuesta de corrección

Nada que proponer: no hay knobs fuera de alcance.

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

Medido 2026-08-22. Ya tenía cinco públicos «de facto» —consumidos como var(--text-circular-x, <default>)— pero ninguno declarado en el contrato, así que un tema no los ve en getRecipeTokens() ni el panel de la demo los lista. Tokenizar es sobre todo DECLARAR lo que ya se consume, más el único knob que faltaba.

  1. A diferencia de knob, aquí declarar es seguro: no hay privado por talla detrás del fallback, así que el público no puede matar una escala. El fallback simplemente deja de usarse y el valor por defecto pasa al contrato, que es donde un tema lo busca.
  2. El que faltaba es el radius (var(--radius-full, 9999px)): el círculo.
  3. fg con valor currentColor es correcto como token: una custom property no resuelve currentColor hasta el punto de uso, así que sigue tomando la tinta del nodo y no la del :root — verificado con el diff.
  4. char-transition guarda una transición COMPLETA (all 0.5s cubic-bezier(0, 0, 0, 1)): es el gesto del carácter al girar, y se conserva verbatim.

Powered by TurnKey Linux.