Skip to main content

patternfly_yew/components/
hint.rs

1//! Hint
2
3use yew::prelude::*;
4
5/// Properties for [`Hint`]
6#[derive(Clone, PartialEq, Properties)]
7pub struct HintProperties {
8    #[prop_or_default]
9    pub id: AttrValue,
10    #[prop_or_default]
11    pub actions: Option<Html>,
12    #[prop_or_default]
13    pub class: Classes,
14    #[prop_or_default]
15    pub children: Html,
16}
17
18/// Hint component
19///
20/// > A **hint** is in-app messaging that provides a one-step reminder, explanation, or call to action for a page or modal.
21///
22/// See: <https://www.patternfly.org/components/hint>
23///
24/// ## Properties
25///
26/// Defined by [`HintProperties`].
27#[function_component(Hint)]
28pub fn hint(props: &HintProperties) -> Html {
29    let mut class = props.class.clone();
30    class.push("pf-v6-c-hint");
31
32    html! (
33        <div id={props.id.clone()} {class}>
34            if let Some(actions) = &props.actions {
35                <div class="pf-v6-c-hint__actions">{ actions.clone() }</div>
36            }
37            { props.children.clone() }
38        </div>
39    )
40}
41
42/// Properties for [`HintTitle`]
43#[derive(Clone, PartialEq, Properties)]
44pub struct HintTitleProperties {
45    #[prop_or_default]
46    pub id: AttrValue,
47    #[prop_or_default]
48    pub class: Classes,
49    #[prop_or_default]
50    pub children: Html,
51}
52
53/// HintTitle component
54///
55/// ## Properties
56///
57/// Defined by [`HintTitleProperties`].
58#[function_component(HintTitle)]
59pub fn hint_title(props: &HintTitleProperties) -> Html {
60    let mut class = props.class.clone();
61    class.push("pf-v6-c-hint__title");
62
63    html! (<div id={props.id.clone()} {class}>{ props.children.clone() }</div>)
64}
65
66/// Properties for [`HintBody`]
67#[derive(Clone, PartialEq, Properties)]
68pub struct HintBodyProperties {
69    #[prop_or_default]
70    pub id: AttrValue,
71    #[prop_or_default]
72    pub class: Classes,
73    #[prop_or_default]
74    pub children: Html,
75}
76
77/// HintBody component
78///
79/// ## Properties
80///
81/// Defined by [`HintBodyProperties`].
82#[function_component(HintBody)]
83pub fn hint_body(props: &HintBodyProperties) -> Html {
84    let mut class = props.class.clone();
85    class.push("pf-v6-c-hint__body");
86
87    html! (<div id={props.id.clone()} {class}>{ props.children.clone() }</div>)
88}
89
90/// Properties for [`HintFooter`]
91#[derive(Clone, PartialEq, Properties)]
92pub struct HintFooterProperties {
93    #[prop_or_default]
94    pub id: AttrValue,
95    #[prop_or_default]
96    pub class: Classes,
97    #[prop_or_default]
98    pub children: Html,
99}
100
101/// HintFooter component
102///
103/// ## Properties
104///
105/// Defined by [`HintFooterProperties`].
106#[function_component(HintFooter)]
107pub fn hint_footer(props: &HintFooterProperties) -> Html {
108    let mut class = props.class.clone();
109    class.push("pf-v6-c-hint__footer");
110
111    html! (<div id={props.id.clone()} {class}>{ props.children.clone() }</div>)
112}