Skip to main content

dioxus_element_plug/components/
skeleton_item.rs

1use dioxus::prelude::*;
2
3/// SkeletonItem props
4#[derive(Props, Clone, PartialEq)]
5pub struct SkeletonItemProps {
6    /// Item variant (text, circle, rect, etc.)
7    #[props(default = "text".to_string())]
8    pub variant: String,
9
10    /// Additional CSS classes
11    #[props(default)]
12    pub class: Option<String>,
13
14    /// Inline styles
15    #[props(default)]
16    pub style: Option<String>,
17}
18
19/// SkeletonItem component for individual skeleton placeholder
20///
21/// ## Example
22///
23/// ```rust,ignore
24/// rsx! {
25///     SkeletonItem { variant: "circle".to_string() }
26/// }
27/// ```
28#[component]
29pub fn SkeletonItem(props: SkeletonItemProps) -> Element {
30    let mut class_names = vec!["el-skeleton__item".to_string()];
31    class_names.push(format!("el-skeleton__{}", props.variant));
32
33    if let Some(ref custom_class) = props.class {
34        class_names.push(custom_class.clone());
35    }
36
37    let class_string = class_names.join(" ");
38    let style_string = props.style.clone().unwrap_or_default();
39
40    rsx! {
41        div {
42            class: "{class_string}",
43            style: "{style_string}",
44        }
45    }
46}