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

13 KiB

timeline — 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-20 · Alcance: 51% — 25 de 49 knobs por token público
  • Knobs de apariencia: 49 — público 25 · privado 21 · global 0 · literal 3 · sistema 0 (fuera del ratio)
  • Contrato hoy (lib/recipes/base.ts): 45 pública(s) — gap-sm, gap-md, gap-lg, item-gap-sm, item-gap-md, item-gap-lg, marker-size-sm, marker-size-md, marker-size-lg, marker-icon-size-sm, marker-icon-size-md, marker-icon-size-lg, font-family, font-size-sm, font-size-md, font-size-lg, time-font-size-sm, time-font-size-md, time-font-size-lg, line-height, fg, marker-radius, marker-border-width, marker-border, marker-bg, marker-fg, marker-font-weight, marker-ring-width, connector-thickness, connector-fg, connector-min-size, item-inline, alt-content-block, alt-time-block, content-gap, time-font-weight, time-fg, title-font-weight, title-fg, description-fg, reveal-duration, reveal-ease, reveal-distance, transition-duration, transition-ease · 5 privada(s) forward — _palette-solid, _palette-track, _palette-border, _palette-contrast, _palette-text
  • Eje size: sí · ficheros: timeline.css

1. Knobs fuera de alcance

1.1 Directo a primitivo global (0)

Ninguno.

1.2 A través de un privado (21)

# fichero:línea selector propiedad valor
1 timeline.css:36 [data-timeline] font-size var(--_timeline-font-size)
2 timeline.css:128 [data-timeline]:not([data-orientation='horizontal']) [data-timeline-item] column-gap var(--_timeline-gap)
3 timeline.css:130 [data-timeline]:not([data-orientation='horizontal']) [data-timeline-item] padding-block-end var(--_timeline-item-gap)
4 timeline.css:220 [data-timeline][data-orientation='horizontal'] [data-timeline-item] gap var(--_timeline-gap)
5 timeline.css:221 [data-timeline][data-orientation='horizontal'] [data-timeline-item] padding-inline-end var(--_timeline-item-gap)
6 timeline.css:315 [data-timeline-marker] inline-size var(--_timeline-marker-size)
7 timeline.css:316 [data-timeline-marker] block-size var(--_timeline-marker-size)
8 timeline.css:322 [data-timeline-marker] font-size var(--_timeline-marker-icon-size)
9 timeline.css:332 [data-timeline-marker] :global(svg) inline-size var(--_timeline-marker-icon-size)
10 timeline.css:333 [data-timeline-marker] :global(svg) block-size var(--_timeline-marker-icon-size)
11 timeline.css:338 [data-timeline-item][data-intent] [data-timeline-marker] background var(--_timeline-hue-solid)
12 timeline.css:339 [data-timeline-item][data-intent] [data-timeline-marker] border-color var(--_timeline-hue-solid)
13 timeline.css:340 [data-timeline-item][data-intent] [data-timeline-marker] color var(--_timeline-hue-contrast)
14 timeline.css:346 [data-timeline-item][data-status='done'] [data-timeline-marker] background var(--_timeline-hue-solid)
15 timeline.css:347 [data-timeline-item][data-status='done'] [data-timeline-marker] border-color var(--_timeline-hue-solid)
16 timeline.css:348 [data-timeline-item][data-status='done'] [data-timeline-marker] color var(--_timeline-hue-contrast)
17 timeline.css:351 [data-timeline-item][data-status='current'] [data-timeline-marker] background var(--_timeline-hue-track)
18 timeline.css:352 [data-timeline-item][data-status='current'] [data-timeline-marker] border-color var(--_timeline-hue-border)
19 timeline.css:353 [data-timeline-item][data-status='current'] [data-timeline-marker] color var(--_timeline-hue-text)
20 timeline.css:378 [data-timeline-item][data-status='done'] [data-timeline-connector], [data-timeline-item][data-intent] [data-timeline-connector] border-color var(--_timeline-hue-border)
21 timeline.css:384 [data-timeline-time] font-size var(--_timeline-time-font-size)

1.3 Literales (3)

# fichero:línea selector propiedad valor
1 timeline.css:323 [data-timeline-marker] line-height 1
2 timeline.css:399 [data-timeline-title] font-size 1em
3 timeline.css:407 [data-timeline-description] font-size 1em

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?

privado declaraciones valor(es) origen ¿deriva de un público?
--_timeline-gap 3 var(--timeline-gap-md), var(--timeline-gap-sm), var(--timeline-gap-lg) public sí
--_timeline-item-gap 3 var(--timeline-item-gap-md), var(--timeline-item-gap-sm), var(--timeline-item-gap-lg) public sí
--_timeline-marker-size 3 var(--timeline-marker-size-md), var(--timeline-marker-size-sm), var(--timeline-marker-size-lg) public sí
--_timeline-marker-icon-size 3 var(--timeline-marker-icon-size-md), var(--timeline-marker-icon-size-sm), var(--timeline-marker-icon-size-lg) public sí
--_timeline-font-size 3 var(--timeline-font-size-md), var(--timeline-font-size-sm), var(--timeline-font-size-lg) public sí
--_timeline-time-font-size 3 var(--timeline-time-font-size-md), var(--timeline-time-font-size-sm), var(--timeline-time-font-size-lg) public sí
--_timeline-hue-solid 7 var(--_timeline-palette-solid), var(--color-neutral-solid), var(--color-affirm-solid), var(--color-fulfill-solid), var(--color-risk-solid), var(--color-threat-solid) …(+1) global, private no
--_timeline-hue-track 7 var(--_timeline-palette-track), var(--color-neutral-track), var(--color-affirm-track), var(--color-fulfill-track), var(--color-risk-track), var(--color-threat-track) …(+1) global, private no
--_timeline-hue-border 7 var(--_timeline-palette-border), var(--color-neutral-border), var(--color-affirm-border), var(--color-fulfill-border), var(--color-risk-border), var(--color-threat-border) …(+1) global, private no
--_timeline-hue-contrast 7 var(--_timeline-palette-contrast), var(--color-neutral-contrast), var(--color-affirm-contrast), var(--color-fulfill-contrast), var(--color-risk-contrast), var(--color-threat-contrast) …(+1) global, private no
--_timeline-hue-text 7 var(--_timeline-palette-text), var(--color-neutral-text), var(--color-affirm-text), var(--color-fulfill-text), var(--color-risk-text), var(--color-threat-text) …(+1) global, private no
--_timeline-connector-style 3 solid, dashed, dotted literal no

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

4. Propuesta de corrección

  • Tiene eje size: los tokens dimensionales van por talla ({part}-{eje}-{k}) apuntando al bundle --size-{k}-*, nunca al primitivo crudo (theming §5; el guard recipe-css-contract prohíbe el primitivo).

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

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 (--timeline-…) scope TSC valor propuesto usos
item-border root ⚠ var(--_timeline-palette-solid) / var(--color-neutral-solid) / var(--color-affirm-solid) / var(--color-fulfill-solid) / var(--color-risk-solid) / var(--color-threat-solid) / var(--color-loss-solid) / var(--_timeline-palette-border) / var(--color-neutral-border) / var(--color-affirm-border) / var(--color-fulfill-border) / var(--color-risk-border) / var(--color-threat-border) / var(--color-loss-border) 28
item-bg root ⚠ var(--_timeline-palette-solid) / var(--color-neutral-solid) / var(--color-affirm-solid) / var(--color-fulfill-solid) / var(--color-risk-solid) / var(--color-threat-solid) / var(--color-loss-solid) / var(--_timeline-palette-track) / var(--color-neutral-track) / var(--color-affirm-track) / var(--color-fulfill-track) / var(--color-risk-track) / var(--color-threat-track) / var(--color-loss-track) 21
item-fg root ⚠ var(--_timeline-palette-contrast) / var(--color-neutral-contrast) / var(--color-affirm-contrast) / var(--color-fulfill-contrast) / var(--color-risk-contrast) / var(--color-threat-contrast) / var(--color-loss-contrast) / var(--_timeline-palette-text) / var(--color-neutral-text) / var(--color-affirm-text) / var(--color-fulfill-text) / var(--color-risk-text) / var(--color-threat-text) / var(--color-loss-text) 21
title-font-size root 1em 1
description-font-size root 1em 1

4.2 Sin nombre mecánico (12)

  • ya alcanzable: el privado --_timeline-font-size deriva de un público (var(--timeline-font-size-md), var(--timeline-font-size-sm), var(--timeline-font-size-lg)) — sin acción; el censo lo cuenta como no alcanzable por el límite del regex — 1: font-size.
  • ya alcanzable: el privado --_timeline-gap deriva de un público (var(--timeline-gap-md), var(--timeline-gap-sm), var(--timeline-gap-lg)) — sin acción; el censo lo cuenta como no alcanzable por el límite del regex — 2: column-gap, gap.
  • ya alcanzable: el privado --_timeline-item-gap deriva de un público (var(--timeline-item-gap-md), var(--timeline-item-gap-sm), var(--timeline-item-gap-lg)) — sin acción; el censo lo cuenta como no alcanzable por el límite del regex — 2: padding-block-end, padding-inline-end.
  • ya alcanzable: el privado --_timeline-marker-size deriva de un público (var(--timeline-marker-size-md), var(--timeline-marker-size-sm), var(--timeline-marker-size-lg)) — sin acción; el censo lo cuenta como no alcanzable por el límite del regex — 2: inline-size, block-size.
  • ya alcanzable: el privado --_timeline-marker-icon-size deriva de un público (var(--timeline-marker-icon-size-md), var(--timeline-marker-icon-size-sm), var(--timeline-marker-icon-size-lg)) — sin acción; el censo lo cuenta como no alcanzable por el límite del regex — 3: font-size, inline-size, block-size.
  • ⚠ 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.
  • ya alcanzable: el privado --_timeline-time-font-size deriva de un público (var(--timeline-time-font-size-md), var(--timeline-time-font-size-sm), var(--timeline-time-font-size-lg)) — sin acción; el censo lo cuenta como no alcanzable por el límite del regex — 1: font-size.

4.3 Avisos sobre los tokens propuestos (5)

  • el privado --_timeline-hue-solid debe pasar a leer este público (o desaparecer) — --timeline-item-bg, --timeline-item-border
  • el privado --_timeline-hue-contrast debe pasar a leer este público (o desaparecer) — --timeline-item-fg
  • el privado --_timeline-hue-track debe pasar a leer este público (o desaparecer) — --timeline-item-bg
  • el privado --_timeline-hue-border debe pasar a leer este público (o desaparecer) — --timeline-item-border
  • el privado --_timeline-hue-text debe pasar a leer este público (o desaparecer) — --timeline-item-fg

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.