use dioxus::prelude::*;
mod props;
pub use props::{ButtonProps, ButtonSize, ButtonVariants};
mod style;
use style::{get_size_class, get_variant_class, BASE_CLASS};
#[component]
pub fn Button(props: ButtonProps) -> Element {
let ButtonProps {
class,
variant,
size,
children,
onclick,
} = props;
let variant_class = get_variant_class(&variant);
let size_class = get_size_class(&size);
let combined_class = format!("{} {} {} {}", BASE_CLASS, variant_class, size_class, class);
rsx! {
button {
class: "{combined_class}",
onclick: move |event| {
if let Some(handler) = onclick {
handler.call(event);
}
},
{children}
}
}
}