impulse_thaw/theme/
common.rs

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}