Skip to main content

basecoat_core/props/
badge.rs

1use crate::{AttrMap, BasecoatProps, Children};
2use std::borrow::Cow;
3
4/// Badge visual variant — maps to `.badge`, `.badge-secondary`, etc.
5#[derive(Clone, Debug, PartialEq, Eq, Default)]
6pub enum BadgeVariant {
7    /// `.badge` / `.badge-primary`
8    #[default]
9    Default,
10    Secondary,
11    Destructive,
12    Outline,
13}
14
15impl std::fmt::Display for BadgeVariant {
16    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
17        let s = match self {
18            BadgeVariant::Default => "badge",
19            BadgeVariant::Secondary => "badge-secondary",
20            BadgeVariant::Destructive => "badge-destructive",
21            BadgeVariant::Outline => "badge-outline",
22        };
23        f.write_str(s)
24    }
25}
26
27#[derive(BasecoatProps, Default, Clone, Debug)]
28pub struct BadgeProps {
29    #[prop(default)]
30    pub variant: BadgeVariant,
31    #[prop(optional, into)]
32    pub class: Option<Cow<'static, str>>,
33    #[prop(extend)]
34    pub attrs: AttrMap,
35    pub children: Children,
36}