rustyle_css/tokens/
spacing.rs1use crate::css::Length;
6
7#[derive(Clone, Debug)]
9pub struct SpacingTokens {
10 pub xs: Length,
11 pub sm: Length,
12 pub md: Length,
13 pub lg: Length,
14 pub xl: Length,
15 pub xl2: Length,
16 pub xl3: Length,
17 pub xl4: Length,
18 pub xl5: Length,
19 pub xl6: Length,
20}
21
22impl SpacingTokens {
23 pub fn new(
25 xs: Length,
26 sm: Length,
27 md: Length,
28 lg: Length,
29 xl: Length,
30 xl2: Length,
31 xl3: Length,
32 xl4: Length,
33 xl5: Length,
34 xl6: Length,
35 ) -> Self {
36 Self {
37 xs,
38 sm,
39 md,
40 lg,
41 xl,
42 xl2,
43 xl3,
44 xl4,
45 xl5,
46 xl6,
47 }
48 }
49
50 pub fn get(&self, name: &str) -> &Length {
52 match name {
53 "xs" => &self.xs,
54 "sm" => &self.sm,
55 "md" => &self.md,
56 "lg" => &self.lg,
57 "xl" => &self.xl,
58 "2xl" | "xl2" => &self.xl2,
59 "3xl" | "xl3" => &self.xl3,
60 "4xl" | "xl4" => &self.xl4,
61 "5xl" | "xl5" => &self.xl5,
62 "6xl" | "xl6" => &self.xl6,
63 _ => &self.md, }
65 }
66
67 pub fn to_css_vars(&self) -> String {
69 format!(
70 " --spacing-xs: {};\n --spacing-sm: {};\n --spacing-md: {};\n --spacing-lg: {};\n --spacing-xl: {};\n --spacing-2xl: {};\n --spacing-3xl: {};\n --spacing-4xl: {};\n --spacing-5xl: {};\n --spacing-6xl: {};\n",
71 self.xs.to_css(),
72 self.sm.to_css(),
73 self.md.to_css(),
74 self.lg.to_css(),
75 self.xl.to_css(),
76 self.xl2.to_css(),
77 self.xl3.to_css(),
78 self.xl4.to_css(),
79 self.xl5.to_css(),
80 self.xl6.to_css(),
81 )
82 }
83}
84
85impl Default for SpacingTokens {
86 fn default() -> Self {
87 Self {
88 xs: Length::rem(0.25), sm: Length::rem(0.5), md: Length::rem(1.0), lg: Length::rem(1.5), xl: Length::rem(2.0), xl2: Length::rem(3.0), xl3: Length::rem(4.0), xl4: Length::rem(6.0), xl5: Length::rem(8.0), xl6: Length::rem(12.0), }
99 }
100}