tailwind_rs_core/utilities/flexbox/
flex_basis.rs

1//! Flex basis utilities for tailwind-rs
2
3use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7/// Flex basis values
8#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum FlexBasis {
10    /// Auto flex basis
11    Auto,
12    /// Full flex basis
13    Full,
14    /// Min content flex basis
15    Min,
16    /// Max content flex basis
17    Max,
18    /// Fit content flex basis
19    Fit,
20}
21
22impl fmt::Display for FlexBasis {
23    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24        match self {
25            FlexBasis::Auto => write!(f, "basis-auto"),
26            FlexBasis::Full => write!(f, "basis-full"),
27            FlexBasis::Min => write!(f, "basis-min"),
28            FlexBasis::Max => write!(f, "basis-max"),
29            FlexBasis::Fit => write!(f, "basis-fit"),
30        }
31    }
32}
33
34/// Trait for adding flex basis utilities to a class builder
35pub trait FlexBasisUtilities {
36    fn flex_basis(self, basis: FlexBasis) -> Self;
37}
38
39impl FlexBasisUtilities for ClassBuilder {
40    fn flex_basis(self, basis: FlexBasis) -> Self {
41        self.class(basis.to_string())
42    }
43}
44
45#[cfg(test)]
46mod tests {
47    use super::*;
48
49    #[test]
50    fn test_flex_basis_utilities() {
51        let classes = ClassBuilder::new()
52            .flex_basis(FlexBasis::Auto)
53            .build();
54        
55        assert!(classes.to_css_classes().contains("basis-auto"));
56    }
57}