canonrs-server 0.1.0

CanonRS server-side rendering support
// AUTO-GENERATED by build.rs — do not edit manually.
// Source: *_boundary.rs + builder.yaml
use crate::catalog_types::{ComponentApi, PropDef, PropType};

// imports: use canonrs::primitives::{ButtonVariant, ButtonSize, ButtonType, ButtonStateHint}; 

pub const BUTTON_API: ComponentApi = ComponentApi {
    id: "button",
    description: "Action button with variant and size",
    props: &[
        PropDef { name: "children", kind: PropType::Children, required: true, default: None, description: "Child elements" },
        PropDef { name: "variant", kind: PropType::Enum(&["default", "destructive", "outline", "secondary", "ghost", "link", "primary"]), required: false, default: Some("default"), description: "Visual variant of the component" },
        PropDef { name: "size", kind: PropType::Enum(&["xs", "sm", "md", "lg", "xl", "icon"]), required: false, default: Some("md"), description: "Size variant of the component" },
        PropDef { name: "disabled", kind: PropType::Bool, required: false, default: Some("false"), description: "Whether the component is disabled" },
        PropDef { name: "loading", kind: PropType::Bool, required: false, default: Some("false"), description: "Prop value" },
        PropDef { name: "class", kind: PropType::String, required: false, default: Some(""), description: "Additional CSS class names" },
        PropDef { name: "aria_label", kind: PropType::String, required: false, default: None, description: "Accessible label for screen readers" },
        PropDef { name: "validation", kind: PropType::String, required: false, default: None, description: "Prop value" },
        PropDef { name: "state_hint", kind: PropType::Enum(&["first", "last", "hover", "focus"]), required: false, default: None, description: "Prop value" },
        PropDef { name: "button_type", kind: PropType::Enum(&["button", "submit", "reset"]), required: false, default: Some("button"), description: "Prop value" },
    ],
};

pub const LINKBUTTON_API: ComponentApi = ComponentApi {
    id: "link-button",
    description: "Action button with variant and size",
    props: &[
        PropDef { name: "children", kind: PropType::Children, required: true, default: None, description: "Child elements" },
        PropDef { name: "variant", kind: PropType::Enum(&["default", "destructive", "outline", "secondary", "ghost", "link", "primary"]), required: false, default: Some("default"), description: "Visual variant of the component" },
        PropDef { name: "size", kind: PropType::Enum(&["xs", "sm", "md", "lg", "xl", "icon"]), required: false, default: Some("md"), description: "Size variant of the component" },
        PropDef { name: "disabled", kind: PropType::Bool, required: false, default: Some("false"), description: "Whether the component is disabled" },
        PropDef { name: "class", kind: PropType::String, required: false, default: Some(""), description: "Additional CSS class names" },
        PropDef { name: "aria_label", kind: PropType::String, required: false, default: None, description: "Accessible label for screen readers" },
        PropDef { name: "href", kind: PropType::String, required: false, default: Some(""), description: "Navigation target URL" },
        PropDef { name: "target", kind: PropType::String, required: false, default: Some(""), description: "Target element selector for copy" },
    ],
};