use crate::{
core::{assets, attrs::component_attributes},
prelude::*,
theme::use_stylesheets,
};
const BEM: Bem = Bem::new("fc-masthead");
#[component]
pub fn Masthead(
brand: Element,
#[props(default)]
href: Option<String>,
#[props(default)]
mark: Option<Element>,
nav_label: AccessibleName,
#[props(default)]
nav: Option<Element>,
#[props(default)] actions: Option<Element>,
#[props(default)] class: Option<String>,
#[props(extends = GlobalAttributes)] attributes: Vec<Attribute>,
) -> Element {
let attributes = component_attributes(
attributes,
ClassList::new(BEM.block()).extend(class.as_deref()),
&[],
);
rsx! {
if use_stylesheets() { document::Stylesheet { href: assets::COMPONENTS_MASTHEAD_CSS } }
header { ..attributes,
a { class: BEM.element("brand"), href,
if let Some(mark) = mark { span { class: BEM.element("mark"), aria_hidden: "true", {mark} } }
{brand}
}
if let Some(nav) = nav {
nav { aria_label: nav_label.to_string(), ul { class: BEM.element("nav"), {nav} } }
}
if let Some(actions) = actions { div { class: BEM.element("actions"), {actions} } }
}
}
}
#[component]
pub fn MastheadLink(
#[props(default)] href: Option<String>,
#[props(default)] onclick: Option<EventHandler<MouseEvent>>,
#[props(default)] current: bool,
#[props(default)] availability: Availability,
children: Element,
) -> Element {
rsx! {
li { {super::nav_target(BEM.element("link"), href, onclick, current, &availability, Vec::new(), children)} }
}
}