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
@@ -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
- from reflex.event import EventType
10
+ from reflex.event import EventType, PointerEventInfo
11
11
  from reflex.vars.base import Var
12
12
 
13
13
  from .base import BaseHTML
14
14
 
15
15
  class Blockquote(BaseHTML):
16
- @overload
17
16
  @classmethod
18
- def create( # type: ignore
17
+ def create(
19
18
  cls,
20
19
  *children,
21
20
  cite: Var[str] | str | None = None,
@@ -209,9 +208,9 @@ class Blockquote(BaseHTML):
209
208
  autofocus: bool | None = None,
210
209
  custom_attrs: dict[str, Var | Any] | None = None,
211
210
  on_blur: EventType[()] | None = None,
212
- on_click: EventType[()] | None = None,
213
- on_context_menu: EventType[()] | None = None,
214
- 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,
215
214
  on_focus: EventType[()] | None = None,
216
215
  on_mount: EventType[()] | None = None,
217
216
  on_mouse_down: EventType[()] | None = None,
@@ -222,6 +221,7 @@ class Blockquote(BaseHTML):
222
221
  on_mouse_over: EventType[()] | None = None,
223
222
  on_mouse_up: EventType[()] | None = None,
224
223
  on_scroll: EventType[()] | None = None,
224
+ on_scroll_end: EventType[()] | None = None,
225
225
  on_unmount: EventType[()] | None = None,
226
226
  **props,
227
227
  ) -> Blockquote:
@@ -260,9 +260,8 @@ class Blockquote(BaseHTML):
260
260
  """
261
261
 
262
262
  class Dd(BaseHTML):
263
- @overload
264
263
  @classmethod
265
- def create( # type: ignore
264
+ def create(
266
265
  cls,
267
266
  *children,
268
267
  access_key: Var[str] | str | None = None,
@@ -455,9 +454,9 @@ class Dd(BaseHTML):
455
454
  autofocus: bool | None = None,
456
455
  custom_attrs: dict[str, Var | Any] | None = None,
457
456
  on_blur: EventType[()] | None = None,
458
- on_click: EventType[()] | None = None,
459
- on_context_menu: EventType[()] | None = None,
460
- on_double_click: EventType[()] | None = None,
457
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
458
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
459
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
461
460
  on_focus: EventType[()] | None = None,
462
461
  on_mount: EventType[()] | None = None,
463
462
  on_mouse_down: EventType[()] | None = None,
@@ -468,6 +467,7 @@ class Dd(BaseHTML):
468
467
  on_mouse_over: EventType[()] | None = None,
469
468
  on_mouse_up: EventType[()] | None = None,
470
469
  on_scroll: EventType[()] | None = None,
470
+ on_scroll_end: EventType[()] | None = None,
471
471
  on_unmount: EventType[()] | None = None,
472
472
  **props,
473
473
  ) -> Dd:
@@ -505,9 +505,8 @@ class Dd(BaseHTML):
505
505
  """
506
506
 
507
507
  class Div(BaseHTML):
508
- @overload
509
508
  @classmethod
510
- def create( # type: ignore
509
+ def create(
511
510
  cls,
512
511
  *children,
513
512
  access_key: Var[str] | str | None = None,
@@ -700,9 +699,9 @@ class Div(BaseHTML):
700
699
  autofocus: bool | None = None,
701
700
  custom_attrs: dict[str, Var | Any] | None = None,
702
701
  on_blur: EventType[()] | None = None,
703
- on_click: EventType[()] | None = None,
704
- on_context_menu: EventType[()] | None = None,
705
- on_double_click: EventType[()] | None = None,
702
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
703
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
704
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
706
705
  on_focus: EventType[()] | None = None,
707
706
  on_mount: EventType[()] | None = None,
708
707
  on_mouse_down: EventType[()] | None = None,
@@ -713,6 +712,7 @@ class Div(BaseHTML):
713
712
  on_mouse_over: EventType[()] | None = None,
714
713
  on_mouse_up: EventType[()] | None = None,
715
714
  on_scroll: EventType[()] | None = None,
715
+ on_scroll_end: EventType[()] | None = None,
716
716
  on_unmount: EventType[()] | None = None,
717
717
  **props,
718
718
  ) -> Div:
@@ -750,9 +750,8 @@ class Div(BaseHTML):
750
750
  """
751
751
 
752
752
  class Dl(BaseHTML):
753
- @overload
754
753
  @classmethod
755
- def create( # type: ignore
754
+ def create(
756
755
  cls,
757
756
  *children,
758
757
  access_key: Var[str] | str | None = None,
@@ -945,9 +944,9 @@ class Dl(BaseHTML):
945
944
  autofocus: bool | None = None,
946
945
  custom_attrs: dict[str, Var | Any] | None = None,
947
946
  on_blur: EventType[()] | None = None,
948
- on_click: EventType[()] | None = None,
949
- on_context_menu: EventType[()] | None = None,
950
- on_double_click: EventType[()] | None = None,
947
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
948
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
949
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
951
950
  on_focus: EventType[()] | None = None,
952
951
  on_mount: EventType[()] | None = None,
953
952
  on_mouse_down: EventType[()] | None = None,
@@ -958,6 +957,7 @@ class Dl(BaseHTML):
958
957
  on_mouse_over: EventType[()] | None = None,
959
958
  on_mouse_up: EventType[()] | None = None,
960
959
  on_scroll: EventType[()] | None = None,
960
+ on_scroll_end: EventType[()] | None = None,
961
961
  on_unmount: EventType[()] | None = None,
962
962
  **props,
963
963
  ) -> Dl:
@@ -995,9 +995,8 @@ class Dl(BaseHTML):
995
995
  """
996
996
 
997
997
  class Dt(BaseHTML):
998
- @overload
999
998
  @classmethod
1000
- def create( # type: ignore
999
+ def create(
1001
1000
  cls,
1002
1001
  *children,
1003
1002
  access_key: Var[str] | str | None = None,
@@ -1190,9 +1189,9 @@ class Dt(BaseHTML):
1190
1189
  autofocus: bool | None = None,
1191
1190
  custom_attrs: dict[str, Var | Any] | None = None,
1192
1191
  on_blur: EventType[()] | None = None,
1193
- on_click: EventType[()] | None = None,
1194
- on_context_menu: EventType[()] | None = None,
1195
- on_double_click: EventType[()] | None = None,
1192
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1193
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1194
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1196
1195
  on_focus: EventType[()] | None = None,
1197
1196
  on_mount: EventType[()] | None = None,
1198
1197
  on_mouse_down: EventType[()] | None = None,
@@ -1203,6 +1202,7 @@ class Dt(BaseHTML):
1203
1202
  on_mouse_over: EventType[()] | None = None,
1204
1203
  on_mouse_up: EventType[()] | None = None,
1205
1204
  on_scroll: EventType[()] | None = None,
1205
+ on_scroll_end: EventType[()] | None = None,
1206
1206
  on_unmount: EventType[()] | None = None,
1207
1207
  **props,
1208
1208
  ) -> Dt:
@@ -1240,9 +1240,8 @@ class Dt(BaseHTML):
1240
1240
  """
1241
1241
 
1242
1242
  class Figcaption(BaseHTML):
1243
- @overload
1244
1243
  @classmethod
1245
- def create( # type: ignore
1244
+ def create(
1246
1245
  cls,
1247
1246
  *children,
1248
1247
  access_key: Var[str] | str | None = None,
@@ -1435,9 +1434,9 @@ class Figcaption(BaseHTML):
1435
1434
  autofocus: bool | None = None,
1436
1435
  custom_attrs: dict[str, Var | Any] | None = None,
1437
1436
  on_blur: EventType[()] | None = None,
1438
- on_click: EventType[()] | None = None,
1439
- on_context_menu: EventType[()] | None = None,
1440
- on_double_click: EventType[()] | None = None,
1437
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1438
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1439
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1441
1440
  on_focus: EventType[()] | None = None,
1442
1441
  on_mount: EventType[()] | None = None,
1443
1442
  on_mouse_down: EventType[()] | None = None,
@@ -1448,6 +1447,7 @@ class Figcaption(BaseHTML):
1448
1447
  on_mouse_over: EventType[()] | None = None,
1449
1448
  on_mouse_up: EventType[()] | None = None,
1450
1449
  on_scroll: EventType[()] | None = None,
1450
+ on_scroll_end: EventType[()] | None = None,
1451
1451
  on_unmount: EventType[()] | None = None,
1452
1452
  **props,
1453
1453
  ) -> Figcaption:
@@ -1485,9 +1485,8 @@ class Figcaption(BaseHTML):
1485
1485
  """
1486
1486
 
1487
1487
  class Hr(BaseHTML):
1488
- @overload
1489
1488
  @classmethod
1490
- def create( # type: ignore
1489
+ def create(
1491
1490
  cls,
1492
1491
  *children,
1493
1492
  access_key: Var[str] | str | None = None,
@@ -1680,9 +1679,9 @@ class Hr(BaseHTML):
1680
1679
  autofocus: bool | None = None,
1681
1680
  custom_attrs: dict[str, Var | Any] | None = None,
1682
1681
  on_blur: EventType[()] | None = None,
1683
- on_click: EventType[()] | None = None,
1684
- on_context_menu: EventType[()] | None = None,
1685
- on_double_click: EventType[()] | None = None,
1682
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1683
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1684
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1686
1685
  on_focus: EventType[()] | None = None,
1687
1686
  on_mount: EventType[()] | None = None,
1688
1687
  on_mouse_down: EventType[()] | None = None,
@@ -1693,6 +1692,7 @@ class Hr(BaseHTML):
1693
1692
  on_mouse_over: EventType[()] | None = None,
1694
1693
  on_mouse_up: EventType[()] | None = None,
1695
1694
  on_scroll: EventType[()] | None = None,
1695
+ on_scroll_end: EventType[()] | None = None,
1696
1696
  on_unmount: EventType[()] | None = None,
1697
1697
  **props,
1698
1698
  ) -> Hr:
@@ -1730,9 +1730,8 @@ class Hr(BaseHTML):
1730
1730
  """
1731
1731
 
1732
1732
  class Li(BaseHTML):
1733
- @overload
1734
1733
  @classmethod
1735
- def create( # type: ignore
1734
+ def create(
1736
1735
  cls,
1737
1736
  *children,
1738
1737
  access_key: Var[str] | str | None = None,
@@ -1925,9 +1924,9 @@ class Li(BaseHTML):
1925
1924
  autofocus: bool | None = None,
1926
1925
  custom_attrs: dict[str, Var | Any] | None = None,
1927
1926
  on_blur: EventType[()] | None = None,
1928
- on_click: EventType[()] | None = None,
1929
- on_context_menu: EventType[()] | None = None,
1930
- on_double_click: EventType[()] | None = None,
1927
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1928
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1929
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1931
1930
  on_focus: EventType[()] | None = None,
1932
1931
  on_mount: EventType[()] | None = None,
1933
1932
  on_mouse_down: EventType[()] | None = None,
@@ -1938,6 +1937,7 @@ class Li(BaseHTML):
1938
1937
  on_mouse_over: EventType[()] | None = None,
1939
1938
  on_mouse_up: EventType[()] | None = None,
1940
1939
  on_scroll: EventType[()] | None = None,
1940
+ on_scroll_end: EventType[()] | None = None,
1941
1941
  on_unmount: EventType[()] | None = None,
1942
1942
  **props,
1943
1943
  ) -> Li:
@@ -1975,9 +1975,8 @@ class Li(BaseHTML):
1975
1975
  """
1976
1976
 
1977
1977
  class Menu(BaseHTML):
1978
- @overload
1979
1978
  @classmethod
1980
- def create( # type: ignore
1979
+ def create(
1981
1980
  cls,
1982
1981
  *children,
1983
1982
  type: Var[str] | str | None = None,
@@ -2171,9 +2170,9 @@ class Menu(BaseHTML):
2171
2170
  autofocus: bool | None = None,
2172
2171
  custom_attrs: dict[str, Var | Any] | None = None,
2173
2172
  on_blur: EventType[()] | None = None,
2174
- on_click: EventType[()] | None = None,
2175
- on_context_menu: EventType[()] | None = None,
2176
- on_double_click: EventType[()] | None = None,
2173
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2174
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
2175
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2177
2176
  on_focus: EventType[()] | None = None,
2178
2177
  on_mount: EventType[()] | None = None,
2179
2178
  on_mouse_down: EventType[()] | None = None,
@@ -2184,6 +2183,7 @@ class Menu(BaseHTML):
2184
2183
  on_mouse_over: EventType[()] | None = None,
2185
2184
  on_mouse_up: EventType[()] | None = None,
2186
2185
  on_scroll: EventType[()] | None = None,
2186
+ on_scroll_end: EventType[()] | None = None,
2187
2187
  on_unmount: EventType[()] | None = None,
2188
2188
  **props,
2189
2189
  ) -> Menu:
@@ -2222,9 +2222,8 @@ class Menu(BaseHTML):
2222
2222
  """
2223
2223
 
2224
2224
  class Ol(BaseHTML):
2225
- @overload
2226
2225
  @classmethod
2227
- def create( # type: ignore
2226
+ def create(
2228
2227
  cls,
2229
2228
  *children,
2230
2229
  reversed: Var[bool] | bool | None = None,
@@ -2422,9 +2421,9 @@ class Ol(BaseHTML):
2422
2421
  autofocus: bool | None = None,
2423
2422
  custom_attrs: dict[str, Var | Any] | None = None,
2424
2423
  on_blur: EventType[()] | None = None,
2425
- on_click: EventType[()] | None = None,
2426
- on_context_menu: EventType[()] | None = None,
2427
- on_double_click: EventType[()] | None = None,
2424
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2425
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
2426
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2428
2427
  on_focus: EventType[()] | None = None,
2429
2428
  on_mount: EventType[()] | None = None,
2430
2429
  on_mouse_down: EventType[()] | None = None,
@@ -2435,6 +2434,7 @@ class Ol(BaseHTML):
2435
2434
  on_mouse_over: EventType[()] | None = None,
2436
2435
  on_mouse_up: EventType[()] | None = None,
2437
2436
  on_scroll: EventType[()] | None = None,
2437
+ on_scroll_end: EventType[()] | None = None,
2438
2438
  on_unmount: EventType[()] | None = None,
2439
2439
  **props,
2440
2440
  ) -> Ol:
@@ -2475,9 +2475,8 @@ class Ol(BaseHTML):
2475
2475
  """
2476
2476
 
2477
2477
  class P(BaseHTML):
2478
- @overload
2479
2478
  @classmethod
2480
- def create( # type: ignore
2479
+ def create(
2481
2480
  cls,
2482
2481
  *children,
2483
2482
  access_key: Var[str] | str | None = None,
@@ -2670,9 +2669,9 @@ class P(BaseHTML):
2670
2669
  autofocus: bool | None = None,
2671
2670
  custom_attrs: dict[str, Var | Any] | None = None,
2672
2671
  on_blur: EventType[()] | None = None,
2673
- on_click: EventType[()] | None = None,
2674
- on_context_menu: EventType[()] | None = None,
2675
- on_double_click: EventType[()] | None = None,
2672
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2673
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
2674
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2676
2675
  on_focus: EventType[()] | None = None,
2677
2676
  on_mount: EventType[()] | None = None,
2678
2677
  on_mouse_down: EventType[()] | None = None,
@@ -2683,6 +2682,7 @@ class P(BaseHTML):
2683
2682
  on_mouse_over: EventType[()] | None = None,
2684
2683
  on_mouse_up: EventType[()] | None = None,
2685
2684
  on_scroll: EventType[()] | None = None,
2685
+ on_scroll_end: EventType[()] | None = None,
2686
2686
  on_unmount: EventType[()] | None = None,
2687
2687
  **props,
2688
2688
  ) -> P:
@@ -2720,9 +2720,8 @@ class P(BaseHTML):
2720
2720
  """
2721
2721
 
2722
2722
  class Pre(BaseHTML):
2723
- @overload
2724
2723
  @classmethod
2725
- def create( # type: ignore
2724
+ def create(
2726
2725
  cls,
2727
2726
  *children,
2728
2727
  access_key: Var[str] | str | None = None,
@@ -2915,9 +2914,9 @@ class Pre(BaseHTML):
2915
2914
  autofocus: bool | None = None,
2916
2915
  custom_attrs: dict[str, Var | Any] | None = None,
2917
2916
  on_blur: EventType[()] | None = None,
2918
- on_click: EventType[()] | None = None,
2919
- on_context_menu: EventType[()] | None = None,
2920
- on_double_click: EventType[()] | None = None,
2917
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2918
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
2919
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2921
2920
  on_focus: EventType[()] | None = None,
2922
2921
  on_mount: EventType[()] | None = None,
2923
2922
  on_mouse_down: EventType[()] | None = None,
@@ -2928,6 +2927,7 @@ class Pre(BaseHTML):
2928
2927
  on_mouse_over: EventType[()] | None = None,
2929
2928
  on_mouse_up: EventType[()] | None = None,
2930
2929
  on_scroll: EventType[()] | None = None,
2930
+ on_scroll_end: EventType[()] | None = None,
2931
2931
  on_unmount: EventType[()] | None = None,
2932
2932
  **props,
2933
2933
  ) -> Pre:
@@ -2965,9 +2965,8 @@ class Pre(BaseHTML):
2965
2965
  """
2966
2966
 
2967
2967
  class Ul(BaseHTML):
2968
- @overload
2969
2968
  @classmethod
2970
- def create( # type: ignore
2969
+ def create(
2971
2970
  cls,
2972
2971
  *children,
2973
2972
  access_key: Var[str] | str | None = None,
@@ -3160,9 +3159,9 @@ class Ul(BaseHTML):
3160
3159
  autofocus: bool | None = None,
3161
3160
  custom_attrs: dict[str, Var | Any] | None = None,
3162
3161
  on_blur: EventType[()] | None = None,
3163
- on_click: EventType[()] | None = None,
3164
- on_context_menu: EventType[()] | None = None,
3165
- on_double_click: EventType[()] | None = None,
3162
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
3163
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
3164
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
3166
3165
  on_focus: EventType[()] | None = None,
3167
3166
  on_mount: EventType[()] | None = None,
3168
3167
  on_mouse_down: EventType[()] | None = None,
@@ -3173,6 +3172,7 @@ class Ul(BaseHTML):
3173
3172
  on_mouse_over: EventType[()] | None = None,
3174
3173
  on_mouse_up: EventType[()] | None = None,
3175
3174
  on_scroll: EventType[()] | None = None,
3175
+ on_scroll_end: EventType[()] | None = None,
3176
3176
  on_unmount: EventType[()] | None = None,
3177
3177
  **props,
3178
3178
  ) -> Ul:
@@ -3210,9 +3210,8 @@ class Ul(BaseHTML):
3210
3210
  """
3211
3211
 
3212
3212
  class Ins(BaseHTML):
3213
- @overload
3214
3213
  @classmethod
3215
- def create( # type: ignore
3214
+ def create(
3216
3215
  cls,
3217
3216
  *children,
3218
3217
  cite: Var[str] | str | None = None,
@@ -3407,9 +3406,9 @@ class Ins(BaseHTML):
3407
3406
  autofocus: bool | None = None,
3408
3407
  custom_attrs: dict[str, Var | Any] | None = None,
3409
3408
  on_blur: EventType[()] | None = None,
3410
- on_click: EventType[()] | None = None,
3411
- on_context_menu: EventType[()] | None = None,
3412
- on_double_click: EventType[()] | None = None,
3409
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
3410
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
3411
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
3413
3412
  on_focus: EventType[()] | None = None,
3414
3413
  on_mount: EventType[()] | None = None,
3415
3414
  on_mouse_down: EventType[()] | None = None,
@@ -3420,6 +3419,7 @@ class Ins(BaseHTML):
3420
3419
  on_mouse_over: EventType[()] | None = None,
3421
3420
  on_mouse_up: EventType[()] | None = None,
3422
3421
  on_scroll: EventType[()] | None = None,
3422
+ on_scroll_end: EventType[()] | None = None,
3423
3423
  on_unmount: EventType[()] | None = None,
3424
3424
  **props,
3425
3425
  ) -> Ins:
@@ -3459,9 +3459,8 @@ class Ins(BaseHTML):
3459
3459
  """
3460
3460
 
3461
3461
  class Del(BaseHTML):
3462
- @overload
3463
3462
  @classmethod
3464
- def create( # type: ignore
3463
+ def create(
3465
3464
  cls,
3466
3465
  *children,
3467
3466
  cite: Var[str] | str | None = None,
@@ -3656,9 +3655,9 @@ class Del(BaseHTML):
3656
3655
  autofocus: bool | None = None,
3657
3656
  custom_attrs: dict[str, Var | Any] | None = None,
3658
3657
  on_blur: EventType[()] | None = None,
3659
- on_click: EventType[()] | None = None,
3660
- on_context_menu: EventType[()] | None = None,
3661
- on_double_click: EventType[()] | None = None,
3658
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
3659
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
3660
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
3662
3661
  on_focus: EventType[()] | None = None,
3663
3662
  on_mount: EventType[()] | None = None,
3664
3663
  on_mouse_down: EventType[()] | None = None,
@@ -3669,6 +3668,7 @@ class Del(BaseHTML):
3669
3668
  on_mouse_over: EventType[()] | None = None,
3670
3669
  on_mouse_up: EventType[()] | None = None,
3671
3670
  on_scroll: EventType[()] | None = None,
3671
+ on_scroll_end: EventType[()] | None = None,
3672
3672
  on_unmount: EventType[()] | None = None,
3673
3673
  **props,
3674
3674
  ) -> Del:
@@ -0,0 +1,175 @@
1
+ """Shared field infrastructure for components and props."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import Callable
6
+ from dataclasses import _MISSING_TYPE, MISSING
7
+ from typing import Annotated, Any, Generic, TypeVar, get_origin
8
+
9
+ FIELD_TYPE = TypeVar("FIELD_TYPE")
10
+
11
+
12
+ class BaseField(Generic[FIELD_TYPE]):
13
+ """Base field class used by internal metadata classes."""
14
+
15
+ def __init__(
16
+ self,
17
+ default: FIELD_TYPE | _MISSING_TYPE = MISSING,
18
+ default_factory: Callable[[], FIELD_TYPE] | None = None,
19
+ annotated_type: type[Any] | _MISSING_TYPE = MISSING,
20
+ ) -> None:
21
+ """Initialize the field.
22
+
23
+ Args:
24
+ default: The default value for the field.
25
+ default_factory: The default factory for the field.
26
+ annotated_type: The annotated type for the field.
27
+ """
28
+ self.default = default
29
+ self.default_factory = default_factory
30
+ self.outer_type_ = self.annotated_type = annotated_type
31
+
32
+ # Process type annotation
33
+ type_origin = get_origin(annotated_type) or annotated_type
34
+ if type_origin is Annotated:
35
+ type_origin = annotated_type.__origin__ # pyright: ignore [reportAttributeAccessIssue]
36
+ # For Annotated types, use the actual type inside the annotation
37
+ self.type_ = annotated_type
38
+ else:
39
+ # For other types (including Union), preserve the original type
40
+ self.type_ = annotated_type
41
+ self.type_origin = type_origin
42
+
43
+ def default_value(self) -> FIELD_TYPE:
44
+ """Get the default value for the field.
45
+
46
+ Returns:
47
+ The default value for the field.
48
+
49
+ Raises:
50
+ ValueError: If no default value or factory is provided.
51
+ """
52
+ if self.default is not MISSING:
53
+ return self.default
54
+ if self.default_factory is not None:
55
+ return self.default_factory()
56
+ msg = "No default value or factory provided."
57
+ raise ValueError(msg)
58
+
59
+
60
+ class FieldBasedMeta(type):
61
+ """Shared metaclass for field-based classes like components and props.
62
+
63
+ Provides common field inheritance and processing logic for both
64
+ PropsBaseMeta and BaseComponentMeta.
65
+ """
66
+
67
+ def __new__(cls, name: str, bases: tuple[type], namespace: dict[str, Any]) -> type:
68
+ """Create a new field-based class.
69
+
70
+ Args:
71
+ name: The name of the class.
72
+ bases: The base classes.
73
+ namespace: The class namespace.
74
+
75
+ Returns:
76
+ The new class.
77
+ """
78
+ # Collect inherited fields from base classes
79
+ inherited_fields = cls._collect_inherited_fields(bases)
80
+
81
+ # Get annotations from the namespace
82
+ annotations = cls._resolve_annotations(namespace, name)
83
+
84
+ # Process field overrides (fields with values but no annotations)
85
+ own_fields = cls._process_field_overrides(
86
+ namespace, annotations, inherited_fields
87
+ )
88
+
89
+ # Process annotated fields
90
+ own_fields.update(
91
+ cls._process_annotated_fields(namespace, annotations, inherited_fields)
92
+ )
93
+
94
+ # Finalize fields and store on class
95
+ cls._finalize_fields(namespace, inherited_fields, own_fields)
96
+
97
+ return super().__new__(cls, name, bases, namespace)
98
+
99
+ @classmethod
100
+ def _collect_inherited_fields(cls, bases: tuple[type]) -> dict[str, Any]:
101
+ inherited_fields: dict[str, Any] = {}
102
+
103
+ # Collect inherited fields from base classes
104
+ for base in bases[::-1]:
105
+ if hasattr(base, "_inherited_fields"):
106
+ inherited_fields.update(base._inherited_fields)
107
+ for base in bases[::-1]:
108
+ if hasattr(base, "_own_fields"):
109
+ inherited_fields.update(base._own_fields)
110
+
111
+ return inherited_fields
112
+
113
+ @classmethod
114
+ def _resolve_annotations(
115
+ cls, namespace: dict[str, Any], name: str
116
+ ) -> dict[str, Any]:
117
+ return namespace.get("__annotations__", {})
118
+
119
+ @classmethod
120
+ def _process_field_overrides(
121
+ cls,
122
+ namespace: dict[str, Any],
123
+ annotations: dict[str, Any],
124
+ inherited_fields: dict[str, Any],
125
+ ) -> dict[str, Any]:
126
+ own_fields: dict[str, Any] = {}
127
+
128
+ for key, value in namespace.items():
129
+ if key not in annotations and key in inherited_fields:
130
+ inherited_field = inherited_fields[key]
131
+ new_field = cls._create_field(
132
+ annotated_type=inherited_field.annotated_type,
133
+ default=value,
134
+ default_factory=None,
135
+ )
136
+ own_fields[key] = new_field
137
+
138
+ return own_fields
139
+
140
+ @classmethod
141
+ def _process_annotated_fields(
142
+ cls,
143
+ namespace: dict[str, Any],
144
+ annotations: dict[str, Any],
145
+ inherited_fields: dict[str, Any],
146
+ ) -> dict[str, Any]:
147
+ raise NotImplementedError
148
+
149
+ @classmethod
150
+ def _create_field(
151
+ cls,
152
+ annotated_type: Any,
153
+ default: Any = MISSING,
154
+ default_factory: Callable[[], Any] | None = None,
155
+ ) -> Any:
156
+ raise NotImplementedError
157
+
158
+ @classmethod
159
+ def _finalize_fields(
160
+ cls,
161
+ namespace: dict[str, Any],
162
+ inherited_fields: dict[str, Any],
163
+ own_fields: dict[str, Any],
164
+ ) -> None:
165
+ # Combine all fields
166
+ all_fields = inherited_fields | own_fields
167
+
168
+ # Set field names for compatibility
169
+ for field_name, field in all_fields.items():
170
+ field._name = field_name
171
+
172
+ # Store field mappings on the class
173
+ namespace["_own_fields"] = own_fields
174
+ namespace["_inherited_fields"] = inherited_fields
175
+ namespace["_fields"] = all_fields
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  from collections.abc import Sequence
6
6
  from typing import Any
7
7
 
8
- from reflex.components.component import Component
8
+ from reflex.components.component import NoSSRComponent
9
9
  from reflex.components.tags import Tag
10
10
  from reflex.utils import types
11
11
  from reflex.utils.imports import ImportDict
@@ -13,7 +13,7 @@ from reflex.utils.serializers import serialize
13
13
  from reflex.vars.base import LiteralVar, Var, is_computed_var
14
14
 
15
15
 
16
- class Gridjs(Component):
16
+ class Gridjs(NoSSRComponent):
17
17
  """A component that wraps a nivo bar component."""
18
18
 
19
19
  library = "gridjs-react@6.1.1"