canonrs-server 0.1.0

CanonRS server-side rendering support
use leptos::prelude::*;
use super::button_boundary::{Button, ButtonVariant, ButtonSize};
use crate::ui::button_group::button_group_boundary::ButtonGroup;
use canonrs_core::ToggleState;
use canonrs_core::primitives::layout::stack::{StackPrimitive as Stack, StackDirection, StackGap};

#[component]
pub fn ButtonPreview() -> impl IntoView {
    view! {
        <Stack direction=StackDirection::Vertical gap=StackGap::Lg>
            <Button variant=ButtonVariant::Primary size=ButtonSize::Lg>"Confirm Action"</Button>
            <p data-rs-showcase-preview-anchor="">"Cannot drift. Cannot break. Cannot diverge."</p>
            <Stack direction=StackDirection::Vertical gap=StackGap::Sm>
                <span data-rs-showcase-preview-label="">"Variants"</span>
                <Stack direction=StackDirection::Horizontal gap=StackGap::Sm>
                    <Button variant=ButtonVariant::Primary>"Primary"</Button>
                    <Button variant=ButtonVariant::Secondary>"Secondary"</Button>
                    <Button variant=ButtonVariant::Outline>"Outline"</Button>
                    <Button variant=ButtonVariant::Ghost>"Ghost"</Button>
                    <Button variant=ButtonVariant::Destructive>"Destructive"</Button>
                    <Button variant=ButtonVariant::Link>"Link"</Button>
                    <Button variant=ButtonVariant::Default>"Default"</Button>
                </Stack>
            </Stack>
            <Stack direction=StackDirection::Vertical gap=StackGap::Sm>
                <span data-rs-showcase-preview-label="">"Sizes"</span>
                <Stack direction=StackDirection::Horizontal gap=StackGap::Sm>
                    <Button variant=ButtonVariant::Primary size=ButtonSize::Xs>"Xs"</Button>
                    <Button variant=ButtonVariant::Primary size=ButtonSize::Sm>"Sm"</Button>
                    <Button variant=ButtonVariant::Primary size=ButtonSize::Md>"Md"</Button>
                    <Button variant=ButtonVariant::Primary size=ButtonSize::Lg>"Lg"</Button>
                    <Button variant=ButtonVariant::Primary size=ButtonSize::Xl>"Xl"</Button>
                </Stack>
            </Stack>
            <Stack direction=StackDirection::Vertical gap=StackGap::Sm>
                <span data-rs-showcase-preview-label="">"States"</span>
                <Stack direction=StackDirection::Horizontal gap=StackGap::Sm>
                    <Button variant=ButtonVariant::Primary>"Default"</Button>
                    <Button variant=ButtonVariant::Primary disabled=true>"Disabled"</Button>
                    <Button variant=ButtonVariant::Ghost attr:data-rs-state="hover">"Ghost Hover"</Button>
                </Stack>
            </Stack>
            <Stack direction=StackDirection::Vertical gap=StackGap::Sm>
                <span data-rs-showcase-preview-label="">"Validation"</span>
                <Stack direction=StackDirection::Horizontal gap=StackGap::Sm>
                    <Button variant=ButtonVariant::Primary validation="error">"Error"</Button>
                    <Button variant=ButtonVariant::Primary validation="warning">"Warning"</Button>
                    <Button variant=ButtonVariant::Primary validation="success">"Success"</Button>
                </Stack>
            </Stack>
            <Stack direction=StackDirection::Vertical gap=StackGap::Sm>
                <span data-rs-showcase-preview-label="">"Button Group — detached"</span>
                <ButtonGroup aria_label="Group detached">
                    <Button variant=ButtonVariant::Primary>"One"</Button>
                    <Button variant=ButtonVariant::Primary>"Two"</Button>
                    <Button variant=ButtonVariant::Primary>"Three"</Button>
                </ButtonGroup>
            </Stack>
            <Stack direction=StackDirection::Vertical gap=StackGap::Sm>
                <span data-rs-showcase-preview-label="">"Button Group — attached"</span>
                <ButtonGroup attached=ToggleState::On aria_label="Group attached">
                    <Button variant=ButtonVariant::Primary>"One"</Button>
                    <Button variant=ButtonVariant::Primary>"Two"</Button>
                    <Button variant=ButtonVariant::Primary>"Three"</Button>
                </ButtonGroup>
            </Stack>
        </Stack>
    }
}