reflex 0.7.14a5__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 (236) 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 +103 -152
  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.14a5.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-0.7.14a5.dist-info/RECORD +0 -407
  234. {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/WHEEL +0 -0
  235. {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/entry_points.txt +0 -0
  236. {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -4,13 +4,13 @@
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.component import Component, ComponentNamespace
10
10
  from reflex.components.core.breakpoints import Breakpoints
11
11
  from reflex.components.lucide.icon import Icon
12
12
  from reflex.components.radix.primitives.base import RadixPrimitiveComponent
13
- from reflex.event import EventType
13
+ from reflex.event import EventType, PointerEventInfo
14
14
  from reflex.vars.base import Var
15
15
 
16
16
  LiteralAccordionType = Literal["single", "multiple"]
@@ -22,9 +22,8 @@ DEFAULT_ANIMATION_EASING = "cubic-bezier(0.87, 0, 0.13, 1)"
22
22
 
23
23
  class AccordionComponent(RadixPrimitiveComponent):
24
24
  def add_style(self): ...
25
- @overload
26
25
  @classmethod
27
- def create( # type: ignore
26
+ def create(
28
27
  cls,
29
28
  *children,
30
29
  color_scheme: Literal[
@@ -102,9 +101,9 @@ class AccordionComponent(RadixPrimitiveComponent):
102
101
  autofocus: bool | None = None,
103
102
  custom_attrs: dict[str, Var | Any] | None = None,
104
103
  on_blur: EventType[()] | None = None,
105
- on_click: EventType[()] | None = None,
106
- on_context_menu: EventType[()] | None = None,
107
- on_double_click: EventType[()] | None = None,
104
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
105
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
106
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
108
107
  on_focus: EventType[()] | None = None,
109
108
  on_mount: EventType[()] | None = None,
110
109
  on_mouse_down: EventType[()] | None = None,
@@ -115,6 +114,7 @@ class AccordionComponent(RadixPrimitiveComponent):
115
114
  on_mouse_over: EventType[()] | None = None,
116
115
  on_mouse_up: EventType[()] | None = None,
117
116
  on_scroll: EventType[()] | None = None,
117
+ on_scroll_end: EventType[()] | None = None,
118
118
  on_unmount: EventType[()] | None = None,
119
119
  **props,
120
120
  ) -> AccordionComponent:
@@ -142,9 +142,8 @@ def on_value_change(value: Var[str | list[str]]) -> tuple[Var[str | list[str]]]:
142
142
 
143
143
  class AccordionRoot(AccordionComponent):
144
144
  def add_style(self): ...
145
- @overload
146
145
  @classmethod
147
- def create( # type: ignore
146
+ def create(
148
147
  cls,
149
148
  *children,
150
149
  type: Literal["multiple", "single"]
@@ -239,9 +238,9 @@ class AccordionRoot(AccordionComponent):
239
238
  autofocus: bool | None = None,
240
239
  custom_attrs: dict[str, Var | Any] | None = None,
241
240
  on_blur: EventType[()] | None = None,
242
- on_click: EventType[()] | None = None,
243
- on_context_menu: EventType[()] | None = None,
244
- on_double_click: EventType[()] | None = None,
241
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
242
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
243
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
245
244
  on_focus: EventType[()] | None = None,
246
245
  on_mount: EventType[()] | None = None,
247
246
  on_mouse_down: EventType[()] | None = None,
@@ -252,6 +251,7 @@ class AccordionRoot(AccordionComponent):
252
251
  on_mouse_over: EventType[()] | None = None,
253
252
  on_mouse_up: EventType[()] | None = None,
254
253
  on_scroll: EventType[()] | None = None,
254
+ on_scroll_end: EventType[()] | None = None,
255
255
  on_unmount: EventType[()] | None = None,
256
256
  on_value_change: EventType[()] | EventType[str | list[str]] | None = None,
257
257
  **props,
@@ -289,9 +289,8 @@ class AccordionRoot(AccordionComponent):
289
289
  """
290
290
 
291
291
  class AccordionItem(AccordionComponent):
292
- @overload
293
292
  @classmethod
294
- def create( # type: ignore
293
+ def create(
295
294
  cls,
296
295
  *children,
297
296
  value: Var[str] | str | None = None,
@@ -373,9 +372,9 @@ class AccordionItem(AccordionComponent):
373
372
  autofocus: bool | None = None,
374
373
  custom_attrs: dict[str, Var | Any] | None = None,
375
374
  on_blur: EventType[()] | None = None,
376
- on_click: EventType[()] | None = None,
377
- on_context_menu: EventType[()] | None = None,
378
- on_double_click: EventType[()] | None = None,
375
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
376
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
377
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
379
378
  on_focus: EventType[()] | None = None,
380
379
  on_mount: EventType[()] | None = None,
381
380
  on_mouse_down: EventType[()] | None = None,
@@ -386,6 +385,7 @@ class AccordionItem(AccordionComponent):
386
385
  on_mouse_over: EventType[()] | None = None,
387
386
  on_mouse_up: EventType[()] | None = None,
388
387
  on_scroll: EventType[()] | None = None,
388
+ on_scroll_end: EventType[()] | None = None,
389
389
  on_unmount: EventType[()] | None = None,
390
390
  **props,
391
391
  ) -> AccordionItem:
@@ -416,9 +416,8 @@ class AccordionItem(AccordionComponent):
416
416
  def add_style(self) -> dict[str, Any] | None: ...
417
417
 
418
418
  class AccordionHeader(AccordionComponent):
419
- @overload
420
419
  @classmethod
421
- def create( # type: ignore
420
+ def create(
422
421
  cls,
423
422
  *children,
424
423
  color_scheme: Literal[
@@ -496,9 +495,9 @@ class AccordionHeader(AccordionComponent):
496
495
  autofocus: bool | None = None,
497
496
  custom_attrs: dict[str, Var | Any] | None = None,
498
497
  on_blur: EventType[()] | None = None,
499
- on_click: EventType[()] | None = None,
500
- on_context_menu: EventType[()] | None = None,
501
- on_double_click: EventType[()] | None = None,
498
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
499
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
500
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
502
501
  on_focus: EventType[()] | None = None,
503
502
  on_mount: EventType[()] | None = None,
504
503
  on_mouse_down: EventType[()] | None = None,
@@ -509,6 +508,7 @@ class AccordionHeader(AccordionComponent):
509
508
  on_mouse_over: EventType[()] | None = None,
510
509
  on_mouse_up: EventType[()] | None = None,
511
510
  on_scroll: EventType[()] | None = None,
511
+ on_scroll_end: EventType[()] | None = None,
512
512
  on_unmount: EventType[()] | None = None,
513
513
  **props,
514
514
  ) -> AccordionHeader:
@@ -535,9 +535,8 @@ class AccordionHeader(AccordionComponent):
535
535
  def add_style(self) -> dict[str, Any] | None: ...
536
536
 
537
537
  class AccordionTrigger(AccordionComponent):
538
- @overload
539
538
  @classmethod
540
- def create( # type: ignore
539
+ def create(
541
540
  cls,
542
541
  *children,
543
542
  color_scheme: Literal[
@@ -615,9 +614,9 @@ class AccordionTrigger(AccordionComponent):
615
614
  autofocus: bool | None = None,
616
615
  custom_attrs: dict[str, Var | Any] | None = None,
617
616
  on_blur: EventType[()] | None = None,
618
- on_click: EventType[()] | None = None,
619
- on_context_menu: EventType[()] | None = None,
620
- on_double_click: EventType[()] | None = None,
617
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
618
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
619
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
621
620
  on_focus: EventType[()] | None = None,
622
621
  on_mount: EventType[()] | None = None,
623
622
  on_mouse_down: EventType[()] | None = None,
@@ -628,6 +627,7 @@ class AccordionTrigger(AccordionComponent):
628
627
  on_mouse_over: EventType[()] | None = None,
629
628
  on_mouse_up: EventType[()] | None = None,
630
629
  on_scroll: EventType[()] | None = None,
630
+ on_scroll_end: EventType[()] | None = None,
631
631
  on_unmount: EventType[()] | None = None,
632
632
  **props,
633
633
  ) -> AccordionTrigger:
@@ -654,9 +654,8 @@ class AccordionTrigger(AccordionComponent):
654
654
  def add_style(self) -> dict[str, Any] | None: ...
655
655
 
656
656
  class AccordionIcon(Icon):
657
- @overload
658
657
  @classmethod
659
- def create( # type: ignore
658
+ def create(
660
659
  cls,
661
660
  *children,
662
661
  size: Var[int] | int | None = None,
@@ -672,9 +671,9 @@ class AccordionIcon(Icon):
672
671
  autofocus: bool | None = None,
673
672
  custom_attrs: dict[str, Var | Any] | None = None,
674
673
  on_blur: EventType[()] | None = None,
675
- on_click: EventType[()] | None = None,
676
- on_context_menu: EventType[()] | None = None,
677
- on_double_click: EventType[()] | None = None,
674
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
675
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
676
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
678
677
  on_focus: EventType[()] | None = None,
679
678
  on_mount: EventType[()] | None = None,
680
679
  on_mouse_down: EventType[()] | None = None,
@@ -685,6 +684,7 @@ class AccordionIcon(Icon):
685
684
  on_mouse_over: EventType[()] | None = None,
686
685
  on_mouse_up: EventType[()] | None = None,
687
686
  on_scroll: EventType[()] | None = None,
687
+ on_scroll_end: EventType[()] | None = None,
688
688
  on_unmount: EventType[()] | None = None,
689
689
  **props,
690
690
  ) -> AccordionIcon:
@@ -708,9 +708,8 @@ class AccordionIcon(Icon):
708
708
 
709
709
  class AccordionContent(AccordionComponent):
710
710
  def add_imports(self) -> dict: ...
711
- @overload
712
711
  @classmethod
713
- def create( # type: ignore
712
+ def create(
714
713
  cls,
715
714
  *children,
716
715
  color_scheme: Literal[
@@ -788,9 +787,9 @@ class AccordionContent(AccordionComponent):
788
787
  autofocus: bool | None = None,
789
788
  custom_attrs: dict[str, Var | Any] | None = None,
790
789
  on_blur: EventType[()] | None = None,
791
- on_click: EventType[()] | None = None,
792
- on_context_menu: EventType[()] | None = None,
793
- on_double_click: EventType[()] | None = None,
790
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
791
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
792
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
794
793
  on_focus: EventType[()] | None = None,
795
794
  on_mount: EventType[()] | None = None,
796
795
  on_mouse_down: EventType[()] | None = None,
@@ -801,6 +800,7 @@ class AccordionContent(AccordionComponent):
801
800
  on_mouse_over: EventType[()] | None = None,
802
801
  on_mouse_up: EventType[()] | None = None,
803
802
  on_scroll: EventType[()] | None = None,
803
+ on_scroll_end: EventType[()] | None = None,
804
804
  on_unmount: EventType[()] | None = None,
805
805
  **props,
806
806
  ) -> AccordionContent:
@@ -4,17 +4,16 @@
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
  class RadixPrimitiveComponent(Component):
15
- @overload
16
15
  @classmethod
17
- def create( # type: ignore
16
+ def create(
18
17
  cls,
19
18
  *children,
20
19
  as_child: Var[bool] | bool | None = None,
@@ -30,9 +29,9 @@ class RadixPrimitiveComponent(Component):
30
29
  autofocus: bool | None = None,
31
30
  custom_attrs: dict[str, Var | Any] | None = None,
32
31
  on_blur: EventType[()] | None = None,
33
- on_click: EventType[()] | None = None,
34
- on_context_menu: EventType[()] | None = None,
35
- 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,
36
35
  on_focus: EventType[()] | None = None,
37
36
  on_mount: EventType[()] | None = None,
38
37
  on_mouse_down: EventType[()] | None = None,
@@ -43,6 +42,7 @@ class RadixPrimitiveComponent(Component):
43
42
  on_mouse_over: EventType[()] | None = None,
44
43
  on_mouse_up: EventType[()] | None = None,
45
44
  on_scroll: EventType[()] | None = None,
45
+ on_scroll_end: EventType[()] | None = None,
46
46
  on_unmount: EventType[()] | None = None,
47
47
  **props,
48
48
  ) -> RadixPrimitiveComponent:
@@ -65,9 +65,8 @@ class RadixPrimitiveComponent(Component):
65
65
  """
66
66
 
67
67
  class RadixPrimitiveComponentWithClassName(RadixPrimitiveComponent):
68
- @overload
69
68
  @classmethod
70
- def create( # type: ignore
69
+ def create(
71
70
  cls,
72
71
  *children,
73
72
  as_child: Var[bool] | bool | None = None,
@@ -83,9 +82,9 @@ class RadixPrimitiveComponentWithClassName(RadixPrimitiveComponent):
83
82
  autofocus: bool | None = None,
84
83
  custom_attrs: dict[str, Var | Any] | None = None,
85
84
  on_blur: EventType[()] | None = None,
86
- on_click: EventType[()] | None = None,
87
- on_context_menu: EventType[()] | None = None,
88
- on_double_click: EventType[()] | None = None,
85
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
86
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
87
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
89
88
  on_focus: EventType[()] | None = None,
90
89
  on_mount: EventType[()] | None = None,
91
90
  on_mouse_down: EventType[()] | None = None,
@@ -96,6 +95,7 @@ class RadixPrimitiveComponentWithClassName(RadixPrimitiveComponent):
96
95
  on_mouse_over: EventType[()] | None = None,
97
96
  on_mouse_up: EventType[()] | None = None,
98
97
  on_scroll: EventType[()] | None = None,
98
+ on_scroll_end: EventType[()] | None = None,
99
99
  on_unmount: EventType[()] | None = None,
100
100
  **props,
101
101
  ) -> RadixPrimitiveComponentWithClassName:
@@ -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.component import ComponentNamespace
10
10
  from reflex.components.core.breakpoints import Breakpoints
11
11
  from reflex.components.radix.primitives.base import RadixPrimitiveComponent
12
- from reflex.event import EventType
12
+ from reflex.event import EventType, PointerEventInfo
13
13
  from reflex.vars.base import Var
14
14
 
15
15
  class DrawerComponent(RadixPrimitiveComponent):
16
- @overload
17
16
  @classmethod
18
- def create( # type: ignore
17
+ def create(
19
18
  cls,
20
19
  *children,
21
20
  as_child: Var[bool] | bool | None = None,
@@ -31,9 +30,9 @@ class DrawerComponent(RadixPrimitiveComponent):
31
30
  autofocus: bool | None = None,
32
31
  custom_attrs: dict[str, Var | Any] | None = None,
33
32
  on_blur: EventType[()] | None = None,
34
- on_click: EventType[()] | None = None,
35
- on_context_menu: EventType[()] | None = None,
36
- on_double_click: EventType[()] | None = None,
33
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
34
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
35
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
37
36
  on_focus: EventType[()] | None = None,
38
37
  on_mount: EventType[()] | None = None,
39
38
  on_mouse_down: EventType[()] | None = None,
@@ -44,6 +43,7 @@ class DrawerComponent(RadixPrimitiveComponent):
44
43
  on_mouse_over: EventType[()] | None = None,
45
44
  on_mouse_up: EventType[()] | None = None,
46
45
  on_scroll: EventType[()] | None = None,
46
+ on_scroll_end: EventType[()] | None = None,
47
47
  on_unmount: EventType[()] | None = None,
48
48
  **props,
49
49
  ) -> DrawerComponent:
@@ -68,9 +68,8 @@ class DrawerComponent(RadixPrimitiveComponent):
68
68
  LiteralDirectionType = Literal["top", "bottom", "left", "right"]
69
69
 
70
70
  class DrawerRoot(DrawerComponent):
71
- @overload
72
71
  @classmethod
73
- def create( # type: ignore
72
+ def create(
74
73
  cls,
75
74
  *children,
76
75
  default_open: Var[bool] | bool | None = None,
@@ -101,9 +100,9 @@ class DrawerRoot(DrawerComponent):
101
100
  custom_attrs: dict[str, Var | Any] | None = None,
102
101
  on_animation_end: EventType[()] | EventType[bool] | None = None,
103
102
  on_blur: EventType[()] | None = None,
104
- on_click: EventType[()] | None = None,
105
- on_context_menu: EventType[()] | None = None,
106
- on_double_click: EventType[()] | None = None,
103
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
104
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
105
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
107
106
  on_focus: EventType[()] | None = None,
108
107
  on_mount: EventType[()] | None = None,
109
108
  on_mouse_down: EventType[()] | None = None,
@@ -115,6 +114,7 @@ class DrawerRoot(DrawerComponent):
115
114
  on_mouse_up: EventType[()] | None = None,
116
115
  on_open_change: EventType[()] | EventType[bool] | None = None,
117
116
  on_scroll: EventType[()] | None = None,
117
+ on_scroll_end: EventType[()] | None = None,
118
118
  on_unmount: EventType[()] | None = None,
119
119
  **props,
120
120
  ) -> DrawerRoot:
@@ -151,9 +151,8 @@ class DrawerRoot(DrawerComponent):
151
151
  """
152
152
 
153
153
  class DrawerTrigger(DrawerComponent):
154
- @overload
155
154
  @classmethod
156
- def create( # type: ignore
155
+ def create(
157
156
  cls,
158
157
  *children,
159
158
  as_child: Var[bool] | bool | None = None,
@@ -169,9 +168,9 @@ class DrawerTrigger(DrawerComponent):
169
168
  autofocus: bool | None = None,
170
169
  custom_attrs: dict[str, Var | Any] | None = None,
171
170
  on_blur: EventType[()] | None = None,
172
- on_click: EventType[()] | None = None,
173
- on_context_menu: EventType[()] | None = None,
174
- on_double_click: EventType[()] | None = None,
171
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
172
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
173
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
175
174
  on_focus: EventType[()] | None = None,
176
175
  on_mount: EventType[()] | None = None,
177
176
  on_mouse_down: EventType[()] | None = None,
@@ -182,6 +181,7 @@ class DrawerTrigger(DrawerComponent):
182
181
  on_mouse_over: EventType[()] | None = None,
183
182
  on_mouse_up: EventType[()] | None = None,
184
183
  on_scroll: EventType[()] | None = None,
184
+ on_scroll_end: EventType[()] | None = None,
185
185
  on_unmount: EventType[()] | None = None,
186
186
  **props,
187
187
  ) -> DrawerTrigger:
@@ -204,9 +204,8 @@ class DrawerTrigger(DrawerComponent):
204
204
  """
205
205
 
206
206
  class DrawerPortal(DrawerComponent):
207
- @overload
208
207
  @classmethod
209
- def create( # type: ignore
208
+ def create(
210
209
  cls,
211
210
  *children,
212
211
  as_child: Var[bool] | bool | None = None,
@@ -222,9 +221,9 @@ class DrawerPortal(DrawerComponent):
222
221
  autofocus: bool | None = None,
223
222
  custom_attrs: dict[str, Var | Any] | None = None,
224
223
  on_blur: EventType[()] | None = None,
225
- on_click: EventType[()] | None = None,
226
- on_context_menu: EventType[()] | None = None,
227
- on_double_click: EventType[()] | None = None,
224
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
225
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
226
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
228
227
  on_focus: EventType[()] | None = None,
229
228
  on_mount: EventType[()] | None = None,
230
229
  on_mouse_down: EventType[()] | None = None,
@@ -235,6 +234,7 @@ class DrawerPortal(DrawerComponent):
235
234
  on_mouse_over: EventType[()] | None = None,
236
235
  on_mouse_up: EventType[()] | None = None,
237
236
  on_scroll: EventType[()] | None = None,
237
+ on_scroll_end: EventType[()] | None = None,
238
238
  on_unmount: EventType[()] | None = None,
239
239
  **props,
240
240
  ) -> DrawerPortal:
@@ -257,9 +257,8 @@ class DrawerPortal(DrawerComponent):
257
257
  """
258
258
 
259
259
  class DrawerContent(DrawerComponent):
260
- @overload
261
260
  @classmethod
262
- def create( # type: ignore
261
+ def create(
263
262
  cls,
264
263
  *children,
265
264
  as_child: Var[bool] | bool | None = None,
@@ -275,10 +274,10 @@ class DrawerContent(DrawerComponent):
275
274
  autofocus: bool | None = None,
276
275
  custom_attrs: dict[str, Var | Any] | None = None,
277
276
  on_blur: EventType[()] | None = None,
278
- on_click: EventType[()] | None = None,
277
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
279
278
  on_close_auto_focus: EventType[()] | None = None,
280
- on_context_menu: EventType[()] | None = None,
281
- on_double_click: EventType[()] | None = None,
279
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
280
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
282
281
  on_escape_key_down: EventType[()] | None = None,
283
282
  on_focus: EventType[()] | None = None,
284
283
  on_interact_outside: EventType[()] | None = None,
@@ -293,6 +292,7 @@ class DrawerContent(DrawerComponent):
293
292
  on_open_auto_focus: EventType[()] | None = None,
294
293
  on_pointer_down_outside: EventType[()] | None = None,
295
294
  on_scroll: EventType[()] | None = None,
295
+ on_scroll_end: EventType[()] | None = None,
296
296
  on_unmount: EventType[()] | None = None,
297
297
  **props,
298
298
  ) -> DrawerContent:
@@ -319,9 +319,8 @@ class DrawerContent(DrawerComponent):
319
319
  """
320
320
 
321
321
  class DrawerOverlay(DrawerComponent):
322
- @overload
323
322
  @classmethod
324
- def create( # type: ignore
323
+ def create(
325
324
  cls,
326
325
  *children,
327
326
  as_child: Var[bool] | bool | None = None,
@@ -337,9 +336,9 @@ class DrawerOverlay(DrawerComponent):
337
336
  autofocus: bool | None = None,
338
337
  custom_attrs: dict[str, Var | Any] | None = None,
339
338
  on_blur: EventType[()] | None = None,
340
- on_click: EventType[()] | None = None,
341
- on_context_menu: EventType[()] | None = None,
342
- on_double_click: EventType[()] | None = None,
339
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
340
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
341
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
343
342
  on_focus: EventType[()] | None = None,
344
343
  on_mount: EventType[()] | None = None,
345
344
  on_mouse_down: EventType[()] | None = None,
@@ -350,6 +349,7 @@ class DrawerOverlay(DrawerComponent):
350
349
  on_mouse_over: EventType[()] | None = None,
351
350
  on_mouse_up: EventType[()] | None = None,
352
351
  on_scroll: EventType[()] | None = None,
352
+ on_scroll_end: EventType[()] | None = None,
353
353
  on_unmount: EventType[()] | None = None,
354
354
  **props,
355
355
  ) -> DrawerOverlay:
@@ -372,9 +372,8 @@ class DrawerOverlay(DrawerComponent):
372
372
  """
373
373
 
374
374
  class DrawerClose(DrawerTrigger):
375
- @overload
376
375
  @classmethod
377
- def create( # type: ignore
376
+ def create(
378
377
  cls,
379
378
  *children,
380
379
  as_child: Var[bool] | bool | None = None,
@@ -390,9 +389,9 @@ class DrawerClose(DrawerTrigger):
390
389
  autofocus: bool | None = None,
391
390
  custom_attrs: dict[str, Var | Any] | None = None,
392
391
  on_blur: EventType[()] | None = None,
393
- on_click: EventType[()] | None = None,
394
- on_context_menu: EventType[()] | None = None,
395
- on_double_click: EventType[()] | None = None,
392
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
393
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
394
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
396
395
  on_focus: EventType[()] | None = None,
397
396
  on_mount: EventType[()] | None = None,
398
397
  on_mouse_down: EventType[()] | None = None,
@@ -403,6 +402,7 @@ class DrawerClose(DrawerTrigger):
403
402
  on_mouse_over: EventType[()] | None = None,
404
403
  on_mouse_up: EventType[()] | None = None,
405
404
  on_scroll: EventType[()] | None = None,
405
+ on_scroll_end: EventType[()] | None = None,
406
406
  on_unmount: EventType[()] | None = None,
407
407
  **props,
408
408
  ) -> DrawerClose:
@@ -425,9 +425,8 @@ class DrawerClose(DrawerTrigger):
425
425
  """
426
426
 
427
427
  class DrawerTitle(DrawerComponent):
428
- @overload
429
428
  @classmethod
430
- def create( # type: ignore
429
+ def create(
431
430
  cls,
432
431
  *children,
433
432
  as_child: Var[bool] | bool | None = None,
@@ -443,9 +442,9 @@ class DrawerTitle(DrawerComponent):
443
442
  autofocus: bool | None = None,
444
443
  custom_attrs: dict[str, Var | Any] | None = None,
445
444
  on_blur: EventType[()] | None = None,
446
- on_click: EventType[()] | None = None,
447
- on_context_menu: EventType[()] | None = None,
448
- on_double_click: EventType[()] | None = None,
445
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
446
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
447
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
449
448
  on_focus: EventType[()] | None = None,
450
449
  on_mount: EventType[()] | None = None,
451
450
  on_mouse_down: EventType[()] | None = None,
@@ -456,6 +455,7 @@ class DrawerTitle(DrawerComponent):
456
455
  on_mouse_over: EventType[()] | None = None,
457
456
  on_mouse_up: EventType[()] | None = None,
458
457
  on_scroll: EventType[()] | None = None,
458
+ on_scroll_end: EventType[()] | None = None,
459
459
  on_unmount: EventType[()] | None = None,
460
460
  **props,
461
461
  ) -> DrawerTitle:
@@ -478,9 +478,8 @@ class DrawerTitle(DrawerComponent):
478
478
  """
479
479
 
480
480
  class DrawerDescription(DrawerComponent):
481
- @overload
482
481
  @classmethod
483
- def create( # type: ignore
482
+ def create(
484
483
  cls,
485
484
  *children,
486
485
  as_child: Var[bool] | bool | None = None,
@@ -496,9 +495,9 @@ class DrawerDescription(DrawerComponent):
496
495
  autofocus: bool | None = None,
497
496
  custom_attrs: dict[str, Var | Any] | None = None,
498
497
  on_blur: EventType[()] | None = None,
499
- on_click: EventType[()] | None = None,
500
- on_context_menu: EventType[()] | None = None,
501
- on_double_click: EventType[()] | None = None,
498
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
499
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
500
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
502
501
  on_focus: EventType[()] | None = None,
503
502
  on_mount: EventType[()] | None = None,
504
503
  on_mouse_down: EventType[()] | None = None,
@@ -509,6 +508,7 @@ class DrawerDescription(DrawerComponent):
509
508
  on_mouse_over: EventType[()] | None = None,
510
509
  on_mouse_up: EventType[()] | None = None,
511
510
  on_scroll: EventType[()] | None = None,
511
+ on_scroll_end: EventType[()] | None = None,
512
512
  on_unmount: EventType[()] | None = None,
513
513
  **props,
514
514
  ) -> DrawerDescription:
@@ -531,9 +531,8 @@ class DrawerDescription(DrawerComponent):
531
531
  """
532
532
 
533
533
  class DrawerHandle(DrawerComponent):
534
- @overload
535
534
  @classmethod
536
- def create( # type: ignore
535
+ def create(
537
536
  cls,
538
537
  *children,
539
538
  as_child: Var[bool] | bool | None = None,
@@ -549,9 +548,9 @@ class DrawerHandle(DrawerComponent):
549
548
  autofocus: bool | None = None,
550
549
  custom_attrs: dict[str, Var | Any] | None = None,
551
550
  on_blur: EventType[()] | None = None,
552
- on_click: EventType[()] | None = None,
553
- on_context_menu: EventType[()] | None = None,
554
- on_double_click: EventType[()] | None = None,
551
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
552
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
553
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
555
554
  on_focus: EventType[()] | None = None,
556
555
  on_mount: EventType[()] | None = None,
557
556
  on_mouse_down: EventType[()] | None = None,
@@ -562,6 +561,7 @@ class DrawerHandle(DrawerComponent):
562
561
  on_mouse_over: EventType[()] | None = None,
563
562
  on_mouse_up: EventType[()] | None = None,
564
563
  on_scroll: EventType[()] | None = None,
564
+ on_scroll_end: EventType[()] | None = None,
565
565
  on_unmount: EventType[()] | None = None,
566
566
  **props,
567
567
  ) -> DrawerHandle:
@@ -625,9 +625,9 @@ class Drawer(ComponentNamespace):
625
625
  custom_attrs: dict[str, Var | Any] | None = None,
626
626
  on_animation_end: EventType[()] | EventType[bool] | None = None,
627
627
  on_blur: EventType[()] | None = None,
628
- on_click: EventType[()] | None = None,
629
- on_context_menu: EventType[()] | None = None,
630
- on_double_click: EventType[()] | None = None,
628
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
629
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
630
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
631
631
  on_focus: EventType[()] | None = None,
632
632
  on_mount: EventType[()] | None = None,
633
633
  on_mouse_down: EventType[()] | None = None,
@@ -639,6 +639,7 @@ class Drawer(ComponentNamespace):
639
639
  on_mouse_up: EventType[()] | None = None,
640
640
  on_open_change: EventType[()] | EventType[bool] | None = None,
641
641
  on_scroll: EventType[()] | None = None,
642
+ on_scroll_end: EventType[()] | None = None,
642
643
  on_unmount: EventType[()] | None = None,
643
644
  **props,
644
645
  ) -> DrawerRoot: