Coverage for fastagency/ui/mesop/styles.py: 100%
103 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-19 12:16 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-19 12:16 +0000
1from dataclasses import dataclass, field 1abc
3import mesop as me 1abc
5from .components.helpers import darken_hex_color 1abc
7HEADER_BOX_STYLE = me.Style( 1abc
8 padding=me.Padding(bottom="24px"),
9)
11HEADER_TEXT_STYLE = me.Style( 1abc
12 font_weight=500,
13 font_size=24,
14 color="#3D3929",
15 letter_spacing="0.3px",
16)
19ROOT_BOX_STYLE = me.Style( 1abc
20 background="#e7f2ff",
21 height="100%",
22 font_family="Inter",
23 display="flex",
24 flex_direction="row",
25)
27PAST_CHATS_SHOW_STYLE = me.Style( 1abc
28 background=darken_hex_color("#e7f2ff", 0.98),
29 height="100%",
30 width="min(300px)",
31 font_family="Inter",
32 display="flex",
33 flex_direction="column",
34)
36PAST_CHATS_HIDE_STYLE = me.Style( 1abc
37 background="#e7f2ff",
38 height="10%",
39 width="min(150px)",
40 font_family="Inter",
41 display="flex",
42 flex_direction="column",
43)
45PAST_CHATS_INNER_STYLE = me.Style( 1abc
46 flex_direction="row",
47 width="100%",
48 padding=me.Padding(top="16px"),
49 justify_content="space-between",
50)
52PAST_CHATS_CONV_STYLE = me.Style( 1abc
53 padding=me.Padding.all(16),
54 border_radius=16,
55)
58CHAT_STARTER_STYLE = me.Style( 1abc
59 background="#e7f2ff",
60 height="100%",
61 width="max(80%)",
62 font_family="Inter",
63 display="flex",
64 flex_direction="column",
65 padding=me.Padding.all(16),
66)
68CONV_STARTER_STYLE = me.Style( 1abc
69 width="min(680px, 100%)",
70 # margin=me.Margin.symmetric(horizontal="auto", vertical=36),
71)
73CONV_STARTER_TEXT_STYLE = me.Style(font_size=20, margin=me.Margin(bottom=24)) 1abc
75CONV_STARTER_WF_BOX_STYLE = me.Style( 1abc
76 display="flex", flex_direction="row", justify_content="flex-start"
77)
79CONV_LIST_STYLE = me.Style( 1abc
80 overflow_y="auto",
81 display="flex",
82 flex_direction="column",
83 padding=me.Padding.symmetric(horizontal=16),
84)
86CONV_TOP_STYLE = me.Style( 1abc
87 margin=me.Margin(bottom="1vh"),
88)
90CONV_MSG_STYLE = me.Style(margin=me.Margin(bottom="50vh")) 1abc
92STYLESHEETS = [ 1abc
93 "https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"
94]
96FIREBASE_STYLESHEETS = [ 1abc
97 "https://www.gstatic.com/firebasejs/ui/6.1.0/firebase-ui-auth.css"
98]
100MSG_DEFAULT_HEADER_MD_STYLE = me.Style( 1abc
101 padding=me.Padding(top=8, right=16, left=16, bottom=8)
102)
103MSG_DEFAULT_HEADER_BOX_STYLE = me.Style( 1abc
104 background="#ddd",
105 padding=me.Padding.all(0),
106 border_radius=8,
107)
109MSG_DEFAULT_BOX_STYLE = me.Style( 1abc
110 background="#fff",
111 border_radius=8,
112 margin=me.Margin.symmetric(vertical=16),
113)
115MSG_DEFAULT_MD_STYLE = me.Style(padding=me.Padding.all(16)) 1abc
116MSG_DEFAULT_MD_SCROLABLE_STYLE = me.Style( 1abc
117 padding=me.Padding(top=16, left=16, right=16),
118 overflow_y="auto",
119 max_height="300px",
120 margin=me.Margin(bottom=16),
121)
123MSG_SYSTEM_HEADER_BOX_STYLE = me.Style( 1abc
124 background="#b3e5fc",
125 padding=me.Padding.all(0),
126 border_radius=8,
127)
129MSG_SUGESTED_FUNCTION_CALL_HEADER_BOX_STYLE = me.Style( 1abc
130 background="#fff0b2",
131 padding=me.Padding.all(0),
132 border_radius=8,
133)
135MSG_FUNCTION_CALL_EXECUTION_HEADER_BOX_STYLE = me.Style( 1abc
136 background="#ffccbc",
137 padding=me.Padding.all(0),
138 border_radius=8,
139)
141MSG_ERROR_HEADER_BOX_STYLE = me.Style( 1abc
142 background="#f44336",
143 padding=me.Padding.all(0),
144 border_radius=8,
145)
147MSG_ERROR_HEADER_MD_STYLE = me.Style( 1abc
148 padding=me.Padding(top=8, right=16, left=16, bottom=8),
149 color="#fff",
150)
152MSG_TEXT_INPUT_HEADER_BOX_STYLE = me.Style( 1abc
153 background="#e6ee9c",
154 padding=me.Padding.all(0),
155 border_radius=8,
156)
158MSG_TEXT_INPUT_MD_STYLE = me.Style( 1abc
159 background="#e0e0e0",
160 padding=me.Padding.all(16),
161)
163MSG_DEFAULT_BUTTON_STYLE = me.Style( 1abc
164 margin=me.Margin.symmetric(horizontal=8),
165 padding=me.Padding.all(16),
166 border_radius=8,
167 background="#1976d2",
168)
170MSG_DEFAULT_SELECTED_BUTTON_STYLE = me.Style( 1abc
171 margin=me.Margin.symmetric(horizontal=8),
172 padding=me.Padding.all(16),
173 border_radius=8,
174 background="#1976d2",
175 color="#fff",
176)
178MSG_DEFAULT_DISABLED_BUTTON_STYLE = me.Style( 1abc
179 margin=me.Margin.symmetric(horizontal=8),
180 padding=me.Padding.all(16),
181 border_radius=8,
182 background="#64b5f6",
183 color="#fff",
184)
187@dataclass 1abc
188class MesopMessageStyles: 1abc
189 box: me.Style = field(default_factory=lambda: MSG_DEFAULT_BOX_STYLE) 1abc
190 md: me.Style = field(default_factory=lambda: MSG_DEFAULT_MD_STYLE) 1abc
191 scrollable_md: me.Style = field( 1abc
192 default_factory=lambda: MSG_DEFAULT_MD_SCROLABLE_STYLE
193 )
194 header_box: me.Style = field(default_factory=lambda: MSG_DEFAULT_HEADER_BOX_STYLE) 1abc
195 header_md: me.Style = field(default_factory=lambda: MSG_DEFAULT_HEADER_MD_STYLE) 1abc
196 button: me.Style = field(default_factory=lambda: MSG_DEFAULT_BUTTON_STYLE) 1abc
197 disabled_button: me.Style = field( 1abc
198 default_factory=lambda: MSG_DEFAULT_DISABLED_BUTTON_STYLE
199 )
200 selected_button: me.Style = field( 1abc
201 default_factory=lambda: MSG_DEFAULT_SELECTED_BUTTON_STYLE
202 )
205TEXT_INPUT_INNER_BOX_STYLE = me.Style( 1abc
206 border_radius=8,
207 padding=me.Padding.all(16),
208 background="white",
209 display="flex",
210 width="100%",
211)
213TEXT_INPUT_NATIVE_TEXTAREA_STYLE = me.Style( 1abc
214 padding=me.Padding(top=16, left=16),
215 # outline="none",
216 width="100%",
217 border=me.Border.all(me.BorderSide(style="none")),
218 background="#e1f5fe",
219)
221SINGLE_CHOICE_RADIO_STYLE = me.Style( 1abc
222 display="flex", flex_direction="column", padding=me.Padding.all(16)
223)
225SINGLE_CHOICE_BOX_STYLE = me.Style( 1abc
226 display="flex",
227 flex_direction="row",
228 padding=me.Padding(left=8, right=8, top=0, bottom=16),
229)
231SINGLE_CHOICE_BUTTON_STYLE = me.Style( 1abc
232 margin=me.Margin.symmetric(horizontal=8),
233 padding=me.Padding.all(16),
234 border_radius=8,
235 background="#1976d2",
236)
238SINGLE_CHOICE_SELECTED_BUTTON_STYLE = me.Style( 1abc
239 margin=me.Margin.symmetric(horizontal=8),
240 padding=me.Padding.all(16),
241 border_radius=8,
242 background="#1976d2",
243 color="#fff",
244)
246SINGLE_CHOICE_DISABLED_BUTTON_STYLE = me.Style( 1abc
247 margin=me.Margin.symmetric(horizontal=8),
248 padding=me.Padding.all(16),
249 border_radius=8,
250 background="#64b5f6",
251 color="#fff",
252)
254MULTIPLE_CHOICE_RADIO_STYLE = me.Style( 1abc
255 display="flex",
256 flex_direction="column",
257 padding=me.Padding.all(16),
258)
260MULTIPLE_CHOICE_BUTTON_STYLE = me.Style( 1abc
261 margin=me.Margin(top=16), border_radius=8, background="#1976d2"
262)
264MULTIPLE_CHOICE_CHECKBOX_STYLE = me.Style() 1abc
266LOGIN_BOX_STYLE = me.Style(display="flex", justify_content="center") 1abc
268LOGIN_BTN_BOX_STYLE = me.Style(text_align="center", margin=me.Margin(top=100)) 1abc
269LOGOUT_BTN_BOX_STYLE = me.Style(position="absolute", top="16px", right="16px") 1abc
272@dataclass 1abc
273class MesopTextInputInnerStyles: 1abc
274 box: me.Style = field(default_factory=lambda: TEXT_INPUT_INNER_BOX_STYLE) 1abc
275 native_textarea: me.Style = field( 1abc
276 default_factory=lambda: TEXT_INPUT_NATIVE_TEXTAREA_STYLE
277 )
280@dataclass 1abc
281class MesopSingleChoiceInnerStyles: 1abc
282 # radio: me.Style = field(default_factory=lambda: SINGLE_CHOICE_RADIO_STYLE)
283 box: me.Style = field(default_factory=lambda: SINGLE_CHOICE_BOX_STYLE) 1abc
284 button: me.Style = field(default_factory=lambda: SINGLE_CHOICE_BUTTON_STYLE) 1abc
285 disabled_button: me.Style = field( 1abc
286 default_factory=lambda: SINGLE_CHOICE_DISABLED_BUTTON_STYLE
287 )
288 selected_button: me.Style = field( 1abc
289 default_factory=lambda: SINGLE_CHOICE_SELECTED_BUTTON_STYLE
290 )
293@dataclass 1abc
294class MesopMultipleChoiceInnerStyles: 1abc
295 box: me.Style = field(default_factory=lambda: MULTIPLE_CHOICE_RADIO_STYLE) 1abc
296 checkbox: me.Style = field(default_factory=lambda: MULTIPLE_CHOICE_CHECKBOX_STYLE) 1abc
297 button: me.Style = field(default_factory=lambda: MULTIPLE_CHOICE_BUTTON_STYLE) 1abc
300@dataclass 1abc
301class MesopMessagesStyles: 1abc
302 default: MesopMessageStyles = field(default_factory=lambda: MesopMessageStyles()) 1abc
304 error: MesopMessageStyles = field( 1abc
305 default_factory=lambda: MesopMessageStyles(
306 header_box=MSG_ERROR_HEADER_BOX_STYLE,
307 header_md=MSG_ERROR_HEADER_MD_STYLE,
308 )
309 )
311 system: MesopMessageStyles = field( 1abc
312 default_factory=lambda: MesopMessageStyles(
313 header_box=MSG_SYSTEM_HEADER_BOX_STYLE,
314 )
315 )
317 text: MesopMessageStyles = field(default_factory=lambda: MesopMessageStyles()) 1abc
319 suggested_function_call: MesopMessageStyles = field( 1abc
320 default_factory=lambda: MesopMessageStyles(
321 header_box=MSG_SUGESTED_FUNCTION_CALL_HEADER_BOX_STYLE,
322 )
323 )
325 function_call_execution: MesopMessageStyles = field( 1abc
326 default_factory=lambda: MesopMessageStyles(
327 header_box=MSG_FUNCTION_CALL_EXECUTION_HEADER_BOX_STYLE,
328 )
329 )
331 text_input: MesopMessageStyles = field( 1abc
332 default_factory=lambda: MesopMessageStyles(
333 header_box=MSG_TEXT_INPUT_HEADER_BOX_STYLE,
334 )
335 )
337 text_input_inner: MesopTextInputInnerStyles = field( 1abc
338 default_factory=lambda: MesopTextInputInnerStyles()
339 )
341 single_choice_inner: MesopSingleChoiceInnerStyles = field( 1abc
342 default_factory=lambda: MesopSingleChoiceInnerStyles()
343 )
345 multiple_choice_inner: MesopMultipleChoiceInnerStyles = field( 1abc
346 default_factory=lambda: MesopMultipleChoiceInnerStyles()
347 )
350@dataclass 1abc
351class MesopHomePageStyles: 1abc
352 chat_starter: me.Style = field(default_factory=lambda: CHAT_STARTER_STYLE) 1abc
353 conv_list: me.Style = field(default_factory=lambda: CONV_LIST_STYLE) 1abc
354 conv_msg: me.Style = field(default_factory=lambda: CONV_MSG_STYLE) 1abc
355 conv_top: me.Style = field(default_factory=lambda: CONV_TOP_STYLE) 1abc
356 conv_starter: me.Style = field(default_factory=lambda: CONV_STARTER_STYLE) 1abc
357 conv_starter_text: me.Style = field(default_factory=lambda: CONV_STARTER_TEXT_STYLE) 1abc
358 conv_starter_wf_box: me.Style = field( 1abc
359 default_factory=lambda: CONV_STARTER_WF_BOX_STYLE
360 )
361 header: me.Style = field(default_factory=lambda: HEADER_BOX_STYLE) 1abc
362 header_text: me.Style = field(default_factory=lambda: HEADER_TEXT_STYLE) 1abc
363 past_chats_hide: me.Style = field(default_factory=lambda: PAST_CHATS_HIDE_STYLE) 1abc
364 past_chats_show: me.Style = field(default_factory=lambda: PAST_CHATS_SHOW_STYLE) 1abc
365 past_chats_inner: me.Style = field(default_factory=lambda: PAST_CHATS_INNER_STYLE) 1abc
366 past_chats_conv: me.Style = field(default_factory=lambda: PAST_CHATS_CONV_STYLE) 1abc
367 root: me.Style = field(default_factory=lambda: ROOT_BOX_STYLE) 1abc
368 stylesheets: list[str] = field(default_factory=lambda: STYLESHEETS) 1abc
369 firebase_stylesheets: list[str] = field( 1abc
370 default_factory=lambda: FIREBASE_STYLESHEETS
371 )
372 message: MesopMessagesStyles = field(default_factory=lambda: MesopMessagesStyles()) 1abc
373 login_box: me.Style = field(default_factory=lambda: LOGIN_BOX_STYLE) 1abc
374 login_btn_container: me.Style = field(default_factory=lambda: LOGIN_BTN_BOX_STYLE) 1abc
375 logout_btn_container: me.Style = field(default_factory=lambda: LOGOUT_BTN_BOX_STYLE) 1abc