1use thaw_macro::WriteCSSVars;
2
3#[derive(Clone, WriteCSSVars)]
4pub struct CommonTheme {
5 pub font_family_base: String,
6 pub font_family_monospace: String,
7 pub font_family_numeric: String,
8
9 pub font_size_base_100: String,
10 pub font_size_base_200: String,
11 pub font_size_base_300: String,
12 pub font_size_base_400: String,
13 pub font_size_base_500: String,
14 pub font_size_base_600: String,
15 pub font_size_base_700: String,
16 pub font_size_base_800: String,
17 pub font_size_base_900: String,
18 pub font_size_base_1000: String,
19
20 pub line_height_base_200: String,
21 pub line_height_base_300: String,
22 pub line_height_base_400: String,
23 pub line_height_base_500: String,
24
25 pub font_weight_regular: String,
26 pub font_weight_semibold: String,
27 pub font_weight_bold: String,
28
29 pub stroke_width_thin: String,
30 pub stroke_width_thick: String,
31 pub stroke_width_thicker: String,
32 pub stroke_width_thickest: String,
33
34 pub border_radius_none: String,
35 pub border_radius_small: String,
36 pub border_radius_medium: String,
37 pub border_radius_large: String,
38 pub border_radius_x_large: String,
39 pub border_radius_circular: String,
40
41 pub spacing_horizontal_x_x_s: String,
42 pub spacing_horizontal_x_s: String,
43 pub spacing_horizontal_s_nudge: String,
44 pub spacing_horizontal_s: String,
45 pub spacing_horizontal_m_nudge: String,
46 pub spacing_horizontal_m: String,
47 pub spacing_horizontal_l: String,
48 pub spacing_horizontal_x_x_l: String,
49 pub spacing_vertical_none: String,
50 pub spacing_vertical_x_x_s: String,
51 pub spacing_vertical_x_s: String,
52 pub spacing_vertical_s_nudge: String,
53 pub spacing_vertical_s: String,
54 pub spacing_vertical_m_nudge: String,
55 pub spacing_vertical_m: String,
56 pub spacing_vertical_l: String,
57 pub spacing_vertical_x_x_l: String,
58
59 pub duration_ultra_fast: String,
60 pub duration_faster: String,
61 pub duration_normal: String,
62 pub duration_gentle: String,
63 pub duration_slow: String,
64 pub curve_accelerate_mid: String,
65 pub curve_decelerate_max: String,
66 pub curve_decelerate_mid: String,
67 pub curve_easy_ease: String,
68}
69
70impl CommonTheme {
71 pub fn new() -> Self {
72 Self {
73 font_family_base: "'Segoe UI', 'Segoe UI Web (West European)', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif".into(),
74 font_family_monospace: "Consolas, ui-monospace, 'Courier New', Courier, monospace".into(),
75 font_family_numeric: "Bahnschrift, 'Segoe UI', 'Segoe UI Web (West European)', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif".into(),
76
77 font_size_base_100: "10px".into(),
78 font_size_base_200: "12px".into(),
79 font_size_base_300: "14px".into(),
80 font_size_base_400: "16px".into(),
81 font_size_base_500: "20px".into(),
82 font_size_base_600: "24px".into(),
83 font_size_base_700: "28px".into(),
84 font_size_base_800: "32px".into(),
85 font_size_base_900: "40px".into(),
86 font_size_base_1000: "60px".into(),
87
88 line_height_base_200: "16px".into(),
89 line_height_base_300: "20px".into(),
90 line_height_base_400: "22px".into(),
91 line_height_base_500: "28px".into(),
92
93 font_weight_regular: "400".into(),
94 font_weight_semibold: "600".into(),
95 font_weight_bold: "700".into(),
96
97 stroke_width_thin: "1px".into(),
98 stroke_width_thick: "2px".into(),
99 stroke_width_thicker: "3px".into(),
100 stroke_width_thickest: "4px".into(),
101
102 border_radius_none: "0".into(),
103 border_radius_small: "2px".into(),
104 border_radius_medium: "4px".into(),
105 border_radius_large: "6px".into(),
106 border_radius_x_large: "8px".into(),
107 border_radius_circular: "10000px".into(),
108
109 spacing_horizontal_x_x_s: "2px".into(),
110 spacing_horizontal_x_s: "4px".into(),
111 spacing_horizontal_s_nudge: "6px".into(),
112 spacing_horizontal_s: "8px".into(),
113 spacing_horizontal_m_nudge: "10px".into(),
114 spacing_horizontal_m: "12px".into(),
115 spacing_horizontal_l: "16px".into(),
116 spacing_horizontal_x_x_l: "24px".into(),
117 spacing_vertical_none: "0".into(),
118 spacing_vertical_x_x_s: "2px".into(),
119 spacing_vertical_x_s: "4px".into(),
120 spacing_vertical_s_nudge: "6px".into(),
121 spacing_vertical_s: "8px".into(),
122 spacing_vertical_m_nudge: "10px".into(),
123 spacing_vertical_m: "12px".into(),
124 spacing_vertical_l: "16px".into(),
125 spacing_vertical_x_x_l: "24px".into(),
126
127 duration_ultra_fast: "50ms".into(),
128 duration_faster: "100ms".into(),
129 duration_normal: "200ms".into(),
130 duration_gentle: "250ms".into(),
131 duration_slow: "300ms".into(),
132 curve_accelerate_mid: "cubic-bezier(1,0,1,1)".into(),
133 curve_decelerate_max: "cubic-bezier(0.1,0.9,0.2,1)".into(),
134 curve_decelerate_mid: "cubic-bezier(0,0,0,1)".into(),
135 curve_easy_ease: "cubic-bezier(0.33,0,0.67,1)".into(),
136 }
137 }
138}