use yew::prelude::*;
#[derive(Properties, Debug, PartialEq)]
pub struct CardHeaderProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub class: Classes,
}
#[function_component]
pub fn CardHeader(props: &CardHeaderProps) -> Html {
let mut classes = props.class.clone();
classes.push("card-header");
html! {
<div class={classes}>
{props.children.clone()}
</div>
}
}
#[derive(Properties, Debug, PartialEq)]
pub struct CardBodyProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub class: Classes,
}
#[function_component]
pub fn CardBody(props: &CardBodyProps) -> Html {
let mut classes = props.class.clone();
classes.push("card-body");
html! {
<div class={classes}>
{props.children.clone()}
</div>
}
}
#[derive(Properties, Debug, PartialEq)]
pub struct CardFooterProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub class: Classes,
}
#[function_component]
pub fn CardFooter(props: &CardFooterProps) -> Html {
let mut classes = props.class.clone();
classes.push("card-footer");
html! {
<div class={classes}>
{props.children.clone()}
</div>
}
}
#[derive(Properties, Debug, PartialEq)]
pub struct CardTitleProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub class: Classes,
}
#[function_component]
pub fn CardTitle(props: &CardTitleProps) -> Html {
let mut classes = props.class.clone();
classes.extend(["card-title", "h5"]);
html! {
<div class={classes}>
{props.children.clone()}
</div>
}
}
#[derive(Properties, Debug, PartialEq)]
pub struct CardSubtitleProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub class: Classes,
}
#[function_component]
pub fn CardSubtitle(props: &CardSubtitleProps) -> Html {
let mut classes = props.class.clone();
classes.extend(["mb-2", "text-muted", "card-subtitle", "h6"]);
html!{
<div class={classes}>
{props.children.clone()}
</div>
}
}
#[derive(Properties, Debug, PartialEq)]
pub struct CardTextProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub class: Classes,
}
#[function_component]
pub fn CardText(props: &CardTextProps) -> Html {
let mut classes = props.class.clone();
classes.push("card-text");
html!{
<p class={classes}>
{props.children.clone()}
</p>
}
}
#[derive(Properties, Debug, PartialEq)]
pub struct CardLinkProps {
#[prop_or_default]
pub children: Children,
#[prop_or_default]
pub class: Classes,
pub url: AttrValue,
}
#[function_component]
pub fn CardLink(props: &CardLinkProps) -> Html {
let mut classes = props.class.clone();
classes.push("card-link");
html!{
<a class={classes} href={props.url.clone()}>
{props.children.clone()}
</a>
}
}