1# llimphi-widget-toast23*Read this in English: [README.md](README.md).*
45Notificaciones efímeras apiladas.
67Cuatro severidades (Info / Success / Warning / Error) con color
8semántico hardcoded — un Error debe leerse rojo aunque la app esté
9en tema "sunset". Cada toast lleva un icono de `llimphi-icons` y
10un texto corto.
1112El widget es **render-only**: recibe una lista de `Toast`s ya
13filtrados por la app (los que aún no expiraron) y los apila en la
14esquina bottom-right. El ciclo de vida (push, auto-dismiss tras
15`duration`, dismiss manual al click) lo maneja la app desde su
16`update`/`spawn`.
1718Patrón típico:
191. App tiene `Vec<Toast>` en el modelo + `next_id: u64`.
202. Para pushear: agregar Toast con `expires_at = Instant::now() + dur`
21 + `handle.spawn(move || { sleep(dur); Msg::ToastExpire(id) })`.
223. `view_overlay` filtra los no expirados y los pasa a `toast_stack_view`.
2324---
2526Parte de **llimphi** — ver [llimphi](../../LEEME.md).
Cuatro severidades (Info / Success / Warning / Error) con color
semántico hardcoded — un Error debe leerse rojo aunque la app esté
en tema "sunset". Cada toast lleva un icono de llimphi-icons y
un texto corto.
El widget es render-only: recibe una lista de Toasts ya
filtrados por la app (los que aún no expiraron) y los apila en la
esquina bottom-right. El ciclo de vida (push, auto-dismiss tras
duration, dismiss manual al click) lo maneja la app desde su
update/spawn.
Patrón típico:
App tiene Vec<Toast> en el modelo + next_id: u64.
Para pushear: agregar Toast con expires_at = Instant::now() + dur