impulse_thaw/card/
card_header.rs

1use 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}