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

1from dataclasses import dataclass, field 1abc

2 

3import mesop as me 1abc

4 

5from .components.helpers import darken_hex_color 1abc

6 

7HEADER_BOX_STYLE = me.Style( 1abc

8 padding=me.Padding(bottom="24px"), 

9) 

10 

11HEADER_TEXT_STYLE = me.Style( 1abc

12 font_weight=500, 

13 font_size=24, 

14 color="#3D3929", 

15 letter_spacing="0.3px", 

16) 

17 

18 

19ROOT_BOX_STYLE = me.Style( 1abc

20 background="#e7f2ff", 

21 height="100%", 

22 font_family="Inter", 

23 display="flex", 

24 flex_direction="row", 

25) 

26 

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) 

35 

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) 

44 

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) 

51 

52PAST_CHATS_CONV_STYLE = me.Style( 1abc

53 padding=me.Padding.all(16), 

54 border_radius=16, 

55) 

56 

57 

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) 

67 

68CONV_STARTER_STYLE = me.Style( 1abc

69 width="min(680px, 100%)", 

70 # margin=me.Margin.symmetric(horizontal="auto", vertical=36), 

71) 

72 

73CONV_STARTER_TEXT_STYLE = me.Style(font_size=20, margin=me.Margin(bottom=24)) 1abc

74 

75CONV_STARTER_WF_BOX_STYLE = me.Style( 1abc

76 display="flex", flex_direction="row", justify_content="flex-start" 

77) 

78 

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) 

85 

86CONV_TOP_STYLE = me.Style( 1abc

87 margin=me.Margin(bottom="1vh"), 

88) 

89 

90CONV_MSG_STYLE = me.Style(margin=me.Margin(bottom="50vh")) 1abc

91 

92STYLESHEETS = [ 1abc

93 "https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap" 

94] 

95 

96FIREBASE_STYLESHEETS = [ 1abc

97 "https://www.gstatic.com/firebasejs/ui/6.1.0/firebase-ui-auth.css" 

98] 

99 

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) 

108 

109MSG_DEFAULT_BOX_STYLE = me.Style( 1abc

110 background="#fff", 

111 border_radius=8, 

112 margin=me.Margin.symmetric(vertical=16), 

113) 

114 

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) 

122 

123MSG_SYSTEM_HEADER_BOX_STYLE = me.Style( 1abc

124 background="#b3e5fc", 

125 padding=me.Padding.all(0), 

126 border_radius=8, 

127) 

128 

129MSG_SUGESTED_FUNCTION_CALL_HEADER_BOX_STYLE = me.Style( 1abc

130 background="#fff0b2", 

131 padding=me.Padding.all(0), 

132 border_radius=8, 

133) 

134 

135MSG_FUNCTION_CALL_EXECUTION_HEADER_BOX_STYLE = me.Style( 1abc

136 background="#ffccbc", 

137 padding=me.Padding.all(0), 

138 border_radius=8, 

139) 

140 

141MSG_ERROR_HEADER_BOX_STYLE = me.Style( 1abc

142 background="#f44336", 

143 padding=me.Padding.all(0), 

144 border_radius=8, 

145) 

146 

147MSG_ERROR_HEADER_MD_STYLE = me.Style( 1abc

148 padding=me.Padding(top=8, right=16, left=16, bottom=8), 

149 color="#fff", 

150) 

151 

152MSG_TEXT_INPUT_HEADER_BOX_STYLE = me.Style( 1abc

153 background="#e6ee9c", 

154 padding=me.Padding.all(0), 

155 border_radius=8, 

156) 

157 

158MSG_TEXT_INPUT_MD_STYLE = me.Style( 1abc

159 background="#e0e0e0", 

160 padding=me.Padding.all(16), 

161) 

162 

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) 

169 

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) 

177 

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) 

185 

186 

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 ) 

203 

204 

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) 

212 

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) 

220 

221SINGLE_CHOICE_RADIO_STYLE = me.Style( 1abc

222 display="flex", flex_direction="column", padding=me.Padding.all(16) 

223) 

224 

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) 

230 

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) 

237 

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) 

245 

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) 

253 

254MULTIPLE_CHOICE_RADIO_STYLE = me.Style( 1abc

255 display="flex", 

256 flex_direction="column", 

257 padding=me.Padding.all(16), 

258) 

259 

260MULTIPLE_CHOICE_BUTTON_STYLE = me.Style( 1abc

261 margin=me.Margin(top=16), border_radius=8, background="#1976d2" 

262) 

263 

264MULTIPLE_CHOICE_CHECKBOX_STYLE = me.Style() 1abc

265 

266LOGIN_BOX_STYLE = me.Style(display="flex", justify_content="center") 1abc

267 

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

270 

271 

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 ) 

278 

279 

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 ) 

291 

292 

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

298 

299 

300@dataclass 1abc

301class MesopMessagesStyles: 1abc

302 default: MesopMessageStyles = field(default_factory=lambda: MesopMessageStyles()) 1abc

303 

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 ) 

310 

311 system: MesopMessageStyles = field( 1abc

312 default_factory=lambda: MesopMessageStyles( 

313 header_box=MSG_SYSTEM_HEADER_BOX_STYLE, 

314 ) 

315 ) 

316 

317 text: MesopMessageStyles = field(default_factory=lambda: MesopMessageStyles()) 1abc

318 

319 suggested_function_call: MesopMessageStyles = field( 1abc

320 default_factory=lambda: MesopMessageStyles( 

321 header_box=MSG_SUGESTED_FUNCTION_CALL_HEADER_BOX_STYLE, 

322 ) 

323 ) 

324 

325 function_call_execution: MesopMessageStyles = field( 1abc

326 default_factory=lambda: MesopMessageStyles( 

327 header_box=MSG_FUNCTION_CALL_EXECUTION_HEADER_BOX_STYLE, 

328 ) 

329 ) 

330 

331 text_input: MesopMessageStyles = field( 1abc

332 default_factory=lambda: MesopMessageStyles( 

333 header_box=MSG_TEXT_INPUT_HEADER_BOX_STYLE, 

334 ) 

335 ) 

336 

337 text_input_inner: MesopTextInputInnerStyles = field( 1abc

338 default_factory=lambda: MesopTextInputInnerStyles() 

339 ) 

340 

341 single_choice_inner: MesopSingleChoiceInnerStyles = field( 1abc

342 default_factory=lambda: MesopSingleChoiceInnerStyles() 

343 ) 

344 

345 multiple_choice_inner: MesopMultipleChoiceInnerStyles = field( 1abc

346 default_factory=lambda: MesopMultipleChoiceInnerStyles() 

347 ) 

348 

349 

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