canonrs-server 0.1.0

CanonRS server-side rendering support
#![allow(unreachable_pub, dead_code)]

use leptos::prelude::*;
use canonrs_core::primitives::{
    SidebarPrimitive, SidebarVariant, SidebarHeaderPrimitive, SidebarContentPrimitive,
    SidebarFooterPrimitive, SidebarMenuPrimitive, SidebarMenuItemPrimitive,
    SidebarMenuGroupPrimitive, SidebarSeparatorPrimitive, SidebarGroupLabelPrimitive,
    SidebarGroupPrimitive, SidebarGroupTriggerPrimitive, SidebarGroupContentPrimitive,
    SidebarLabelPrimitive, SidebarIconPrimitive, SidebarUserPrimitive,
};
use canonrs_core::meta::{VisibilityState, ActivityState, DisabledState};

#[component]
pub fn Sidebar(
    children: Children,
    #[prop(default = VisibilityState::Open)] state: VisibilityState,
    #[prop(default = SidebarVariant::Default)] variant: SidebarVariant,
    #[prop(default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <SidebarPrimitive state=state variant=variant class=class>
            {children()}
        </SidebarPrimitive>
    }
}

#[component]
pub fn SidebarHeader(
    children: Children,
    #[prop(default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <SidebarHeaderPrimitive class=class>
            {children()}
        </SidebarHeaderPrimitive>
    }
}

#[component]
pub fn SidebarContent(
    children: Children,
    #[prop(default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <SidebarContentPrimitive class=class>
            {children()}
        </SidebarContentPrimitive>
    }
}

#[component]
pub fn SidebarFooter(
    children: Children,
    #[prop(default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <SidebarFooterPrimitive class=class>
            {children()}
        </SidebarFooterPrimitive>
    }
}

#[component]
pub fn SidebarMenu(
    children: Children,
    #[prop(default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <SidebarMenuPrimitive class=class>
            {children()}
        </SidebarMenuPrimitive>
    }
}

#[component]
pub fn SidebarMenuItem(
    children: Children,
    #[prop(default = String::new())] class: String,
    #[prop(default = String::new())] href: String,
    #[prop(default = ActivityState::Inactive)] active: ActivityState,
    #[prop(default = DisabledState::Enabled)] disabled: DisabledState,
) -> impl IntoView {
    view! {
        <SidebarMenuItemPrimitive class=class href=href active=active disabled=disabled>
            {children()}
        </SidebarMenuItemPrimitive>
    }
}

#[component]
pub fn SidebarMenuGroup(
    children: Children,
    #[prop(default = String::new())] class: String,
    #[prop(into, optional)] label: Option<String>,
) -> impl IntoView {
    view! {
        <SidebarMenuGroupPrimitive class=class label=label.unwrap_or_default()>
            {children()}
        </SidebarMenuGroupPrimitive>
    }
}

#[component]
pub fn SidebarSeparator(
    #[prop(default = String::new())] class: String,
) -> impl IntoView {
    view! { <SidebarSeparatorPrimitive class=class /> }
}

#[component]
pub fn SidebarGroupLabel(
    children: Children,
    #[prop(default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <SidebarGroupLabelPrimitive class=class>
            {children()}
        </SidebarGroupLabelPrimitive>
    }
}

#[component]
pub fn SidebarGroup(
    children: Children,
    #[prop(into, default = String::new())] class: String,
    #[prop(default = false)] root: bool,
    #[prop(default = false)] hidden: bool,
    #[prop(default = VisibilityState::Open)] state: VisibilityState,
) -> impl IntoView {
    view! {
        <SidebarGroupPrimitive class=class root=root state=state attr:hidden=hidden.then(|| "")>
            {children()}
        </SidebarGroupPrimitive>
    }
}

#[component]
pub fn SidebarGroupTrigger(
    children: Children,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <SidebarGroupTriggerPrimitive class=class>
            {children()}
        </SidebarGroupTriggerPrimitive>
    }
}

#[component]
pub fn SidebarGroupContent(
    children: Children,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <SidebarGroupContentPrimitive class=class>
            {children()}
        </SidebarGroupContentPrimitive>
    }
}

#[component]
pub fn SidebarLabel(
    children: Children,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! { <SidebarLabelPrimitive class=class>{children()}</SidebarLabelPrimitive> }
}

#[component]
pub fn SidebarIcon(
    children: Children,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! { <SidebarIconPrimitive class=class>{children()}</SidebarIconPrimitive> }
}

#[component]
pub fn SidebarUser(
    children: Children,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! { <SidebarUserPrimitive class=class>{children()}</SidebarUserPrimitive> }
}