impulse_thaw/tag/
tag_group.rs1use super::TagSize;
2use leptos::{context::Provider, prelude::*};
3use thaw_utils::{class_list, mount_style, ArcOneCallback};
4
5#[component]
6pub fn TagGroup(
7 #[prop(optional, into)] class: MaybeProp<String>,
8 #[prop(optional, into)]
10 size: Signal<TagSize>,
11 #[prop(optional, into)]
13 on_dismiss: Option<ArcOneCallback<String>>,
14 #[prop(optional, into)]
16 dismissible: Signal<bool>,
17 children: Children,
18) -> impl IntoView {
19 mount_style("tag-group", include_str!("./tag-group.css"));
20
21 view! {
22 <div class=class_list!["thaw-tag-group", class]>
23 <Provider value=TagGroupInjection {
24 size,
25 on_dismiss,
26 dismissible,
27 }>{children()}</Provider>
28 </div>
29 }
30}
31
32#[derive(Clone)]
33pub(crate) struct TagGroupInjection {
34 pub size: Signal<TagSize>,
35 pub on_dismiss: Option<ArcOneCallback<String>>,
36 pub dismissible: Signal<bool>,
37}
38
39impl TagGroupInjection {
40 pub fn use_context() -> Option<Self> {
41 use_context()
42 }
43}