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/aspect-ratio.md

4.3 KiB

aspect-ratio — 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: strct — ESTRUCTURAL: sin denominador que medir, y eso es la respuesta
  • Knobs de apariencia: 3 — público 0 · privado 0 · global 0 · literal 0 · sistema 0 · excepción 0 · estructural 3 · puente 0 · canal 0 (los cinco últimos, fuera del ratio)
  • Contrato hoy (lib/recipes/base.ts): sin entrada en base.ts
  • Eje size: no · ficheros: aspect-ratio.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.

2-bis. Estructural (3) — fuera del ratio

Su 0 % es naturaleza, no deuda: es una FACETA de box, no un componente: el eje lo posee box y su knob viene prestado (⤴); --aspect-ratio es canal de valor por instancia.

La lista firmada vive en STRUCTURAL_COMPONENTS (scripts/theming-census.ts) y el porqué del eje en §13 de next-features.md. Los knobs se listan para que se lean, no para acuñarlos.

# fichero:línea selector propiedad valor
1 aspect-ratio.css:22 [data-box][data-aspect-ratio] inline-size var(--box-width, 100%) ⤴ prestado de box
2 aspect-ratio.css:30 [data-box][data-aspect-ratio] > * inline-size 100%
3 aspect-ratio.css:31 [data-box][data-aspect-ratio] > * block-size 100%

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

  • Consume tokens públicos de box. Un token prestado importa la semántica de su dueño: la corrección no es duplicarlo con prefijo propio, sino la decisión de familia que la auditoría de fase 1 dejó registrada (theming-audit.md §B, familia calendar).

Ninguna: el componente es estructural (§2-bis) — no hay contrato que escribir.

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. Su 0 % es DEFINITIVO, no deuda. aspect-ratio no es un componente con cromo: es una FACETA de Box — sus selectores rezan [data-box][data-aspect-ratio].

  1. Su único knob global es var(--box-width, 100%), y la propia ficha lo marca como prestado de box (⤴). Un token prestado trae la semántica de su dueño: la anchura de una caja la posee box, y acuñar --aspect-ratio-width sería un segundo nombre para el mismo eje.
  2. --aspect-ratio es CANAL DE VALOR por instancia: lo escribe el consumidor con la proporción que quiere (16/9, 1…), no un tema.
  3. Los dos 100% y el object-fit: cover del hijo son identidad de layout: lo que hace que el contenido llene la caja sin romper la proporción.

No hay contrato que escribir. Inventarle tokens sería fabricar deuda donde no la hay.

Powered by TurnKey Linux.