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

8.1 KiB

background — 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-23 · Alcance: 57% — 13 de 23 knobs por token público
  • Knobs de apariencia: 26 — público 13 · privado 1 · global 6 · literal 3 · sistema 3 · excepción 0 (los dos últimos, fuera del ratio)
  • Contrato hoy (lib/recipes/base.ts): 31 pública(s) — pattern-rule, pattern-cell, pattern-dot-size, pattern-glow-size, pattern-glow-at, pattern-glow-strength, pattern-mesh-opacity, pattern-noise-opacity, pattern-vignette-strength, pattern-lines-width, pattern-lines-gap, pattern-lines-angle, pattern-rings-width, pattern-rings-gap, fade-size, fade-at, scrim-fg, scrim-fg-over-dark, scrim-fg-over-light, scrim-strength-xs, scrim-strength-sm, scrim-strength-md, scrim-strength-lg, scrim-strength-xl, gradient-drift-duration, pause-offset, pause-z, parallax-travel, spotlight-size, spotlight-strength, spotlight-fg
  • Eje size: no · ficheros: background.css

1. Knobs fuera de alcance

1.1 Directo a primitivo global (6)

# fichero:línea selector propiedad valor
1 background.css:192 [data-background-layer][data-pattern='mesh'] background-image var(--gradient-aurora)
2 background.css:379 [data-background-layer][data-kind='scrim'][data-blur='sm'] backdrop-filter blur(var(--blur-sm))
3 background.css:382 [data-background-layer][data-kind='scrim'][data-blur='md'] backdrop-filter blur(var(--blur-md))
4 background.css:385 [data-background-layer][data-kind='scrim'][data-blur='lg'] backdrop-filter blur(var(--blur-lg))
5 background.css:388 [data-background-layer][data-kind='scrim'][data-blur='xl'] backdrop-filter blur(var(--blur-xl))
6 background.css:391 [data-background-layer][data-kind='scrim'][data-blur='xxl'] backdrop-filter blur(var(--blur-xxl))

1.2 A través de un privado (1)

# fichero:línea selector propiedad valor
1 background.css:264 [data-background-layer][data-kind='gradient'] background var(--_background-gradient-image, transparent)

1.3 Literales (3)

# fichero:línea selector propiedad valor
1 background.css:76 [data-background-layer] :where(img, video) inline-size 100%
2 background.css:77 [data-background-layer] :where(img, video) block-size 100%
3 background.css:239 [data-background-layer][data-pattern='noise'] background-image url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")

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 (3) — informativo, fuera del ratio

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

# fichero:línea selector propiedad valor
1 background.css:100 [data-background-layer][data-opacity='subtle'] opacity var(--opacity-subtle)
2 background.css:103 [data-background-layer][data-opacity='muted'] opacity var(--opacity-muted)
3 background.css:106 [data-background-layer][data-opacity='ghost'] opacity var(--opacity-ghost)

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

privado declaraciones valor(es) origen ¿deriva de un público?
--_background-tint 2 var(--color-primary-solid), var(--palette-solid, var(--color-primary-solid)) global no
--_background-rule 1 var(--background-pattern-rule) public sí
--_background-cell 1 var(--background-pattern-cell) public sí
--_background-scrim-ink 4 var(--background-scrim-fg), var(--background-scrim-fg-over-dark), var(--background-scrim-fg-over-light), var(--palette-solid, var(--background-scrim-fg)) public sí
--_background-scrim-weight 5 var(--background-scrim-strength-md), var(--background-scrim-strength-xs), var(--background-scrim-strength-sm), var(--background-scrim-strength-lg), var(--background-scrim-strength-xl) public sí
--_background-parallax-offset 3 calc(var(--_background-parallax-travel) * -1), var(--_background-parallax-travel), calc( (var(--background-progress, 0.5) - 0.5) * 2 * var(--_background-parallax-travel) ) private, public no
--_background-parallax-travel 1 calc( var(--background-parallax-travel) * var(--_background-speed, 0) ) public sí
--_background-bleed-size 1 var( --_background-bleed, max(var(--_background-parallax-travel), var(--_background-parallax-travel) * -1) ) private no
--_background-spotlight-ink 2 var(--background-spotlight-fg), var(--palette-solid, var(--background-spotlight-fg)) public sí

Consumidos y no declarados en el CSS (vienen de base.ts o de un estilo inline del wrapper): --_background-bleed, --_background-depth, --_background-gradient-image, --_background-speed.

4. Propuesta de corrección

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

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 (--background-…) scope TSC valor propuesto usos
layer-backdrop-filter root ⚠ blur(var(--blur-sm)) / blur(var(--blur-md)) / blur(var(--blur-lg)) / blur(var(--blur-xl)) / blur(var(--blur-xxl)) 5
layer-bg-image root ⚠ var(--gradient-aurora) / url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E") 2

4.2 Sin nombre mecánico (3)

  • ⚠ decisión: 100% 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 — 2: inline-size, block-size.
  • ⚠ decisión: el privado que alimenta este knob no se declara en el CSS (viene de base.ts o de un estilo inline) — hay que resolverlo antes de nombrarlo — 1: background.

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

(pendiente — lo escribe el autor; se conserva al regenerar)

Powered by TurnKey Linux.