windjammer-ui 0.3.6

Cross-platform UI framework for Windjammer (Web, Desktop, Mobile)
Documentation
// Badge Component - Display labels, tags, and status indicators


use super::traits::Renderable
pub enum BadgeVariant {
    Default,
    Primary,
    Success,
    Warning,
    Danger,
    Error,
    Info,
}

pub enum BadgeSize {
    Small,
    Medium,
    Large,
}

pub struct Badge {
    text: string,
    variant: BadgeVariant,
    size: BadgeSize,
}

impl Badge {
    pub fn new(text: string) -> Badge {
        Badge {
            text: text,
            variant: BadgeVariant::Default,
            size: BadgeSize::Medium,
        }
    }

    pub fn variant(self, variant: BadgeVariant) -> Badge {
        self.variant = variant
        self
    }

    pub fn size(self, size: BadgeSize) -> Badge {
        self.size = size
        self
    }


}

impl Renderable for Badge {
pub fn render(self) -> string {
        let variant_class = match self.variant {
            BadgeVariant::Default => "wj-badge-default",
            BadgeVariant::Primary => "wj-badge-primary",
            BadgeVariant::Success => "wj-badge-success",
            BadgeVariant::Warning => "wj-badge-warning",
            BadgeVariant::Danger => "wj-badge-danger",
            BadgeVariant::Error => "wj-badge-danger",
            BadgeVariant::Info => "wj-badge-info",
        }

        let size_class = match self.size {
            BadgeSize::Small => "wj-badge-sm",
            BadgeSize::Medium => "wj-badge-md",
            BadgeSize::Large => "wj-badge-lg",
        }

        format!("<span class='wj-badge {} {}'>{}</span>", variant_class, size_class, self.text)
    }
}

fn main() {
    let badge1 = Badge::new("New".to_string()).variant(BadgeVariant::Primary)
    println!("Badge 1: {}", badge1.render())

    let badge2 = Badge::new("Error".to_string()).variant(BadgeVariant::Error).size(BadgeSize::Large)
    println!("Badge 2: {}", badge2.render())
    
    let badge3 = Badge::new("Success".to_string()).variant(BadgeVariant::Success)
    println!("Badge 3: {}", badge3.render())
}