reflex 0.5.4a2__py3-none-any.whl → 0.5.5__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 (261) hide show
  1. reflex/.templates/apps/demo/code/demo.py +1 -0
  2. reflex/.templates/apps/demo/code/pages/__init__.py +1 -0
  3. reflex/.templates/apps/demo/code/pages/datatable.py +1 -0
  4. reflex/.templates/apps/demo/code/pages/forms.py +1 -0
  5. reflex/.templates/apps/demo/code/pages/graphing.py +1 -0
  6. reflex/.templates/apps/demo/code/pages/home.py +1 -0
  7. reflex/.templates/apps/demo/code/styles.py +1 -0
  8. reflex/.templates/apps/demo/code/webui/components/loading_icon.py +1 -8
  9. reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +27 -12
  10. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +19 -5
  11. reflex/.templates/web/utils/state.js +73 -7
  12. reflex/__init__.py +3 -0
  13. reflex/__init__.pyi +3 -0
  14. reflex/admin.py +1 -0
  15. reflex/app.py +8 -6
  16. reflex/app_module_for_backend.py +2 -1
  17. reflex/base.py +4 -4
  18. reflex/compiler/compiler.py +4 -3
  19. reflex/compiler/templates.py +2 -0
  20. reflex/compiler/utils.py +58 -35
  21. reflex/components/__init__.py +1 -0
  22. reflex/components/base/__init__.py +1 -0
  23. reflex/components/base/app_wrap.py +1 -0
  24. reflex/components/base/fragment.py +1 -0
  25. reflex/components/base/link.py +0 -1
  26. reflex/components/base/script.py +11 -15
  27. reflex/components/base/script.pyi +1 -2
  28. reflex/components/chakra/base.py +15 -13
  29. reflex/components/chakra/base.pyi +3 -1
  30. reflex/components/chakra/datadisplay/code.py +1 -0
  31. reflex/components/chakra/datadisplay/divider.py +1 -0
  32. reflex/components/chakra/datadisplay/table.py +1 -0
  33. reflex/components/chakra/datadisplay/table.pyi +3 -0
  34. reflex/components/chakra/datadisplay/tag.py +1 -0
  35. reflex/components/chakra/disclosure/transition.py +1 -0
  36. reflex/components/chakra/feedback/circularprogress.py +1 -0
  37. reflex/components/chakra/forms/button.py +1 -0
  38. reflex/components/chakra/forms/checkbox.py +4 -13
  39. reflex/components/chakra/forms/checkbox.pyi +1 -3
  40. reflex/components/chakra/forms/colormodeswitch.py +1 -0
  41. reflex/components/chakra/forms/editable.py +13 -16
  42. reflex/components/chakra/forms/editable.pyi +1 -3
  43. reflex/components/chakra/forms/form.py +1 -0
  44. reflex/components/chakra/forms/input.py +22 -21
  45. reflex/components/chakra/forms/input.pyi +4 -4
  46. reflex/components/chakra/forms/multiselect.py +1 -0
  47. reflex/components/chakra/forms/numberinput.py +3 -12
  48. reflex/components/chakra/forms/numberinput.pyi +1 -3
  49. reflex/components/chakra/forms/pininput.py +8 -14
  50. reflex/components/chakra/forms/pininput.pyi +2 -3
  51. reflex/components/chakra/forms/radio.py +4 -13
  52. reflex/components/chakra/forms/radio.pyi +2 -3
  53. reflex/components/chakra/forms/rangeslider.py +10 -13
  54. reflex/components/chakra/forms/rangeslider.pyi +2 -3
  55. reflex/components/chakra/forms/select.py +4 -12
  56. reflex/components/chakra/forms/select.pyi +2 -3
  57. reflex/components/chakra/forms/slider.py +10 -13
  58. reflex/components/chakra/forms/slider.pyi +2 -3
  59. reflex/components/chakra/forms/switch.py +4 -13
  60. reflex/components/chakra/forms/switch.pyi +1 -3
  61. reflex/components/chakra/forms/textarea.py +16 -17
  62. reflex/components/chakra/forms/textarea.pyi +1 -3
  63. reflex/components/chakra/media/avatar.py +4 -12
  64. reflex/components/chakra/media/avatar.pyi +1 -2
  65. reflex/components/chakra/media/icon.py +1 -0
  66. reflex/components/chakra/media/image.py +7 -11
  67. reflex/components/chakra/media/image.pyi +2 -2
  68. reflex/components/chakra/navigation/link.py +8 -4
  69. reflex/components/chakra/navigation/link.pyi +2 -1
  70. reflex/components/chakra/overlay/alertdialog.py +12 -14
  71. reflex/components/chakra/overlay/alertdialog.pyi +1 -2
  72. reflex/components/chakra/overlay/drawer.py +12 -14
  73. reflex/components/chakra/overlay/drawer.pyi +1 -2
  74. reflex/components/chakra/overlay/menu.py +7 -11
  75. reflex/components/chakra/overlay/menu.pyi +2 -2
  76. reflex/components/chakra/overlay/modal.py +13 -13
  77. reflex/components/chakra/overlay/modal.pyi +2 -2
  78. reflex/components/chakra/overlay/popover.py +6 -12
  79. reflex/components/chakra/overlay/popover.pyi +1 -2
  80. reflex/components/chakra/overlay/tooltip.py +7 -13
  81. reflex/components/chakra/overlay/tooltip.pyi +1 -2
  82. reflex/components/chakra/typography/heading.py +0 -1
  83. reflex/components/chakra/typography/span.py +1 -0
  84. reflex/components/chakra/typography/text.py +1 -0
  85. reflex/components/component.py +70 -43
  86. reflex/components/core/__init__.py +1 -0
  87. reflex/components/core/banner.py +27 -24
  88. reflex/components/core/banner.pyi +6 -2
  89. reflex/components/core/client_side_routing.py +1 -0
  90. reflex/components/core/cond.py +19 -17
  91. reflex/components/core/debounce.py +4 -11
  92. reflex/components/core/debounce.pyi +1 -1
  93. reflex/components/core/foreach.py +1 -0
  94. reflex/components/core/html.py +1 -0
  95. reflex/components/core/match.py +9 -6
  96. reflex/components/core/upload.py +26 -25
  97. reflex/components/core/upload.pyi +3 -4
  98. reflex/components/datadisplay/__init__.py +1 -0
  99. reflex/components/datadisplay/code.py +27 -23
  100. reflex/components/datadisplay/code.pyi +4 -2
  101. reflex/components/datadisplay/dataeditor.py +73 -80
  102. reflex/components/datadisplay/dataeditor.pyi +52 -4
  103. reflex/components/datadisplay/logo.py +1 -0
  104. reflex/components/el/__init__.py +1 -0
  105. reflex/components/el/__init__.pyi +8 -0
  106. reflex/components/el/element.py +0 -1
  107. reflex/components/el/elements/__init__.py +5 -0
  108. reflex/components/el/elements/__init__.pyi +12 -1
  109. reflex/components/el/elements/base.py +1 -0
  110. reflex/components/el/elements/forms.py +44 -61
  111. reflex/components/el/elements/forms.pyi +4 -6
  112. reflex/components/el/elements/inline.py +1 -0
  113. reflex/components/el/elements/media.py +53 -0
  114. reflex/components/el/elements/media.pyi +428 -0
  115. reflex/components/el/elements/metadata.py +11 -0
  116. reflex/components/el/elements/metadata.pyi +80 -0
  117. reflex/components/el/elements/other.py +1 -0
  118. reflex/components/el/elements/scripts.py +1 -0
  119. reflex/components/el/elements/tables.py +1 -0
  120. reflex/components/el/elements/typography.py +1 -0
  121. reflex/components/gridjs/datatable.py +9 -6
  122. reflex/components/gridjs/datatable.pyi +4 -1
  123. reflex/components/markdown/markdown.py +36 -41
  124. reflex/components/markdown/markdown.pyi +4 -3
  125. reflex/components/media/icon.py +1 -0
  126. reflex/components/moment/moment.py +11 -17
  127. reflex/components/moment/moment.pyi +4 -3
  128. reflex/components/next/base.py +1 -0
  129. reflex/components/next/image.py +6 -11
  130. reflex/components/next/image.pyi +2 -2
  131. reflex/components/plotly/plotly.py +1 -0
  132. reflex/components/props.py +1 -0
  133. reflex/components/radix/__init__.py +1 -0
  134. reflex/components/radix/primitives/__init__.py +1 -0
  135. reflex/components/radix/primitives/accordion.py +7 -15
  136. reflex/components/radix/primitives/accordion.pyi +7 -4
  137. reflex/components/radix/primitives/base.py +1 -0
  138. reflex/components/radix/primitives/drawer.py +17 -27
  139. reflex/components/radix/primitives/drawer.pyi +2 -4
  140. reflex/components/radix/primitives/form.py +4 -12
  141. reflex/components/radix/primitives/form.pyi +2 -3
  142. reflex/components/radix/primitives/slider.py +6 -11
  143. reflex/components/radix/primitives/slider.pyi +2 -2
  144. reflex/components/radix/themes/__init__.py +1 -0
  145. reflex/components/radix/themes/base.py +3 -3
  146. reflex/components/radix/themes/base.pyi +3 -2
  147. reflex/components/radix/themes/color_mode.py +31 -2
  148. reflex/components/radix/themes/color_mode.pyi +10 -1
  149. reflex/components/radix/themes/components/__init__.py +1 -0
  150. reflex/components/radix/themes/components/alert_dialog.py +13 -24
  151. reflex/components/radix/themes/components/alert_dialog.pyi +2 -4
  152. reflex/components/radix/themes/components/aspect_ratio.py +1 -0
  153. reflex/components/radix/themes/components/card.py +1 -0
  154. reflex/components/radix/themes/components/checkbox.py +6 -22
  155. reflex/components/radix/themes/components/checkbox.pyi +2 -4
  156. reflex/components/radix/themes/components/checkbox_group.py +15 -3
  157. reflex/components/radix/themes/components/checkbox_group.pyi +10 -2
  158. reflex/components/radix/themes/components/context_menu.py +29 -38
  159. reflex/components/radix/themes/components/context_menu.pyi +2 -5
  160. reflex/components/radix/themes/components/dialog.py +18 -26
  161. reflex/components/radix/themes/components/dialog.pyi +2 -4
  162. reflex/components/radix/themes/components/dropdown_menu.py +32 -57
  163. reflex/components/radix/themes/components/dropdown_menu.pyi +2 -7
  164. reflex/components/radix/themes/components/hover_card.py +5 -12
  165. reflex/components/radix/themes/components/hover_card.pyi +2 -3
  166. reflex/components/radix/themes/components/icon_button.py +1 -0
  167. reflex/components/radix/themes/components/icon_button.pyi +1 -0
  168. reflex/components/radix/themes/components/inset.py +1 -0
  169. reflex/components/radix/themes/components/popover.py +22 -27
  170. reflex/components/radix/themes/components/popover.pyi +2 -4
  171. reflex/components/radix/themes/components/radio_group.py +25 -17
  172. reflex/components/radix/themes/components/radio_group.pyi +2 -3
  173. reflex/components/radix/themes/components/scroll_area.py +1 -0
  174. reflex/components/radix/themes/components/segmented_control.py +18 -5
  175. reflex/components/radix/themes/components/segmented_control.pyi +16 -7
  176. reflex/components/radix/themes/components/select.py +13 -23
  177. reflex/components/radix/themes/components/select.pyi +1 -4
  178. reflex/components/radix/themes/components/separator.py +1 -0
  179. reflex/components/radix/themes/components/slider.py +7 -12
  180. reflex/components/radix/themes/components/slider.pyi +2 -3
  181. reflex/components/radix/themes/components/switch.py +5 -12
  182. reflex/components/radix/themes/components/switch.pyi +2 -3
  183. reflex/components/radix/themes/components/table.py +1 -0
  184. reflex/components/radix/themes/components/tabs.py +4 -11
  185. reflex/components/radix/themes/components/tabs.pyi +2 -2
  186. reflex/components/radix/themes/components/text_area.py +19 -18
  187. reflex/components/radix/themes/components/text_area.pyi +2 -3
  188. reflex/components/radix/themes/components/text_field.py +19 -18
  189. reflex/components/radix/themes/components/text_field.pyi +3 -3
  190. reflex/components/radix/themes/components/tooltip.py +10 -13
  191. reflex/components/radix/themes/components/tooltip.pyi +2 -3
  192. reflex/components/radix/themes/layout/__init__.py +1 -0
  193. reflex/components/radix/themes/layout/box.py +1 -0
  194. reflex/components/radix/themes/layout/container.py +1 -0
  195. reflex/components/radix/themes/layout/list.py +1 -0
  196. reflex/components/radix/themes/layout/list.pyi +1 -0
  197. reflex/components/radix/themes/layout/section.py +1 -0
  198. reflex/components/radix/themes/typography/__init__.py +1 -0
  199. reflex/components/radix/themes/typography/base.py +1 -0
  200. reflex/components/radix/themes/typography/blockquote.py +1 -0
  201. reflex/components/radix/themes/typography/code.py +1 -0
  202. reflex/components/radix/themes/typography/heading.py +1 -0
  203. reflex/components/radix/themes/typography/link.py +8 -3
  204. reflex/components/radix/themes/typography/link.pyi +2 -1
  205. reflex/components/react_player/audio.py +1 -0
  206. reflex/components/react_player/audio.pyi +48 -0
  207. reflex/components/react_player/react_player.py +49 -0
  208. reflex/components/react_player/react_player.pyi +49 -0
  209. reflex/components/react_player/video.py +1 -0
  210. reflex/components/react_player/video.pyi +48 -0
  211. reflex/components/recharts/__init__.py +1 -0
  212. reflex/components/recharts/cartesian.py +264 -74
  213. reflex/components/recharts/cartesian.pyi +573 -58
  214. reflex/components/recharts/charts.py +68 -78
  215. reflex/components/recharts/charts.pyi +373 -156
  216. reflex/components/recharts/general.py +52 -20
  217. reflex/components/recharts/general.pyi +52 -6
  218. reflex/components/recharts/polar.py +30 -18
  219. reflex/components/recharts/polar.pyi +66 -5
  220. reflex/components/recharts/recharts.py +5 -3
  221. reflex/components/recharts/recharts.pyi +2 -1
  222. reflex/components/sonner/toast.py +2 -2
  223. reflex/components/sonner/toast.pyi +1 -1
  224. reflex/components/suneditor/editor.py +39 -26
  225. reflex/components/suneditor/editor.pyi +4 -4
  226. reflex/components/tags/iter_tag.py +1 -0
  227. reflex/constants/__init__.py +3 -2
  228. reflex/constants/base.py +20 -21
  229. reflex/constants/compiler.py +3 -1
  230. reflex/constants/config.py +1 -0
  231. reflex/constants/event.py +1 -0
  232. reflex/constants/installer.py +3 -2
  233. reflex/constants/style.py +2 -8
  234. reflex/event.py +36 -6
  235. reflex/experimental/assets.py +1 -0
  236. reflex/experimental/client_state.py +9 -3
  237. reflex/experimental/hooks.py +1 -0
  238. reflex/experimental/misc.py +12 -3
  239. reflex/middleware/hydrate_middleware.py +1 -0
  240. reflex/middleware/middleware.py +1 -0
  241. reflex/state.py +38 -1
  242. reflex/style.py +67 -20
  243. reflex/testing.py +6 -2
  244. reflex/utils/build.py +76 -72
  245. reflex/utils/compat.py +5 -0
  246. reflex/utils/exec.py +17 -9
  247. reflex/utils/export.py +13 -9
  248. reflex/utils/imports.py +34 -5
  249. reflex/utils/lazy_loader.py +1 -0
  250. reflex/utils/path_ops.py +39 -33
  251. reflex/utils/prerequisites.py +38 -29
  252. reflex/utils/processes.py +1 -1
  253. reflex/utils/serializers.py +3 -6
  254. reflex/utils/watch.py +3 -1
  255. reflex/vars.py +26 -10
  256. reflex/vars.pyi +3 -3
  257. {reflex-0.5.4a2.dist-info → reflex-0.5.5.dist-info}/METADATA +3 -3
  258. {reflex-0.5.4a2.dist-info → reflex-0.5.5.dist-info}/RECORD +261 -261
  259. {reflex-0.5.4a2.dist-info → reflex-0.5.5.dist-info}/LICENSE +0 -0
  260. {reflex-0.5.4a2.dist-info → reflex-0.5.5.dist-info}/WHEEL +0 -0
  261. {reflex-0.5.4a2.dist-info → reflex-0.5.5.dist-info}/entry_points.txt +0 -0
@@ -7,7 +7,6 @@ from functools import lru_cache
7
7
  from hashlib import md5
8
8
  from typing import Any, Callable, Dict, Union
9
9
 
10
- from reflex.compiler import utils
11
10
  from reflex.components.component import Component, CustomComponent
12
11
  from reflex.components.radix.themes.layout.list import (
13
12
  ListItem,
@@ -18,8 +17,8 @@ from reflex.components.radix.themes.typography.heading import Heading
18
17
  from reflex.components.radix.themes.typography.link import Link
19
18
  from reflex.components.radix.themes.typography.text import Text
20
19
  from reflex.components.tags.tag import Tag
21
- from reflex.utils import imports, types
22
- from reflex.utils.imports import ImportVar
20
+ from reflex.utils import types
21
+ from reflex.utils.imports import ImportDict, ImportVar
23
22
  from reflex.vars import Var
24
23
 
25
24
  # Special vars used in the component map.
@@ -145,47 +144,41 @@ class Markdown(Component):
145
144
 
146
145
  return custom_components
147
146
 
148
- def _get_imports(self) -> imports.ImportDict:
149
- # Import here to avoid circular imports.
147
+ def add_imports(self) -> ImportDict | list[ImportDict]:
148
+ """Add imports for the markdown component.
149
+
150
+ Returns:
151
+ The imports for the markdown component.
152
+ """
150
153
  from reflex.components.datadisplay.code import CodeBlock
151
154
  from reflex.components.radix.themes.typography.code import Code
152
155
 
153
- imports = super()._get_imports()
154
-
155
- # Special markdown imports.
156
- imports.update(
156
+ return [
157
157
  {
158
- "": [ImportVar(tag="katex/dist/katex.min.css")],
159
- "remark-math@5.1.1": [
160
- ImportVar(tag=_REMARK_MATH._var_name, is_default=True)
161
- ],
162
- "remark-gfm@3.0.1": [
163
- ImportVar(tag=_REMARK_GFM._var_name, is_default=True)
164
- ],
165
- "remark-unwrap-images@4.0.0": [
166
- ImportVar(tag=_REMARK_UNWRAP_IMAGES._var_name, is_default=True)
167
- ],
168
- "rehype-katex@6.0.3": [
169
- ImportVar(tag=_REHYPE_KATEX._var_name, is_default=True)
170
- ],
171
- "rehype-raw@6.1.1": [
172
- ImportVar(tag=_REHYPE_RAW._var_name, is_default=True)
173
- ],
174
- }
175
- )
176
-
177
- # Get the imports for each component.
178
- for component in self.component_map.values():
179
- imports = utils.merge_imports(
180
- imports, component(_MOCK_ARG)._get_all_imports()
181
- )
182
-
183
- # Get the imports for the code components.
184
- imports = utils.merge_imports(
185
- imports, CodeBlock.create(theme="light")._get_imports()
186
- )
187
- imports = utils.merge_imports(imports, Code.create()._get_imports())
188
- return imports
158
+ "": "katex/dist/katex.min.css",
159
+ "remark-math@5.1.1": ImportVar(
160
+ tag=_REMARK_MATH._var_name, is_default=True
161
+ ),
162
+ "remark-gfm@3.0.1": ImportVar(
163
+ tag=_REMARK_GFM._var_name, is_default=True
164
+ ),
165
+ "remark-unwrap-images@4.0.0": ImportVar(
166
+ tag=_REMARK_UNWRAP_IMAGES._var_name, is_default=True
167
+ ),
168
+ "rehype-katex@6.0.3": ImportVar(
169
+ tag=_REHYPE_KATEX._var_name, is_default=True
170
+ ),
171
+ "rehype-raw@6.1.1": ImportVar(
172
+ tag=_REHYPE_RAW._var_name, is_default=True
173
+ ),
174
+ },
175
+ *[
176
+ component(_MOCK_ARG)._get_imports() # type: ignore
177
+ for component in self.component_map.values()
178
+ ],
179
+ CodeBlock.create(theme="light")._get_imports(), # type: ignore,
180
+ Code.create()._get_imports(), # type: ignore,
181
+ ]
189
182
 
190
183
  def get_component(self, tag: str, **props) -> Component:
191
184
  """Get the component for a tag and props.
@@ -249,7 +242,9 @@ class Markdown(Component):
249
242
  }
250
243
 
251
244
  # Separate out inline code and code blocks.
252
- components["code"] = f"""{{({{node, inline, className, {_CHILDREN._var_name}, {_PROPS._var_name}}}) => {{
245
+ components[
246
+ "code"
247
+ ] = f"""{{({{node, inline, className, {_CHILDREN._var_name}, {_PROPS._var_name}}}) => {{
253
248
  const match = (className || '').match(/language-(?<lang>.*)/);
254
249
  const language = match ? match[1] : '';
255
250
  if (language) {{
@@ -11,7 +11,6 @@ import textwrap
11
11
  from functools import lru_cache
12
12
  from hashlib import md5
13
13
  from typing import Any, Callable, Dict, Union
14
- from reflex.compiler import utils
15
14
  from reflex.components.component import Component, CustomComponent
16
15
  from reflex.components.radix.themes.layout.list import (
17
16
  ListItem,
@@ -22,8 +21,8 @@ from reflex.components.radix.themes.typography.heading import Heading
22
21
  from reflex.components.radix.themes.typography.link import Link
23
22
  from reflex.components.radix.themes.typography.text import Text
24
23
  from reflex.components.tags.tag import Tag
25
- from reflex.utils import imports, types
26
- from reflex.utils.imports import ImportVar
24
+ from reflex.utils import types
25
+ from reflex.utils.imports import ImportDict, ImportVar
27
26
  from reflex.vars import Var
28
27
 
29
28
  _CHILDREN = Var.create_safe("children", _var_is_local=False, _var_is_string=False)
@@ -124,6 +123,8 @@ class Markdown(Component):
124
123
  The markdown component.
125
124
  """
126
125
  ...
126
+
127
+ def add_imports(self) -> ImportDict | list[ImportDict]: ...
127
128
  def get_component(self, tag: str, **props) -> Component: ...
128
129
  def format_component(self, tag: str, **props) -> str: ...
129
130
  def format_component_map(self) -> dict[str, str]: ...
@@ -1,2 +1,3 @@
1
1
  """Shim for reflex.components.chakra.media.icon."""
2
+
2
3
  from reflex.components.chakra.media.icon import *
@@ -1,10 +1,11 @@
1
1
  """Moment component for humanized date rendering."""
2
2
 
3
- from typing import Any, Dict, List, Optional
3
+ from typing import List, Optional
4
4
 
5
5
  from reflex.base import Base
6
6
  from reflex.components.component import Component, NoSSRComponent
7
- from reflex.utils import imports
7
+ from reflex.event import EventHandler
8
+ from reflex.utils.imports import ImportDict
8
9
  from reflex.vars import Var
9
10
 
10
11
 
@@ -90,25 +91,18 @@ class Moment(NoSSRComponent):
90
91
  # Display the date in the given timezone.
91
92
  tz: Var[str]
92
93
 
93
- def _get_imports(self) -> imports.ImportDict:
94
- merged_imports = super()._get_imports()
95
- if self.tz is not None:
96
- merged_imports = imports.merge_imports(
97
- merged_imports,
98
- {"moment-timezone": {imports.ImportVar(tag="")}},
99
- )
100
- return merged_imports
94
+ # Fires when the date changes.
95
+ on_change: EventHandler[lambda date: [date]]
101
96
 
102
- def get_event_triggers(self) -> Dict[str, Any]:
103
- """Get the events triggers signatures for the component.
97
+ def add_imports(self) -> ImportDict:
98
+ """Add the imports for the Moment component.
104
99
 
105
100
  Returns:
106
- The signatures of the event triggers.
101
+ The import dict for the component.
107
102
  """
108
- return {
109
- **super().get_event_triggers(),
110
- "on_change": lambda date: [date],
111
- }
103
+ if self.tz is not None:
104
+ return {"moment-timezone": ""}
105
+ return {}
112
106
 
113
107
  @classmethod
114
108
  def create(cls, *children, **props) -> Component:
@@ -7,10 +7,11 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
  from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
- from typing import Any, Dict, List, Optional
10
+ from typing import List, Optional
11
11
  from reflex.base import Base
12
12
  from reflex.components.component import Component, NoSSRComponent
13
- from reflex.utils import imports
13
+ from reflex.event import EventHandler
14
+ from reflex.utils.imports import ImportDict
14
15
  from reflex.vars import Var
15
16
 
16
17
  class MomentDelta(Base):
@@ -25,7 +26,7 @@ class MomentDelta(Base):
25
26
  milliseconds: Optional[int]
26
27
 
27
28
  class Moment(NoSSRComponent):
28
- def get_event_triggers(self) -> Dict[str, Any]: ...
29
+ def add_imports(self) -> ImportDict: ...
29
30
  @overload
30
31
  @classmethod
31
32
  def create( # type: ignore
@@ -1,4 +1,5 @@
1
1
  """Base for NextJS components."""
2
+
2
3
  from reflex.components.component import Component
3
4
 
4
5
 
@@ -1,7 +1,8 @@
1
1
  """Image component from next/image."""
2
2
 
3
- from typing import Any, Dict, Literal, Optional, Union
3
+ from typing import Any, Literal, Optional, Union
4
4
 
5
+ from reflex.event import EventHandler
5
6
  from reflex.utils import types
6
7
  from reflex.vars import Var
7
8
 
@@ -54,17 +55,11 @@ class Image(NextComponent):
54
55
  # A Data URL to be used as a placeholder image before the src image successfully loads. Only takes effect when combined with placeholder="blur".
55
56
  blurDataURL: Var[str]
56
57
 
57
- def get_event_triggers(self) -> Dict[str, Any]:
58
- """The event triggers of the component.
58
+ # Fires when the image has loaded.
59
+ on_load: EventHandler[lambda: []]
59
60
 
60
- Returns:
61
- The dict describing the event triggers.
62
- """
63
- return {
64
- **super().get_event_triggers(),
65
- "on_load": lambda: [],
66
- "on_error": lambda: [],
67
- }
61
+ # Fires when the image has an error.
62
+ on_error: EventHandler[lambda: []]
68
63
 
69
64
  @classmethod
70
65
  def create(
@@ -7,13 +7,13 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
  from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
- from typing import Any, Dict, Literal, Optional, Union
10
+ from typing import Any, Literal, Optional, Union
11
+ from reflex.event import EventHandler
11
12
  from reflex.utils import types
12
13
  from reflex.vars import Var
13
14
  from .base import NextComponent
14
15
 
15
16
  class Image(NextComponent):
16
- def get_event_triggers(self) -> Dict[str, Any]: ...
17
17
  @overload
18
18
  @classmethod
19
19
  def create( # type: ignore
@@ -1,4 +1,5 @@
1
1
  """Component for displaying a plotly graph."""
2
+
2
3
  from __future__ import annotations
3
4
 
4
5
  from typing import Any, Dict, List
@@ -1,4 +1,5 @@
1
1
  """A class that holds props to be passed or applied to a component."""
2
+
2
3
  from __future__ import annotations
3
4
 
4
5
  from reflex.base import Base
@@ -1,4 +1,5 @@
1
1
  """Namespace for components provided by @radix-ui packages."""
2
+
2
3
  from __future__ import annotations
3
4
 
4
5
  from reflex import RADIX_MAPPING
@@ -1,4 +1,5 @@
1
1
  """Radix primitive components (https://www.radix-ui.com/primitives)."""
2
+
2
3
  from __future__ import annotations
3
4
 
4
5
  from reflex import RADIX_PRIMITIVES_MAPPING
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Dict, List, Literal, Optional, Union
5
+ from typing import Any, List, Literal, Optional, Union
6
6
 
7
7
  from reflex.components.component import Component, ComponentNamespace
8
8
  from reflex.components.core.colors import color
@@ -10,8 +10,8 @@ from reflex.components.core.cond import cond
10
10
  from reflex.components.lucide.icon import Icon
11
11
  from reflex.components.radix.primitives.base import RadixPrimitiveComponent
12
12
  from reflex.components.radix.themes.base import LiteralAccentColor, LiteralRadius
13
+ from reflex.event import EventHandler
13
14
  from reflex.style import Style
14
- from reflex.utils import imports
15
15
  from reflex.vars import Var, get_uuid_string_var
16
16
 
17
17
  LiteralAccordionType = Literal["single", "multiple"]
@@ -112,6 +112,9 @@ class AccordionRoot(AccordionComponent):
112
112
 
113
113
  _valid_children: List[str] = ["AccordionItem"]
114
114
 
115
+ # Fired when the opened the accordions changes.
116
+ on_value_change: EventHandler[lambda e0: [e0]]
117
+
115
118
  def _exclude_props(self) -> list[str]:
116
119
  return super()._exclude_props() + [
117
120
  "radius",
@@ -120,17 +123,6 @@ class AccordionRoot(AccordionComponent):
120
123
  "show_dividers",
121
124
  ]
122
125
 
123
- def get_event_triggers(self) -> Dict[str, Any]:
124
- """Get the events triggers signatures for the component.
125
-
126
- Returns:
127
- The signatures of the event triggers.
128
- """
129
- return {
130
- **super().get_event_triggers(),
131
- "on_value_change": lambda e0: [e0],
132
- }
133
-
134
126
  def add_style(self):
135
127
  """Add style to the component.
136
128
 
@@ -413,13 +405,13 @@ class AccordionContent(AccordionComponent):
413
405
 
414
406
  alias = "RadixAccordionContent"
415
407
 
416
- def add_imports(self) -> imports.ImportDict:
408
+ def add_imports(self) -> dict:
417
409
  """Add imports to the component.
418
410
 
419
411
  Returns:
420
412
  The imports of the component.
421
413
  """
422
- return {"@emotion/react": [imports.ImportVar(tag="keyframes")]}
414
+ return {"@emotion/react": "keyframes"}
423
415
 
424
416
  @classmethod
425
417
  def create(cls, *children, **props) -> Component:
@@ -7,15 +7,15 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
  from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
- from typing import Any, Dict, List, Literal, Optional, Union
10
+ from typing import Any, List, Literal, Optional, Union
11
11
  from reflex.components.component import Component, ComponentNamespace
12
12
  from reflex.components.core.colors import color
13
13
  from reflex.components.core.cond import cond
14
14
  from reflex.components.lucide.icon import Icon
15
15
  from reflex.components.radix.primitives.base import RadixPrimitiveComponent
16
16
  from reflex.components.radix.themes.base import LiteralAccentColor, LiteralRadius
17
+ from reflex.event import EventHandler
17
18
  from reflex.style import Style
18
- from reflex.utils import imports
19
19
  from reflex.vars import Var, get_uuid_string_var
20
20
 
21
21
  LiteralAccordionType = Literal["single", "multiple"]
@@ -175,7 +175,6 @@ class AccordionComponent(RadixPrimitiveComponent):
175
175
  ...
176
176
 
177
177
  class AccordionRoot(AccordionComponent):
178
- def get_event_triggers(self) -> Dict[str, Any]: ...
179
178
  def add_style(self): ...
180
179
  @overload
181
180
  @classmethod
@@ -520,6 +519,7 @@ class AccordionItem(AccordionComponent):
520
519
  The accordion item.
521
520
  """
522
521
  ...
522
+
523
523
  def add_style(self) -> dict[str, Any] | None: ...
524
524
 
525
525
  class AccordionHeader(AccordionComponent):
@@ -669,6 +669,7 @@ class AccordionHeader(AccordionComponent):
669
669
  The Accordion header Component.
670
670
  """
671
671
  ...
672
+
672
673
  def add_style(self) -> dict[str, Any] | None: ...
673
674
 
674
675
  class AccordionTrigger(AccordionComponent):
@@ -818,6 +819,7 @@ class AccordionTrigger(AccordionComponent):
818
819
  The Accordion trigger Component.
819
820
  """
820
821
  ...
822
+
821
823
  def add_style(self) -> dict[str, Any] | None: ...
822
824
 
823
825
  class AccordionIcon(Icon):
@@ -899,7 +901,7 @@ class AccordionIcon(Icon):
899
901
  ...
900
902
 
901
903
  class AccordionContent(AccordionComponent):
902
- def add_imports(self) -> imports.ImportDict: ...
904
+ def add_imports(self) -> dict: ...
903
905
  @overload
904
906
  @classmethod
905
907
  def create( # type: ignore
@@ -1046,6 +1048,7 @@ class AccordionContent(AccordionComponent):
1046
1048
  The Accordion content Component.
1047
1049
  """
1048
1050
  ...
1051
+
1049
1052
  def add_custom_code(self) -> list[str]: ...
1050
1053
  def add_style(self) -> dict[str, Any] | None: ...
1051
1054
 
@@ -1,4 +1,5 @@
1
1
  """The base component for Radix primitives."""
2
+
2
3
  from typing import List
3
4
 
4
5
  from reflex.components.component import Component
@@ -4,13 +4,13 @@
4
4
  # Style based on https://ui.shadcn.com/docs/components/drawer
5
5
  from __future__ import annotations
6
6
 
7
- from typing import Any, Dict, List, Literal, Optional, Union
7
+ from typing import Any, List, Literal, Optional, Union
8
8
 
9
9
  from reflex.components.component import Component, ComponentNamespace
10
10
  from reflex.components.radix.primitives.base import RadixPrimitiveComponent
11
11
  from reflex.components.radix.themes.base import Theme
12
12
  from reflex.components.radix.themes.layout.flex import Flex
13
- from reflex.constants import EventTriggers
13
+ from reflex.event import EventHandler
14
14
  from reflex.vars import Var
15
15
 
16
16
 
@@ -59,16 +59,8 @@ class DrawerRoot(DrawerComponent):
59
59
  # When `True`, it prevents scroll restoration. Defaults to `True`.
60
60
  preventScrollRestoration: Var[bool]
61
61
 
62
- def get_event_triggers(self) -> Dict[str, Any]:
63
- """Get the event triggers that pass the component's value to the handler.
64
-
65
- Returns:
66
- A dict mapping the event trigger to the var that is passed to the handler.
67
- """
68
- return {
69
- **super().get_event_triggers(),
70
- EventTriggers.ON_OPEN_CHANGE: lambda e0: [e0],
71
- }
62
+ # Fires when the drawer is opened.
63
+ on_open_change: EventHandler[lambda e0: [e0]]
72
64
 
73
65
 
74
66
  class DrawerTrigger(DrawerComponent):
@@ -135,22 +127,20 @@ class DrawerContent(DrawerComponent):
135
127
  base_style.update(style)
136
128
  return {"css": base_style}
137
129
 
138
- def get_event_triggers(self) -> Dict[str, Any]:
139
- """Get the events triggers signatures for the component.
130
+ # Fired when the drawer content is opened.
131
+ on_open_auto_focus: EventHandler[lambda e0: [e0.target.value]]
140
132
 
141
- Returns:
142
- The signatures of the event triggers.
143
- """
144
- return {
145
- **super().get_event_triggers(),
146
- # DrawerContent is based on Radix DialogContent
147
- # These are the same triggers as DialogContent
148
- EventTriggers.ON_OPEN_AUTO_FOCUS: lambda e0: [e0.target.value],
149
- EventTriggers.ON_CLOSE_AUTO_FOCUS: lambda e0: [e0.target.value],
150
- EventTriggers.ON_ESCAPE_KEY_DOWN: lambda e0: [e0.target.value],
151
- EventTriggers.ON_POINTER_DOWN_OUTSIDE: lambda e0: [e0.target.value],
152
- EventTriggers.ON_INTERACT_OUTSIDE: lambda e0: [e0.target.value],
153
- }
133
+ # Fired when the drawer content is closed.
134
+ on_close_auto_focus: EventHandler[lambda e0: [e0.target.value]]
135
+
136
+ # Fired when the escape key is pressed.
137
+ on_escape_key_down: EventHandler[lambda e0: [e0.target.value]]
138
+
139
+ # Fired when the pointer is down outside the drawer content.
140
+ on_pointer_down_outside: EventHandler[lambda e0: [e0.target.value]]
141
+
142
+ # Fired when interacting outside the drawer content.
143
+ on_interact_outside: EventHandler[lambda e0: [e0.target.value]]
154
144
 
155
145
  @classmethod
156
146
  def create(cls, *children, **props):
@@ -7,12 +7,12 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
  from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
- from typing import Any, Dict, List, Literal, Optional, Union
10
+ from typing import Any, List, Literal, Optional, Union
11
11
  from reflex.components.component import Component, ComponentNamespace
12
12
  from reflex.components.radix.primitives.base import RadixPrimitiveComponent
13
13
  from reflex.components.radix.themes.base import Theme
14
14
  from reflex.components.radix.themes.layout.flex import Flex
15
- from reflex.constants import EventTriggers
15
+ from reflex.event import EventHandler
16
16
  from reflex.vars import Var
17
17
 
18
18
  class DrawerComponent(RadixPrimitiveComponent):
@@ -96,7 +96,6 @@ class DrawerComponent(RadixPrimitiveComponent):
96
96
  LiteralDirectionType = Literal["top", "bottom", "left", "right"]
97
97
 
98
98
  class DrawerRoot(DrawerComponent):
99
- def get_event_triggers(self) -> Dict[str, Any]: ...
100
99
  @overload
101
100
  @classmethod
102
101
  def create( # type: ignore
@@ -350,7 +349,6 @@ class DrawerPortal(DrawerComponent):
350
349
  ...
351
350
 
352
351
  class DrawerContent(DrawerComponent):
353
- def get_event_triggers(self) -> Dict[str, Any]: ...
354
352
  @overload
355
353
  @classmethod
356
354
  def create( # type: ignore
@@ -2,12 +2,12 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Dict, Literal
5
+ from typing import Any, Literal
6
6
 
7
7
  from reflex.components.component import ComponentNamespace
8
8
  from reflex.components.el.elements.forms import Form as HTMLForm
9
9
  from reflex.components.radix.themes.components.text_field import TextFieldRoot
10
- from reflex.constants.event import EventTriggers
10
+ from reflex.event import EventHandler
11
11
  from reflex.vars import Var
12
12
 
13
13
  from .base import RadixPrimitiveComponentWithClassName
@@ -26,16 +26,8 @@ class FormRoot(FormComponent, HTMLForm):
26
26
 
27
27
  alias = "RadixFormRoot"
28
28
 
29
- def get_event_triggers(self) -> Dict[str, Any]:
30
- """Event triggers for radix form root.
31
-
32
- Returns:
33
- The triggers for event supported by Root.
34
- """
35
- return {
36
- **super().get_event_triggers(),
37
- EventTriggers.ON_CLEAR_SERVER_ERRORS: lambda: [],
38
- }
29
+ # Fired when the errors are cleared.
30
+ on_clear_server_errors: EventHandler[lambda: []]
39
31
 
40
32
  def add_style(self) -> dict[str, Any] | None:
41
33
  """Add style to the component.
@@ -7,11 +7,11 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
  from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
- from typing import Any, Dict, Literal
10
+ from typing import Any, Literal
11
11
  from reflex.components.component import ComponentNamespace
12
12
  from reflex.components.el.elements.forms import Form as HTMLForm
13
13
  from reflex.components.radix.themes.components.text_field import TextFieldRoot
14
- from reflex.constants.event import EventTriggers
14
+ from reflex.event import EventHandler
15
15
  from reflex.vars import Var
16
16
  from .base import RadixPrimitiveComponentWithClassName
17
17
 
@@ -94,7 +94,6 @@ class FormComponent(RadixPrimitiveComponentWithClassName):
94
94
  ...
95
95
 
96
96
  class FormRoot(FormComponent, HTMLForm):
97
- def get_event_triggers(self) -> Dict[str, Any]: ...
98
97
  def add_style(self) -> dict[str, Any] | None: ...
99
98
  @overload
100
99
  @classmethod
@@ -2,10 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Dict, List, Literal
5
+ from typing import Any, List, Literal
6
6
 
7
7
  from reflex.components.component import Component, ComponentNamespace
8
8
  from reflex.components.radix.primitives.base import RadixPrimitiveComponentWithClassName
9
+ from reflex.event import EventHandler
9
10
  from reflex.vars import Var
10
11
 
11
12
  LiteralSliderOrientation = Literal["horizontal", "vertical"]
@@ -46,17 +47,11 @@ class SliderRoot(SliderComponent):
46
47
 
47
48
  min_steps_between_thumbs: Var[int]
48
49
 
49
- def get_event_triggers(self) -> Dict[str, Any]:
50
- """Event triggers for radix slider primitive.
50
+ # Fired when the value of a thumb changes.
51
+ on_value_change: EventHandler[lambda e0: [e0]]
51
52
 
52
- Returns:
53
- The triggers for event supported by radix primitives.
54
- """
55
- return {
56
- **super().get_event_triggers(),
57
- "on_value_change": lambda e0: [e0], # trigger for all change of a thumb
58
- "on_value_commit": lambda e0: [e0], # trigger when thumb is released
59
- }
53
+ # Fired when a thumb is released.
54
+ on_value_commit: EventHandler[lambda e0: [e0]]
60
55
 
61
56
  def add_style(self) -> dict[str, Any] | None:
62
57
  """Add style to the component.
@@ -7,9 +7,10 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
  from reflex.vars import Var, BaseVar, ComputedVar
8
8
  from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
- from typing import Any, Dict, List, Literal
10
+ from typing import Any, List, Literal
11
11
  from reflex.components.component import Component, ComponentNamespace
12
12
  from reflex.components.radix.primitives.base import RadixPrimitiveComponentWithClassName
13
+ from reflex.event import EventHandler
13
14
  from reflex.vars import Var
14
15
 
15
16
  LiteralSliderOrientation = Literal["horizontal", "vertical"]
@@ -94,7 +95,6 @@ class SliderComponent(RadixPrimitiveComponentWithClassName):
94
95
  ...
95
96
 
96
97
  class SliderRoot(SliderComponent):
97
- def get_event_triggers(self) -> Dict[str, Any]: ...
98
98
  def add_style(self) -> dict[str, Any] | None: ...
99
99
  @overload
100
100
  @classmethod
@@ -1,4 +1,5 @@
1
1
  """Namespace for components provided by the @radix-ui/themes library."""
2
+
2
3
  from __future__ import annotations
3
4
 
4
5
  from reflex.utils import lazy_loader