thaw/src/button/mod.rs

46 lines
1 KiB
Rust
Raw Normal View History

2023-03-31 13:02:44 +08:00
mod theme;
use crate::{theme::Theme, utils::mount_style::mount_style};
2023-03-28 12:37:24 +08:00
use leptos::*;
2023-03-30 17:12:58 +08:00
use stylers::style_sheet_str;
2023-03-31 13:02:44 +08:00
pub use theme::ButtonTheme;
#[derive(Default, PartialEq, Clone)]
pub enum ButtonType {
#[default]
PRIMARY,
SOLID,
TEXT
}
#[derive(Default)]
pub enum ButtonColor {
#[default]
PRIMARY,
WARNING,
Error,
}
2023-03-28 12:37:24 +08:00
#[component]
2023-03-31 13:02:44 +08:00
pub fn Button(
cx: Scope,
#[prop(optional, into)] type_: MaybeSignal<ButtonType>,
#[prop(optional, into)] color: MaybeSignal<ButtonColor>,
children: Children,
) -> impl IntoView {
// let theme = use_context::<ReadSignal<Theme>>(cx);
// let css_vars = create_memo(cx, |_| format!("--font-color"));
2023-03-30 17:12:58 +08:00
let class_name = mount_style("button", || style_sheet_str!("./src/button/button.css"));
let class = move || {
2023-03-31 13:02:44 +08:00
if type_.get() == ButtonType::TEXT {
2023-03-30 17:12:58 +08:00
"melt-button melt-button--text"
} else {
"melt-button"
}
2023-03-28 12:37:24 +08:00
};
view! {cx, class=class_name,
<button class=class>
{children(cx)}
</button>
}
}