yggdrasil/components/skeletons/
delayed_skeleton.rs1use crate::utils::time::sleep_ms;
7use dioxus::prelude::*;
8
9const SKELETON_DELAY_MS: u32 = 200;
13
14#[component]
22pub fn DelayedSkeleton(children: Element) -> Element {
23 let mut visible = use_signal(|| false);
24
25 use_effect(move || {
26 spawn(async move {
27 sleep_ms(SKELETON_DELAY_MS).await;
28 visible.set(true);
29 });
30 });
31
32 if visible() {
33 rsx! {
34 div { class: "animate-pulse", {children} }
35 }
36 } else {
37 rsx! {}
38 }
39}