canonrs-server 0.1.0

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

use leptos::prelude::*;
use canonrs_core::primitives::{
    AlertDialogPrimitive,
    AlertDialogPortalPrimitive,
    AlertDialogOverlayPrimitive,
    AlertDialogContentPrimitive,
    AlertDialogTitlePrimitive,
    AlertDialogDescriptionPrimitive,
};
use crate::ui::button::{Button, ButtonVariant};

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

#[component]
pub fn AlertDialogTrigger(
    children: Children,
    #[prop(default = ButtonVariant::Primary)] variant: ButtonVariant,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <Button
            variant=variant
            class=class
            attr:data-rs-dialog-trigger=""
            attr:aria-haspopup="dialog"
            attr:aria-expanded="false"
        >
            {children()}
        </Button>
    }
}

#[component]
pub fn AlertDialogPortal(
    children: ChildrenFn,
) -> impl IntoView {
    view! {
        <AlertDialogPortalPrimitive>
            {children()}
        </AlertDialogPortalPrimitive>
    }
}

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

#[component]
pub fn AlertDialogContent(
    children: Children,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <AlertDialogContentPrimitive class=class aria_labelledby="alert-title">
            {children()}
        </AlertDialogContentPrimitive>
    }
}

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

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

#[component]
pub fn AlertDialogClose(
    children: Children,
    #[prop(default = ButtonVariant::Outline)] variant: ButtonVariant,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <Button
            variant=variant
            class=class
            attr:data-rs-dialog-close=""
        >
            {children()}
        </Button>
    }
}