gioser

tawasuyu/llimphi

Sovereign retained-mode GPU UI framework in Rust (wgpu+vello+taffy+parley), Elm loop, 40+ widgets.

Rust 229TOML 101Markdown 82Shell 24052 Sutichaykuna

⎇ main llimphi-motion/LEEME.md Markdown · 49 siq'ikuna · 1.4 KB Ñawpa willay ch'uya

chore: refresco desde el monorepo — 27 crates nuevos (anim, lottie, svg, mesh, image, layer, test, wire-view, widgets rag-sidebar/router/lazy-list/rive-button) y sync de los 95 existentes 93253cc22 · Sergio ·

1# llimphi-motion
2
3*Read this in English: [README.md](README.md).*
4
5Animaciones simples sobre el bucle Elm de Llimphi.
6
7Llimphi es Elm puro: `update(msg) -> model`. Para animar un valor en
8el tiempo (un alpha que sube de 0 a 1, una posición que se desliza)
9la app guarda un `Tween` en su modelo y pide al `Handle` que le
10dispatchee un `Msg::Tick` periódicamente (cada ~16 ms) hasta que la
11animación termine. Cada `update` lee `tween.value()` y la `view` la
12pinta.
13
14Esta crate es deliberadamente chiquita:
15- `Lerp` — interpolación lineal genérica (impls para `f32`,
16  `(f32, f32)` y `Color`).
17- `Tween` — interpolación temporizada con easing entre dos valores.
18- `animate` — helper que arranca un loop de ticks autosuficiente
19  sobre un `Handle`.
20
21Las duraciones y easings canónicos viven en `llimphi_theme::motion`.
22
23## Patrón típico
24```ignore
25use llimphi_motion::{Tween, animate};
26use llimphi_theme::motion;
27
28enum Msg { ToastShow, Tick, ToastHidden }
29struct Model { toast_alpha: Tween<f32> }
30
31// update:
32Msg::ToastShow => {
33    model.toast_alpha = Tween::new(0.0, 1.0, motion::NORMAL, motion::ease_out_cubic);
34    animate(handle, motion::NORMAL, || Msg::Tick);
35    model
36}
37Msg::Tick => {
38    // El loop interno terminará solo cuando el tween esté done;
39    // la `view` ya lee el alpha actual sin más.
40    model
41}
42
43// view:
44toast_view().alpha(model.toast_alpha.value())
45```
46
47---
48
49Parte de **llimphi** — ver [llimphi](../LEEME.md).

LEEME.md

llimphi-motion

Read this in English: 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:

Las duraciones y easings canónicos viven en llimphi_theme::motion.

Patrón típico

use llimphi_motion::{Tween, animate};
use llimphi_theme::motion;

enum Msg { ToastShow, Tick, ToastHidden }
struct Model { toast_alpha: Tween<f32> }

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