patternfly_yew/components/login_page/
mod.rs1mod footer;
3
4pub use footer::*;
5
6use crate::prelude::Title;
7use yew::{prelude::*, virtual_dom::VChild};
8
9#[derive(Clone, Debug, PartialEq, Properties)]
11pub struct LoginProperties {
12 #[prop_or_default]
13 pub header: Option<Html>,
14 #[prop_or_default]
15 pub children: Html,
16 #[prop_or_default]
17 pub footer: Option<Html>,
18}
19
20#[function_component(Login)]
35pub fn login(props: &LoginProperties) -> Html {
36 html! {
37 <div class="pf-v5-c-login">
38 <div class="pf-v5-c-login__container">
39 if let Some(header) = &props.header {
40 <header class="pf-v5-c-login__header">{ header.clone() }</header>
41 }
42 { props.children.clone() }
43 if let Some(footer) = &props.footer {
44 <footer class="pf-v5-c-login__footer">{ footer.clone() }</footer>
45 }
46 </div>
47 </div>
48 }
49}
50
51#[derive(Clone, Debug, PartialEq, Properties)]
53pub struct LoginMainProperties {
54 #[prop_or_default]
55 pub children: Html,
56 #[prop_or_default]
57 pub class: Classes,
58}
59
60#[function_component(LoginMain)]
61pub fn login_main(props: &LoginMainProperties) -> Html {
62 let class = classes!("pf-v5-c-login__main", props.class.clone());
63 html! {
64 <main {class}>
65 { props.children.clone() }
66 </main>
67 }
68}
69
70#[derive(Clone, Debug, PartialEq, Properties)]
72pub struct LoginMainHeaderProperties {
73 pub title: VChild<Title>,
74 #[prop_or_default]
75 pub description: String,
76}
77
78#[function_component(LoginMainHeader)]
79pub fn login_main_header(props: &LoginMainHeaderProperties) -> Html {
80 html! {
81 <header class="pf-v5-c-login__main-header">
82 { props.title.clone() }
83 <p class="pf-v5-c-login__main-header-desc">
84 {&props.description}
85 </p>
86 </header>
87 }
88}
89
90#[derive(Clone, Debug, PartialEq, Properties)]
92pub struct LoginMainBodyProperties {
93 #[prop_or_default]
94 pub children: Html,
95 #[prop_or_default]
96 pub class: Classes,
97}
98
99#[function_component(LoginMainBody)]
100pub fn login_main_body(props: &LoginMainBodyProperties) -> Html {
101 let class = classes!("pf-v5-c-login__main-body", props.class.clone());
102 html! {
103 <div {class}>
104 { props.children.clone() }
105 </div>
106 }
107}