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-v6-c-login">
38 <div class="pf-v6-c-login__container">
39 if let Some(header) = &props.header {
40 <header class="pf-v6-c-login__header">{ header.clone() }</header>
41 }
42 { props.children.clone() }
43 if let Some(footer) = &props.footer {
44 <footer class="pf-v6-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-v6-c-login__main", props.class.clone());
63 html! { <main {class}>{ props.children.clone() }</main> }
64}
65
66#[derive(Clone, Debug, PartialEq, Properties)]
68pub struct LoginMainHeaderProperties {
69 pub title: VChild<Title>,
70 #[prop_or_default]
71 pub description: String,
72}
73
74#[function_component(LoginMainHeader)]
75pub fn login_main_header(props: &LoginMainHeaderProperties) -> Html {
76 html! {
77 <header class="pf-v6-c-login__main-header">
78 { props.title.clone() }
79 <p class="pf-v6-c-login__main-header-desc">{ &props.description }</p>
80 </header>
81 }
82}
83
84#[derive(Clone, Debug, PartialEq, Properties)]
86pub struct LoginMainBodyProperties {
87 #[prop_or_default]
88 pub children: Html,
89 #[prop_or_default]
90 pub class: Classes,
91}
92
93#[function_component(LoginMainBody)]
94pub fn login_main_body(props: &LoginMainBodyProperties) -> Html {
95 let class = classes!("pf-v6-c-login__main-body", props.class.clone());
96 html! { <div {class}>{ props.children.clone() }</div> }
97}