use crate::prelude::Size;
use yew::prelude::*;
#[derive(Clone, Default, Debug, PartialEq)]
pub enum AvatarBorder {
#[default]
None,
Dark,
Light,
}
impl From<AvatarBorder> for Classes {
fn from(value: AvatarBorder) -> Self {
classes!(match value {
AvatarBorder::None => "",
AvatarBorder::Dark => "pf-m-dark",
AvatarBorder::Light => "pf-m-light",
})
}
}
#[derive(Clone, Default, Debug, PartialEq)]
pub enum AvatarSize {
#[default]
None,
Small,
Medium,
Large,
XLarge,
}
impl From<AvatarSize> for Classes {
fn from(value: AvatarSize) -> Self {
classes!(match value {
AvatarSize::None => Size::None,
AvatarSize::Small => Size::Small,
AvatarSize::Medium => Size::Medium,
AvatarSize::Large => Size::Large,
AvatarSize::XLarge => Size::XLarge,
})
}
}
#[derive(Clone, PartialEq, Properties)]
pub struct AvatarProperties {
pub alt: AttrValue,
#[prop_or_default]
pub border: AvatarBorder,
#[prop_or_default]
pub class: Classes,
#[prop_or_default]
pub size: AvatarSize,
#[prop_or_default]
pub src: AttrValue,
}
#[function_component(Avatar)]
pub fn avatar(props: &AvatarProperties) -> Html {
html! {
<img
class={
classes!(
"pf-v5-c-avatar",
props.border.clone(),
props.size.clone(),
props.class.clone()
)
}
src={&props.src}
alt={&props.alt}
/>
}
}