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/year-grid.md

14 KiB

year-grid — 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: 0% — 0 de 12 knobs por token público
  • Knobs de apariencia: 61 — público 0 · privado 7 · global 0 · literal 5 · sistema 49 · excepción 0 (los dos últimos, fuera del ratio)
  • Contrato hoy (lib/recipes/base.ts): 0 pública(s) · 5 privada(s) forward — _palette-solid, _palette-solid-hover, _palette-track, _palette-border, _palette-text
  • Eje size: no · ficheros: year-grid.css

1. Knobs fuera de alcance

1.1 Directo a primitivo global (0)

Ninguno.

1.2 A través de un privado (7)

# fichero:línea selector propiedad valor
1 year-grid.css:147 [data-year-grid-cell][data-selected] border-color var(--_year-grid-palette-solid)
2 year-grid.css:148 [data-year-grid-cell][data-selected] background var(--_year-grid-palette-solid)
3 year-grid.css:153 [data-year-grid-cell][data-selected]:hover border-color var(--_year-grid-palette-solid-hover)
4 year-grid.css:154 [data-year-grid-cell][data-selected]:hover background var(--_year-grid-palette-solid-hover)
5 year-grid.css:158 [data-year-grid-cell][data-focused]:not([data-selected]) border-color var(--_year-grid-palette-border)
6 year-grid.css:159 [data-year-grid-cell][data-focused]:not([data-selected]) background var(--_year-grid-palette-track)
7 year-grid.css:160 [data-year-grid-cell][data-focused]:not([data-selected]) color var(--_year-grid-palette-text)

1.3 Literales (5)

# fichero:línea selector propiedad valor
1 year-grid.css:12 [data-year-grid] inline-size max-content
2 year-grid.css:46 [data-year-grid-header] inline-size 100%
3 year-grid.css:103 [data-year-grid-grid] inline-size max-content
4 year-grid.css:111 [data-popover-content] [data-year-grid] inline-size 100%
5 year-grid.css:114 [data-popover-content] [data-year-grid-grid] inline-size 100%

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 (49) — 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 year-grid.css:11 [data-year-grid] gap var(--calendar-gap) ⤴ prestado de calendar
2 year-grid.css:15 [data-year-grid] padding var(--calendar-padding)
3 year-grid.css:16 [data-year-grid] border var(--calendar-border-width) solid var(--calendar-border) ⤴ prestado de calendar
4 year-grid.css:17 [data-year-grid] border-radius var(--calendar-radius) ⤴ prestado de calendar
5 year-grid.css:18 [data-year-grid] background var(--calendar-bg) ⤴ prestado de calendar
6 year-grid.css:19 [data-year-grid] box-shadow var(--calendar-shadow) ⤴ prestado de calendar
7 year-grid.css:20 [data-year-grid] color var(--calendar-fg) ⤴ prestado de calendar
8 year-grid.css:21 [data-year-grid] font-family var(--calendar-font-family) ⤴ prestado de calendar
9 year-grid.css:22 [data-year-grid] font-size var(--calendar-font-size)
10 year-grid.css:23 [data-year-grid] line-height var(--calendar-line-height) ⤴ prestado de calendar
11 year-grid.css:27 [data-year-grid][data-variant='outline'] background var(--calendar-outline-bg) ⤴ prestado de calendar
12 year-grid.css:28 [data-year-grid][data-variant='outline'] box-shadow var(--calendar-outline-shadow) ⤴ prestado de calendar
13 year-grid.css:45 [data-year-grid-header] gap var(--calendar-header-gap) ⤴ prestado de calendar
14 year-grid.css:52 [data-year-grid-heading] color var(--calendar-heading-fg) ⤴ prestado de calendar
15 year-grid.css:53 [data-year-grid-heading] font-size var(--calendar-heading-font-size) ⤴ prestado de calendar
16 year-grid.css:54 [data-year-grid-heading] font-weight var(--calendar-heading-font-weight) ⤴ prestado de calendar
17 year-grid.css:64 [data-year-grid-prev-button], [data-year-grid-next-button] inline-size var(--calendar-control-size)
18 year-grid.css:65 [data-year-grid-prev-button], [data-year-grid-next-button] block-size var(--calendar-control-size)
19 year-grid.css:67 [data-year-grid-prev-button], [data-year-grid-next-button] border var(--calendar-control-border-width) solid var(--calendar-control-border) ⤴ prestado de calendar
20 year-grid.css:68 [data-year-grid-prev-button], [data-year-grid-next-button] border-radius var(--calendar-control-radius) ⤴ prestado de calendar
21 year-grid.css:69 [data-year-grid-prev-button], [data-year-grid-next-button] background var(--calendar-control-bg) ⤴ prestado de calendar
22 year-grid.css:70 [data-year-grid-prev-button], [data-year-grid-next-button] color var(--calendar-control-fg) ⤴ prestado de calendar
23 year-grid.css:81 [data-year-grid-prev-button]:hover, [data-year-grid-next-button]:hover border-color var(--calendar-hover-control-border) ⤴ prestado de calendar
24 year-grid.css:82 [data-year-grid-prev-button]:hover, [data-year-grid-next-button]:hover background-image linear-gradient(var(--state-hover), var(--state-hover))
25 year-grid.css:83 [data-year-grid-prev-button]:hover, [data-year-grid-next-button]:hover color var(--calendar-hover-control-fg) ⤴ prestado de calendar
26 year-grid.css:89 [data-year-grid-prev-button]:focus-visible, [data-year-grid-next-button]:focus-visible, [data-year-grid-cell]:focus-visible outline var(--focus-ring-width) solid var(--focus-ring-color)
27 year-grid.css:96 [data-year-grid-prev-button][data-disabled], [data-year-grid-next-button][data-disabled] opacity var(--calendar-disabled-opacity) ⤴ prestado de calendar
28 year-grid.css:102 [data-year-grid-grid] gap var(--calendar-grid-gap) ⤴ prestado de calendar
29 year-grid.css:121 [data-year-grid-cell] min-inline-size calc(var(--calendar-day-size) * 1.8)
30 year-grid.css:122 [data-year-grid-cell] block-size var(--calendar-day-size)
31 year-grid.css:123 [data-year-grid-cell] padding-inline var(--calendar-select-padding-inline, 8px) ⤴ prestado de calendar
32 year-grid.css:124 [data-year-grid-cell] border var(--calendar-day-border-width) solid var(--calendar-day-border) ⤴ prestado de calendar
33 year-grid.css:125 [data-year-grid-cell] border-radius var(--calendar-day-radius) ⤴ prestado de calendar
34 year-grid.css:126 [data-year-grid-cell] background var(--calendar-day-bg) ⤴ prestado de calendar
35 year-grid.css:127 [data-year-grid-cell] color var(--calendar-day-fg) ⤴ prestado de calendar
36 year-grid.css:129 [data-year-grid-cell] font-weight var(--calendar-day-font-weight) ⤴ prestado de calendar
37 year-grid.css:141 [data-year-grid-cell]:hover border-color var(--calendar-hover-day-border) ⤴ prestado de calendar
38 year-grid.css:142 [data-year-grid-cell]:hover background-image linear-gradient(var(--state-hover), var(--state-hover))
39 year-grid.css:143 [data-year-grid-cell]:hover color var(--calendar-hover-day-fg) ⤴ prestado de calendar
40 year-grid.css:149 [data-year-grid-cell][data-selected] color var(--calendar-day-selected-fg) ⤴ prestado de calendar
41 year-grid.css:164 [data-year-grid-cell][data-current]:not([data-selected]) border-color var(--calendar-day-today-border) ⤴ prestado de calendar
42 year-grid.css:165 [data-year-grid-cell][data-current]:not([data-selected]) color var(--calendar-day-today-fg) ⤴ prestado de calendar
43 year-grid.css:166 [data-year-grid-cell][data-current]:not([data-selected]) font-weight var(--calendar-day-today-font-weight) ⤴ prestado de calendar
44 year-grid.css:171 [data-year-grid-cell][data-disabled] opacity var(--calendar-disabled-opacity) ⤴ prestado de calendar
45 year-grid.css:175 [data-year-grid][data-disabled] opacity var(--calendar-disabled-opacity) ⤴ prestado de calendar
46 year-grid.css:183 [data-year-grid][data-readonly] [data-year-grid-cell]:not([data-selected]):hover background var(--calendar-day-bg) ⤴ prestado de calendar
47 year-grid.css:184 [data-year-grid][data-readonly] [data-year-grid-cell]:not([data-selected]):hover border-color var(--calendar-day-border) ⤴ prestado de calendar
48 year-grid.css:185 [data-year-grid][data-readonly] [data-year-grid-cell]:not([data-selected]):hover color var(--calendar-day-fg) ⤴ prestado de calendar
49 year-grid.css:194 [data-year-grid-cell][data-event] box-shadow var(--calendar-event-shadow)

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): --_year-grid-palette-border, --_year-grid-palette-solid, --_year-grid-palette-solid-hover, --_year-grid-palette-text, --_year-grid-palette-track.

4. Propuesta de corrección

  • Consume la capa compartida calendar-surface. Un eje que la capa posee se consume como var(--_x, var(--x)); el consumidor no acuña --year-grid-{eje} para él — sería un vocabulario paralelo (README de eidos/components, «Capas compartidas» regla 2).
  • Consume la capa compartida picker-shell. Un eje que la capa posee se consume como var(--_x, var(--x)); el consumidor no acuña --year-grid-{eje} para él — sería un vocabulario paralelo (README de eidos/components, «Capas compartidas» regla 2).
  • Consume tokens públicos de calendar. 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).

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 (--year-grid-…) scope TSC valor propuesto usos
width root max-content 1
grid-width root max-content 1

4.2 Sin nombre mecánico (10)

  • ⚠ 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 — 3: inline-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 — 7: border-color, background, color.

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

Revisión 2026-08-20 — verificación previa a implementación (Opus).

Gemelo byte-a-byte de month-grid (diff de recetas = 1 línea, el nombre; cifras idénticas 61 · 0 · 13 · 40 · 5 · 3, reproducidas). El veredicto entero vive en month-grid.md: análisis CORRECTO, propuesta §4.1 NO IMPLEMENTAR (~40 alias 1:1 de --calendar-*, prohibidos por la propia nota de §4 y por la purga de alias §39); la corrección es la decisión de familia calendar (theming-audit.md §B) y consumir esa capa sin acuñar. Se ejecuta en el mismo commit que month-grid, nunca por separado.

Bloqueos de firma: decisión de familia calendar · D-TH.4 · D-TH.2.

Powered by TurnKey Linux.