use dioxus::prelude::*;
#[derive(Props, Clone, PartialEq)]
pub struct IconProps {
#[props(default)]
pub name: Option<String>,
#[props(default)]
pub color: Option<String>,
#[props(default)]
pub size: Option<u32>,
#[props(default)]
pub class: Option<String>,
#[props(default)]
pub style: Option<String>,
}
#[component]
pub fn Icon(props: IconProps) -> Element {
let mut class_names = vec!["el-icon".to_string()];
if let Some(ref name) = props.name {
class_names.push(name.clone());
}
if let Some(ref c) = props.class { class_names.push(c.clone()); }
let mut style_parts = vec![props.style.clone().unwrap_or_default()];
if let Some(ref color) = props.color {
style_parts.push(format!("color: {};", color));
}
if let Some(size) = props.size {
style_parts.push(format!("font-size: {}px;", size));
}
let style_string = style_parts.join("");
rsx! {
i {
class: "{class_names.join(\" \")}",
style: "{style_string}",
}
}
}