use dioxus::prelude::*;
#[derive(Clone, PartialEq, Props)]
pub struct BreadcrumbProps {
#[props(default)]
pub class: String,
pub children: Element,
}
#[component]
pub fn Breadcrumb(props: BreadcrumbProps) -> Element {
let full_class = if props.class.is_empty() {
"breadcrumb".to_string()
} else {
format!("breadcrumb {}", props.class)
};
rsx! {
nav { "aria-label": "breadcrumb",
ol { class: "{full_class}", {props.children} }
}
}
}
#[derive(Clone, PartialEq, Props)]
pub struct BreadcrumbItemProps {
#[props(default)]
pub href: String,
#[props(default)]
pub active: bool,
#[props(default)]
pub class: String,
pub children: Element,
}
#[component]
pub fn BreadcrumbItem(props: BreadcrumbItemProps) -> Element {
let mut classes = vec!["breadcrumb-item".to_string()];
if props.active {
classes.push("active".to_string());
}
if !props.class.is_empty() {
classes.push(props.class.clone());
}
let full_class = classes.join(" ");
if props.active {
rsx! {
li {
class: "{full_class}",
"aria-current": "page",
{props.children}
}
}
} else {
rsx! {
li { class: "{full_class}",
a { href: "{props.href}", {props.children} }
}
}
}
}