# llimphi-motion *Read this in English: [README.md](README.md).* Animaciones simples sobre el bucle Elm de Llimphi. Llimphi es Elm puro: `update(msg) -> model`. Para animar un valor en el tiempo (un alpha que sube de 0 a 1, una posición que se desliza) la app guarda un `Tween` en su modelo y pide al `Handle` que le dispatchee un `Msg::Tick` periódicamente (cada ~16 ms) hasta que la animación termine. Cada `update` lee `tween.value()` y la `view` la pinta. Esta crate es deliberadamente chiquita: - `Lerp` — interpolación lineal genérica (impls para `f32`, `(f32, f32)` y `Color`). - `Tween` — interpolación temporizada con easing entre dos valores. - `animate` — helper que arranca un loop de ticks autosuficiente sobre un `Handle`. Las duraciones y easings canónicos viven en `llimphi_theme::motion`. ## Patrón típico ```ignore use llimphi_motion::{Tween, animate}; use llimphi_theme::motion; enum Msg { ToastShow, Tick, ToastHidden } struct Model { toast_alpha: Tween } // update: Msg::ToastShow => { model.toast_alpha = Tween::new(0.0, 1.0, motion::NORMAL, motion::ease_out_cubic); animate(handle, motion::NORMAL, || Msg::Tick); model } Msg::Tick => { // El loop interno terminará solo cuando el tween esté done; // la `view` ya lee el alpha actual sin más. model } // view: toast_view().alpha(model.toast_alpha.value()) ``` --- Parte de **llimphi** — ver [llimphi](../LEEME.md).