use leptos::prelude::*;
use canonrs_core::infra::uid::generate;
#[component]
pub fn PageHeader(
#[prop(optional)] breadcrumb: Option<ChildrenFn>,
#[prop(optional)] title: Option<ChildrenFn>,
#[prop(optional)] subtitle: Option<ChildrenFn>,
#[prop(optional)] actions: Option<ChildrenFn>,
#[prop(into, default = String::new())] class: String,
) -> impl IntoView {
let uid = generate("bl");
let breadcrumb = StoredValue::new(breadcrumb);
let title = StoredValue::new(title);
let subtitle = StoredValue::new(subtitle);
let actions = StoredValue::new(actions);
view! {
<header data-rs-page-header="" data-rs-uid=uid class=class>
{move || breadcrumb.get_value().map(|b| view! { <nav data-rs-region="breadcrumb" aria-label="Breadcrumb">{b()}</nav> })}
{move || title.get_value().map(|t| view! { <div data-rs-region="title">{t()}</div> })}
{move || subtitle.get_value().map(|s| view! { <div data-rs-region="subtitle">{s()}</div> })}
{move || actions.get_value().map(|a| view! { <div data-rs-region="actions">{a()}</div> })}
</header>
}
}