Skip to main content

basecoat_core/classes/
card.rs

1use crate::props::card::CardProps;
2
3/// Returns the canonical CSS class string for a card.
4///
5/// Upstream: single `.card` class, no variants.
6pub fn card(p: &CardProps) -> String {
7    match &p.class {
8        Some(extra) if !extra.is_empty() => format!("card {extra}"),
9        _ => "card".to_string(),
10    }
11}
12
13#[cfg(test)]
14mod tests {
15    use super::*;
16    use crate::props::card::CardProps;
17
18    #[test]
19    fn base_class() {
20        assert_eq!(card(&CardProps::default()), "card");
21    }
22
23    #[test]
24    fn with_extra_class() {
25        let p = CardProps {
26            class: Some("mt-4".into()),
27            ..Default::default()
28        };
29        assert_eq!(card(&p), "card mt-4");
30    }
31}