use leptos::prelude::*;
#[derive(Clone, Copy, PartialEq, Default, Debug)]
pub enum ToolbarOrientation {
#[default]
Horizontal,
Vertical,
}
impl ToolbarOrientation {
pub fn as_str(&self) -> &'static str {
match self {
Self::Horizontal => "horizontal",
Self::Vertical => "vertical",
}
}
}
#[component]
pub fn ToolbarPrimitive(
children: Children,
#[prop(into, default = String::new())] uid: String,
#[prop(into, default = String::new())] class: String,
#[prop(into, optional)] aria_label: Option<String>,
#[prop(default = ToolbarOrientation::Horizontal)] orientation: ToolbarOrientation,
) -> impl IntoView {
let uid = if uid.is_empty() { crate::infra::uid::generate("tb2") } else { uid };
view! {
<div
data-rs-toolbar=""
data-rs-uid=uid
data-rs-interaction="nav"
data-rs-variant=orientation.as_str()
role="toolbar"
aria-label=aria_label
aria-orientation=orientation.as_str()
class=class
>
{children()}
</div>
}
}
#[component]
pub fn ToolbarSeparatorPrimitive(
#[prop(into, default = String::new())] class: String,
) -> impl IntoView {
view! {
<div
data-rs-toolbar-separator=""
role="separator"
aria-orientation="vertical"
class=class
/>
}
}