mod footer;
pub use footer::*;
use crate::prelude::Title;
use yew::{prelude::*, virtual_dom::VChild};
#[derive(Clone, Debug, PartialEq, Properties)]
pub struct LoginProperties {
#[prop_or_default]
pub header: Option<Html>,
#[prop_or_default]
pub children: Html,
#[prop_or_default]
pub footer: Option<Html>,
}
#[function_component(Login)]
pub fn login(props: &LoginProperties) -> Html {
html! {
<div class="pf-v5-c-login">
<div class="pf-v5-c-login__container">
if let Some(header) = &props.header {
<header class="pf-v5-c-login__header">{ header.clone() }</header>
}
{ props.children.clone() }
if let Some(footer) = &props.footer {
<footer class="pf-v5-c-login__footer">{ footer.clone() }</footer>
}
</div>
</div>
}
}
#[derive(Clone, Debug, PartialEq, Properties)]
pub struct LoginMainProperties {
#[prop_or_default]
pub children: Html,
#[prop_or_default]
pub class: Classes,
}
#[function_component(LoginMain)]
pub fn login_main(props: &LoginMainProperties) -> Html {
let class = classes!("pf-v5-c-login__main", props.class.clone());
html! {
<main {class}>
{ props.children.clone() }
</main>
}
}
#[derive(Clone, Debug, PartialEq, Properties)]
pub struct LoginMainHeaderProperties {
pub title: VChild<Title>,
#[prop_or_default]
pub description: String,
}
#[function_component(LoginMainHeader)]
pub fn login_main_header(props: &LoginMainHeaderProperties) -> Html {
html! {
<header class="pf-v5-c-login__main-header">
{ props.title.clone() }
<p class="pf-v5-c-login__main-header-desc">
{&props.description}
</p>
</header>
}
}
#[derive(Clone, Debug, PartialEq, Properties)]
pub struct LoginMainBodyProperties {
#[prop_or_default]
pub children: Html,
#[prop_or_default]
pub class: Classes,
}
#[function_component(LoginMainBody)]
pub fn login_main_body(props: &LoginMainBodyProperties) -> Html {
let class = classes!("pf-v5-c-login__main-body", props.class.clone());
html! {
<div {class}>
{ props.children.clone() }
</div>
}
}