patternfly_dioxus/
alert.rs

1use dioxus::prelude::*;
2
3#[derive(Clone, Copy, Debug, Eq, PartialEq)]
4pub enum Variation {
5    Default,
6    Info,
7    Success,
8    Warning,
9    Danger,
10}
11
12#[allow(non_snake_case)]
13#[inline_props]
14pub fn PfAlert<'a>(
15    cx: Scope<'a>,
16    variation: Option<Variation>,
17    title: Option<&'a str>,
18    children: Element<'a>,
19) -> Element {
20    let title = title.unwrap_or("");
21    let variation = variation.unwrap_or(Variation::Default);
22    let css = match variation {
23        Variation::Default => "pf-c-alert",
24        Variation::Info => "pf-c-alert pf-m-info",
25        Variation::Success => "pf-c-alert pf-m-success",
26        Variation::Warning => "pf-c-alert pf-m-warning",
27        Variation::Danger => "pf-c-alert pf-m-danger",
28    };
29
30    let iconcss = match variation {
31        Variation::Default => "fas fa-exclamation-circle",
32        Variation::Info => "fas fa-info-circle",
33        Variation::Success => "fas fa-check-circle",
34        Variation::Warning => "fas fa-exclamation-triangle",
35        Variation::Danger => "fas fa-exclamation-circle",
36    };
37
38    cx.render(rsx! {
39        div {
40            class: "{css}",
41            div { class: "pf-c-alert__icon",
42                i { class: "{iconcss}",}
43            },
44
45            p { class: "pf-c-alert__title",
46                span { class: "pf-screen-reader", "Default alert:" },
47                "{title}"
48            }
49                
50            rsx!{ p { class: "pf-c-alert__description", children }}
51    
52        },
53
54    })
55}