nightshade_api/web/base/
button.rs1use leptos::prelude::*;
2
3#[component]
6pub fn Button(
7 #[prop(into, optional)] class: String,
8 #[prop(optional)] on_click: Option<Callback<web_sys::MouseEvent>>,
9 children: Children,
10) -> impl IntoView {
11 let handle = move |event: web_sys::MouseEvent| {
12 if let Some(callback) = on_click {
13 callback.run(event);
14 }
15 };
16 view! {
17 <button class=format!("nightshade-button {class}") on:click=handle>
18 {children()}
19 </button>
20 }
21}
22
23#[component]
26pub fn IconButton(
27 #[prop(into, optional)] class: String,
28 #[prop(optional)] on_click: Option<Callback<web_sys::MouseEvent>>,
29 children: Children,
30) -> impl IntoView {
31 let handle = move |event: web_sys::MouseEvent| {
32 if let Some(callback) = on_click {
33 callback.run(event);
34 }
35 };
36 view! {
37 <button class=format!("nightshade-icon-button {class}") on:click=handle>
38 {children()}
39 </button>
40 }
41}