fossdb-client 0.0.1

FossDB client
Documentation
use dioxus::prelude::*;

#[derive(Clone, PartialEq)]
pub enum ButtonVariant {
    Primary,
    Secondary,
    Danger,
    Success,
}

#[component]
pub fn Button(
    variant: ButtonVariant,
    onclick: EventHandler<MouseEvent>,
    children: Element,
    #[props(default = false)] disabled: bool,
) -> Element {
    let class_name = match variant {
        ButtonVariant::Primary => "px-6 py-2 bg-gradient-to-r from-blue-500 to-purple-600 text-white rounded-lg font-medium hover:from-blue-600 hover:to-purple-700 transition-all shadow-lg hover:shadow-xl",
        ButtonVariant::Secondary => "px-4 py-2 text-blue-400 hover:bg-gray-700 rounded-lg font-medium transition-all",
        ButtonVariant::Danger => "px-4 py-2 bg-red-500 hover:bg-red-600 text-white rounded-lg font-medium transition-all",
        ButtonVariant::Success => "px-4 py-2 bg-green-500 hover:bg-green-600 text-white rounded-lg font-medium transition-all",
    };

    rsx! {
        button {
            class: "{class_name}",
            disabled: disabled,
            onclick: move |evt| onclick.call(evt),
            {children}
        }
    }
}