tailwind_rs_core/utilities/sizing/
aspect_ratio.rs1use crate::classes::ClassBuilder;
4use serde::{Deserialize, Serialize};
5use std::fmt;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
9pub enum AspectRatio {
10 Square,
12 Video,
14 Photo,
16 Portrait,
18 Landscape,
20 Auto,
22}
23
24impl fmt::Display for AspectRatio {
25 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
26 match self {
27 AspectRatio::Square => write!(f, "aspect-square"),
28 AspectRatio::Video => write!(f, "aspect-video"),
29 AspectRatio::Photo => write!(f, "aspect-photo"),
30 AspectRatio::Portrait => write!(f, "aspect-portrait"),
31 AspectRatio::Landscape => write!(f, "aspect-landscape"),
32 AspectRatio::Auto => write!(f, "aspect-auto"),
33 }
34 }
35}
36
37pub trait AspectRatioUtilities {
39 fn aspect_ratio(self, aspect_ratio: AspectRatio) -> Self;
40}
41
42impl AspectRatioUtilities for ClassBuilder {
43 fn aspect_ratio(self, aspect_ratio: AspectRatio) -> Self {
44 self.class(aspect_ratio.to_string())
45 }
46}
47
48#[cfg(test)]
49mod tests {
50 use super::*;
51
52 #[test]
53 fn test_aspect_ratio_display() {
54 assert_eq!(AspectRatio::Square.to_string(), "aspect-square");
55 assert_eq!(AspectRatio::Video.to_string(), "aspect-video");
56 assert_eq!(AspectRatio::Photo.to_string(), "aspect-photo");
57 }
58
59 #[test]
60 fn test_aspect_ratio_utilities() {
61 let classes = ClassBuilder::new()
62 .aspect_ratio(AspectRatio::Square)
63 .build();
64
65 assert!(classes.to_css_classes().contains("aspect-square"));
66 }
67}