reflex 0.7.14a6__py3-none-any.whl → 0.8.0a2__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 (211) hide show
  1. reflex/.templates/jinja/app/rxconfig.py.jinja2 +4 -1
  2. reflex/.templates/jinja/web/package.json.jinja2 +1 -1
  3. reflex/.templates/jinja/web/pages/_app.js.jinja2 +16 -10
  4. reflex/.templates/jinja/web/pages/_document.js.jinja2 +1 -1
  5. reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -1
  6. reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +4 -0
  7. reflex/.templates/jinja/web/utils/context.js.jinja2 +25 -8
  8. reflex/.templates/web/app/entry.client.js +8 -0
  9. reflex/.templates/web/app/routes.js +10 -0
  10. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +12 -37
  11. reflex/.templates/web/postcss.config.js +1 -1
  12. reflex/.templates/web/react-router.config.js +6 -0
  13. reflex/.templates/web/utils/client_side_routing.js +21 -19
  14. reflex/.templates/web/utils/react-theme.js +92 -0
  15. reflex/.templates/web/utils/state.js +160 -67
  16. reflex/.templates/web/vite.config.js +32 -0
  17. reflex/__init__.py +1 -6
  18. reflex/__init__.pyi +0 -4
  19. reflex/app.py +53 -116
  20. reflex/base.py +1 -87
  21. reflex/compiler/compiler.py +41 -8
  22. reflex/compiler/templates.py +3 -3
  23. reflex/compiler/utils.py +73 -33
  24. reflex/components/__init__.py +0 -2
  25. reflex/components/__init__.pyi +0 -3
  26. reflex/components/base/__init__.py +1 -5
  27. reflex/components/base/__init__.pyi +4 -6
  28. reflex/components/base/app_wrap.pyi +5 -4
  29. reflex/components/base/body.pyi +5 -4
  30. reflex/components/base/document.py +18 -14
  31. reflex/components/base/document.pyi +83 -27
  32. reflex/components/base/error_boundary.pyi +5 -4
  33. reflex/components/base/fragment.pyi +5 -4
  34. reflex/components/base/link.pyi +9 -7
  35. reflex/components/base/meta.pyi +17 -13
  36. reflex/components/base/script.py +60 -58
  37. reflex/components/base/script.pyi +246 -31
  38. reflex/components/base/strict_mode.pyi +5 -4
  39. reflex/components/component.py +146 -217
  40. reflex/components/core/__init__.py +1 -0
  41. reflex/components/core/__init__.pyi +1 -0
  42. reflex/components/core/auto_scroll.pyi +5 -4
  43. reflex/components/core/banner.pyi +25 -19
  44. reflex/components/core/client_side_routing.py +7 -6
  45. reflex/components/core/client_side_routing.pyi +6 -56
  46. reflex/components/core/clipboard.pyi +5 -4
  47. reflex/components/core/debounce.py +1 -0
  48. reflex/components/core/debounce.pyi +5 -4
  49. reflex/components/core/foreach.py +3 -2
  50. reflex/components/core/helmet.py +14 -0
  51. reflex/components/{next/base.pyi → core/helmet.pyi} +10 -7
  52. reflex/components/core/html.pyi +5 -4
  53. reflex/components/core/sticky.pyi +17 -13
  54. reflex/components/core/upload.py +2 -1
  55. reflex/components/core/upload.pyi +21 -16
  56. reflex/components/datadisplay/code.py +2 -72
  57. reflex/components/datadisplay/code.pyi +9 -10
  58. reflex/components/datadisplay/dataeditor.pyi +11 -6
  59. reflex/components/datadisplay/shiki_code_block.pyi +13 -10
  60. reflex/components/dynamic.py +5 -5
  61. reflex/components/el/element.pyi +5 -4
  62. reflex/components/el/elements/base.pyi +5 -4
  63. reflex/components/el/elements/forms.pyi +69 -52
  64. reflex/components/el/elements/inline.pyi +113 -85
  65. reflex/components/el/elements/media.pyi +105 -79
  66. reflex/components/el/elements/metadata.pyi +25 -19
  67. reflex/components/el/elements/other.pyi +29 -22
  68. reflex/components/el/elements/scripts.pyi +13 -10
  69. reflex/components/el/elements/sectioning.pyi +61 -46
  70. reflex/components/el/elements/tables.pyi +41 -31
  71. reflex/components/el/elements/typography.pyi +61 -46
  72. reflex/components/field.py +175 -0
  73. reflex/components/gridjs/datatable.py +2 -2
  74. reflex/components/gridjs/datatable.pyi +11 -9
  75. reflex/components/lucide/icon.py +6 -2
  76. reflex/components/lucide/icon.pyi +15 -10
  77. reflex/components/markdown/markdown.pyi +5 -4
  78. reflex/components/moment/moment.pyi +5 -4
  79. reflex/components/plotly/plotly.pyi +19 -10
  80. reflex/components/props.py +376 -27
  81. reflex/components/radix/primitives/accordion.py +8 -1
  82. reflex/components/radix/primitives/accordion.pyi +29 -22
  83. reflex/components/radix/primitives/base.pyi +9 -7
  84. reflex/components/radix/primitives/drawer.pyi +45 -34
  85. reflex/components/radix/primitives/form.pyi +41 -31
  86. reflex/components/radix/primitives/progress.pyi +21 -16
  87. reflex/components/radix/primitives/slider.pyi +21 -16
  88. reflex/components/radix/themes/base.py +3 -3
  89. reflex/components/radix/themes/base.pyi +33 -25
  90. reflex/components/radix/themes/color_mode.pyi +13 -10
  91. reflex/components/radix/themes/components/alert_dialog.pyi +29 -22
  92. reflex/components/radix/themes/components/aspect_ratio.pyi +5 -4
  93. reflex/components/radix/themes/components/avatar.pyi +5 -4
  94. reflex/components/radix/themes/components/badge.pyi +5 -4
  95. reflex/components/radix/themes/components/button.pyi +5 -4
  96. reflex/components/radix/themes/components/callout.pyi +21 -16
  97. reflex/components/radix/themes/components/card.pyi +5 -4
  98. reflex/components/radix/themes/components/checkbox.pyi +13 -10
  99. reflex/components/radix/themes/components/checkbox_cards.pyi +9 -7
  100. reflex/components/radix/themes/components/checkbox_group.pyi +9 -7
  101. reflex/components/radix/themes/components/context_menu.pyi +53 -40
  102. reflex/components/radix/themes/components/data_list.pyi +17 -13
  103. reflex/components/radix/themes/components/dialog.pyi +29 -22
  104. reflex/components/radix/themes/components/dropdown_menu.pyi +33 -25
  105. reflex/components/radix/themes/components/hover_card.pyi +17 -13
  106. reflex/components/radix/themes/components/icon_button.pyi +5 -4
  107. reflex/components/radix/themes/components/inset.pyi +5 -4
  108. reflex/components/radix/themes/components/popover.pyi +17 -13
  109. reflex/components/radix/themes/components/progress.pyi +5 -4
  110. reflex/components/radix/themes/components/radio.pyi +5 -4
  111. reflex/components/radix/themes/components/radio_cards.pyi +9 -7
  112. reflex/components/radix/themes/components/radio_group.pyi +17 -13
  113. reflex/components/radix/themes/components/scroll_area.pyi +5 -4
  114. reflex/components/radix/themes/components/segmented_control.pyi +9 -7
  115. reflex/components/radix/themes/components/select.pyi +37 -28
  116. reflex/components/radix/themes/components/separator.pyi +5 -4
  117. reflex/components/radix/themes/components/skeleton.pyi +5 -4
  118. reflex/components/radix/themes/components/slider.pyi +5 -4
  119. reflex/components/radix/themes/components/spinner.pyi +5 -4
  120. reflex/components/radix/themes/components/switch.pyi +5 -4
  121. reflex/components/radix/themes/components/table.pyi +29 -22
  122. reflex/components/radix/themes/components/tabs.pyi +21 -16
  123. reflex/components/radix/themes/components/text_area.pyi +5 -4
  124. reflex/components/radix/themes/components/text_field.pyi +13 -10
  125. reflex/components/radix/themes/components/tooltip.pyi +5 -4
  126. reflex/components/radix/themes/layout/base.pyi +5 -4
  127. reflex/components/radix/themes/layout/box.pyi +5 -4
  128. reflex/components/radix/themes/layout/center.pyi +5 -4
  129. reflex/components/radix/themes/layout/container.pyi +5 -4
  130. reflex/components/radix/themes/layout/flex.pyi +5 -4
  131. reflex/components/radix/themes/layout/grid.pyi +5 -4
  132. reflex/components/radix/themes/layout/list.pyi +21 -16
  133. reflex/components/radix/themes/layout/section.pyi +5 -4
  134. reflex/components/radix/themes/layout/spacer.pyi +5 -4
  135. reflex/components/radix/themes/layout/stack.pyi +13 -10
  136. reflex/components/radix/themes/typography/blockquote.pyi +5 -4
  137. reflex/components/radix/themes/typography/code.pyi +5 -4
  138. reflex/components/radix/themes/typography/heading.pyi +5 -4
  139. reflex/components/radix/themes/typography/link.py +46 -11
  140. reflex/components/radix/themes/typography/link.pyi +311 -6
  141. reflex/components/radix/themes/typography/text.pyi +29 -22
  142. reflex/components/react_player/audio.pyi +5 -4
  143. reflex/components/react_player/react_player.pyi +5 -4
  144. reflex/components/react_player/video.pyi +5 -4
  145. reflex/components/recharts/cartesian.py +2 -1
  146. reflex/components/recharts/cartesian.pyi +65 -46
  147. reflex/components/recharts/charts.py +4 -2
  148. reflex/components/recharts/charts.pyi +36 -24
  149. reflex/components/recharts/general.pyi +24 -18
  150. reflex/components/recharts/polar.py +8 -4
  151. reflex/components/recharts/polar.pyi +16 -10
  152. reflex/components/recharts/recharts.pyi +9 -7
  153. reflex/components/sonner/toast.py +2 -2
  154. reflex/components/sonner/toast.pyi +10 -8
  155. reflex/config.py +3 -77
  156. reflex/constants/__init__.py +2 -2
  157. reflex/constants/base.py +28 -11
  158. reflex/constants/compiler.py +5 -3
  159. reflex/constants/event.py +1 -0
  160. reflex/constants/installer.py +22 -16
  161. reflex/constants/route.py +19 -7
  162. reflex/constants/state.py +2 -0
  163. reflex/custom_components/custom_components.py +0 -14
  164. reflex/environment.py +1 -1
  165. reflex/event.py +178 -81
  166. reflex/experimental/__init__.py +0 -30
  167. reflex/istate/proxy.py +5 -3
  168. reflex/page.py +0 -27
  169. reflex/plugins/__init__.py +3 -2
  170. reflex/plugins/base.py +5 -1
  171. reflex/plugins/shared_tailwind.py +158 -0
  172. reflex/plugins/sitemap.py +206 -0
  173. reflex/plugins/tailwind_v3.py +13 -106
  174. reflex/plugins/tailwind_v4.py +15 -108
  175. reflex/reflex.py +1 -0
  176. reflex/route.py +15 -21
  177. reflex/state.py +134 -140
  178. reflex/testing.py +58 -10
  179. reflex/utils/build.py +38 -82
  180. reflex/utils/exec.py +59 -161
  181. reflex/utils/export.py +2 -2
  182. reflex/utils/imports.py +0 -4
  183. reflex/utils/misc.py +28 -0
  184. reflex/utils/prerequisites.py +65 -62
  185. reflex/utils/processes.py +8 -7
  186. reflex/utils/pyi_generator.py +21 -9
  187. reflex/utils/serializers.py +14 -1
  188. reflex/utils/types.py +196 -61
  189. reflex/vars/__init__.py +2 -0
  190. reflex/vars/base.py +367 -134
  191. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/METADATA +12 -5
  192. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/RECORD +195 -202
  193. reflex/.templates/web/next.config.js +0 -7
  194. reflex/components/base/head.py +0 -20
  195. reflex/components/base/head.pyi +0 -116
  196. reflex/components/next/__init__.py +0 -10
  197. reflex/components/next/base.py +0 -7
  198. reflex/components/next/image.py +0 -117
  199. reflex/components/next/image.pyi +0 -94
  200. reflex/components/next/link.py +0 -20
  201. reflex/components/next/link.pyi +0 -67
  202. reflex/components/next/video.py +0 -38
  203. reflex/components/next/video.pyi +0 -68
  204. reflex/components/suneditor/__init__.py +0 -5
  205. reflex/components/suneditor/editor.py +0 -269
  206. reflex/components/suneditor/editor.pyi +0 -199
  207. reflex/experimental/layout.py +0 -254
  208. reflex/experimental/layout.pyi +0 -814
  209. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/WHEEL +0 -0
  210. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/entry_points.txt +0 -0
  211. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/licenses/LICENSE +0 -0
@@ -12,7 +12,7 @@ from reflex.components.core.breakpoints import Breakpoints
12
12
  from reflex.components.el.elements.typography import Div
13
13
  from reflex.components.lucide.icon import Icon
14
14
  from reflex.constants.compiler import CompileVars
15
- from reflex.event import EventType
15
+ from reflex.event import EventType, PointerEventInfo
16
16
  from reflex.utils.imports import ImportVar
17
17
  from reflex.vars import VarData
18
18
  from reflex.vars.base import Var
@@ -61,9 +61,9 @@ class ConnectionToaster(Fragment):
61
61
  autofocus: bool | None = None,
62
62
  custom_attrs: dict[str, Var | Any] | None = None,
63
63
  on_blur: EventType[()] | None = None,
64
- on_click: EventType[()] | None = None,
65
- on_context_menu: EventType[()] | None = None,
66
- on_double_click: EventType[()] | None = None,
64
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
65
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
66
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
67
67
  on_focus: EventType[()] | None = None,
68
68
  on_mount: EventType[()] | None = None,
69
69
  on_mouse_down: EventType[()] | None = None,
@@ -74,6 +74,7 @@ class ConnectionToaster(Fragment):
74
74
  on_mouse_over: EventType[()] | None = None,
75
75
  on_mouse_up: EventType[()] | None = None,
76
76
  on_scroll: EventType[()] | None = None,
77
+ on_scroll_end: EventType[()] | None = None,
77
78
  on_unmount: EventType[()] | None = None,
78
79
  **props,
79
80
  ) -> ConnectionToaster:
@@ -112,9 +113,9 @@ class ConnectionBanner(Component):
112
113
  autofocus: bool | None = None,
113
114
  custom_attrs: dict[str, Var | Any] | None = None,
114
115
  on_blur: EventType[()] | None = None,
115
- on_click: EventType[()] | None = None,
116
- on_context_menu: EventType[()] | None = None,
117
- on_double_click: EventType[()] | None = None,
116
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
117
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
118
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
118
119
  on_focus: EventType[()] | None = None,
119
120
  on_mount: EventType[()] | None = None,
120
121
  on_mouse_down: EventType[()] | None = None,
@@ -125,6 +126,7 @@ class ConnectionBanner(Component):
125
126
  on_mouse_over: EventType[()] | None = None,
126
127
  on_mouse_up: EventType[()] | None = None,
127
128
  on_scroll: EventType[()] | None = None,
129
+ on_scroll_end: EventType[()] | None = None,
128
130
  on_unmount: EventType[()] | None = None,
129
131
  **props,
130
132
  ) -> ConnectionBanner:
@@ -155,9 +157,9 @@ class ConnectionModal(Component):
155
157
  autofocus: bool | None = None,
156
158
  custom_attrs: dict[str, Var | Any] | None = None,
157
159
  on_blur: EventType[()] | None = None,
158
- on_click: EventType[()] | None = None,
159
- on_context_menu: EventType[()] | None = None,
160
- on_double_click: EventType[()] | None = None,
160
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
161
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
162
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
161
163
  on_focus: EventType[()] | None = None,
162
164
  on_mount: EventType[()] | None = None,
163
165
  on_mouse_down: EventType[()] | None = None,
@@ -168,6 +170,7 @@ class ConnectionModal(Component):
168
170
  on_mouse_over: EventType[()] | None = None,
169
171
  on_mouse_up: EventType[()] | None = None,
170
172
  on_scroll: EventType[()] | None = None,
173
+ on_scroll_end: EventType[()] | None = None,
171
174
  on_unmount: EventType[()] | None = None,
172
175
  **props,
173
176
  ) -> ConnectionModal:
@@ -199,9 +202,9 @@ class WifiOffPulse(Icon):
199
202
  autofocus: bool | None = None,
200
203
  custom_attrs: dict[str, Var | Any] | None = None,
201
204
  on_blur: EventType[()] | None = None,
202
- on_click: EventType[()] | None = None,
203
- on_context_menu: EventType[()] | None = None,
204
- on_double_click: EventType[()] | None = None,
205
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
206
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
207
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
205
208
  on_focus: EventType[()] | None = None,
206
209
  on_mount: EventType[()] | None = None,
207
210
  on_mouse_down: EventType[()] | None = None,
@@ -212,6 +215,7 @@ class WifiOffPulse(Icon):
212
215
  on_mouse_over: EventType[()] | None = None,
213
216
  on_mouse_up: EventType[()] | None = None,
214
217
  on_scroll: EventType[()] | None = None,
218
+ on_scroll_end: EventType[()] | None = None,
215
219
  on_unmount: EventType[()] | None = None,
216
220
  **props,
217
221
  ) -> WifiOffPulse:
@@ -431,9 +435,9 @@ class ConnectionPulser(Div):
431
435
  autofocus: bool | None = None,
432
436
  custom_attrs: dict[str, Var | Any] | None = None,
433
437
  on_blur: EventType[()] | None = None,
434
- on_click: EventType[()] | None = None,
435
- on_context_menu: EventType[()] | None = None,
436
- on_double_click: EventType[()] | None = None,
438
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
439
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
440
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
437
441
  on_focus: EventType[()] | None = None,
438
442
  on_mount: EventType[()] | None = None,
439
443
  on_mouse_down: EventType[()] | None = None,
@@ -444,6 +448,7 @@ class ConnectionPulser(Div):
444
448
  on_mouse_over: EventType[()] | None = None,
445
449
  on_mouse_up: EventType[()] | None = None,
446
450
  on_scroll: EventType[()] | None = None,
451
+ on_scroll_end: EventType[()] | None = None,
447
452
  on_unmount: EventType[()] | None = None,
448
453
  **props,
449
454
  ) -> ConnectionPulser:
@@ -675,9 +680,9 @@ class BackendDisabled(Div):
675
680
  autofocus: bool | None = None,
676
681
  custom_attrs: dict[str, Var | Any] | None = None,
677
682
  on_blur: EventType[()] | None = None,
678
- on_click: EventType[()] | None = None,
679
- on_context_menu: EventType[()] | None = None,
680
- on_double_click: EventType[()] | None = None,
683
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
684
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
685
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
681
686
  on_focus: EventType[()] | None = None,
682
687
  on_mount: EventType[()] | None = None,
683
688
  on_mouse_down: EventType[()] | None = None,
@@ -688,6 +693,7 @@ class BackendDisabled(Div):
688
693
  on_mouse_over: EventType[()] | None = None,
689
694
  on_mouse_up: EventType[()] | None = None,
690
695
  on_scroll: EventType[()] | None = None,
696
+ on_scroll_end: EventType[()] | None = None,
691
697
  on_unmount: EventType[()] | None = None,
692
698
  **props,
693
699
  ) -> BackendDisabled:
@@ -59,11 +59,12 @@ def wait_for_client_redirect(component: Component) -> Component:
59
59
  )
60
60
 
61
61
 
62
- class Default404Page(Component):
63
- """The NextJS default 404 page."""
62
+ def default_404_page() -> Component:
63
+ """Render the default 404 page.
64
64
 
65
- library = "next/error"
66
- tag = "Error"
67
- is_default = True
65
+ Returns:
66
+ The 404 page component.
67
+ """
68
+ import reflex as rx
68
69
 
69
- status_code: Var[int] = Var.create(404)
70
+ return rx.el.span("404: Page not found")
@@ -8,7 +8,7 @@ from typing import Any, overload
8
8
 
9
9
  from reflex.components.component import Component
10
10
  from reflex.components.core.breakpoints import Breakpoints
11
- from reflex.event import EventType
11
+ from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
14
  route_not_found: Var
@@ -33,9 +33,9 @@ class ClientSideRouting(Component):
33
33
  autofocus: bool | None = None,
34
34
  custom_attrs: dict[str, Var | Any] | None = None,
35
35
  on_blur: EventType[()] | None = None,
36
- on_click: EventType[()] | None = None,
37
- on_context_menu: EventType[()] | None = None,
38
- on_double_click: EventType[()] | None = None,
36
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
37
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
38
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
39
39
  on_focus: EventType[()] | None = None,
40
40
  on_mount: EventType[()] | None = None,
41
41
  on_mouse_down: EventType[()] | None = None,
@@ -46,6 +46,7 @@ class ClientSideRouting(Component):
46
46
  on_mouse_over: EventType[()] | None = None,
47
47
  on_mouse_up: EventType[()] | None = None,
48
48
  on_scroll: EventType[()] | None = None,
49
+ on_scroll_end: EventType[()] | None = None,
49
50
  on_unmount: EventType[()] | None = None,
50
51
  **props,
51
52
  ) -> ClientSideRouting:
@@ -67,55 +68,4 @@ class ClientSideRouting(Component):
67
68
  """
68
69
 
69
70
  def wait_for_client_redirect(component: Component) -> Component: ...
70
-
71
- class Default404Page(Component):
72
- @overload
73
- @classmethod
74
- def create( # type: ignore
75
- cls,
76
- *children,
77
- status_code: Var[int] | int | None = None,
78
- style: Sequence[Mapping[str, Any]]
79
- | Mapping[str, Any]
80
- | Var[Mapping[str, Any]]
81
- | Breakpoints
82
- | None = None,
83
- key: Any | None = None,
84
- id: Any | None = None,
85
- ref: Var | None = None,
86
- class_name: Any | None = None,
87
- autofocus: bool | None = None,
88
- custom_attrs: dict[str, Var | Any] | None = None,
89
- on_blur: EventType[()] | None = None,
90
- on_click: EventType[()] | None = None,
91
- on_context_menu: EventType[()] | None = None,
92
- on_double_click: EventType[()] | None = None,
93
- on_focus: EventType[()] | None = None,
94
- on_mount: EventType[()] | None = None,
95
- on_mouse_down: EventType[()] | None = None,
96
- on_mouse_enter: EventType[()] | None = None,
97
- on_mouse_leave: EventType[()] | None = None,
98
- on_mouse_move: EventType[()] | None = None,
99
- on_mouse_out: EventType[()] | None = None,
100
- on_mouse_over: EventType[()] | None = None,
101
- on_mouse_up: EventType[()] | None = None,
102
- on_scroll: EventType[()] | None = None,
103
- on_unmount: EventType[()] | None = None,
104
- **props,
105
- ) -> Default404Page:
106
- """Create the component.
107
-
108
- Args:
109
- *children: The children of the component.
110
- style: The style of the component.
111
- key: A unique key for the component.
112
- id: The id for the component.
113
- ref: The Var to pass as the ref to the component.
114
- class_name: The class name for the component.
115
- autofocus: Whether the component should take the focus once the page is loaded
116
- custom_attrs: custom attribute
117
- **props: The props of the component.
118
-
119
- Returns:
120
- The component.
121
- """
71
+ def default_404_page() -> Component: ...
@@ -8,7 +8,7 @@ from typing import Any, overload
8
8
 
9
9
  from reflex.components.base.fragment import Fragment
10
10
  from reflex.components.core.breakpoints import Breakpoints
11
- from reflex.event import EventType
11
+ from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.utils.imports import ImportVar
13
13
  from reflex.vars.base import Var
14
14
 
@@ -34,9 +34,9 @@ class Clipboard(Fragment):
34
34
  autofocus: bool | None = None,
35
35
  custom_attrs: dict[str, Var | Any] | None = None,
36
36
  on_blur: EventType[()] | None = None,
37
- on_click: EventType[()] | None = None,
38
- on_context_menu: EventType[()] | None = None,
39
- on_double_click: EventType[()] | None = None,
37
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
38
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
39
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
40
40
  on_focus: EventType[()] | None = None,
41
41
  on_mount: EventType[()] | None = None,
42
42
  on_mouse_down: EventType[()] | None = None,
@@ -48,6 +48,7 @@ class Clipboard(Fragment):
48
48
  on_mouse_up: EventType[()] | None = None,
49
49
  on_paste: EventType[()] | EventType[list[tuple[str, str]]] | None = None,
50
50
  on_scroll: EventType[()] | None = None,
51
+ on_scroll_end: EventType[()] | None = None,
51
52
  on_unmount: EventType[()] | None = None,
52
53
  **props,
53
54
  ) -> Clipboard:
@@ -23,6 +23,7 @@ class DebounceInput(Component):
23
23
 
24
24
  library = "react-debounce-input@3.3.0"
25
25
  tag = "DebounceInput"
26
+ is_default = True
26
27
 
27
28
  # Minimum input characters before triggering the on_change event
28
29
  min_length: Var[int]
@@ -8,7 +8,7 @@ from typing import Any, overload
8
8
 
9
9
  from reflex.components.component import Component
10
10
  from reflex.components.core.breakpoints import Breakpoints
11
- from reflex.event import EventType
11
+ from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
14
  DEFAULT_DEBOUNCE_TIMEOUT = 300
@@ -39,9 +39,9 @@ class DebounceInput(Component):
39
39
  custom_attrs: dict[str, Var | Any] | None = None,
40
40
  on_blur: EventType[()] | None = None,
41
41
  on_change: EventType[()] | None = None,
42
- on_click: EventType[()] | None = None,
43
- on_context_menu: EventType[()] | None = None,
44
- on_double_click: EventType[()] | None = None,
42
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
43
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
44
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
45
45
  on_focus: EventType[()] | None = None,
46
46
  on_mount: EventType[()] | None = None,
47
47
  on_mouse_down: EventType[()] | None = None,
@@ -52,6 +52,7 @@ class DebounceInput(Component):
52
52
  on_mouse_over: EventType[()] | None = None,
53
53
  on_mouse_up: EventType[()] | None = None,
54
54
  on_scroll: EventType[()] | None = None,
55
+ on_scroll_end: EventType[()] | None = None,
55
56
  on_unmount: EventType[()] | None = None,
56
57
  **props,
57
58
  ) -> DebounceInput:
@@ -12,6 +12,7 @@ from reflex.components.component import Component
12
12
  from reflex.components.core.cond import cond
13
13
  from reflex.components.tags import IterTag
14
14
  from reflex.constants import MemoizationMode
15
+ from reflex.constants.state import FIELD_MARKER
15
16
  from reflex.state import ComponentState
16
17
  from reflex.utils import types
17
18
  from reflex.utils.exceptions import UntypedVarError
@@ -132,11 +133,11 @@ class Foreach(Component):
132
133
 
133
134
  if len(params) >= 1:
134
135
  # Determine the arg var name based on the params accepted by render_fn.
135
- props["arg_var_name"] = params[0].name
136
+ props["arg_var_name"] = params[0].name + FIELD_MARKER
136
137
 
137
138
  if len(params) == 2:
138
139
  # Determine the index var name based on the params accepted by render_fn.
139
- props["index_var_name"] = params[1].name
140
+ props["index_var_name"] = params[1].name + FIELD_MARKER
140
141
  else:
141
142
  render_fn = self.render_fn
142
143
  # Otherwise, use a deterministic index, based on the render function bytecode.
@@ -0,0 +1,14 @@
1
+ """Helmet component module."""
2
+
3
+ from reflex.components.component import Component
4
+
5
+
6
+ class Helmet(Component):
7
+ """A helmet component."""
8
+
9
+ library = "react-helmet@6.1.0"
10
+
11
+ tag = "Helmet"
12
+
13
+
14
+ helmet = Helmet.create
@@ -1,4 +1,4 @@
1
- """Stub file for reflex/components/next/base.py"""
1
+ """Stub file for reflex/components/core/helmet.py"""
2
2
 
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
@@ -8,10 +8,10 @@ from typing import Any, overload
8
8
 
9
9
  from reflex.components.component import Component
10
10
  from reflex.components.core.breakpoints import Breakpoints
11
- from reflex.event import EventType
11
+ from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
- class NextComponent(Component):
14
+ class Helmet(Component):
15
15
  @overload
16
16
  @classmethod
17
17
  def create( # type: ignore
@@ -29,9 +29,9 @@ class NextComponent(Component):
29
29
  autofocus: bool | None = None,
30
30
  custom_attrs: dict[str, Var | Any] | None = None,
31
31
  on_blur: EventType[()] | None = None,
32
- on_click: EventType[()] | None = None,
33
- on_context_menu: EventType[()] | None = None,
34
- on_double_click: EventType[()] | None = None,
32
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
33
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
34
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
35
35
  on_focus: EventType[()] | None = None,
36
36
  on_mount: EventType[()] | None = None,
37
37
  on_mouse_down: EventType[()] | None = None,
@@ -42,9 +42,10 @@ class NextComponent(Component):
42
42
  on_mouse_over: EventType[()] | None = None,
43
43
  on_mouse_up: EventType[()] | None = None,
44
44
  on_scroll: EventType[()] | None = None,
45
+ on_scroll_end: EventType[()] | None = None,
45
46
  on_unmount: EventType[()] | None = None,
46
47
  **props,
47
- ) -> NextComponent:
48
+ ) -> Helmet:
48
49
  """Create the component.
49
50
 
50
51
  Args:
@@ -61,3 +62,5 @@ class NextComponent(Component):
61
62
  Returns:
62
63
  The component.
63
64
  """
65
+
66
+ helmet = Helmet.create
@@ -8,7 +8,7 @@ from typing import Any, Literal, overload
8
8
 
9
9
  from reflex.components.core.breakpoints import Breakpoints
10
10
  from reflex.components.el.elements.typography import Div
11
- from reflex.event import EventType
11
+ from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
14
  class Html(Div):
@@ -208,9 +208,9 @@ class Html(Div):
208
208
  autofocus: bool | None = None,
209
209
  custom_attrs: dict[str, Var | Any] | None = None,
210
210
  on_blur: EventType[()] | None = None,
211
- on_click: EventType[()] | None = None,
212
- on_context_menu: EventType[()] | None = None,
213
- on_double_click: EventType[()] | None = None,
211
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
212
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
213
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
214
214
  on_focus: EventType[()] | None = None,
215
215
  on_mount: EventType[()] | None = None,
216
216
  on_mouse_down: EventType[()] | None = None,
@@ -221,6 +221,7 @@ class Html(Div):
221
221
  on_mouse_over: EventType[()] | None = None,
222
222
  on_mouse_up: EventType[()] | None = None,
223
223
  on_scroll: EventType[()] | None = None,
224
+ on_scroll_end: EventType[()] | None = None,
224
225
  on_unmount: EventType[()] | None = None,
225
226
  **props,
226
227
  ) -> Html:
@@ -11,7 +11,7 @@ from reflex.components.core.breakpoints import Breakpoints
11
11
  from reflex.components.el.elements.inline import A
12
12
  from reflex.components.el.elements.media import Svg
13
13
  from reflex.components.radix.themes.typography.text import Text
14
- from reflex.event import EventType
14
+ from reflex.event import EventType, PointerEventInfo
15
15
  from reflex.vars.base import Var
16
16
 
17
17
  class StickyLogo(Svg):
@@ -213,9 +213,9 @@ class StickyLogo(Svg):
213
213
  autofocus: bool | None = None,
214
214
  custom_attrs: dict[str, Var | Any] | None = None,
215
215
  on_blur: EventType[()] | None = None,
216
- on_click: EventType[()] | None = None,
217
- on_context_menu: EventType[()] | None = None,
218
- on_double_click: EventType[()] | None = None,
216
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
217
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
218
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
219
219
  on_focus: EventType[()] | None = None,
220
220
  on_mount: EventType[()] | None = None,
221
221
  on_mouse_down: EventType[()] | None = None,
@@ -226,6 +226,7 @@ class StickyLogo(Svg):
226
226
  on_mouse_over: EventType[()] | None = None,
227
227
  on_mouse_up: EventType[()] | None = None,
228
228
  on_scroll: EventType[()] | None = None,
229
+ on_scroll_end: EventType[()] | None = None,
229
230
  on_unmount: EventType[()] | None = None,
230
231
  **props,
231
232
  ) -> StickyLogo:
@@ -565,9 +566,9 @@ class StickyLabel(Text):
565
566
  autofocus: bool | None = None,
566
567
  custom_attrs: dict[str, Var | Any] | None = None,
567
568
  on_blur: EventType[()] | None = None,
568
- on_click: EventType[()] | None = None,
569
- on_context_menu: EventType[()] | None = None,
570
- on_double_click: EventType[()] | None = None,
569
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
570
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
571
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
571
572
  on_focus: EventType[()] | None = None,
572
573
  on_mount: EventType[()] | None = None,
573
574
  on_mouse_down: EventType[()] | None = None,
@@ -578,6 +579,7 @@ class StickyLabel(Text):
578
579
  on_mouse_over: EventType[()] | None = None,
579
580
  on_mouse_up: EventType[()] | None = None,
580
581
  on_scroll: EventType[()] | None = None,
582
+ on_scroll_end: EventType[()] | None = None,
581
583
  on_unmount: EventType[()] | None = None,
582
584
  **props,
583
585
  ) -> StickyLabel:
@@ -820,9 +822,9 @@ class StickyBadge(A):
820
822
  autofocus: bool | None = None,
821
823
  custom_attrs: dict[str, Var | Any] | None = None,
822
824
  on_blur: EventType[()] | None = None,
823
- on_click: EventType[()] | None = None,
824
- on_context_menu: EventType[()] | None = None,
825
- on_double_click: EventType[()] | None = None,
825
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
826
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
827
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
826
828
  on_focus: EventType[()] | None = None,
827
829
  on_mount: EventType[()] | None = None,
828
830
  on_mouse_down: EventType[()] | None = None,
@@ -833,6 +835,7 @@ class StickyBadge(A):
833
835
  on_mouse_over: EventType[()] | None = None,
834
836
  on_mouse_up: EventType[()] | None = None,
835
837
  on_scroll: EventType[()] | None = None,
838
+ on_scroll_end: EventType[()] | None = None,
836
839
  on_unmount: EventType[()] | None = None,
837
840
  **props,
838
841
  ) -> StickyBadge:
@@ -1076,9 +1079,9 @@ class StickyNamespace(ComponentNamespace):
1076
1079
  autofocus: bool | None = None,
1077
1080
  custom_attrs: dict[str, Var | Any] | None = None,
1078
1081
  on_blur: EventType[()] | None = None,
1079
- on_click: EventType[()] | None = None,
1080
- on_context_menu: EventType[()] | None = None,
1081
- on_double_click: EventType[()] | None = None,
1082
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1083
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1084
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1082
1085
  on_focus: EventType[()] | None = None,
1083
1086
  on_mount: EventType[()] | None = None,
1084
1087
  on_mouse_down: EventType[()] | None = None,
@@ -1089,6 +1092,7 @@ class StickyNamespace(ComponentNamespace):
1089
1092
  on_mouse_over: EventType[()] | None = None,
1090
1093
  on_mouse_up: EventType[()] | None = None,
1091
1094
  on_scroll: EventType[()] | None = None,
1095
+ on_scroll_end: EventType[()] | None = None,
1092
1096
  on_unmount: EventType[()] | None = None,
1093
1097
  **props,
1094
1098
  ) -> StickyBadge:
@@ -396,7 +396,8 @@ class Upload(MemoizationLeaf):
396
396
  The updated arg_value tuple when arg is "files", otherwise the original arg_value.
397
397
  """
398
398
  if arg_value[0]._js_expr == "files":
399
- placeholder = parse_args_spec(_on_drop_spec)[0]
399
+ placeholders, _ = parse_args_spec(_on_drop_spec)
400
+ placeholder = placeholders[0]
400
401
  return (arg_value[0], placeholder)
401
402
  return arg_value
402
403
 
@@ -11,7 +11,7 @@ from reflex.components.base.fragment import Fragment
11
11
  from reflex.components.component import Component, ComponentNamespace, MemoizationLeaf
12
12
  from reflex.components.core.breakpoints import Breakpoints
13
13
  from reflex.constants import Dirs
14
- from reflex.event import CallableEventSpec, EventSpec, EventType
14
+ from reflex.event import CallableEventSpec, EventSpec, EventType, PointerEventInfo
15
15
  from reflex.style import Style
16
16
  from reflex.utils.imports import ImportVar
17
17
  from reflex.vars import VarData
@@ -57,9 +57,9 @@ class UploadFilesProvider(Component):
57
57
  autofocus: bool | None = None,
58
58
  custom_attrs: dict[str, Var | Any] | None = None,
59
59
  on_blur: EventType[()] | None = None,
60
- on_click: EventType[()] | None = None,
61
- on_context_menu: EventType[()] | None = None,
62
- on_double_click: EventType[()] | None = None,
60
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
61
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
62
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
63
63
  on_focus: EventType[()] | None = None,
64
64
  on_mount: EventType[()] | None = None,
65
65
  on_mouse_down: EventType[()] | None = None,
@@ -70,6 +70,7 @@ class UploadFilesProvider(Component):
70
70
  on_mouse_over: EventType[()] | None = None,
71
71
  on_mouse_up: EventType[()] | None = None,
72
72
  on_scroll: EventType[()] | None = None,
73
+ on_scroll_end: EventType[()] | None = None,
73
74
  on_unmount: EventType[()] | None = None,
74
75
  **props,
75
76
  ) -> UploadFilesProvider:
@@ -108,9 +109,9 @@ class GhostUpload(Fragment):
108
109
  autofocus: bool | None = None,
109
110
  custom_attrs: dict[str, Var | Any] | None = None,
110
111
  on_blur: EventType[()] | None = None,
111
- on_click: EventType[()] | None = None,
112
- on_context_menu: EventType[()] | None = None,
113
- on_double_click: EventType[()] | None = None,
112
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
113
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
114
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
114
115
  on_drop: EventType[()] | EventType[Any] | None = None,
115
116
  on_focus: EventType[()] | None = None,
116
117
  on_mount: EventType[()] | None = None,
@@ -122,6 +123,7 @@ class GhostUpload(Fragment):
122
123
  on_mouse_over: EventType[()] | None = None,
123
124
  on_mouse_up: EventType[()] | None = None,
124
125
  on_scroll: EventType[()] | None = None,
126
+ on_scroll_end: EventType[()] | None = None,
125
127
  on_unmount: EventType[()] | None = None,
126
128
  **props,
127
129
  ) -> GhostUpload:
@@ -173,9 +175,9 @@ class Upload(MemoizationLeaf):
173
175
  autofocus: bool | None = None,
174
176
  custom_attrs: dict[str, Var | Any] | None = None,
175
177
  on_blur: EventType[()] | None = None,
176
- on_click: EventType[()] | None = None,
177
- on_context_menu: EventType[()] | None = None,
178
- on_double_click: EventType[()] | None = None,
178
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
179
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
180
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
179
181
  on_drop: EventType[()] | EventType[Any] | None = None,
180
182
  on_focus: EventType[()] | None = None,
181
183
  on_mount: EventType[()] | None = None,
@@ -187,6 +189,7 @@ class Upload(MemoizationLeaf):
187
189
  on_mouse_over: EventType[()] | None = None,
188
190
  on_mouse_up: EventType[()] | None = None,
189
191
  on_scroll: EventType[()] | None = None,
192
+ on_scroll_end: EventType[()] | None = None,
190
193
  on_unmount: EventType[()] | None = None,
191
194
  **props,
192
195
  ) -> Upload:
@@ -246,9 +249,9 @@ class StyledUpload(Upload):
246
249
  autofocus: bool | None = None,
247
250
  custom_attrs: dict[str, Var | Any] | None = None,
248
251
  on_blur: EventType[()] | None = None,
249
- on_click: EventType[()] | None = None,
250
- on_context_menu: EventType[()] | None = None,
251
- on_double_click: EventType[()] | None = None,
252
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
253
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
254
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
252
255
  on_drop: EventType[()] | EventType[Any] | None = None,
253
256
  on_focus: EventType[()] | None = None,
254
257
  on_mount: EventType[()] | None = None,
@@ -260,6 +263,7 @@ class StyledUpload(Upload):
260
263
  on_mouse_over: EventType[()] | None = None,
261
264
  on_mouse_up: EventType[()] | None = None,
262
265
  on_scroll: EventType[()] | None = None,
266
+ on_scroll_end: EventType[()] | None = None,
263
267
  on_unmount: EventType[()] | None = None,
264
268
  **props,
265
269
  ) -> StyledUpload:
@@ -319,9 +323,9 @@ class UploadNamespace(ComponentNamespace):
319
323
  autofocus: bool | None = None,
320
324
  custom_attrs: dict[str, Var | Any] | None = None,
321
325
  on_blur: EventType[()] | None = None,
322
- on_click: EventType[()] | None = None,
323
- on_context_menu: EventType[()] | None = None,
324
- on_double_click: EventType[()] | None = None,
326
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
327
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
328
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
325
329
  on_drop: EventType[()] | EventType[Any] | None = None,
326
330
  on_focus: EventType[()] | None = None,
327
331
  on_mount: EventType[()] | None = None,
@@ -333,6 +337,7 @@ class UploadNamespace(ComponentNamespace):
333
337
  on_mouse_over: EventType[()] | None = None,
334
338
  on_mouse_up: EventType[()] | None = None,
335
339
  on_scroll: EventType[()] | None = None,
340
+ on_scroll_end: EventType[()] | None = None,
336
341
  on_unmount: EventType[()] | None = None,
337
342
  **props,
338
343
  ) -> StyledUpload: