Skip to content

feat(motion): springs de forma cerrada + tokens --cf-spring-* - #33

Merged
A-PachecoT merged 2 commits into
mainfrom
feat/motion-springs
Sep 25, 2026
Merged

A-PachecoT merged 2 commits into
mainfrom
feat/motion-springs

Conversation

@A-PachecoT

Copy link
Copy Markdown
Member

Qué

Motor de springs de forma cerrada para @cofoundy/ui. Es la base del motion system y de la receta UI-MOTION de /video (motion design de UI en código, formato @twoclipping).

  • src/lib/spring.ts: springAt (3 regímenes, parámetros perceptuales duration/bounce), springToCSSLinear, springTrack (retargeting como función pura del tiempo), springTrackLoop (loop con posición y velocidad continuas), springTransition (framer-motion).
  • Tokens --cf-spring-{snappy,smooth,gentle} + -duration, generados (npm run gen:springs) y verificados contra drift (verify:springs + test).
  • --cf-ease-spring queda deprecado (56 % de overshoot) sin cambiar su valor, así que no hay cambio visual para Fovente, Timely ni Landing.
  • CLAUDE.md: el ejemplo de theming citaba #2984AD; el token real es #46A0D0.

Verificación

Fuera de este PR

Aplicar el motion a Button/Switch/Tabs/Toast (dirección A del prototipo) va en otro PR, según handoff.md.

https://claude.ai/code/session_01T7hd9JiE4DGAUZFRzPqg3y

La motion del paquete eran curvas cubic-bezier, y --cf-ease-spring rebasaba 56 %.
Ahora: spring.ts con respuesta al escalón en los 3 regímenes (parámetros
perceptuales duration/bounce), exportación a CSS linear(), springTrack para
retargeting como función pura del tiempo (seek(t)) y springTransition para
framer-motion.

- presets snappy/smooth/gentle, overshoot ≤ 2 % (test)
- tokens generados por scripts/gen-spring-tokens.ts; verify:springs + test de drift
- --cf-ease-spring queda deprecado, sin cambiar su valor (no rompe consumidores)

Claude-Session: https://claude.ai/code/session_01T7hd9JiE4DGAUZFRzPqg3y
…rrecto en CLAUDE.md

springTrackLoop suma las colas de los ciclos previos: posición y velocidad
empalman en el wrap (lo pidió la primera pieza UI-MOTION de /video). +2 tests.
El ejemplo de theming citaba #2984AD; el token real es #46A0D0.

Claude-Session: https://claude.ai/code/session_01T7hd9JiE4DGAUZFRzPqg3y
@A-PachecoT

Copy link
Copy Markdown
Member Author

Merge con chromatic rojo: falla preexistente en main (ShaderHero.stories → 'FE is not a function', runs 35814814984 / 34097610711 / 32581923663, ver #26). verify ✓. Autorizado explícitamente por André en sesión.

https://claude.ai/code/session_01T7hd9JiE4DGAUZFRzPqg3y

@A-PachecoT
A-PachecoT merged commit 1c048de into main Sep 25, 2026
1 of 2 checks passed
@A-PachecoT
A-PachecoT deleted the feat/motion-springs branch September 25, 2026 19:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant