reflex 0.7.14a6__py3-none-any.whl → 0.8.0__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (237) 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 +21 -11
  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/styles/styles.css.jinja2 +1 -0
  8. reflex/.templates/jinja/web/utils/context.js.jinja2 +25 -8
  9. reflex/.templates/web/app/entry.client.js +8 -0
  10. reflex/.templates/web/app/routes.js +10 -0
  11. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +12 -37
  12. reflex/.templates/web/postcss.config.js +1 -1
  13. reflex/.templates/web/react-router.config.js +6 -0
  14. reflex/.templates/web/styles/__reflex_style_reset.css +399 -0
  15. reflex/.templates/web/utils/client_side_routing.js +21 -19
  16. reflex/.templates/web/utils/react-theme.js +92 -0
  17. reflex/.templates/web/utils/state.js +251 -100
  18. reflex/.templates/web/vite-plugin-safari-cachebust.js +160 -0
  19. reflex/.templates/web/vite.config.js +39 -0
  20. reflex/__init__.py +1 -6
  21. reflex/__init__.pyi +327 -192
  22. reflex/app.py +86 -135
  23. reflex/base.py +1 -87
  24. reflex/compiler/compiler.py +70 -19
  25. reflex/compiler/templates.py +3 -3
  26. reflex/compiler/utils.py +91 -33
  27. reflex/components/__init__.py +0 -2
  28. reflex/components/__init__.pyi +34 -18
  29. reflex/components/base/__init__.py +1 -5
  30. reflex/components/base/__init__.pyi +30 -21
  31. reflex/components/base/app_wrap.pyi +7 -7
  32. reflex/components/base/body.pyi +7 -7
  33. reflex/components/base/document.py +18 -14
  34. reflex/components/base/document.pyi +88 -38
  35. reflex/components/base/error_boundary.pyi +7 -7
  36. reflex/components/base/fragment.pyi +7 -7
  37. reflex/components/base/link.pyi +12 -12
  38. reflex/components/base/meta.py +4 -15
  39. reflex/components/base/meta.pyi +31 -31
  40. reflex/components/base/script.py +60 -58
  41. reflex/components/base/script.pyi +248 -34
  42. reflex/components/base/strict_mode.pyi +7 -7
  43. reflex/components/component.py +146 -217
  44. reflex/components/core/__init__.py +1 -0
  45. reflex/components/core/__init__.pyi +77 -37
  46. reflex/components/core/auto_scroll.pyi +7 -7
  47. reflex/components/core/banner.pyi +33 -33
  48. reflex/components/core/client_side_routing.py +7 -6
  49. reflex/components/core/client_side_routing.pyi +8 -59
  50. reflex/components/core/clipboard.pyi +7 -7
  51. reflex/components/core/debounce.py +1 -0
  52. reflex/components/core/debounce.pyi +7 -7
  53. reflex/components/core/foreach.py +5 -4
  54. reflex/components/core/helmet.py +14 -0
  55. reflex/components/{next/base.pyi → core/helmet.pyi} +12 -10
  56. reflex/components/core/html.pyi +7 -7
  57. reflex/components/core/match.py +3 -3
  58. reflex/components/core/sticky.pyi +21 -20
  59. reflex/components/core/upload.py +4 -2
  60. reflex/components/core/upload.pyi +26 -25
  61. reflex/components/datadisplay/__init__.pyi +13 -7
  62. reflex/components/datadisplay/code.py +14 -79
  63. reflex/components/datadisplay/code.pyi +11 -13
  64. reflex/components/datadisplay/dataeditor.pyi +38 -15
  65. reflex/components/datadisplay/shiki_code_block.py +5 -3
  66. reflex/components/datadisplay/shiki_code_block.pyi +16 -15
  67. reflex/components/dynamic.py +5 -5
  68. reflex/components/el/__init__.pyi +506 -246
  69. reflex/components/el/element.pyi +7 -7
  70. reflex/components/el/elements/__init__.pyi +504 -245
  71. reflex/components/el/elements/base.pyi +7 -7
  72. reflex/components/el/elements/forms.pyi +146 -101
  73. reflex/components/el/elements/inline.pyi +142 -142
  74. reflex/components/el/elements/media.pyi +131 -130
  75. reflex/components/el/elements/metadata.pyi +32 -32
  76. reflex/components/el/elements/other.pyi +37 -37
  77. reflex/components/el/elements/scripts.pyi +17 -17
  78. reflex/components/el/elements/sectioning.pyi +77 -77
  79. reflex/components/el/elements/tables.pyi +52 -52
  80. reflex/components/el/elements/typography.pyi +77 -77
  81. reflex/components/field.py +175 -0
  82. reflex/components/gridjs/datatable.py +2 -2
  83. reflex/components/gridjs/datatable.pyi +14 -14
  84. reflex/components/lucide/icon.py +6 -2
  85. reflex/components/lucide/icon.pyi +19 -17
  86. reflex/components/markdown/markdown.py +5 -3
  87. reflex/components/markdown/markdown.pyi +7 -7
  88. reflex/components/moment/moment.py +1 -1
  89. reflex/components/moment/moment.pyi +7 -7
  90. reflex/components/plotly/plotly.py +12 -6
  91. reflex/components/plotly/plotly.pyi +50 -49
  92. reflex/components/props.py +376 -27
  93. reflex/components/radix/__init__.pyi +123 -65
  94. reflex/components/radix/primitives/__init__.pyi +6 -4
  95. reflex/components/radix/primitives/accordion.py +8 -1
  96. reflex/components/radix/primitives/accordion.pyi +37 -37
  97. reflex/components/radix/primitives/base.pyi +12 -12
  98. reflex/components/radix/primitives/drawer.pyi +56 -55
  99. reflex/components/radix/primitives/form.pyi +63 -53
  100. reflex/components/radix/primitives/progress.pyi +26 -25
  101. reflex/components/radix/primitives/slider.pyi +27 -27
  102. reflex/components/radix/themes/__init__.pyi +5 -6
  103. reflex/components/radix/themes/base.py +3 -3
  104. reflex/components/radix/themes/base.pyi +42 -42
  105. reflex/components/radix/themes/color_mode.py +5 -6
  106. reflex/components/radix/themes/color_mode.pyi +17 -17
  107. reflex/components/radix/themes/components/__init__.pyi +75 -38
  108. reflex/components/radix/themes/components/alert_dialog.pyi +37 -37
  109. reflex/components/radix/themes/components/aspect_ratio.pyi +7 -7
  110. reflex/components/radix/themes/components/avatar.pyi +7 -7
  111. reflex/components/radix/themes/components/badge.pyi +7 -7
  112. reflex/components/radix/themes/components/button.pyi +7 -7
  113. reflex/components/radix/themes/components/callout.pyi +26 -25
  114. reflex/components/radix/themes/components/card.pyi +7 -7
  115. reflex/components/radix/themes/components/checkbox.pyi +16 -15
  116. reflex/components/radix/themes/components/checkbox_cards.pyi +12 -12
  117. reflex/components/radix/themes/components/checkbox_group.pyi +12 -12
  118. reflex/components/radix/themes/components/context_menu.pyi +67 -67
  119. reflex/components/radix/themes/components/data_list.pyi +22 -22
  120. reflex/components/radix/themes/components/dialog.pyi +36 -35
  121. reflex/components/radix/themes/components/dropdown_menu.pyi +42 -42
  122. reflex/components/radix/themes/components/hover_card.pyi +21 -20
  123. reflex/components/radix/themes/components/icon_button.pyi +7 -7
  124. reflex/components/radix/themes/components/inset.pyi +7 -7
  125. reflex/components/radix/themes/components/popover.pyi +22 -22
  126. reflex/components/radix/themes/components/progress.pyi +7 -7
  127. reflex/components/radix/themes/components/radio.pyi +7 -7
  128. reflex/components/radix/themes/components/radio_cards.pyi +12 -12
  129. reflex/components/radix/themes/components/radio_group.pyi +21 -20
  130. reflex/components/radix/themes/components/scroll_area.pyi +7 -7
  131. reflex/components/radix/themes/components/segmented_control.pyi +12 -12
  132. reflex/components/radix/themes/components/select.pyi +46 -45
  133. reflex/components/radix/themes/components/separator.pyi +7 -7
  134. reflex/components/radix/themes/components/skeleton.pyi +7 -7
  135. reflex/components/radix/themes/components/slider.pyi +17 -9
  136. reflex/components/radix/themes/components/spinner.pyi +7 -7
  137. reflex/components/radix/themes/components/switch.pyi +7 -7
  138. reflex/components/radix/themes/components/table.pyi +37 -37
  139. reflex/components/radix/themes/components/tabs.pyi +26 -25
  140. reflex/components/radix/themes/components/text_area.pyi +15 -9
  141. reflex/components/radix/themes/components/text_field.pyi +32 -19
  142. reflex/components/radix/themes/components/tooltip.pyi +7 -7
  143. reflex/components/radix/themes/layout/__init__.pyi +27 -14
  144. reflex/components/radix/themes/layout/base.pyi +7 -7
  145. reflex/components/radix/themes/layout/box.pyi +7 -7
  146. reflex/components/radix/themes/layout/center.pyi +7 -7
  147. reflex/components/radix/themes/layout/container.pyi +7 -7
  148. reflex/components/radix/themes/layout/flex.pyi +7 -7
  149. reflex/components/radix/themes/layout/grid.pyi +7 -7
  150. reflex/components/radix/themes/layout/list.pyi +26 -25
  151. reflex/components/radix/themes/layout/section.pyi +7 -7
  152. reflex/components/radix/themes/layout/spacer.pyi +7 -7
  153. reflex/components/radix/themes/layout/stack.pyi +17 -17
  154. reflex/components/radix/themes/typography/__init__.pyi +7 -5
  155. reflex/components/radix/themes/typography/blockquote.pyi +7 -7
  156. reflex/components/radix/themes/typography/code.pyi +7 -7
  157. reflex/components/radix/themes/typography/heading.pyi +7 -7
  158. reflex/components/radix/themes/typography/link.py +46 -11
  159. reflex/components/radix/themes/typography/link.pyi +312 -9
  160. reflex/components/radix/themes/typography/text.pyi +36 -35
  161. reflex/components/react_player/audio.pyi +10 -8
  162. reflex/components/react_player/react_player.pyi +7 -7
  163. reflex/components/react_player/video.pyi +10 -8
  164. reflex/components/recharts/__init__.pyi +208 -100
  165. reflex/components/recharts/cartesian.py +10 -8
  166. reflex/components/recharts/cartesian.pyi +90 -94
  167. reflex/components/recharts/charts.py +4 -2
  168. reflex/components/recharts/charts.pyi +49 -49
  169. reflex/components/recharts/general.pyi +31 -31
  170. reflex/components/recharts/polar.py +8 -4
  171. reflex/components/recharts/polar.pyi +23 -23
  172. reflex/components/recharts/recharts.py +2 -2
  173. reflex/components/recharts/recharts.pyi +12 -12
  174. reflex/components/sonner/toast.py +3 -3
  175. reflex/components/sonner/toast.pyi +9 -9
  176. reflex/config.py +10 -113
  177. reflex/constants/__init__.py +2 -2
  178. reflex/constants/base.py +28 -11
  179. reflex/constants/compiler.py +12 -3
  180. reflex/constants/event.py +1 -0
  181. reflex/constants/installer.py +26 -20
  182. reflex/constants/route.py +27 -8
  183. reflex/constants/state.py +2 -0
  184. reflex/custom_components/custom_components.py +0 -14
  185. reflex/environment.py +77 -5
  186. reflex/event.py +178 -81
  187. reflex/experimental/__init__.py +0 -30
  188. reflex/istate/__init__.py +69 -0
  189. reflex/istate/manager.py +1 -0
  190. reflex/istate/proxy.py +5 -3
  191. reflex/page.py +0 -27
  192. reflex/plugins/__init__.py +3 -2
  193. reflex/plugins/base.py +5 -1
  194. reflex/plugins/shared_tailwind.py +215 -0
  195. reflex/plugins/sitemap.py +206 -0
  196. reflex/plugins/tailwind_v3.py +15 -108
  197. reflex/plugins/tailwind_v4.py +18 -110
  198. reflex/reflex.py +1 -0
  199. reflex/route.py +157 -75
  200. reflex/state.py +171 -155
  201. reflex/testing.py +86 -16
  202. reflex/utils/build.py +38 -82
  203. reflex/utils/exec.py +83 -175
  204. reflex/utils/export.py +2 -2
  205. reflex/utils/format.py +1 -5
  206. reflex/utils/imports.py +5 -16
  207. reflex/utils/misc.py +67 -0
  208. reflex/utils/prerequisites.py +66 -68
  209. reflex/utils/processes.py +24 -47
  210. reflex/utils/pyi_generator.py +44 -49
  211. reflex/utils/serializers.py +14 -1
  212. reflex/utils/telemetry.py +0 -15
  213. reflex/utils/types.py +197 -62
  214. reflex/vars/__init__.py +2 -0
  215. reflex/vars/base.py +367 -134
  216. {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/METADATA +15 -8
  217. reflex-0.8.0.dist-info/RECORD +403 -0
  218. reflex/.templates/web/next.config.js +0 -7
  219. reflex/components/base/head.py +0 -20
  220. reflex/components/base/head.pyi +0 -116
  221. reflex/components/next/__init__.py +0 -10
  222. reflex/components/next/base.py +0 -7
  223. reflex/components/next/image.py +0 -117
  224. reflex/components/next/image.pyi +0 -94
  225. reflex/components/next/link.py +0 -20
  226. reflex/components/next/link.pyi +0 -67
  227. reflex/components/next/video.py +0 -38
  228. reflex/components/next/video.pyi +0 -68
  229. reflex/components/suneditor/__init__.py +0 -5
  230. reflex/components/suneditor/editor.py +0 -269
  231. reflex/components/suneditor/editor.pyi +0 -199
  232. reflex/experimental/layout.py +0 -254
  233. reflex/experimental/layout.pyi +0 -814
  234. reflex-0.7.14a6.dist-info/RECORD +0 -408
  235. {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/WHEEL +0 -0
  236. {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/entry_points.txt +0 -0
  237. {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -3,40 +3,80 @@
3
3
  # This file was generated by `reflex/utils/pyi_generator.py`!
4
4
  # ------------------------------------------------------
5
5
 
6
- from . import layout as layout
7
- from .auto_scroll import auto_scroll as auto_scroll
8
- from .banner import ConnectionBanner as ConnectionBanner
9
- from .banner import ConnectionModal as ConnectionModal
10
- from .banner import ConnectionPulser as ConnectionPulser
11
- from .banner import ConnectionToaster as ConnectionToaster
12
- from .banner import connection_banner as connection_banner
13
- from .banner import connection_modal as connection_modal
14
- from .banner import connection_pulser as connection_pulser
15
- from .banner import connection_toaster as connection_toaster
16
- from .breakpoints import breakpoints as breakpoints
17
- from .breakpoints import set_breakpoints as set_breakpoints
18
- from .clipboard import Clipboard as Clipboard
19
- from .clipboard import clipboard as clipboard
20
- from .colors import color as color
21
- from .cond import Cond as Cond
22
- from .cond import color_mode_cond as color_mode_cond
23
- from .cond import cond as cond
24
- from .debounce import DebounceInput as DebounceInput
25
- from .debounce import debounce_input as debounce_input
26
- from .foreach import Foreach as Foreach
27
- from .foreach import foreach as foreach
28
- from .html import Html as Html
29
- from .html import html as html
30
- from .match import Match as Match
31
- from .match import match as match
32
- from .responsive import desktop_only as desktop_only
33
- from .responsive import mobile_and_tablet as mobile_and_tablet
34
- from .responsive import mobile_only as mobile_only
35
- from .responsive import tablet_and_desktop as tablet_and_desktop
36
- from .responsive import tablet_only as tablet_only
37
- from .upload import cancel_upload as cancel_upload
38
- from .upload import clear_selected_files as clear_selected_files
39
- from .upload import get_upload_dir as get_upload_dir
40
- from .upload import get_upload_url as get_upload_url
41
- from .upload import selected_files as selected_files
42
- from .upload import upload as upload
6
+ from . import layout
7
+ from .auto_scroll import auto_scroll
8
+ from .banner import (
9
+ ConnectionBanner,
10
+ ConnectionModal,
11
+ ConnectionPulser,
12
+ ConnectionToaster,
13
+ connection_banner,
14
+ connection_modal,
15
+ connection_pulser,
16
+ connection_toaster,
17
+ )
18
+ from .breakpoints import breakpoints, set_breakpoints
19
+ from .clipboard import Clipboard, clipboard
20
+ from .colors import color
21
+ from .cond import Cond, color_mode_cond, cond
22
+ from .debounce import DebounceInput, debounce_input
23
+ from .foreach import Foreach, foreach
24
+ from .helmet import Helmet
25
+ from .html import Html, html
26
+ from .match import Match, match
27
+ from .responsive import (
28
+ desktop_only,
29
+ mobile_and_tablet,
30
+ mobile_only,
31
+ tablet_and_desktop,
32
+ tablet_only,
33
+ )
34
+ from .upload import (
35
+ cancel_upload,
36
+ clear_selected_files,
37
+ get_upload_dir,
38
+ get_upload_url,
39
+ selected_files,
40
+ upload,
41
+ )
42
+
43
+ __all__ = [
44
+ "Clipboard",
45
+ "Cond",
46
+ "ConnectionBanner",
47
+ "ConnectionModal",
48
+ "ConnectionPulser",
49
+ "ConnectionToaster",
50
+ "DebounceInput",
51
+ "Foreach",
52
+ "Helmet",
53
+ "Html",
54
+ "Match",
55
+ "auto_scroll",
56
+ "breakpoints",
57
+ "cancel_upload",
58
+ "clear_selected_files",
59
+ "clipboard",
60
+ "color",
61
+ "color_mode_cond",
62
+ "cond",
63
+ "connection_banner",
64
+ "connection_modal",
65
+ "connection_pulser",
66
+ "connection_toaster",
67
+ "debounce_input",
68
+ "desktop_only",
69
+ "foreach",
70
+ "get_upload_dir",
71
+ "get_upload_url",
72
+ "html",
73
+ "layout",
74
+ "match",
75
+ "mobile_and_tablet",
76
+ "mobile_only",
77
+ "selected_files",
78
+ "set_breakpoints",
79
+ "tablet_and_desktop",
80
+ "tablet_only",
81
+ "upload",
82
+ ]
@@ -4,18 +4,17 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, Literal, overload
7
+ from typing import Any, Literal
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.utils.imports import ImportDict
13
13
  from reflex.vars.base import Var
14
14
 
15
15
  class AutoScroll(Div):
16
- @overload
17
16
  @classmethod
18
- def create( # type: ignore
17
+ def create(
19
18
  cls,
20
19
  *children,
21
20
  access_key: Var[str] | str | None = None,
@@ -208,9 +207,9 @@ class AutoScroll(Div):
208
207
  autofocus: bool | None = None,
209
208
  custom_attrs: dict[str, Var | Any] | None = None,
210
209
  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,
210
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
211
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
212
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
214
213
  on_focus: EventType[()] | None = None,
215
214
  on_mount: EventType[()] | None = None,
216
215
  on_mouse_down: EventType[()] | None = None,
@@ -221,6 +220,7 @@ class AutoScroll(Div):
221
220
  on_mouse_over: EventType[()] | None = None,
222
221
  on_mouse_up: EventType[()] | None = None,
223
222
  on_scroll: EventType[()] | None = None,
223
+ on_scroll_end: EventType[()] | None = None,
224
224
  on_unmount: EventType[()] | None = None,
225
225
  **props,
226
226
  ) -> AutoScroll:
@@ -4,7 +4,7 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, Literal, overload
7
+ from typing import Any, Literal
8
8
 
9
9
  from reflex.components.base.fragment import Fragment
10
10
  from reflex.components.component import Component
@@ -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
@@ -38,15 +38,14 @@ has_too_many_connection_errors = Var(
38
38
 
39
39
  class WebsocketTargetURL(Var):
40
40
  @classmethod
41
- def create(cls) -> Var: ... # type: ignore
41
+ def create(cls) -> Var: ...
42
42
 
43
43
  def default_connection_error() -> list[str | Var | Component]: ...
44
44
 
45
45
  class ConnectionToaster(Fragment):
46
46
  def add_hooks(self) -> list[str | Var]: ...
47
- @overload
48
47
  @classmethod
49
- def create( # type: ignore
48
+ def create(
50
49
  cls,
51
50
  *children,
52
51
  style: Sequence[Mapping[str, Any]]
@@ -61,9 +60,9 @@ class ConnectionToaster(Fragment):
61
60
  autofocus: bool | None = None,
62
61
  custom_attrs: dict[str, Var | Any] | None = None,
63
62
  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,
63
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
64
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
65
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
67
66
  on_focus: EventType[()] | None = None,
68
67
  on_mount: EventType[()] | None = None,
69
68
  on_mouse_down: EventType[()] | None = None,
@@ -74,6 +73,7 @@ class ConnectionToaster(Fragment):
74
73
  on_mouse_over: EventType[()] | None = None,
75
74
  on_mouse_up: EventType[()] | None = None,
76
75
  on_scroll: EventType[()] | None = None,
76
+ on_scroll_end: EventType[()] | None = None,
77
77
  on_unmount: EventType[()] | None = None,
78
78
  **props,
79
79
  ) -> ConnectionToaster:
@@ -95,9 +95,8 @@ class ConnectionToaster(Fragment):
95
95
  """
96
96
 
97
97
  class ConnectionBanner(Component):
98
- @overload
99
98
  @classmethod
100
- def create( # type: ignore
99
+ def create(
101
100
  cls,
102
101
  *children,
103
102
  style: Sequence[Mapping[str, Any]]
@@ -112,9 +111,9 @@ class ConnectionBanner(Component):
112
111
  autofocus: bool | None = None,
113
112
  custom_attrs: dict[str, Var | Any] | None = None,
114
113
  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,
114
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
115
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
116
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
118
117
  on_focus: EventType[()] | None = None,
119
118
  on_mount: EventType[()] | None = None,
120
119
  on_mouse_down: EventType[()] | None = None,
@@ -125,6 +124,7 @@ class ConnectionBanner(Component):
125
124
  on_mouse_over: EventType[()] | None = None,
126
125
  on_mouse_up: EventType[()] | None = None,
127
126
  on_scroll: EventType[()] | None = None,
127
+ on_scroll_end: EventType[()] | None = None,
128
128
  on_unmount: EventType[()] | None = None,
129
129
  **props,
130
130
  ) -> ConnectionBanner:
@@ -138,9 +138,8 @@ class ConnectionBanner(Component):
138
138
  """
139
139
 
140
140
  class ConnectionModal(Component):
141
- @overload
142
141
  @classmethod
143
- def create( # type: ignore
142
+ def create(
144
143
  cls,
145
144
  *children,
146
145
  style: Sequence[Mapping[str, Any]]
@@ -155,9 +154,9 @@ class ConnectionModal(Component):
155
154
  autofocus: bool | None = None,
156
155
  custom_attrs: dict[str, Var | Any] | None = None,
157
156
  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,
157
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
158
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
159
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
161
160
  on_focus: EventType[()] | None = None,
162
161
  on_mount: EventType[()] | None = None,
163
162
  on_mouse_down: EventType[()] | None = None,
@@ -168,6 +167,7 @@ class ConnectionModal(Component):
168
167
  on_mouse_over: EventType[()] | None = None,
169
168
  on_mouse_up: EventType[()] | None = None,
170
169
  on_scroll: EventType[()] | None = None,
170
+ on_scroll_end: EventType[()] | None = None,
171
171
  on_unmount: EventType[()] | None = None,
172
172
  **props,
173
173
  ) -> ConnectionModal:
@@ -181,9 +181,8 @@ class ConnectionModal(Component):
181
181
  """
182
182
 
183
183
  class WifiOffPulse(Icon):
184
- @overload
185
184
  @classmethod
186
- def create( # type: ignore
185
+ def create(
187
186
  cls,
188
187
  *children,
189
188
  size: Var[int] | int | None = None,
@@ -199,9 +198,9 @@ class WifiOffPulse(Icon):
199
198
  autofocus: bool | None = None,
200
199
  custom_attrs: dict[str, Var | Any] | None = None,
201
200
  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,
201
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
202
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
203
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
205
204
  on_focus: EventType[()] | None = None,
206
205
  on_mount: EventType[()] | None = None,
207
206
  on_mouse_down: EventType[()] | None = None,
@@ -212,6 +211,7 @@ class WifiOffPulse(Icon):
212
211
  on_mouse_over: EventType[()] | None = None,
213
212
  on_mouse_up: EventType[()] | None = None,
214
213
  on_scroll: EventType[()] | None = None,
214
+ on_scroll_end: EventType[()] | None = None,
215
215
  on_unmount: EventType[()] | None = None,
216
216
  **props,
217
217
  ) -> WifiOffPulse:
@@ -236,9 +236,8 @@ class WifiOffPulse(Icon):
236
236
  def add_imports(self) -> dict[str, str | ImportVar | list[str | ImportVar]]: ...
237
237
 
238
238
  class ConnectionPulser(Div):
239
- @overload
240
239
  @classmethod
241
- def create( # type: ignore
240
+ def create(
242
241
  cls,
243
242
  *children,
244
243
  access_key: Var[str] | str | None = None,
@@ -431,9 +430,9 @@ class ConnectionPulser(Div):
431
430
  autofocus: bool | None = None,
432
431
  custom_attrs: dict[str, Var | Any] | None = None,
433
432
  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,
433
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
434
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
435
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
437
436
  on_focus: EventType[()] | None = None,
438
437
  on_mount: EventType[()] | None = None,
439
438
  on_mouse_down: EventType[()] | None = None,
@@ -444,6 +443,7 @@ class ConnectionPulser(Div):
444
443
  on_mouse_over: EventType[()] | None = None,
445
444
  on_mouse_up: EventType[()] | None = None,
446
445
  on_scroll: EventType[()] | None = None,
446
+ on_scroll_end: EventType[()] | None = None,
447
447
  on_unmount: EventType[()] | None = None,
448
448
  **props,
449
449
  ) -> ConnectionPulser:
@@ -480,9 +480,8 @@ class ConnectionPulser(Div):
480
480
  """
481
481
 
482
482
  class BackendDisabled(Div):
483
- @overload
484
483
  @classmethod
485
- def create( # type: ignore
484
+ def create(
486
485
  cls,
487
486
  *children,
488
487
  access_key: Var[str] | str | None = None,
@@ -675,9 +674,9 @@ class BackendDisabled(Div):
675
674
  autofocus: bool | None = None,
676
675
  custom_attrs: dict[str, Var | Any] | None = None,
677
676
  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,
677
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
678
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
679
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
681
680
  on_focus: EventType[()] | None = None,
682
681
  on_mount: EventType[()] | None = None,
683
682
  on_mouse_down: EventType[()] | None = None,
@@ -688,6 +687,7 @@ class BackendDisabled(Div):
688
687
  on_mouse_over: EventType[()] | None = None,
689
688
  on_mouse_up: EventType[()] | None = None,
690
689
  on_scroll: EventType[()] | None = None,
690
+ on_scroll_end: EventType[()] | None = None,
691
691
  on_unmount: EventType[()] | None = None,
692
692
  **props,
693
693
  ) -> 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")
@@ -4,11 +4,11 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, overload
7
+ from typing import Any
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
@@ -16,9 +16,8 @@ route_not_found: Var
16
16
  class ClientSideRouting(Component):
17
17
  def add_hooks(self) -> list[str | Var]: ...
18
18
  def render(self) -> str: ...
19
- @overload
20
19
  @classmethod
21
- def create( # type: ignore
20
+ def create(
22
21
  cls,
23
22
  *children,
24
23
  style: Sequence[Mapping[str, Any]]
@@ -33,9 +32,9 @@ class ClientSideRouting(Component):
33
32
  autofocus: bool | None = None,
34
33
  custom_attrs: dict[str, Var | Any] | None = None,
35
34
  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,
35
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
36
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
37
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
39
38
  on_focus: EventType[()] | None = None,
40
39
  on_mount: EventType[()] | None = None,
41
40
  on_mouse_down: EventType[()] | None = None,
@@ -46,6 +45,7 @@ class ClientSideRouting(Component):
46
45
  on_mouse_over: EventType[()] | None = None,
47
46
  on_mouse_up: EventType[()] | None = None,
48
47
  on_scroll: EventType[()] | None = None,
48
+ on_scroll_end: EventType[()] | None = None,
49
49
  on_unmount: EventType[()] | None = None,
50
50
  **props,
51
51
  ) -> ClientSideRouting:
@@ -67,55 +67,4 @@ class ClientSideRouting(Component):
67
67
  """
68
68
 
69
69
  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
- """
70
+ def default_404_page() -> Component: ...
@@ -4,18 +4,17 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, overload
7
+ from typing import Any
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
 
15
15
  class Clipboard(Fragment):
16
- @overload
17
16
  @classmethod
18
- def create( # type: ignore
17
+ def create(
19
18
  cls,
20
19
  *children,
21
20
  targets: Sequence[str] | Var[Sequence[str]] | None = None,
@@ -34,9 +33,9 @@ class Clipboard(Fragment):
34
33
  autofocus: bool | None = None,
35
34
  custom_attrs: dict[str, Var | Any] | None = None,
36
35
  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,
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,
40
39
  on_focus: EventType[()] | None = None,
41
40
  on_mount: EventType[()] | None = None,
42
41
  on_mouse_down: EventType[()] | None = None,
@@ -48,6 +47,7 @@ class Clipboard(Fragment):
48
47
  on_mouse_up: EventType[()] | None = None,
49
48
  on_paste: EventType[()] | EventType[list[tuple[str, str]]] | None = None,
50
49
  on_scroll: EventType[()] | None = None,
50
+ on_scroll_end: EventType[()] | None = None,
51
51
  on_unmount: EventType[()] | None = None,
52
52
  **props,
53
53
  ) -> 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]
@@ -4,19 +4,18 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, overload
7
+ from typing import Any
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
15
15
 
16
16
  class DebounceInput(Component):
17
- @overload
18
17
  @classmethod
19
- def create( # type: ignore
18
+ def create(
20
19
  cls,
21
20
  *children,
22
21
  min_length: Var[int] | int | None = None,
@@ -39,9 +38,9 @@ class DebounceInput(Component):
39
38
  custom_attrs: dict[str, Var | Any] | None = None,
40
39
  on_blur: EventType[()] | None = None,
41
40
  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,
41
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
42
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
43
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
45
44
  on_focus: EventType[()] | None = None,
46
45
  on_mount: EventType[()] | None = None,
47
46
  on_mouse_down: EventType[()] | None = None,
@@ -52,6 +51,7 @@ class DebounceInput(Component):
52
51
  on_mouse_over: EventType[()] | None = None,
53
52
  on_mouse_up: EventType[()] | None = None,
54
53
  on_scroll: EventType[()] | None = None,
54
+ on_scroll_end: EventType[()] | None = None,
55
55
  on_unmount: EventType[()] | None = None,
56
56
  **props,
57
57
  ) -> DebounceInput:
@@ -8,10 +8,11 @@ from collections.abc import Callable, Iterable
8
8
  from typing import Any
9
9
 
10
10
  from reflex.components.base.fragment import Fragment
11
- from reflex.components.component import Component
11
+ from reflex.components.component import Component, field
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
@@ -35,7 +36,7 @@ class Foreach(Component):
35
36
  iterable: Var[Iterable]
36
37
 
37
38
  # A function from the render args to the component.
38
- render_fn: Callable = Fragment.create
39
+ render_fn: Callable = field(default=Fragment.create, is_javascript_property=False)
39
40
 
40
41
  @classmethod
41
42
  def create(
@@ -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