Spinners, status-dot pulses, and entrance animations across the dashboard rendered frozen: transition tokens (--transition-slow: 0.3s ease) bundle a duration AND an easing, and 15 animation declarations reused them as bare durations. Substituting "0.3s ease" next to an explicit easing (linear, ease-in-out, ease-out) — or inside calc() — makes the declaration invalid at computed-value time, which per spec resolves the entire property to animation: none with no console error. - add duration-only tokens (--duration-instant/fast/normal/slow) and derive the --transition-* tokens from them so the two cannot drift - switch all 15 broken animation declarations across 14 CSS files to the duration tokens, preserving effective durations - add animation-duration-tokens.css.test.ts: sweeps every app CSS file and fails on transition-token-as-duration, calc() over a transition token, and transition token in animation-duration Verified in a real browser against the production build: previously frozen .status-dot--connecting and calc-based NodesView spinners now report running animations; transition shorthands still resolve to "0.15s / ease". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6.5 KiB
6.5 KiB