impulse_thaw/card/
card_header.rs1use leptos::prelude::*;
2use thaw_components::OptionComp;
3use thaw_utils::{class_list, mount_style};
4
5#[component]
6pub fn CardHeader(
7 #[prop(optional, into)] class: MaybeProp<String>,
8 #[prop(optional)] card_header_description: Option<CardHeaderDescription>,
9 #[prop(optional)] card_header_action: Option<CardHeaderAction>,
10 children: Children,
11) -> impl IntoView {
12 mount_style("card-header", include_str!("./card-header.css"));
13 let some_description = card_header_description.is_some();
14 view! {
15 <div class=class_list![
16 "thaw-card-header",
17 ("thaw-card-header--description", some_description),
18 class
19 ]>
20 <div class="thaw-card-header__header">{children()}</div>
21 <OptionComp value=card_header_description let:description>
22 <div class="thaw-card-header__description">{(description.children)()}</div>
23 </OptionComp>
24 <OptionComp value=card_header_action let:action>
25 <div class="thaw-card-header__action">{(action.children)()}</div>
26 </OptionComp>
27 </div>
28 }
29}
30
31#[slot]
32pub struct CardHeaderDescription {
33 children: Children,
34}
35
36#[slot]
37pub struct CardHeaderAction {
38 children: Children,
39}