use leptos::prelude::*;
use canonrs_core::primitives::{BreadcrumbPrimitive, BreadcrumbItemPrimitive, BreadcrumbLinkPrimitive, BreadcrumbSeparatorPrimitive};
use canonrs_core::meta::ActivityState;
use super::navigation_provider::use_navigation_state;
#[component]
pub fn BreadcrumbAuto(
#[prop(default = String::new())] class: String,
) -> impl IntoView {
let nav_state = use_navigation_state();
let breadcrumb_items = move || {
let state = nav_state.get();
if let Some(ref current_id) = state.current_heading_id {
state.heading_hierarchy.get_breadcrumb(current_id)
} else {
Vec::new()
}
};
view! {
<BreadcrumbPrimitive class={class}>
{move || {
let items = breadcrumb_items();
let len = items.len();
items.into_iter().enumerate().map(|(idx, (id, text))| {
let is_last = idx == len - 1;
let state = if is_last { ActivityState::Active } else { ActivityState::Inactive };
view! {
<>
<BreadcrumbItemPrimitive>
<BreadcrumbLinkPrimitive
href={format!("#{}", id)}
state=state
>
{text}
</BreadcrumbLinkPrimitive>
</BreadcrumbItemPrimitive>
{(!is_last).then(|| view! {
<BreadcrumbSeparatorPrimitive>"/"</BreadcrumbSeparatorPrimitive>
})}
</>
}
}).collect_view()
}}
</BreadcrumbPrimitive>
}
}