canonrs-server 0.1.0

CanonRS server-side rendering support
//! Input Island — Canon Rule #340
//! Passthrough only. Zero logic, zero transformation.

use leptos::prelude::*;
use super::input_ui::Input as InputUi;
pub use canonrs_core::primitives::{
    InputVariant,
    InputSize
};
pub use canonrs_core::meta::DisabledState;

#[component]
pub fn Input(
    #[prop(into, default = String::new())] class:       String,
    #[prop(into, default = "text".to_string())] input_type: String,
    #[prop(into, default = String::new())] name:        String,
    #[prop(into, default = String::new())] value: String,
    #[prop(into, default = String::new())] placeholder: String,
    #[prop(into, default = String::new())] aria_label:  String,
    #[prop(default = InputVariant::Default)] variant:   InputVariant,
    #[prop(default = InputSize::Md)] size:              InputSize,
    #[prop(default = DisabledState::Enabled)] disabled: DisabledState,
    #[prop(optional)] node_ref: Option<NodeRef<leptos::html::Input>>,
) -> impl IntoView {
    view! {
        <InputUi
            class=class
            input_type=input_type
            name=name
            value=value.clone()
            rs_value=value
            placeholder=placeholder
            aria_label=aria_label
            variant=variant
            size=size
            disabled=disabled
            node_ref=node_ref.unwrap_or_default()
        />
    }
}