reflex 0.5.10a3__py3-none-any.whl → 0.6.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of reflex might be problematic. Click here for more details.

Files changed (303) hide show
  1. reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +2 -2
  2. reflex/.templates/jinja/web/pages/_app.js.jinja2 +1 -1
  3. reflex/.templates/jinja/web/pages/utils.js.jinja2 +4 -4
  4. reflex/.templates/jinja/web/utils/context.js.jinja2 +1 -1
  5. reflex/.templates/jinja/web/utils/theme.js.jinja2 +1 -1
  6. reflex/.templates/web/utils/state.js +3 -1
  7. reflex/__init__.py +10 -3
  8. reflex/__init__.pyi +3 -2
  9. reflex/app.py +47 -11
  10. reflex/app_module_for_backend.py +1 -1
  11. reflex/base.py +3 -2
  12. reflex/compiler/compiler.py +5 -5
  13. reflex/compiler/utils.py +5 -3
  14. reflex/components/base/app_wrap.py +2 -4
  15. reflex/components/base/app_wrap.pyi +16 -26
  16. reflex/components/base/bare.py +6 -4
  17. reflex/components/base/body.pyi +16 -26
  18. reflex/components/base/document.pyi +76 -126
  19. reflex/components/base/error_boundary.py +9 -8
  20. reflex/components/base/error_boundary.pyi +18 -30
  21. reflex/components/base/fragment.pyi +16 -26
  22. reflex/components/base/head.pyi +31 -51
  23. reflex/components/base/link.py +1 -1
  24. reflex/components/base/link.pyi +31 -51
  25. reflex/components/base/meta.pyi +61 -101
  26. reflex/components/base/script.py +2 -2
  27. reflex/components/base/script.pyi +20 -36
  28. reflex/components/component.py +107 -130
  29. reflex/components/core/banner.py +61 -66
  30. reflex/components/core/banner.pyi +129 -230
  31. reflex/components/core/client_side_routing.py +2 -2
  32. reflex/components/core/client_side_routing.pyi +31 -51
  33. reflex/components/core/clipboard.py +4 -3
  34. reflex/components/core/clipboard.pyi +19 -31
  35. reflex/components/core/cond.py +21 -44
  36. reflex/components/core/debounce.py +7 -9
  37. reflex/components/core/debounce.pyi +19 -31
  38. reflex/components/core/foreach.py +4 -14
  39. reflex/components/core/html.py +1 -1
  40. reflex/components/core/html.pyi +34 -44
  41. reflex/components/core/match.py +36 -43
  42. reflex/components/core/upload.py +27 -26
  43. reflex/components/core/upload.pyi +81 -116
  44. reflex/components/datadisplay/code.py +55 -29
  45. reflex/components/datadisplay/code.pyi +303 -410
  46. reflex/components/datadisplay/dataeditor.py +13 -9
  47. reflex/components/datadisplay/dataeditor.pyi +39 -51
  48. reflex/components/el/__init__.py +0 -1
  49. reflex/components/el/__init__.pyi +0 -11
  50. reflex/components/el/element.pyi +16 -26
  51. reflex/components/el/elements/__init__.py +1 -7
  52. reflex/components/el/elements/__init__.pyi +1 -15
  53. reflex/components/el/elements/base.py +1 -1
  54. reflex/components/el/elements/base.pyi +33 -43
  55. reflex/components/el/elements/forms.py +26 -33
  56. reflex/components/el/elements/forms.pyi +542 -694
  57. reflex/components/el/elements/inline.py +1 -1
  58. reflex/components/el/elements/inline.pyi +909 -1189
  59. reflex/components/el/elements/media.py +1 -22
  60. reflex/components/el/elements/media.pyi +765 -975
  61. reflex/components/el/elements/metadata.py +3 -5
  62. reflex/components/el/elements/metadata.pyi +175 -235
  63. reflex/components/el/elements/other.py +1 -1
  64. reflex/components/el/elements/other.pyi +228 -298
  65. reflex/components/el/elements/scripts.py +1 -1
  66. reflex/components/el/elements/scripts.pyi +106 -136
  67. reflex/components/el/elements/sectioning.py +0 -2
  68. reflex/components/el/elements/sectioning.pyi +481 -631
  69. reflex/components/el/elements/tables.py +1 -1
  70. reflex/components/el/elements/tables.pyi +341 -441
  71. reflex/components/el/elements/typography.py +1 -1
  72. reflex/components/el/elements/typography.pyi +491 -641
  73. reflex/components/gridjs/datatable.py +9 -13
  74. reflex/components/gridjs/datatable.pyi +33 -53
  75. reflex/components/lucide/icon.py +3 -127
  76. reflex/components/lucide/icon.pyi +31 -160
  77. reflex/components/markdown/markdown.py +32 -42
  78. reflex/components/markdown/markdown.pyi +28 -41
  79. reflex/components/moment/moment.py +13 -12
  80. reflex/components/moment/moment.pyi +22 -33
  81. reflex/components/next/base.pyi +16 -26
  82. reflex/components/next/image.py +1 -5
  83. reflex/components/next/image.pyi +21 -35
  84. reflex/components/next/link.py +1 -1
  85. reflex/components/next/link.pyi +16 -26
  86. reflex/components/next/video.py +1 -1
  87. reflex/components/next/video.pyi +16 -26
  88. reflex/components/plotly/plotly.py +17 -30
  89. reflex/components/plotly/plotly.pyi +38 -52
  90. reflex/components/props.py +21 -10
  91. reflex/components/radix/__init__.pyi +2 -1
  92. reflex/components/radix/primitives/accordion.py +6 -7
  93. reflex/components/radix/primitives/accordion.pyi +415 -485
  94. reflex/components/radix/primitives/base.py +1 -1
  95. reflex/components/radix/primitives/base.pyi +31 -51
  96. reflex/components/radix/primitives/drawer.py +1 -1
  97. reflex/components/radix/primitives/drawer.pyi +162 -262
  98. reflex/components/radix/primitives/form.py +1 -1
  99. reflex/components/radix/primitives/form.pyi +247 -353
  100. reflex/components/radix/primitives/progress.py +1 -1
  101. reflex/components/radix/primitives/progress.pyi +226 -276
  102. reflex/components/radix/primitives/slider.py +1 -1
  103. reflex/components/radix/primitives/slider.pyi +82 -132
  104. reflex/components/radix/themes/base.py +8 -25
  105. reflex/components/radix/themes/base.pyi +171 -242
  106. reflex/components/radix/themes/color_mode.py +11 -20
  107. reflex/components/radix/themes/color_mode.pyi +198 -231
  108. reflex/components/radix/themes/components/__init__.pyi +1 -0
  109. reflex/components/radix/themes/components/alert_dialog.py +1 -1
  110. reflex/components/radix/themes/components/alert_dialog.pyi +129 -199
  111. reflex/components/radix/themes/components/aspect_ratio.py +1 -1
  112. reflex/components/radix/themes/components/aspect_ratio.pyi +16 -26
  113. reflex/components/radix/themes/components/avatar.py +1 -1
  114. reflex/components/radix/themes/components/avatar.pyi +69 -79
  115. reflex/components/radix/themes/components/badge.py +1 -1
  116. reflex/components/radix/themes/components/badge.pyi +87 -97
  117. reflex/components/radix/themes/components/button.py +1 -1
  118. reflex/components/radix/themes/components/button.pyi +97 -107
  119. reflex/components/radix/themes/components/callout.py +1 -1
  120. reflex/components/radix/themes/components/callout.pyi +317 -367
  121. reflex/components/radix/themes/components/card.py +1 -1
  122. reflex/components/radix/themes/components/card.pyi +37 -47
  123. reflex/components/radix/themes/components/checkbox.py +2 -4
  124. reflex/components/radix/themes/components/checkbox.pyi +205 -241
  125. reflex/components/radix/themes/components/checkbox_cards.py +1 -1
  126. reflex/components/radix/themes/components/checkbox_cards.pyi +92 -112
  127. reflex/components/radix/themes/components/checkbox_group.py +1 -1
  128. reflex/components/radix/themes/components/checkbox_group.pyi +84 -104
  129. reflex/components/radix/themes/components/context_menu.py +1 -1
  130. reflex/components/radix/themes/components/context_menu.pyi +230 -310
  131. reflex/components/radix/themes/components/data_list.py +6 -1
  132. reflex/components/radix/themes/components/data_list.pyi +131 -166
  133. reflex/components/radix/themes/components/dialog.py +1 -1
  134. reflex/components/radix/themes/components/dialog.pyi +132 -202
  135. reflex/components/radix/themes/components/dropdown_menu.py +1 -1
  136. reflex/components/radix/themes/components/dropdown_menu.pyi +241 -323
  137. reflex/components/radix/themes/components/hover_card.py +1 -1
  138. reflex/components/radix/themes/components/hover_card.pyi +86 -126
  139. reflex/components/radix/themes/components/icon_button.py +1 -1
  140. reflex/components/radix/themes/components/icon_button.pyi +97 -107
  141. reflex/components/radix/themes/components/inset.py +1 -1
  142. reflex/components/radix/themes/components/inset.pyi +46 -56
  143. reflex/components/radix/themes/components/popover.py +1 -1
  144. reflex/components/radix/themes/components/popover.pyi +91 -131
  145. reflex/components/radix/themes/components/progress.py +1 -1
  146. reflex/components/radix/themes/components/progress.pyi +70 -80
  147. reflex/components/radix/themes/components/radio.py +1 -1
  148. reflex/components/radix/themes/components/radio.pyi +68 -78
  149. reflex/components/radix/themes/components/radio_cards.py +1 -1
  150. reflex/components/radix/themes/components/radio_cards.pyi +96 -116
  151. reflex/components/radix/themes/components/radio_group.py +32 -31
  152. reflex/components/radix/themes/components/radio_group.pyi +230 -266
  153. reflex/components/radix/themes/components/scroll_area.py +1 -1
  154. reflex/components/radix/themes/components/scroll_area.pyi +20 -30
  155. reflex/components/radix/themes/components/segmented_control.py +1 -1
  156. reflex/components/radix/themes/components/segmented_control.pyi +88 -110
  157. reflex/components/radix/themes/components/select.py +1 -1
  158. reflex/components/radix/themes/components/select.pyi +365 -461
  159. reflex/components/radix/themes/components/separator.py +2 -4
  160. reflex/components/radix/themes/components/separator.pyi +68 -78
  161. reflex/components/radix/themes/components/skeleton.py +1 -1
  162. reflex/components/radix/themes/components/skeleton.pyi +22 -32
  163. reflex/components/radix/themes/components/slider.py +1 -1
  164. reflex/components/radix/themes/components/slider.pyi +74 -86
  165. reflex/components/radix/themes/components/spinner.py +1 -1
  166. reflex/components/radix/themes/components/spinner.pyi +18 -28
  167. reflex/components/radix/themes/components/switch.py +1 -1
  168. reflex/components/radix/themes/components/switch.pyi +70 -82
  169. reflex/components/radix/themes/components/table.py +1 -1
  170. reflex/components/radix/themes/components/table.pyi +254 -324
  171. reflex/components/radix/themes/components/tabs.py +1 -1
  172. reflex/components/radix/themes/components/tabs.pyi +134 -188
  173. reflex/components/radix/themes/components/text_area.py +1 -1
  174. reflex/components/radix/themes/components/text_area.pyi +95 -109
  175. reflex/components/radix/themes/components/text_field.py +1 -80
  176. reflex/components/radix/themes/components/text_field.pyi +245 -290
  177. reflex/components/radix/themes/components/tooltip.py +1 -1
  178. reflex/components/radix/themes/components/tooltip.pyi +25 -35
  179. reflex/components/radix/themes/layout/__init__.pyi +1 -0
  180. reflex/components/radix/themes/layout/base.py +1 -1
  181. reflex/components/radix/themes/layout/base.pyi +55 -65
  182. reflex/components/radix/themes/layout/box.pyi +33 -43
  183. reflex/components/radix/themes/layout/center.pyi +55 -65
  184. reflex/components/radix/themes/layout/container.py +2 -4
  185. reflex/components/radix/themes/layout/container.pyi +35 -45
  186. reflex/components/radix/themes/layout/flex.py +1 -1
  187. reflex/components/radix/themes/layout/flex.pyi +55 -65
  188. reflex/components/radix/themes/layout/grid.py +1 -1
  189. reflex/components/radix/themes/layout/grid.pyi +63 -73
  190. reflex/components/radix/themes/layout/list.py +1 -1
  191. reflex/components/radix/themes/layout/list.pyi +188 -238
  192. reflex/components/radix/themes/layout/section.py +2 -4
  193. reflex/components/radix/themes/layout/section.pyi +35 -45
  194. reflex/components/radix/themes/layout/spacer.pyi +55 -65
  195. reflex/components/radix/themes/layout/stack.py +1 -1
  196. reflex/components/radix/themes/layout/stack.pyi +125 -155
  197. reflex/components/radix/themes/typography/blockquote.py +1 -1
  198. reflex/components/radix/themes/typography/blockquote.pyi +88 -98
  199. reflex/components/radix/themes/typography/code.py +1 -1
  200. reflex/components/radix/themes/typography/code.pyi +89 -99
  201. reflex/components/radix/themes/typography/heading.py +1 -1
  202. reflex/components/radix/themes/typography/heading.pyi +95 -105
  203. reflex/components/radix/themes/typography/link.py +1 -1
  204. reflex/components/radix/themes/typography/link.pyi +101 -111
  205. reflex/components/radix/themes/typography/text.py +1 -1
  206. reflex/components/radix/themes/typography/text.pyi +494 -564
  207. reflex/components/react_player/audio.pyi +32 -58
  208. reflex/components/react_player/react_player.py +1 -1
  209. reflex/components/react_player/react_player.pyi +32 -58
  210. reflex/components/react_player/video.pyi +32 -58
  211. reflex/components/recharts/cartesian.py +22 -19
  212. reflex/components/recharts/cartesian.pyi +658 -840
  213. reflex/components/recharts/charts.py +3 -3
  214. reflex/components/recharts/charts.pyi +238 -342
  215. reflex/components/recharts/general.py +8 -8
  216. reflex/components/recharts/general.pyi +175 -225
  217. reflex/components/recharts/polar.py +11 -11
  218. reflex/components/recharts/polar.pyi +135 -171
  219. reflex/components/recharts/recharts.pyi +31 -51
  220. reflex/components/sonner/toast.py +27 -31
  221. reflex/components/sonner/toast.pyi +36 -45
  222. reflex/components/suneditor/editor.py +1 -1
  223. reflex/components/suneditor/editor.pyi +54 -76
  224. reflex/components/tags/cond_tag.py +6 -4
  225. reflex/components/tags/iter_tag.py +37 -25
  226. reflex/components/tags/match_tag.py +6 -4
  227. reflex/components/tags/tag.py +43 -28
  228. reflex/constants/base.py +3 -1
  229. reflex/constants/event.py +1 -0
  230. reflex/custom_components/custom_components.py +3 -1
  231. reflex/event.py +166 -108
  232. reflex/experimental/__init__.py +25 -6
  233. reflex/experimental/client_state.py +34 -57
  234. reflex/experimental/hooks.py +12 -17
  235. reflex/experimental/layout.py +4 -4
  236. reflex/experimental/layout.pyi +130 -180
  237. reflex/middleware/hydrate_middleware.py +2 -0
  238. reflex/middleware/middleware.py +3 -3
  239. reflex/model.py +22 -0
  240. reflex/reflex.py +4 -0
  241. reflex/state.py +491 -110
  242. reflex/style.py +56 -39
  243. reflex/testing.py +8 -3
  244. reflex/utils/exceptions.py +32 -0
  245. reflex/utils/exec.py +0 -14
  246. reflex/utils/format.py +80 -209
  247. reflex/utils/imports.py +16 -73
  248. reflex/utils/net.py +43 -0
  249. reflex/utils/path_ops.py +13 -1
  250. reflex/utils/prerequisites.py +81 -41
  251. reflex/utils/pyi_generator.py +12 -6
  252. reflex/utils/serializers.py +13 -41
  253. reflex/utils/telemetry.py +3 -2
  254. reflex/utils/types.py +47 -7
  255. reflex/{experimental/vars → vars}/__init__.py +6 -3
  256. reflex/vars/base.py +2563 -0
  257. reflex/vars/function.py +196 -0
  258. reflex/vars/number.py +1158 -0
  259. reflex/vars/object.py +562 -0
  260. reflex/vars/sequence.py +1604 -0
  261. {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/METADATA +6 -9
  262. reflex-0.6.0.dist-info/RECORD +382 -0
  263. reflex/.templates/apps/demo/.gitignore +0 -4
  264. reflex/.templates/apps/demo/assets/favicon.ico +0 -0
  265. reflex/.templates/apps/demo/assets/github.svg +0 -10
  266. reflex/.templates/apps/demo/assets/icon.svg +0 -37
  267. reflex/.templates/apps/demo/assets/logo.svg +0 -68
  268. reflex/.templates/apps/demo/assets/paneleft.svg +0 -13
  269. reflex/.templates/apps/demo/code/__init__.py +0 -1
  270. reflex/.templates/apps/demo/code/demo.py +0 -127
  271. reflex/.templates/apps/demo/code/pages/__init__.py +0 -7
  272. reflex/.templates/apps/demo/code/pages/chatapp.py +0 -31
  273. reflex/.templates/apps/demo/code/pages/datatable.py +0 -360
  274. reflex/.templates/apps/demo/code/pages/forms.py +0 -257
  275. reflex/.templates/apps/demo/code/pages/graphing.py +0 -253
  276. reflex/.templates/apps/demo/code/pages/home.py +0 -56
  277. reflex/.templates/apps/demo/code/sidebar.py +0 -178
  278. reflex/.templates/apps/demo/code/state.py +0 -22
  279. reflex/.templates/apps/demo/code/states/form_state.py +0 -40
  280. reflex/.templates/apps/demo/code/states/pie_state.py +0 -47
  281. reflex/.templates/apps/demo/code/styles.py +0 -68
  282. reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
  283. reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -4
  284. reflex/.templates/apps/demo/code/webui/components/chat.py +0 -118
  285. reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -19
  286. reflex/.templates/apps/demo/code/webui/components/modal.py +0 -56
  287. reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -70
  288. reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -66
  289. reflex/.templates/apps/demo/code/webui/state.py +0 -146
  290. reflex/.templates/apps/demo/code/webui/styles.py +0 -88
  291. reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
  292. reflex/experimental/vars/base.py +0 -583
  293. reflex/experimental/vars/function.py +0 -290
  294. reflex/experimental/vars/number.py +0 -1458
  295. reflex/experimental/vars/object.py +0 -804
  296. reflex/experimental/vars/sequence.py +0 -1764
  297. reflex/utils/watch.py +0 -96
  298. reflex/vars.py +0 -2604
  299. reflex/vars.pyi +0 -218
  300. reflex-0.5.10a3.dist-info/RECORD +0 -413
  301. {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/LICENSE +0 -0
  302. {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/WHEEL +0 -0
  303. {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/entry_points.txt +0 -0
@@ -13,7 +13,7 @@ from reflex.components.radix.themes.layout.box import Box
13
13
  from reflex.event import EventHandler, EventSpec
14
14
  from reflex.state import ComponentState
15
15
  from reflex.style import Style
16
- from reflex.vars import BaseVar, Var
16
+ from reflex.vars.base import Var
17
17
 
18
18
  class Sidebar(Box, MemoizationLeaf):
19
19
  @overload
@@ -21,80 +21,70 @@ class Sidebar(Box, MemoizationLeaf):
21
21
  def create( # type: ignore
22
22
  cls,
23
23
  *children,
24
- access_key: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
24
+ access_key: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
25
25
  auto_capitalize: Optional[
26
- Union[Var[Union[bool, int, str]], str, int, bool]
26
+ Union[Var[Union[bool, int, str]], bool, int, str]
27
27
  ] = None,
28
28
  content_editable: Optional[
29
- Union[Var[Union[bool, int, str]], str, int, bool]
29
+ Union[Var[Union[bool, int, str]], bool, int, str]
30
30
  ] = None,
31
31
  context_menu: Optional[
32
- Union[Var[Union[bool, int, str]], str, int, bool]
32
+ Union[Var[Union[bool, int, str]], bool, int, str]
33
33
  ] = None,
34
- dir: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
35
- draggable: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
34
+ dir: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
35
+ draggable: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
36
36
  enter_key_hint: Optional[
37
- Union[Var[Union[bool, int, str]], str, int, bool]
38
- ] = None,
39
- hidden: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
40
- input_mode: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
41
- item_prop: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
42
- lang: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
43
- role: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
44
- slot: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
45
- spell_check: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
46
- tab_index: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
47
- title: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
37
+ Union[Var[Union[bool, int, str]], bool, int, str]
38
+ ] = None,
39
+ hidden: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
40
+ input_mode: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
41
+ item_prop: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
42
+ lang: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
43
+ role: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
44
+ slot: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
45
+ spell_check: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
46
+ tab_index: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
47
+ title: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
48
48
  style: Optional[Style] = None,
49
49
  key: Optional[Any] = None,
50
50
  id: Optional[Any] = None,
51
51
  class_name: Optional[Any] = None,
52
52
  autofocus: Optional[bool] = None,
53
53
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
54
- on_blur: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
56
- ] = None,
57
- on_click: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
59
- ] = None,
54
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
55
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
60
56
  on_context_menu: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
57
+ Union[EventHandler, EventSpec, list, Callable, Var]
62
58
  ] = None,
63
59
  on_double_click: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
65
- ] = None,
66
- on_focus: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
68
- ] = None,
69
- on_mount: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
60
+ Union[EventHandler, EventSpec, list, Callable, Var]
71
61
  ] = None,
62
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
63
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
72
64
  on_mouse_down: Optional[
73
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
65
+ Union[EventHandler, EventSpec, list, Callable, Var]
74
66
  ] = None,
75
67
  on_mouse_enter: Optional[
76
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
68
+ Union[EventHandler, EventSpec, list, Callable, Var]
77
69
  ] = None,
78
70
  on_mouse_leave: Optional[
79
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
71
+ Union[EventHandler, EventSpec, list, Callable, Var]
80
72
  ] = None,
81
73
  on_mouse_move: Optional[
82
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
74
+ Union[EventHandler, EventSpec, list, Callable, Var]
83
75
  ] = None,
84
76
  on_mouse_out: Optional[
85
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
77
+ Union[EventHandler, EventSpec, list, Callable, Var]
86
78
  ] = None,
87
79
  on_mouse_over: Optional[
88
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
80
+ Union[EventHandler, EventSpec, list, Callable, Var]
89
81
  ] = None,
90
82
  on_mouse_up: Optional[
91
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
92
- ] = None,
93
- on_scroll: Optional[
94
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
83
+ Union[EventHandler, EventSpec, list, Callable, Var]
95
84
  ] = None,
85
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
96
86
  on_unmount: Optional[
97
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
87
+ Union[EventHandler, EventSpec, list, Callable, Var]
98
88
  ] = None,
99
89
  **props,
100
90
  ) -> "Sidebar":
@@ -134,8 +124,8 @@ class DrawerSidebar(DrawerRoot):
134
124
  modal: Optional[Union[Var[bool], bool]] = None,
135
125
  direction: Optional[
136
126
  Union[
137
- Var[Literal["top", "bottom", "left", "right"]],
138
- Literal["top", "bottom", "left", "right"],
127
+ Literal["bottom", "left", "right", "top"],
128
+ Var[Literal["bottom", "left", "right", "top"]],
139
129
  ]
140
130
  ] = None,
141
131
  preventScrollRestoration: Optional[Union[Var[bool], bool]] = None,
@@ -146,53 +136,43 @@ class DrawerSidebar(DrawerRoot):
146
136
  class_name: Optional[Any] = None,
147
137
  autofocus: Optional[bool] = None,
148
138
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
149
- on_blur: Optional[
150
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
151
- ] = None,
152
- on_click: Optional[
153
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
154
- ] = None,
139
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
140
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
155
141
  on_context_menu: Optional[
156
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
142
+ Union[EventHandler, EventSpec, list, Callable, Var]
157
143
  ] = None,
158
144
  on_double_click: Optional[
159
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
160
- ] = None,
161
- on_focus: Optional[
162
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
163
- ] = None,
164
- on_mount: Optional[
165
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
145
+ Union[EventHandler, EventSpec, list, Callable, Var]
166
146
  ] = None,
147
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
148
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
167
149
  on_mouse_down: Optional[
168
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
150
+ Union[EventHandler, EventSpec, list, Callable, Var]
169
151
  ] = None,
170
152
  on_mouse_enter: Optional[
171
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
153
+ Union[EventHandler, EventSpec, list, Callable, Var]
172
154
  ] = None,
173
155
  on_mouse_leave: Optional[
174
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
156
+ Union[EventHandler, EventSpec, list, Callable, Var]
175
157
  ] = None,
176
158
  on_mouse_move: Optional[
177
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
159
+ Union[EventHandler, EventSpec, list, Callable, Var]
178
160
  ] = None,
179
161
  on_mouse_out: Optional[
180
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
162
+ Union[EventHandler, EventSpec, list, Callable, Var]
181
163
  ] = None,
182
164
  on_mouse_over: Optional[
183
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
165
+ Union[EventHandler, EventSpec, list, Callable, Var]
184
166
  ] = None,
185
167
  on_mouse_up: Optional[
186
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
168
+ Union[EventHandler, EventSpec, list, Callable, Var]
187
169
  ] = None,
188
170
  on_open_change: Optional[
189
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
190
- ] = None,
191
- on_scroll: Optional[
192
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
171
+ Union[EventHandler, EventSpec, list, Callable, Var]
193
172
  ] = None,
173
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
194
174
  on_unmount: Optional[
195
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
175
+ Union[EventHandler, EventSpec, list, Callable, Var]
196
176
  ] = None,
197
177
  **props,
198
178
  ) -> "DrawerSidebar":
@@ -227,50 +207,40 @@ class SidebarTrigger(Fragment):
227
207
  class_name: Optional[Any] = None,
228
208
  autofocus: Optional[bool] = None,
229
209
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
230
- on_blur: Optional[
231
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
232
- ] = None,
233
- on_click: Optional[
234
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
235
- ] = None,
210
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
211
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
236
212
  on_context_menu: Optional[
237
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
213
+ Union[EventHandler, EventSpec, list, Callable, Var]
238
214
  ] = None,
239
215
  on_double_click: Optional[
240
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
241
- ] = None,
242
- on_focus: Optional[
243
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
244
- ] = None,
245
- on_mount: Optional[
246
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
216
+ Union[EventHandler, EventSpec, list, Callable, Var]
247
217
  ] = None,
218
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
219
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
248
220
  on_mouse_down: Optional[
249
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
221
+ Union[EventHandler, EventSpec, list, Callable, Var]
250
222
  ] = None,
251
223
  on_mouse_enter: Optional[
252
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
224
+ Union[EventHandler, EventSpec, list, Callable, Var]
253
225
  ] = None,
254
226
  on_mouse_leave: Optional[
255
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
227
+ Union[EventHandler, EventSpec, list, Callable, Var]
256
228
  ] = None,
257
229
  on_mouse_move: Optional[
258
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
230
+ Union[EventHandler, EventSpec, list, Callable, Var]
259
231
  ] = None,
260
232
  on_mouse_out: Optional[
261
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
233
+ Union[EventHandler, EventSpec, list, Callable, Var]
262
234
  ] = None,
263
235
  on_mouse_over: Optional[
264
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
236
+ Union[EventHandler, EventSpec, list, Callable, Var]
265
237
  ] = None,
266
238
  on_mouse_up: Optional[
267
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
268
- ] = None,
269
- on_scroll: Optional[
270
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
239
+ Union[EventHandler, EventSpec, list, Callable, Var]
271
240
  ] = None,
241
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
272
242
  on_unmount: Optional[
273
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
243
+ Union[EventHandler, EventSpec, list, Callable, Var]
274
244
  ] = None,
275
245
  **props,
276
246
  ) -> "SidebarTrigger":
@@ -292,80 +262,70 @@ class Layout(Box):
292
262
  cls,
293
263
  *children,
294
264
  sidebar: Optional[Component] = None,
295
- access_key: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
265
+ access_key: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
296
266
  auto_capitalize: Optional[
297
- Union[Var[Union[bool, int, str]], str, int, bool]
267
+ Union[Var[Union[bool, int, str]], bool, int, str]
298
268
  ] = None,
299
269
  content_editable: Optional[
300
- Union[Var[Union[bool, int, str]], str, int, bool]
270
+ Union[Var[Union[bool, int, str]], bool, int, str]
301
271
  ] = None,
302
272
  context_menu: Optional[
303
- Union[Var[Union[bool, int, str]], str, int, bool]
273
+ Union[Var[Union[bool, int, str]], bool, int, str]
304
274
  ] = None,
305
- dir: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
306
- draggable: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
275
+ dir: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
276
+ draggable: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
307
277
  enter_key_hint: Optional[
308
- Union[Var[Union[bool, int, str]], str, int, bool]
309
- ] = None,
310
- hidden: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
311
- input_mode: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
312
- item_prop: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
313
- lang: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
314
- role: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
315
- slot: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
316
- spell_check: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
317
- tab_index: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
318
- title: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
278
+ Union[Var[Union[bool, int, str]], bool, int, str]
279
+ ] = None,
280
+ hidden: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
281
+ input_mode: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
282
+ item_prop: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
283
+ lang: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
284
+ role: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
285
+ slot: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
286
+ spell_check: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
287
+ tab_index: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
288
+ title: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
319
289
  style: Optional[Style] = None,
320
290
  key: Optional[Any] = None,
321
291
  id: Optional[Any] = None,
322
292
  class_name: Optional[Any] = None,
323
293
  autofocus: Optional[bool] = None,
324
294
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
325
- on_blur: Optional[
326
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
327
- ] = None,
328
- on_click: Optional[
329
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
330
- ] = None,
295
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
296
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
331
297
  on_context_menu: Optional[
332
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
298
+ Union[EventHandler, EventSpec, list, Callable, Var]
333
299
  ] = None,
334
300
  on_double_click: Optional[
335
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
336
- ] = None,
337
- on_focus: Optional[
338
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
339
- ] = None,
340
- on_mount: Optional[
341
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
301
+ Union[EventHandler, EventSpec, list, Callable, Var]
342
302
  ] = None,
303
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
304
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
343
305
  on_mouse_down: Optional[
344
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
306
+ Union[EventHandler, EventSpec, list, Callable, Var]
345
307
  ] = None,
346
308
  on_mouse_enter: Optional[
347
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
309
+ Union[EventHandler, EventSpec, list, Callable, Var]
348
310
  ] = None,
349
311
  on_mouse_leave: Optional[
350
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
312
+ Union[EventHandler, EventSpec, list, Callable, Var]
351
313
  ] = None,
352
314
  on_mouse_move: Optional[
353
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
315
+ Union[EventHandler, EventSpec, list, Callable, Var]
354
316
  ] = None,
355
317
  on_mouse_out: Optional[
356
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
318
+ Union[EventHandler, EventSpec, list, Callable, Var]
357
319
  ] = None,
358
320
  on_mouse_over: Optional[
359
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
321
+ Union[EventHandler, EventSpec, list, Callable, Var]
360
322
  ] = None,
361
323
  on_mouse_up: Optional[
362
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
363
- ] = None,
364
- on_scroll: Optional[
365
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
324
+ Union[EventHandler, EventSpec, list, Callable, Var]
366
325
  ] = None,
326
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
367
327
  on_unmount: Optional[
368
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
328
+ Union[EventHandler, EventSpec, list, Callable, Var]
369
329
  ] = None,
370
330
  **props,
371
331
  ) -> "Layout":
@@ -390,80 +350,70 @@ class LayoutNamespace(ComponentNamespace):
390
350
  def __call__(
391
351
  *children,
392
352
  sidebar: Optional[Component] = None,
393
- access_key: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
353
+ access_key: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
394
354
  auto_capitalize: Optional[
395
- Union[Var[Union[bool, int, str]], str, int, bool]
355
+ Union[Var[Union[bool, int, str]], bool, int, str]
396
356
  ] = None,
397
357
  content_editable: Optional[
398
- Union[Var[Union[bool, int, str]], str, int, bool]
358
+ Union[Var[Union[bool, int, str]], bool, int, str]
399
359
  ] = None,
400
360
  context_menu: Optional[
401
- Union[Var[Union[bool, int, str]], str, int, bool]
361
+ Union[Var[Union[bool, int, str]], bool, int, str]
402
362
  ] = None,
403
- dir: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
404
- draggable: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
363
+ dir: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
364
+ draggable: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
405
365
  enter_key_hint: Optional[
406
- Union[Var[Union[bool, int, str]], str, int, bool]
407
- ] = None,
408
- hidden: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
409
- input_mode: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
410
- item_prop: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
411
- lang: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
412
- role: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
413
- slot: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
414
- spell_check: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
415
- tab_index: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
416
- title: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
366
+ Union[Var[Union[bool, int, str]], bool, int, str]
367
+ ] = None,
368
+ hidden: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
369
+ input_mode: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
370
+ item_prop: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
371
+ lang: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
372
+ role: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
373
+ slot: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
374
+ spell_check: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
375
+ tab_index: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
376
+ title: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
417
377
  style: Optional[Style] = None,
418
378
  key: Optional[Any] = None,
419
379
  id: Optional[Any] = None,
420
380
  class_name: Optional[Any] = None,
421
381
  autofocus: Optional[bool] = None,
422
382
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
423
- on_blur: Optional[
424
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
425
- ] = None,
426
- on_click: Optional[
427
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
428
- ] = None,
383
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
384
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
429
385
  on_context_menu: Optional[
430
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
386
+ Union[EventHandler, EventSpec, list, Callable, Var]
431
387
  ] = None,
432
388
  on_double_click: Optional[
433
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
434
- ] = None,
435
- on_focus: Optional[
436
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
437
- ] = None,
438
- on_mount: Optional[
439
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
389
+ Union[EventHandler, EventSpec, list, Callable, Var]
440
390
  ] = None,
391
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
392
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
441
393
  on_mouse_down: Optional[
442
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
394
+ Union[EventHandler, EventSpec, list, Callable, Var]
443
395
  ] = None,
444
396
  on_mouse_enter: Optional[
445
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
397
+ Union[EventHandler, EventSpec, list, Callable, Var]
446
398
  ] = None,
447
399
  on_mouse_leave: Optional[
448
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
400
+ Union[EventHandler, EventSpec, list, Callable, Var]
449
401
  ] = None,
450
402
  on_mouse_move: Optional[
451
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
403
+ Union[EventHandler, EventSpec, list, Callable, Var]
452
404
  ] = None,
453
405
  on_mouse_out: Optional[
454
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
406
+ Union[EventHandler, EventSpec, list, Callable, Var]
455
407
  ] = None,
456
408
  on_mouse_over: Optional[
457
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
409
+ Union[EventHandler, EventSpec, list, Callable, Var]
458
410
  ] = None,
459
411
  on_mouse_up: Optional[
460
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
461
- ] = None,
462
- on_scroll: Optional[
463
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
412
+ Union[EventHandler, EventSpec, list, Callable, Var]
464
413
  ] = None,
414
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
465
415
  on_unmount: Optional[
466
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
416
+ Union[EventHandler, EventSpec, list, Callable, Var]
467
417
  ] = None,
468
418
  **props,
469
419
  ) -> "Layout":
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import dataclasses
5
6
  from typing import TYPE_CHECKING, Optional
6
7
 
7
8
  from reflex import constants
@@ -14,6 +15,7 @@ if TYPE_CHECKING:
14
15
  from reflex.app import App
15
16
 
16
17
 
18
+ @dataclasses.dataclass(init=True)
17
19
  class HydrateMiddleware(Middleware):
18
20
  """Middleware to handle initial app hydration."""
19
21
 
@@ -2,10 +2,9 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from abc import ABC
5
+ from abc import ABC, abstractmethod
6
6
  from typing import TYPE_CHECKING, Optional
7
7
 
8
- from reflex.base import Base
9
8
  from reflex.event import Event
10
9
  from reflex.state import BaseState, StateUpdate
11
10
 
@@ -13,9 +12,10 @@ if TYPE_CHECKING:
13
12
  from reflex.app import App
14
13
 
15
14
 
16
- class Middleware(Base, ABC):
15
+ class Middleware(ABC):
17
16
  """Middleware to preprocess and postprocess requests."""
18
17
 
18
+ @abstractmethod
19
19
  async def preprocess(
20
20
  self, app: App, state: BaseState, event: Event
21
21
  ) -> Optional[StateUpdate]:
reflex/model.py CHANGED
@@ -15,6 +15,7 @@ import alembic.runtime.environment
15
15
  import alembic.script
16
16
  import alembic.util
17
17
  import sqlalchemy
18
+ import sqlalchemy.exc
18
19
  import sqlalchemy.orm
19
20
 
20
21
  from reflex import constants
@@ -51,6 +52,27 @@ def get_engine(url: str | None = None) -> sqlalchemy.engine.Engine:
51
52
  return sqlmodel.create_engine(url, echo=echo_db_query, connect_args=connect_args)
52
53
 
53
54
 
55
+ async def get_db_status() -> bool:
56
+ """Checks the status of the database connection.
57
+
58
+ Attempts to connect to the database and execute a simple query to verify connectivity.
59
+
60
+ Returns:
61
+ bool: The status of the database connection:
62
+ - True: The database is accessible.
63
+ - False: The database is not accessible.
64
+ """
65
+ status = True
66
+ try:
67
+ engine = get_engine()
68
+ with engine.connect() as connection:
69
+ connection.execute(sqlalchemy.text("SELECT 1"))
70
+ except sqlalchemy.exc.OperationalError:
71
+ status = False
72
+
73
+ return status
74
+
75
+
54
76
  SQLModelOrSqlAlchemy = Union[
55
77
  Type[sqlmodel.SQLModel], Type[sqlalchemy.orm.DeclarativeBase]
56
78
  ]
reflex/reflex.py CHANGED
@@ -16,6 +16,7 @@ from reflex_cli.utils import dependency
16
16
  from reflex import constants
17
17
  from reflex.config import get_config
18
18
  from reflex.custom_components.custom_components import custom_components_cli
19
+ from reflex.state import reset_disk_state_manager
19
20
  from reflex.utils import console, redir, telemetry
20
21
 
21
22
  # Disable typer+rich integration for help panels
@@ -180,6 +181,9 @@ def _run(
180
181
  if prerequisites.needs_reinit(frontend=frontend):
181
182
  _init(name=config.app_name, loglevel=loglevel)
182
183
 
184
+ # Delete the states folder if it exists.
185
+ reset_disk_state_manager()
186
+
183
187
  # Find the next available open port if applicable.
184
188
  if frontend:
185
189
  frontend_port = processes.handle_port(