reflex 0.6.0__py3-none-any.whl → 0.6.0a1__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 (253) 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 +2 -2
  4. reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +36 -0
  5. reflex/.templates/web/utils/state.js +1 -3
  6. reflex/__init__.py +2 -8
  7. reflex/__init__.pyi +1 -2
  8. reflex/app.py +2 -4
  9. reflex/app_module_for_backend.py +1 -1
  10. reflex/base.py +1 -1
  11. reflex/compiler/compiler.py +2 -2
  12. reflex/compiler/utils.py +3 -3
  13. reflex/components/base/app_wrap.py +2 -2
  14. reflex/components/base/app_wrap.pyi +27 -17
  15. reflex/components/base/bare.py +5 -4
  16. reflex/components/base/body.pyi +27 -17
  17. reflex/components/base/document.pyi +131 -81
  18. reflex/components/base/error_boundary.py +7 -6
  19. reflex/components/base/error_boundary.pyi +33 -20
  20. reflex/components/base/fragment.pyi +27 -17
  21. reflex/components/base/head.pyi +53 -33
  22. reflex/components/base/link.py +1 -1
  23. reflex/components/base/link.pyi +54 -33
  24. reflex/components/base/meta.pyi +105 -65
  25. reflex/components/base/script.py +2 -1
  26. reflex/components/base/script.pyi +38 -21
  27. reflex/components/component.py +47 -53
  28. reflex/components/core/banner.py +27 -23
  29. reflex/components/core/banner.pyi +171 -134
  30. reflex/components/core/client_side_routing.py +3 -2
  31. reflex/components/core/client_side_routing.pyi +54 -33
  32. reflex/components/core/clipboard.py +1 -2
  33. reflex/components/core/clipboard.pyi +33 -20
  34. reflex/components/core/cond.py +5 -5
  35. reflex/components/core/debounce.py +5 -5
  36. reflex/components/core/debounce.pyi +33 -20
  37. reflex/components/core/foreach.py +4 -3
  38. reflex/components/core/html.py +1 -1
  39. reflex/components/core/html.pyi +46 -35
  40. reflex/components/core/match.py +17 -17
  41. reflex/components/core/upload.py +23 -17
  42. reflex/components/core/upload.pyi +124 -78
  43. reflex/components/datadisplay/code.py +10 -9
  44. reflex/components/datadisplay/code.pyi +409 -299
  45. reflex/components/datadisplay/dataeditor.py +10 -8
  46. reflex/components/datadisplay/dataeditor.pyi +53 -40
  47. reflex/components/el/element.pyi +27 -17
  48. reflex/components/el/elements/base.py +1 -1
  49. reflex/components/el/elements/base.pyi +45 -34
  50. reflex/components/el/elements/forms.py +16 -16
  51. reflex/components/el/elements/forms.pyi +707 -554
  52. reflex/components/el/elements/inline.py +1 -1
  53. reflex/components/el/elements/inline.pyi +1218 -937
  54. reflex/components/el/elements/media.py +1 -1
  55. reflex/components/el/elements/media.pyi +997 -786
  56. reflex/components/el/elements/metadata.py +6 -3
  57. reflex/components/el/elements/metadata.pyi +242 -181
  58. reflex/components/el/elements/other.py +1 -1
  59. reflex/components/el/elements/other.pyi +306 -235
  60. reflex/components/el/elements/scripts.py +1 -1
  61. reflex/components/el/elements/scripts.pyi +140 -109
  62. reflex/components/el/elements/sectioning.py +2 -0
  63. reflex/components/el/elements/sectioning.pyi +647 -496
  64. reflex/components/el/elements/tables.py +1 -1
  65. reflex/components/el/elements/tables.pyi +452 -351
  66. reflex/components/el/elements/typography.py +1 -1
  67. reflex/components/el/elements/typography.pyi +657 -506
  68. reflex/components/gridjs/datatable.py +9 -6
  69. reflex/components/gridjs/datatable.pyi +56 -35
  70. reflex/components/lucide/icon.py +1 -1
  71. reflex/components/lucide/icon.pyi +54 -33
  72. reflex/components/markdown/markdown.py +31 -26
  73. reflex/components/markdown/markdown.pyi +37 -27
  74. reflex/components/moment/moment.py +12 -13
  75. reflex/components/moment/moment.pyi +35 -23
  76. reflex/components/next/base.pyi +27 -17
  77. reflex/components/next/image.py +1 -1
  78. reflex/components/next/image.pyi +37 -22
  79. reflex/components/next/link.py +1 -1
  80. reflex/components/next/link.pyi +28 -17
  81. reflex/components/next/video.py +1 -1
  82. reflex/components/next/video.pyi +28 -17
  83. reflex/components/plotly/plotly.py +13 -12
  84. reflex/components/plotly/plotly.pyi +54 -39
  85. reflex/components/props.py +1 -1
  86. reflex/components/radix/__init__.pyi +0 -1
  87. reflex/components/radix/primitives/__init__.pyi +0 -1
  88. reflex/components/radix/primitives/accordion.py +4 -4
  89. reflex/components/radix/primitives/accordion.pyi +495 -424
  90. reflex/components/radix/primitives/base.py +1 -1
  91. reflex/components/radix/primitives/base.pyi +54 -33
  92. reflex/components/radix/primitives/drawer.py +1 -1
  93. reflex/components/radix/primitives/drawer.pyi +273 -172
  94. reflex/components/radix/primitives/form.py +1 -1
  95. reflex/components/radix/primitives/form.pyi +364 -257
  96. reflex/components/radix/primitives/progress.py +1 -1
  97. reflex/components/radix/primitives/progress.pyi +282 -231
  98. reflex/components/radix/primitives/slider.py +1 -1
  99. reflex/components/radix/primitives/slider.pyi +138 -87
  100. reflex/components/radix/themes/base.py +24 -3
  101. reflex/components/radix/themes/base.pyi +250 -178
  102. reflex/components/radix/themes/color_mode.py +5 -5
  103. reflex/components/radix/themes/color_mode.pyi +220 -187
  104. reflex/components/radix/themes/components/alert_dialog.py +1 -1
  105. reflex/components/radix/themes/components/alert_dialog.pyi +207 -136
  106. reflex/components/radix/themes/components/aspect_ratio.py +1 -1
  107. reflex/components/radix/themes/components/aspect_ratio.pyi +28 -17
  108. reflex/components/radix/themes/components/avatar.py +1 -1
  109. reflex/components/radix/themes/components/avatar.pyi +81 -70
  110. reflex/components/radix/themes/components/badge.py +1 -1
  111. reflex/components/radix/themes/components/badge.pyi +99 -88
  112. reflex/components/radix/themes/components/button.py +1 -1
  113. reflex/components/radix/themes/components/button.pyi +109 -98
  114. reflex/components/radix/themes/components/callout.py +1 -1
  115. reflex/components/radix/themes/components/callout.pyi +373 -322
  116. reflex/components/radix/themes/components/card.py +1 -1
  117. reflex/components/radix/themes/components/card.pyi +49 -38
  118. reflex/components/radix/themes/components/checkbox.py +2 -1
  119. reflex/components/radix/themes/components/checkbox.pyi +245 -208
  120. reflex/components/radix/themes/components/checkbox_cards.py +1 -1
  121. reflex/components/radix/themes/components/checkbox_cards.pyi +115 -94
  122. reflex/components/radix/themes/components/checkbox_group.py +1 -1
  123. reflex/components/radix/themes/components/checkbox_group.pyi +107 -86
  124. reflex/components/radix/themes/components/context_menu.py +1 -1
  125. reflex/components/radix/themes/components/context_menu.pyi +319 -238
  126. reflex/components/radix/themes/components/data_list.py +1 -1
  127. reflex/components/radix/themes/components/data_list.pyi +171 -130
  128. reflex/components/radix/themes/components/dialog.py +1 -1
  129. reflex/components/radix/themes/components/dialog.pyi +210 -139
  130. reflex/components/radix/themes/components/dropdown_menu.py +1 -1
  131. reflex/components/radix/themes/components/dropdown_menu.pyi +332 -249
  132. reflex/components/radix/themes/components/hover_card.py +1 -1
  133. reflex/components/radix/themes/components/hover_card.pyi +131 -90
  134. reflex/components/radix/themes/components/icon_button.py +3 -2
  135. reflex/components/radix/themes/components/icon_button.pyi +109 -98
  136. reflex/components/radix/themes/components/inset.py +1 -1
  137. reflex/components/radix/themes/components/inset.pyi +58 -47
  138. reflex/components/radix/themes/components/popover.py +1 -1
  139. reflex/components/radix/themes/components/popover.pyi +136 -95
  140. reflex/components/radix/themes/components/progress.py +1 -1
  141. reflex/components/radix/themes/components/progress.pyi +82 -71
  142. reflex/components/radix/themes/components/radio.py +1 -1
  143. reflex/components/radix/themes/components/radio.pyi +80 -69
  144. reflex/components/radix/themes/components/radio_cards.py +1 -1
  145. reflex/components/radix/themes/components/radio_cards.pyi +119 -98
  146. reflex/components/radix/themes/components/radio_group.py +11 -8
  147. reflex/components/radix/themes/components/radio_group.pyi +271 -228
  148. reflex/components/radix/themes/components/scroll_area.py +1 -1
  149. reflex/components/radix/themes/components/scroll_area.pyi +32 -21
  150. reflex/components/radix/themes/components/segmented_control.py +1 -1
  151. reflex/components/radix/themes/components/segmented_control.pyi +113 -90
  152. reflex/components/radix/themes/components/select.py +3 -2
  153. reflex/components/radix/themes/components/select.pyi +471 -374
  154. reflex/components/radix/themes/components/separator.py +2 -1
  155. reflex/components/radix/themes/components/separator.pyi +80 -69
  156. reflex/components/radix/themes/components/skeleton.py +1 -1
  157. reflex/components/radix/themes/components/skeleton.pyi +34 -23
  158. reflex/components/radix/themes/components/slider.py +3 -2
  159. reflex/components/radix/themes/components/slider.pyi +88 -75
  160. reflex/components/radix/themes/components/spinner.py +1 -1
  161. reflex/components/radix/themes/components/spinner.pyi +30 -19
  162. reflex/components/radix/themes/components/switch.py +1 -1
  163. reflex/components/radix/themes/components/switch.pyi +84 -71
  164. reflex/components/radix/themes/components/table.py +1 -1
  165. reflex/components/radix/themes/components/table.pyi +332 -261
  166. reflex/components/radix/themes/components/tabs.py +1 -1
  167. reflex/components/radix/themes/components/tabs.pyi +194 -139
  168. reflex/components/radix/themes/components/text_area.py +1 -1
  169. reflex/components/radix/themes/components/text_area.pyi +111 -96
  170. reflex/components/radix/themes/components/text_field.py +1 -1
  171. reflex/components/radix/themes/components/text_field.pyi +286 -247
  172. reflex/components/radix/themes/components/tooltip.py +1 -1
  173. reflex/components/radix/themes/components/tooltip.pyi +37 -26
  174. reflex/components/radix/themes/layout/__init__.pyi +0 -1
  175. reflex/components/radix/themes/layout/base.py +1 -1
  176. reflex/components/radix/themes/layout/base.pyi +67 -56
  177. reflex/components/radix/themes/layout/box.pyi +45 -34
  178. reflex/components/radix/themes/layout/center.pyi +67 -56
  179. reflex/components/radix/themes/layout/container.py +2 -1
  180. reflex/components/radix/themes/layout/container.pyi +47 -36
  181. reflex/components/radix/themes/layout/flex.py +1 -1
  182. reflex/components/radix/themes/layout/flex.pyi +67 -56
  183. reflex/components/radix/themes/layout/grid.py +1 -1
  184. reflex/components/radix/themes/layout/grid.pyi +75 -64
  185. reflex/components/radix/themes/layout/list.py +6 -5
  186. reflex/components/radix/themes/layout/list.pyi +244 -193
  187. reflex/components/radix/themes/layout/section.py +2 -1
  188. reflex/components/radix/themes/layout/section.pyi +47 -36
  189. reflex/components/radix/themes/layout/spacer.pyi +67 -56
  190. reflex/components/radix/themes/layout/stack.py +1 -1
  191. reflex/components/radix/themes/layout/stack.pyi +159 -128
  192. reflex/components/radix/themes/typography/blockquote.py +1 -1
  193. reflex/components/radix/themes/typography/blockquote.pyi +100 -89
  194. reflex/components/radix/themes/typography/code.py +1 -1
  195. reflex/components/radix/themes/typography/code.pyi +101 -90
  196. reflex/components/radix/themes/typography/heading.py +1 -1
  197. reflex/components/radix/themes/typography/heading.pyi +107 -96
  198. reflex/components/radix/themes/typography/link.py +1 -1
  199. reflex/components/radix/themes/typography/link.pyi +113 -102
  200. reflex/components/radix/themes/typography/text.py +1 -1
  201. reflex/components/radix/themes/typography/text.pyi +572 -501
  202. reflex/components/react_player/audio.pyi +60 -33
  203. reflex/components/react_player/react_player.py +1 -1
  204. reflex/components/react_player/react_player.pyi +60 -33
  205. reflex/components/react_player/video.pyi +60 -33
  206. reflex/components/recharts/cartesian.py +3 -2
  207. reflex/components/recharts/cartesian.pyi +861 -678
  208. reflex/components/recharts/charts.py +5 -4
  209. reflex/components/recharts/charts.pyi +357 -252
  210. reflex/components/recharts/general.py +2 -1
  211. reflex/components/recharts/general.pyi +231 -180
  212. reflex/components/recharts/polar.py +5 -4
  213. reflex/components/recharts/polar.pyi +181 -144
  214. reflex/components/recharts/recharts.pyi +53 -33
  215. reflex/components/sonner/toast.py +17 -16
  216. reflex/components/sonner/toast.pyi +47 -36
  217. reflex/components/suneditor/editor.py +3 -2
  218. reflex/components/suneditor/editor.pyi +78 -55
  219. reflex/components/tags/cond_tag.py +4 -6
  220. reflex/components/tags/iter_tag.py +16 -28
  221. reflex/components/tags/match_tag.py +4 -6
  222. reflex/components/tags/tag.py +23 -40
  223. reflex/custom_components/custom_components.py +1 -3
  224. reflex/event.py +65 -113
  225. reflex/experimental/client_state.py +24 -25
  226. reflex/experimental/hooks.py +16 -16
  227. reflex/experimental/layout.py +5 -5
  228. reflex/experimental/layout.pyi +187 -136
  229. reflex/{vars → ivars}/__init__.py +2 -6
  230. reflex/{vars → ivars}/base.py +216 -599
  231. reflex/{vars → ivars}/function.py +19 -15
  232. reflex/{vars → ivars}/number.py +20 -41
  233. reflex/{vars → ivars}/object.py +30 -28
  234. reflex/{vars → ivars}/sequence.py +50 -53
  235. reflex/middleware/hydrate_middleware.py +0 -2
  236. reflex/middleware/middleware.py +3 -3
  237. reflex/state.py +82 -148
  238. reflex/style.py +22 -21
  239. reflex/utils/exceptions.py +0 -20
  240. reflex/utils/format.py +34 -54
  241. reflex/utils/imports.py +73 -16
  242. reflex/utils/prerequisites.py +15 -35
  243. reflex/utils/pyi_generator.py +8 -13
  244. reflex/utils/serializers.py +22 -12
  245. reflex/utils/telemetry.py +2 -3
  246. reflex/utils/types.py +5 -10
  247. reflex/vars.py +501 -0
  248. {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/METADATA +5 -4
  249. reflex-0.6.0a1.dist-info/RECORD +384 -0
  250. reflex-0.6.0.dist-info/RECORD +0 -382
  251. {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/LICENSE +0 -0
  252. {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/WHEEL +0 -0
  253. {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/entry_points.txt +0 -0
@@ -13,25 +13,25 @@ from reflex.event import (
13
13
  EventHandler,
14
14
  EventSpec,
15
15
  )
16
+ from reflex.ivars.base import ImmutableCallableVar, ImmutableVar
16
17
  from reflex.style import Style
17
18
  from reflex.utils.imports import ImportVar
18
- from reflex.vars import VarData
19
- from reflex.vars.base import CallableVar, Var
19
+ from reflex.vars import Var, VarData
20
20
 
21
21
  DEFAULT_UPLOAD_ID: str
22
22
  upload_files_context_var_data: VarData
23
23
 
24
- @CallableVar
25
- def upload_file(id_: str = DEFAULT_UPLOAD_ID) -> Var: ...
26
- @CallableVar
27
- def selected_files(id_: str = DEFAULT_UPLOAD_ID) -> Var: ...
24
+ @ImmutableCallableVar
25
+ def upload_file(id_: str = DEFAULT_UPLOAD_ID) -> ImmutableVar: ...
26
+ @ImmutableCallableVar
27
+ def selected_files(id_: str = DEFAULT_UPLOAD_ID) -> ImmutableVar: ...
28
28
  @CallableEventSpec
29
29
  def clear_selected_files(id_: str = DEFAULT_UPLOAD_ID) -> EventSpec: ...
30
30
  def cancel_upload(upload_id: str) -> EventSpec: ...
31
31
  def get_upload_dir() -> Path: ...
32
32
 
33
- uploaded_files_url_prefix = Var(
34
- _js_expr="getBackendURL(env.UPLOAD)",
33
+ uploaded_files_url_prefix = ImmutableVar(
34
+ _var_name="getBackendURL(env.UPLOAD)",
35
35
  _var_data=VarData(
36
36
  imports={
37
37
  f"/{Dirs.STATE_PATH}": "getBackendURL",
@@ -53,41 +53,51 @@ class UploadFilesProvider(Component):
53
53
  id: Optional[Any] = None,
54
54
  class_name: Optional[Any] = None,
55
55
  autofocus: Optional[bool] = None,
56
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
57
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
58
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
56
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
57
+ on_blur: Optional[
58
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
59
+ ] = None,
60
+ on_click: Optional[
61
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
62
+ ] = None,
59
63
  on_context_menu: Optional[
60
- Union[EventHandler, EventSpec, list, Callable, Var]
64
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
61
65
  ] = None,
62
66
  on_double_click: Optional[
63
- Union[EventHandler, EventSpec, list, Callable, Var]
67
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
68
+ ] = None,
69
+ on_focus: Optional[
70
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
71
+ ] = None,
72
+ on_mount: Optional[
73
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
64
74
  ] = None,
65
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
66
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
67
75
  on_mouse_down: Optional[
68
- Union[EventHandler, EventSpec, list, Callable, Var]
76
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
69
77
  ] = None,
70
78
  on_mouse_enter: Optional[
71
- Union[EventHandler, EventSpec, list, Callable, Var]
79
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
72
80
  ] = None,
73
81
  on_mouse_leave: Optional[
74
- Union[EventHandler, EventSpec, list, Callable, Var]
82
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
75
83
  ] = None,
76
84
  on_mouse_move: Optional[
77
- Union[EventHandler, EventSpec, list, Callable, Var]
85
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
78
86
  ] = None,
79
87
  on_mouse_out: Optional[
80
- Union[EventHandler, EventSpec, list, Callable, Var]
88
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
81
89
  ] = None,
82
90
  on_mouse_over: Optional[
83
- Union[EventHandler, EventSpec, list, Callable, Var]
91
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
84
92
  ] = None,
85
93
  on_mouse_up: Optional[
86
- Union[EventHandler, EventSpec, list, Callable, Var]
94
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
95
+ ] = None,
96
+ on_scroll: Optional[
97
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
87
98
  ] = None,
88
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
89
99
  on_unmount: Optional[
90
- Union[EventHandler, EventSpec, list, Callable, Var]
100
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
91
101
  ] = None,
92
102
  **props,
93
103
  ) -> "UploadFilesProvider":
@@ -116,7 +126,7 @@ class Upload(MemoizationLeaf):
116
126
  def create( # type: ignore
117
127
  cls,
118
128
  *children,
119
- accept: Optional[Union[Dict[str, List], Var[Optional[Dict[str, List]]]]] = None,
129
+ accept: Optional[Union[Var[Optional[Dict[str, List]]], Dict[str, List]]] = None,
120
130
  disabled: Optional[Union[Var[bool], bool]] = None,
121
131
  max_files: Optional[Union[Var[int], int]] = None,
122
132
  max_size: Optional[Union[Var[int], int]] = None,
@@ -130,42 +140,54 @@ class Upload(MemoizationLeaf):
130
140
  id: Optional[Any] = None,
131
141
  class_name: Optional[Any] = None,
132
142
  autofocus: Optional[bool] = None,
133
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
134
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
135
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
143
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
144
+ on_blur: Optional[
145
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
146
+ ] = None,
147
+ on_click: Optional[
148
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
149
+ ] = None,
136
150
  on_context_menu: Optional[
137
- Union[EventHandler, EventSpec, list, Callable, Var]
151
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
138
152
  ] = None,
139
153
  on_double_click: Optional[
140
- Union[EventHandler, EventSpec, list, Callable, Var]
154
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
155
+ ] = None,
156
+ on_drop: Optional[
157
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
158
+ ] = None,
159
+ on_focus: Optional[
160
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
161
+ ] = None,
162
+ on_mount: Optional[
163
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
141
164
  ] = None,
142
- on_drop: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
143
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
144
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
145
165
  on_mouse_down: Optional[
146
- Union[EventHandler, EventSpec, list, Callable, Var]
166
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
147
167
  ] = None,
148
168
  on_mouse_enter: Optional[
149
- Union[EventHandler, EventSpec, list, Callable, Var]
169
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
150
170
  ] = None,
151
171
  on_mouse_leave: Optional[
152
- Union[EventHandler, EventSpec, list, Callable, Var]
172
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
153
173
  ] = None,
154
174
  on_mouse_move: Optional[
155
- Union[EventHandler, EventSpec, list, Callable, Var]
175
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
156
176
  ] = None,
157
177
  on_mouse_out: Optional[
158
- Union[EventHandler, EventSpec, list, Callable, Var]
178
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
159
179
  ] = None,
160
180
  on_mouse_over: Optional[
161
- Union[EventHandler, EventSpec, list, Callable, Var]
181
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
162
182
  ] = None,
163
183
  on_mouse_up: Optional[
164
- Union[EventHandler, EventSpec, list, Callable, Var]
184
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
185
+ ] = None,
186
+ on_scroll: Optional[
187
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
165
188
  ] = None,
166
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
167
189
  on_unmount: Optional[
168
- Union[EventHandler, EventSpec, list, Callable, Var]
190
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
169
191
  ] = None,
170
192
  **props,
171
193
  ) -> "Upload":
@@ -201,7 +223,7 @@ class StyledUpload(Upload):
201
223
  def create( # type: ignore
202
224
  cls,
203
225
  *children,
204
- accept: Optional[Union[Dict[str, List], Var[Optional[Dict[str, List]]]]] = None,
226
+ accept: Optional[Union[Var[Optional[Dict[str, List]]], Dict[str, List]]] = None,
205
227
  disabled: Optional[Union[Var[bool], bool]] = None,
206
228
  max_files: Optional[Union[Var[int], int]] = None,
207
229
  max_size: Optional[Union[Var[int], int]] = None,
@@ -215,42 +237,54 @@ class StyledUpload(Upload):
215
237
  id: Optional[Any] = None,
216
238
  class_name: Optional[Any] = None,
217
239
  autofocus: Optional[bool] = None,
218
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
219
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
220
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
240
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
241
+ on_blur: Optional[
242
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
243
+ ] = None,
244
+ on_click: Optional[
245
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
246
+ ] = None,
221
247
  on_context_menu: Optional[
222
- Union[EventHandler, EventSpec, list, Callable, Var]
248
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
223
249
  ] = None,
224
250
  on_double_click: Optional[
225
- Union[EventHandler, EventSpec, list, Callable, Var]
251
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
252
+ ] = None,
253
+ on_drop: Optional[
254
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
255
+ ] = None,
256
+ on_focus: Optional[
257
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
258
+ ] = None,
259
+ on_mount: Optional[
260
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
226
261
  ] = None,
227
- on_drop: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
228
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
229
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
230
262
  on_mouse_down: Optional[
231
- Union[EventHandler, EventSpec, list, Callable, Var]
263
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
232
264
  ] = None,
233
265
  on_mouse_enter: Optional[
234
- Union[EventHandler, EventSpec, list, Callable, Var]
266
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
235
267
  ] = None,
236
268
  on_mouse_leave: Optional[
237
- Union[EventHandler, EventSpec, list, Callable, Var]
269
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
238
270
  ] = None,
239
271
  on_mouse_move: Optional[
240
- Union[EventHandler, EventSpec, list, Callable, Var]
272
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
241
273
  ] = None,
242
274
  on_mouse_out: Optional[
243
- Union[EventHandler, EventSpec, list, Callable, Var]
275
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
244
276
  ] = None,
245
277
  on_mouse_over: Optional[
246
- Union[EventHandler, EventSpec, list, Callable, Var]
278
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
247
279
  ] = None,
248
280
  on_mouse_up: Optional[
249
- Union[EventHandler, EventSpec, list, Callable, Var]
281
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
282
+ ] = None,
283
+ on_scroll: Optional[
284
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
250
285
  ] = None,
251
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
252
286
  on_unmount: Optional[
253
- Union[EventHandler, EventSpec, list, Callable, Var]
287
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
254
288
  ] = None,
255
289
  **props,
256
290
  ) -> "StyledUpload":
@@ -286,7 +320,7 @@ class UploadNamespace(ComponentNamespace):
286
320
  @staticmethod
287
321
  def __call__(
288
322
  *children,
289
- accept: Optional[Union[Dict[str, List], Var[Optional[Dict[str, List]]]]] = None,
323
+ accept: Optional[Union[Var[Optional[Dict[str, List]]], Dict[str, List]]] = None,
290
324
  disabled: Optional[Union[Var[bool], bool]] = None,
291
325
  max_files: Optional[Union[Var[int], int]] = None,
292
326
  max_size: Optional[Union[Var[int], int]] = None,
@@ -300,42 +334,54 @@ class UploadNamespace(ComponentNamespace):
300
334
  id: Optional[Any] = None,
301
335
  class_name: Optional[Any] = None,
302
336
  autofocus: Optional[bool] = None,
303
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
304
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
305
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
337
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
338
+ on_blur: Optional[
339
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
340
+ ] = None,
341
+ on_click: Optional[
342
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
343
+ ] = None,
306
344
  on_context_menu: Optional[
307
- Union[EventHandler, EventSpec, list, Callable, Var]
345
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
308
346
  ] = None,
309
347
  on_double_click: Optional[
310
- Union[EventHandler, EventSpec, list, Callable, Var]
348
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
349
+ ] = None,
350
+ on_drop: Optional[
351
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
352
+ ] = None,
353
+ on_focus: Optional[
354
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
355
+ ] = None,
356
+ on_mount: Optional[
357
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
311
358
  ] = None,
312
- on_drop: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
313
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
314
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
315
359
  on_mouse_down: Optional[
316
- Union[EventHandler, EventSpec, list, Callable, Var]
360
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
317
361
  ] = None,
318
362
  on_mouse_enter: Optional[
319
- Union[EventHandler, EventSpec, list, Callable, Var]
363
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
320
364
  ] = None,
321
365
  on_mouse_leave: Optional[
322
- Union[EventHandler, EventSpec, list, Callable, Var]
366
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
323
367
  ] = None,
324
368
  on_mouse_move: Optional[
325
- Union[EventHandler, EventSpec, list, Callable, Var]
369
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
326
370
  ] = None,
327
371
  on_mouse_out: Optional[
328
- Union[EventHandler, EventSpec, list, Callable, Var]
372
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
329
373
  ] = None,
330
374
  on_mouse_over: Optional[
331
- Union[EventHandler, EventSpec, list, Callable, Var]
375
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
332
376
  ] = None,
333
377
  on_mouse_up: Optional[
334
- Union[EventHandler, EventSpec, list, Callable, Var]
378
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
379
+ ] = None,
380
+ on_scroll: Optional[
381
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
335
382
  ] = None,
336
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
337
383
  on_unmount: Optional[
338
- Union[EventHandler, EventSpec, list, Callable, Var]
384
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
339
385
  ] = None,
340
386
  **props,
341
387
  ) -> "StyledUpload":
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Dict, Literal, Optional, Union
5
+ from typing import Dict, Literal, Optional, Union
6
6
 
7
7
  from typing_extensions import get_args
8
8
 
@@ -13,10 +13,11 @@ from reflex.components.radix.themes.components.button import Button
13
13
  from reflex.components.radix.themes.layout.box import Box
14
14
  from reflex.constants.colors import Color
15
15
  from reflex.event import set_clipboard
16
+ from reflex.ivars.base import ImmutableVar, LiteralVar
16
17
  from reflex.style import Style
17
18
  from reflex.utils import format
18
19
  from reflex.utils.imports import ImportDict, ImportVar
19
- from reflex.vars.base import LiteralVar, Var
20
+ from reflex.vars import Var
20
21
 
21
22
  LiteralCodeBlockTheme = Literal[
22
23
  "a11y-dark",
@@ -374,7 +375,7 @@ class CodeBlock(Component):
374
375
  alias = "SyntaxHighlighter"
375
376
 
376
377
  # The theme to use ("light" or "dark").
377
- theme: Var[Any] = "one-light" # type: ignore
378
+ theme: Var[LiteralCodeBlockTheme] = "one-light" # type: ignore
378
379
 
379
380
  # The language to use.
380
381
  language: Var[LiteralCodeLanguage] = "python" # type: ignore
@@ -480,13 +481,13 @@ class CodeBlock(Component):
480
481
  if "theme" not in props:
481
482
  # Default color scheme responds to global color mode.
482
483
  props["theme"] = color_mode_cond(
483
- light=Var(_js_expr="oneLight"),
484
- dark=Var(_js_expr="oneDark"),
484
+ light=ImmutableVar.create_safe("oneLight"),
485
+ dark=ImmutableVar.create_safe("oneDark"),
485
486
  )
486
487
 
487
488
  # react-syntax-highlighter doesnt have an explicit "light" or "dark" theme so we use one-light and one-dark
488
489
  # themes respectively to ensure code compatibility.
489
- if "theme" in props and not isinstance(props["theme"], Var):
490
+ if "theme" in props and not isinstance(props["theme"], ImmutableVar):
490
491
  props["theme"] = cls.convert_theme_name(props["theme"])
491
492
 
492
493
  if can_copy:
@@ -512,7 +513,7 @@ class CodeBlock(Component):
512
513
  # Carry the children (code) via props
513
514
  if children:
514
515
  props["code"] = children[0]
515
- if not isinstance(props["code"], Var):
516
+ if not isinstance(props["code"], ImmutableVar):
516
517
  props["code"] = LiteralVar.create(props["code"])
517
518
 
518
519
  # Create the component.
@@ -533,8 +534,8 @@ class CodeBlock(Component):
533
534
  def _render(self):
534
535
  out = super()._render()
535
536
 
536
- theme = self.theme._replace(
537
- _js_expr=replace_quotes_with_camel_case(str(self.theme))
537
+ theme = self.theme.upcast()._replace(
538
+ _var_name=replace_quotes_with_camel_case(str(self.theme))
538
539
  )
539
540
 
540
541
  out.add_props(style=theme).remove_props("theme", "code").add_props(