Skip to main content

systemprompt_provider_contracts/web_config/
theme.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct FontsConfig {
5    pub body: FontConfig,
6    pub heading: FontConfig,
7    #[serde(default)]
8    pub brand: Option<FontConfig>,
9}
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct FontConfig {
13    pub family: String,
14    pub fallback: String,
15    #[serde(default)]
16    pub files: Vec<FontFile>,
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize)]
20pub struct FontFile {
21    pub path: String,
22    pub weight: u16,
23    pub style: String,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct ColorsConfig {
28    pub light: ColorPalette,
29    pub dark: ColorPalette,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct ColorPalette {
34    pub primary: PrimaryColor,
35    pub secondary: PrimaryColor,
36    pub success: String,
37    pub warning: String,
38    pub error: String,
39    pub surface: SurfaceColors,
40    pub text: TextColors,
41    pub background: BackgroundColors,
42    pub border: BorderColors,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct PrimaryColor {
47    pub hsl: String,
48    pub rgb: [u8; 3],
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct SurfaceColors {
53    pub default: String,
54    pub dark: String,
55    pub variant: String,
56    #[serde(rename = "secondaryContainer")]
57    pub secondary_container: String,
58    #[serde(rename = "errorContainer")]
59    pub error_container: String,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct TextColors {
64    pub primary: String,
65    pub secondary: String,
66    pub inverted: String,
67    pub disabled: String,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct BackgroundColors {
72    pub default: String,
73    pub dark: String,
74}
75
76#[derive(Debug, Clone, Serialize, Deserialize)]
77pub struct BorderColors {
78    pub default: String,
79    pub dark: String,
80    pub outline: String,
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
84pub struct TypographyConfig {
85    pub sizes: TypographySizes,
86    pub weights: TypographyWeights,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct TypographySizes {
91    pub xs: String,
92    pub sm: String,
93    pub md: String,
94    pub lg: String,
95    pub xl: String,
96    pub xxl: String,
97}
98
99#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
100pub struct TypographyWeights {
101    pub regular: u16,
102    pub medium: u16,
103    pub semibold: u16,
104    pub bold: u16,
105}
106
107#[derive(Debug, Clone, Serialize, Deserialize)]
108pub struct SpacingConfig {
109    pub xs: String,
110    pub sm: String,
111    pub md: String,
112    pub lg: String,
113    pub xl: String,
114    pub xxl: String,
115}
116
117#[derive(Debug, Clone, Serialize, Deserialize)]
118pub struct RadiusConfig {
119    pub xs: String,
120    pub sm: String,
121    pub md: String,
122    pub lg: String,
123    pub xl: String,
124    pub xxl: String,
125    pub round: String,
126}
127
128#[derive(Debug, Clone, Serialize, Deserialize)]
129pub struct ShadowsConfig {
130    pub light: ShadowSet,
131    pub dark: ShadowSet,
132}
133
134#[derive(Debug, Clone, Serialize, Deserialize)]
135pub struct ShadowSet {
136    pub sm: String,
137    pub md: String,
138    pub lg: String,
139    pub accent: String,
140}
141
142#[derive(Debug, Clone, Serialize, Deserialize)]
143pub struct AnimationConfig {
144    pub fast: String,
145    pub normal: String,
146    pub slow: String,
147}
148
149#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
150pub struct ZIndexConfig {
151    pub base: u32,
152    pub content: u32,
153    pub navigation: u32,
154    pub modal: u32,
155    pub tooltip: u32,
156}
157
158#[derive(Debug, Clone, Serialize, Deserialize)]
159pub struct LayoutConfig {
160    #[serde(rename = "headerHeight")]
161    pub header_height: String,
162    #[serde(rename = "sidebarLeft")]
163    pub sidebar_left: SidebarConfig,
164    #[serde(rename = "sidebarRight")]
165    pub sidebar_right: SidebarConfig,
166    #[serde(rename = "navHeight")]
167    pub nav_height: String,
168    #[serde(rename = "contentMaxWidth")]
169    pub content_max_width: String,
170}
171
172#[derive(Debug, Clone, Serialize, Deserialize)]
173pub struct SidebarConfig {
174    pub width: String,
175    #[serde(rename = "minWidth")]
176    pub min_width: String,
177    #[serde(rename = "maxWidth")]
178    pub max_width: String,
179}
180
181#[derive(Debug, Clone, Serialize, Deserialize)]
182pub struct CardConfig {
183    pub radius: CardRadius,
184    pub padding: CardPadding,
185    pub gradient: CardGradient,
186}
187
188#[derive(Debug, Clone, Serialize, Deserialize)]
189pub struct CardRadius {
190    pub default: String,
191    pub cut: String,
192}
193
194#[derive(Debug, Clone, Serialize, Deserialize)]
195pub struct CardPadding {
196    pub sm: String,
197    pub md: String,
198    pub lg: String,
199}
200
201#[derive(Debug, Clone, Serialize, Deserialize)]
202pub struct CardGradient {
203    pub start: String,
204    pub mid: String,
205    pub end: String,
206}
207
208#[derive(Debug, Clone, Serialize, Deserialize)]
209pub struct MobileConfig {
210    pub spacing: SpacingConfig,
211    pub typography: MobileTypography,
212    pub layout: MobileLayout,
213    pub card: MobileCardConfig,
214}
215
216#[derive(Debug, Clone, Serialize, Deserialize)]
217pub struct MobileTypography {
218    pub sizes: TypographySizes,
219}
220
221#[derive(Debug, Clone, Serialize, Deserialize)]
222pub struct MobileLayout {
223    #[serde(rename = "headerHeight")]
224    pub header_height: String,
225    #[serde(rename = "navHeight")]
226    pub nav_height: String,
227}
228
229#[derive(Debug, Clone, Serialize, Deserialize)]
230pub struct MobileCardConfig {
231    pub padding: CardPadding,
232}
233
234#[derive(Debug, Clone, Serialize, Deserialize)]
235pub struct TouchTargetsConfig {
236    pub default: String,
237    pub sm: String,
238    pub lg: String,
239}