canonrs-server 0.1.0

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

use leptos::prelude::*;
use canonrs_core::primitives::{
    TooltipProviderPrimitive, TooltipPrimitive,
    TooltipTriggerPrimitive, TooltipContentPrimitive, TooltipSide,
};
use canonrs_core::meta::VisibilityState;

#[component]
pub fn TooltipProvider(
    children: Children,
    #[prop(default = 400)] delay_open: u32,
    #[prop(default = 100)] delay_close: u32,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <TooltipProviderPrimitive delay_open=delay_open delay_close=delay_close class=class>
            {children()}
        </TooltipProviderPrimitive>
    }
}

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

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

#[component]
pub fn TooltipContent(
    children: Children,
    #[prop(default = VisibilityState::Closed)] state: VisibilityState,
    #[prop(default = TooltipSide::Top)] side: TooltipSide,
    #[prop(into, optional)] tooltip_id: Option<String>,
    #[prop(into, default = String::new())] class: String,
) -> impl IntoView {
    view! {
        <TooltipContentPrimitive state=state side=side tooltip_id=tooltip_id.unwrap_or_default() class=class>
            {children()}
        </TooltipContentPrimitive>
    }
}