tailwind_config/
lib.rs

1use std::{borrow::Cow, collections::HashMap};
2
3use serde::Deserialize;
4
5#[derive(Deserialize, Debug)]
6#[serde(untagged)]
7pub enum LineHeightOpt<'a> {
8    LineHeight(LineHeight<'a>),
9    Str(&'a str),
10}
11
12#[derive(Deserialize, Debug, Default)]
13pub struct TailwindConfig<'a> {
14    #[serde(borrow)]
15    pub theme: TailwindTheme<'a>,
16    #[serde(alias = "darkMode")]
17    pub dark_mode: &'a str,
18}
19
20#[derive(Deserialize, Debug, Default)]
21pub struct TailwindTheme<'a> {
22    #[serde(borrow)]
23    pub screens: HashMap<&'a str, Screens<'a>>,
24    #[serde(borrow)]
25    pub spacing: HashMap<&'a str, &'a str>,
26    #[serde(borrow)]
27    pub space: HashMap<&'a str, &'a str>,
28    #[serde(borrow)]
29    pub cursor: HashMap<&'a str, &'a str>,
30    #[serde(borrow)]
31    pub flex: HashMap<&'a str, &'a str>,
32    #[serde(borrow, alias = "flexBasis")]
33    pub flex_basis: HashMap<&'a str, &'a str>,
34    #[serde(borrow, alias = "flexGrow")]
35    pub flex_grow: HashMap<&'a str, &'a str>,
36    #[serde(borrow, alias = "flexShrink")]
37    pub flex_shrink: HashMap<&'a str, &'a str>,
38    #[serde(borrow)]
39    pub gap: HashMap<&'a str, &'a str>,
40    #[serde(borrow)]
41    pub scale: HashMap<&'a str, &'a str>,
42    #[serde(borrow)]
43    pub colors: HashMap<&'a str, &'a str>,
44    #[serde(borrow, alias = "fontFamily")]
45    pub font_family: HashMap<&'a str, Vec<Cow<'a, str>>>,
46    #[serde(borrow, rename = "fontSize")]
47    pub font_size: HashMap<&'a str, (&'a str, LineHeightOpt<'a>)>,
48    #[serde(borrow, rename = "fontWeight")]
49    pub font_weight: HashMap<&'a str, &'a str>,
50    #[serde(borrow, rename = "borderRadius")]
51    pub border_radius: HashMap<&'a str, &'a str>,
52    #[serde(borrow, rename = "borderWidth")]
53    pub border_width: HashMap<&'a str, &'a str>,
54    #[serde(borrow, rename = "boxShadow")]
55    pub box_shadow: HashMap<&'a str, &'a str>,
56    #[serde(borrow, rename = "zIndex")]
57    pub z_index: HashMap<&'a str, &'a str>,
58    #[serde(borrow)]
59    pub columns: HashMap<&'a str, &'a str>,
60    #[serde(borrow)]
61    pub translate: HashMap<&'a str, &'a str>,
62    #[serde(borrow)]
63    pub width: HashMap<&'a str, &'a str>,
64    #[serde(borrow)]
65    pub height: HashMap<&'a str, &'a str>,
66    #[serde(borrow)]
67    pub rotate: HashMap<&'a str, &'a str>,
68    #[serde(borrow, alias = "letterSpacing")]
69    pub letter_spacing: HashMap<&'a str, &'a str>,
70    #[serde(borrow)]
71    pub blur: HashMap<&'a str, &'a str>,
72    #[serde(borrow)]
73    pub invert: HashMap<&'a str, &'a str>,
74    #[serde(borrow, alias = "ringWidth")]
75    pub ring_width: HashMap<&'a str, &'a str>,
76    #[serde(borrow, alias = "ringOffsetWidth")]
77    pub ring_offset_width: HashMap<&'a str, &'a str>,
78    #[serde(borrow)]
79    pub opacity: HashMap<&'a str, &'a str>,
80    #[serde(borrow)]
81    pub order: HashMap<&'a str, &'a str>,
82    #[serde(borrow)]
83    pub margin: HashMap<&'a str, &'a str>,
84    #[serde(borrow)]
85    pub padding: HashMap<&'a str, &'a str>,
86    #[serde(borrow, alias = "outlineOffset")]
87    pub outline_offset: HashMap<&'a str, &'a str>,
88    #[serde(borrow, alias = "outlineWidth")]
89    pub outline_width: HashMap<&'a str, &'a str>,
90    #[serde(borrow, alias = "backgroundImage")]
91    pub background_image: HashMap<&'a str, &'a str>,
92    #[serde(borrow, alias = "backgroundSize")]
93    pub background_size: HashMap<&'a str, &'a str>,
94    #[serde(borrow, alias = "backgroundPosition")]
95    pub background_position: HashMap<&'a str, &'a str>,
96
97    #[serde(borrow, rename = "gridTemplateRows")]
98    pub grid_template_rows: HashMap<&'a str, &'a str>,
99    #[serde(borrow, rename = "gridRow")]
100    pub grid_row: HashMap<&'a str, &'a str>,
101    #[serde(borrow, rename = "gridRowStart")]
102    pub grid_row_start: HashMap<&'a str, &'a str>,
103    #[serde(borrow, rename = "gridRowEnd")]
104    pub grid_row_end: HashMap<&'a str, &'a str>,
105    #[serde(borrow, rename = "gridTemplateColumns")]
106    pub grid_template_columns: HashMap<&'a str, &'a str>,
107    #[serde(borrow, rename = "gridColumn")]
108    pub grid_column: HashMap<&'a str, &'a str>,
109    #[serde(borrow, rename = "gridColumnStart")]
110    pub grid_column_start: HashMap<&'a str, &'a str>,
111    #[serde(borrow, rename = "gridColumnEnd")]
112    pub grid_column_end: HashMap<&'a str, &'a str>,
113
114    #[serde(borrow, rename = "transitionDelay")]
115    pub transition_delay: HashMap<&'a str, &'a str>,
116    #[serde(borrow, rename = "transitionDuration")]
117    pub transition_duration: HashMap<&'a str, &'a str>,
118    #[serde(borrow, rename = "transitionProperty")]
119    pub transition_property: HashMap<&'a str, &'a str>,
120    #[serde(borrow, rename = "transitionTimingFunction")]
121    pub transition_timing_function: HashMap<&'a str, &'a str>,
122
123    #[serde(borrow, alias = "divideWidth")]
124    pub divide_width: HashMap<&'a str, &'a str>,
125
126    #[serde(borrow, alias = "minHeight")]
127    pub min_height: HashMap<&'a str, &'a str>,
128    #[serde(borrow, alias = "minWidth")]
129    pub min_width: HashMap<&'a str, &'a str>,
130    #[serde(borrow, alias = "maxHeight")]
131    pub max_height: HashMap<&'a str, &'a str>,
132    #[serde(borrow, alias = "maxWidth")]
133    pub max_width: HashMap<&'a str, &'a str>,
134    #[serde(borrow, alias = "lineHeight")]
135    pub line_height: HashMap<&'a str, &'a str>,
136    #[serde(borrow, alias = "animation")]
137    pub animation: HashMap<&'a str, &'a str>,
138
139    #[serde(borrow, alias = "strokeWidth")]
140    pub stroke_width: HashMap<&'a str, &'a str>,
141
142    #[serde(borrow, alias = "backdropBlur")]
143    pub backdrop_blur: HashMap<&'a str, &'a str>,
144
145    #[serde(borrow, alias = "aspectRatio")]
146    pub aspect_ratio: HashMap<&'a str, &'a str>,
147
148    #[serde(borrow, alias = "textDecorationThickness")]
149    pub decoration_thickness: HashMap<&'a str, &'a str>,
150
151    #[serde(borrow, alias = "ringOpacity")]
152    pub ring_opacity: HashMap<&'a str, &'a str>,
153}
154
155#[derive(Deserialize, Debug)]
156#[serde(untagged)]
157pub enum Screens<'a> {
158    Min(&'a str),
159    Custom {
160        min: Option<&'a str>,
161        max: Option<&'a str>,
162    },
163}
164
165#[derive(Deserialize, Debug)]
166pub struct LineHeight<'a> {
167    #[serde(alias = "lineHeight")]
168    pub line_height: &'a str,
169}