reflex 0.7.14a6__tar.gz → 0.8.0__tar.gz

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 (443) hide show
  1. {reflex-0.7.14a6 → reflex-0.8.0}/PKG-INFO +15 -8
  2. {reflex-0.7.14a6 → reflex-0.8.0}/README.md +11 -4
  3. {reflex-0.7.14a6 → reflex-0.8.0}/pyproject.toml +7 -6
  4. reflex-0.8.0/reflex/.templates/jinja/app/rxconfig.py.jinja2 +9 -0
  5. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/package.json.jinja2 +1 -1
  6. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +21 -11
  7. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +1 -1
  8. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -1
  9. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +4 -0
  10. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +1 -0
  11. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/utils/context.js.jinja2 +25 -8
  12. reflex-0.8.0/reflex/.templates/web/app/entry.client.js +8 -0
  13. reflex-0.8.0/reflex/.templates/web/app/routes.js +10 -0
  14. reflex-0.8.0/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +35 -0
  15. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/postcss.config.js +1 -1
  16. reflex-0.8.0/reflex/.templates/web/react-router.config.js +6 -0
  17. reflex-0.8.0/reflex/.templates/web/styles/__reflex_style_reset.css +399 -0
  18. reflex-0.8.0/reflex/.templates/web/utils/client_side_routing.js +45 -0
  19. reflex-0.8.0/reflex/.templates/web/utils/react-theme.js +92 -0
  20. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/utils/state.js +251 -100
  21. reflex-0.8.0/reflex/.templates/web/vite-plugin-safari-cachebust.js +160 -0
  22. reflex-0.8.0/reflex/.templates/web/vite.config.js +39 -0
  23. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/__init__.py +1 -6
  24. reflex-0.8.0/reflex/__init__.pyi +351 -0
  25. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/app.py +86 -135
  26. reflex-0.8.0/reflex/base.py +47 -0
  27. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/compiler/compiler.py +70 -19
  28. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/compiler/templates.py +3 -3
  29. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/compiler/utils.py +91 -33
  30. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/__init__.py +0 -2
  31. reflex-0.8.0/reflex/components/__init__.pyi +39 -0
  32. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/__init__.py +1 -5
  33. reflex-0.8.0/reflex/components/base/__init__.pyi +35 -0
  34. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/app_wrap.pyi +7 -7
  35. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/body.pyi +7 -7
  36. reflex-0.8.0/reflex/components/base/document.py +39 -0
  37. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/document.pyi +88 -38
  38. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/error_boundary.pyi +7 -7
  39. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/fragment.pyi +7 -7
  40. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/link.pyi +12 -12
  41. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/meta.py +4 -15
  42. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/meta.pyi +31 -31
  43. reflex-0.8.0/reflex/components/base/script.py +78 -0
  44. reflex-0.8.0/reflex/components/base/script.pyi +304 -0
  45. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/strict_mode.pyi +7 -7
  46. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/component.py +146 -217
  47. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/__init__.py +1 -0
  48. reflex-0.8.0/reflex/components/core/__init__.pyi +82 -0
  49. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/auto_scroll.pyi +7 -7
  50. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/banner.pyi +33 -33
  51. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/client_side_routing.py +7 -6
  52. reflex-0.8.0/reflex/components/core/client_side_routing.pyi +70 -0
  53. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/clipboard.pyi +7 -7
  54. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/debounce.py +1 -0
  55. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/debounce.pyi +7 -7
  56. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/foreach.py +5 -4
  57. reflex-0.8.0/reflex/components/core/helmet.py +14 -0
  58. reflex-0.7.14a6/reflex/components/next/base.pyi → reflex-0.8.0/reflex/components/core/helmet.pyi +12 -10
  59. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/html.pyi +7 -7
  60. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/match.py +3 -3
  61. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/sticky.pyi +21 -20
  62. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/upload.py +4 -2
  63. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/upload.pyi +26 -25
  64. reflex-0.8.0/reflex/components/datadisplay/__init__.pyi +18 -0
  65. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/datadisplay/code.py +14 -79
  66. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/datadisplay/code.pyi +11 -13
  67. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/datadisplay/dataeditor.pyi +38 -15
  68. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/datadisplay/shiki_code_block.py +5 -3
  69. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/datadisplay/shiki_code_block.pyi +16 -15
  70. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/dynamic.py +5 -5
  71. reflex-0.8.0/reflex/components/el/__init__.pyi +511 -0
  72. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/element.pyi +7 -7
  73. reflex-0.8.0/reflex/components/el/elements/__init__.pyi +647 -0
  74. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/base.pyi +7 -7
  75. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/forms.pyi +146 -101
  76. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/inline.pyi +142 -142
  77. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/media.pyi +131 -130
  78. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/metadata.pyi +32 -32
  79. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/other.pyi +37 -37
  80. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/scripts.pyi +17 -17
  81. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/sectioning.pyi +77 -77
  82. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/tables.pyi +52 -52
  83. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/typography.pyi +77 -77
  84. reflex-0.8.0/reflex/components/field.py +175 -0
  85. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/gridjs/datatable.py +2 -2
  86. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/gridjs/datatable.pyi +14 -14
  87. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/lucide/icon.py +6 -2
  88. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/lucide/icon.pyi +19 -17
  89. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/markdown/markdown.py +5 -3
  90. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/markdown/markdown.pyi +7 -7
  91. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/moment/moment.py +1 -1
  92. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/moment/moment.pyi +7 -7
  93. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/plotly/plotly.py +12 -6
  94. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/plotly/plotly.pyi +50 -49
  95. reflex-0.8.0/reflex/components/props.py +426 -0
  96. reflex-0.8.0/reflex/components/radix/__init__.pyi +128 -0
  97. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/__init__.pyi +6 -4
  98. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/accordion.py +8 -1
  99. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/accordion.pyi +37 -37
  100. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/base.pyi +12 -12
  101. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/drawer.pyi +56 -55
  102. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/form.pyi +63 -53
  103. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/progress.pyi +26 -25
  104. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/slider.pyi +27 -27
  105. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/__init__.pyi +5 -6
  106. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/base.py +3 -3
  107. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/base.pyi +42 -42
  108. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/color_mode.py +5 -6
  109. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/color_mode.pyi +17 -17
  110. reflex-0.8.0/reflex/components/radix/themes/components/__init__.pyi +80 -0
  111. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/alert_dialog.pyi +37 -37
  112. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/aspect_ratio.pyi +7 -7
  113. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/avatar.pyi +7 -7
  114. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/badge.pyi +7 -7
  115. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/button.pyi +7 -7
  116. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/callout.pyi +26 -25
  117. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/card.pyi +7 -7
  118. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox.pyi +16 -15
  119. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox_cards.pyi +12 -12
  120. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox_group.pyi +12 -12
  121. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/context_menu.pyi +67 -67
  122. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/data_list.pyi +22 -22
  123. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/dialog.pyi +36 -35
  124. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/dropdown_menu.pyi +42 -42
  125. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/hover_card.pyi +21 -20
  126. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/icon_button.pyi +7 -7
  127. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/inset.pyi +7 -7
  128. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/popover.pyi +22 -22
  129. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/progress.pyi +7 -7
  130. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/radio.pyi +7 -7
  131. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/radio_cards.pyi +12 -12
  132. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/radio_group.pyi +21 -20
  133. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/scroll_area.pyi +7 -7
  134. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/segmented_control.pyi +12 -12
  135. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/select.pyi +46 -45
  136. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/separator.pyi +7 -7
  137. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/skeleton.pyi +7 -7
  138. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/slider.pyi +17 -9
  139. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/spinner.pyi +7 -7
  140. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/switch.pyi +7 -7
  141. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/table.pyi +37 -37
  142. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/tabs.pyi +26 -25
  143. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/text_area.pyi +15 -9
  144. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/text_field.pyi +32 -19
  145. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/tooltip.pyi +7 -7
  146. reflex-0.8.0/reflex/components/radix/themes/layout/__init__.pyi +32 -0
  147. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/base.pyi +7 -7
  148. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/box.pyi +7 -7
  149. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/center.pyi +7 -7
  150. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/container.pyi +7 -7
  151. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/flex.pyi +7 -7
  152. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/grid.pyi +7 -7
  153. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/list.pyi +26 -25
  154. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/section.pyi +7 -7
  155. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/spacer.pyi +7 -7
  156. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/stack.pyi +17 -17
  157. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/__init__.pyi +7 -5
  158. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/blockquote.pyi +7 -7
  159. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/code.pyi +7 -7
  160. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/heading.pyi +7 -7
  161. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/link.py +46 -11
  162. reflex-0.8.0/reflex/components/radix/themes/typography/link.pyi +711 -0
  163. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/text.pyi +36 -35
  164. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/react_player/audio.pyi +10 -8
  165. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/react_player/react_player.pyi +7 -7
  166. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/react_player/video.pyi +10 -8
  167. reflex-0.8.0/reflex/components/recharts/__init__.pyi +216 -0
  168. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/cartesian.py +10 -8
  169. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/cartesian.pyi +90 -94
  170. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/charts.py +4 -2
  171. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/charts.pyi +49 -49
  172. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/general.pyi +31 -31
  173. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/polar.py +8 -4
  174. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/polar.pyi +23 -23
  175. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/recharts.py +2 -2
  176. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/recharts.pyi +12 -12
  177. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/sonner/toast.py +3 -3
  178. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/sonner/toast.pyi +9 -9
  179. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/config.py +10 -113
  180. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/__init__.py +2 -2
  181. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/base.py +28 -11
  182. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/compiler.py +12 -3
  183. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/event.py +1 -0
  184. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/installer.py +26 -20
  185. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/route.py +27 -8
  186. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/state.py +2 -0
  187. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/custom_components/custom_components.py +0 -14
  188. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/environment.py +77 -5
  189. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/event.py +178 -81
  190. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/experimental/__init__.py +0 -30
  191. reflex-0.8.0/reflex/istate/__init__.py +70 -0
  192. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/istate/manager.py +1 -0
  193. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/istate/proxy.py +5 -3
  194. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/page.py +0 -27
  195. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/plugins/__init__.py +3 -2
  196. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/plugins/base.py +5 -1
  197. reflex-0.8.0/reflex/plugins/shared_tailwind.py +215 -0
  198. reflex-0.8.0/reflex/plugins/sitemap.py +206 -0
  199. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/plugins/tailwind_v3.py +15 -108
  200. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/plugins/tailwind_v4.py +18 -110
  201. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/reflex.py +1 -0
  202. reflex-0.8.0/reflex/route.py +222 -0
  203. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/state.py +171 -155
  204. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/testing.py +86 -16
  205. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/build.py +38 -82
  206. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/exec.py +83 -175
  207. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/export.py +2 -2
  208. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/format.py +1 -5
  209. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/imports.py +5 -16
  210. reflex-0.8.0/reflex/utils/misc.py +92 -0
  211. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/prerequisites.py +66 -68
  212. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/processes.py +24 -47
  213. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/pyi_generator.py +44 -49
  214. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/serializers.py +14 -1
  215. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/telemetry.py +0 -15
  216. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/types.py +197 -62
  217. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/vars/__init__.py +2 -0
  218. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/vars/base.py +367 -134
  219. reflex-0.7.14a6/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -6
  220. reflex-0.7.14a6/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -60
  221. reflex-0.7.14a6/reflex/.templates/web/next.config.js +0 -7
  222. reflex-0.7.14a6/reflex/.templates/web/utils/client_side_routing.js +0 -43
  223. reflex-0.7.14a6/reflex/__init__.pyi +0 -216
  224. reflex-0.7.14a6/reflex/base.py +0 -133
  225. reflex-0.7.14a6/reflex/components/__init__.pyi +0 -23
  226. reflex-0.7.14a6/reflex/components/base/__init__.pyi +0 -26
  227. reflex-0.7.14a6/reflex/components/base/document.py +0 -35
  228. reflex-0.7.14a6/reflex/components/base/head.py +0 -20
  229. reflex-0.7.14a6/reflex/components/base/head.pyi +0 -116
  230. reflex-0.7.14a6/reflex/components/base/script.py +0 -76
  231. reflex-0.7.14a6/reflex/components/base/script.pyi +0 -90
  232. reflex-0.7.14a6/reflex/components/core/__init__.pyi +0 -42
  233. reflex-0.7.14a6/reflex/components/core/client_side_routing.pyi +0 -121
  234. reflex-0.7.14a6/reflex/components/datadisplay/__init__.pyi +0 -12
  235. reflex-0.7.14a6/reflex/components/el/__init__.pyi +0 -251
  236. reflex-0.7.14a6/reflex/components/el/elements/__init__.pyi +0 -388
  237. reflex-0.7.14a6/reflex/components/next/__init__.py +0 -10
  238. reflex-0.7.14a6/reflex/components/next/base.py +0 -7
  239. reflex-0.7.14a6/reflex/components/next/image.py +0 -117
  240. reflex-0.7.14a6/reflex/components/next/image.pyi +0 -94
  241. reflex-0.7.14a6/reflex/components/next/link.py +0 -20
  242. reflex-0.7.14a6/reflex/components/next/link.pyi +0 -67
  243. reflex-0.7.14a6/reflex/components/next/video.py +0 -38
  244. reflex-0.7.14a6/reflex/components/next/video.pyi +0 -68
  245. reflex-0.7.14a6/reflex/components/props.py +0 -77
  246. reflex-0.7.14a6/reflex/components/radix/__init__.pyi +0 -70
  247. reflex-0.7.14a6/reflex/components/radix/themes/components/__init__.pyi +0 -43
  248. reflex-0.7.14a6/reflex/components/radix/themes/layout/__init__.pyi +0 -19
  249. reflex-0.7.14a6/reflex/components/radix/themes/typography/link.pyi +0 -408
  250. reflex-0.7.14a6/reflex/components/recharts/__init__.pyi +0 -108
  251. reflex-0.7.14a6/reflex/components/suneditor/__init__.py +0 -5
  252. reflex-0.7.14a6/reflex/components/suneditor/editor.py +0 -269
  253. reflex-0.7.14a6/reflex/components/suneditor/editor.pyi +0 -199
  254. reflex-0.7.14a6/reflex/experimental/layout.py +0 -254
  255. reflex-0.7.14a6/reflex/experimental/layout.pyi +0 -814
  256. reflex-0.7.14a6/reflex/istate/__init__.py +0 -1
  257. reflex-0.7.14a6/reflex/route.py +0 -140
  258. reflex-0.7.14a6/reflex/utils/misc.py +0 -25
  259. {reflex-0.7.14a6 → reflex-0.8.0}/.gitignore +0 -0
  260. {reflex-0.7.14a6 → reflex-0.8.0}/LICENSE +0 -0
  261. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  262. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  263. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/apps/blank/code/blank.py +0 -0
  264. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  265. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  266. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  267. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  268. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  269. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  270. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  271. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  272. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  273. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  274. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  275. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  276. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/.gitignore +0 -0
  277. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/components/shiki/code.js +0 -0
  278. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/jsconfig.json +0 -0
  279. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  280. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  281. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  282. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/range.js +0 -0
  283. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  284. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/__main__.py +0 -0
  285. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/admin.py +0 -0
  286. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/app_mixins/__init__.py +0 -0
  287. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/app_mixins/lifespan.py +0 -0
  288. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/app_mixins/middleware.py +0 -0
  289. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/app_mixins/mixin.py +0 -0
  290. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/assets.py +0 -0
  291. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/compiler/__init__.py +0 -0
  292. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/app_wrap.py +0 -0
  293. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/bare.py +0 -0
  294. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/body.py +0 -0
  295. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/error_boundary.py +0 -0
  296. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/fragment.py +0 -0
  297. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/link.py +0 -0
  298. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/base/strict_mode.py +0 -0
  299. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/auto_scroll.py +0 -0
  300. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/banner.py +0 -0
  301. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/breakpoints.py +0 -0
  302. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/clipboard.py +0 -0
  303. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/colors.py +0 -0
  304. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/cond.py +0 -0
  305. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/html.py +0 -0
  306. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/layout/__init__.py +0 -0
  307. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/responsive.py +0 -0
  308. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/core/sticky.py +0 -0
  309. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/datadisplay/__init__.py +0 -0
  310. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/datadisplay/dataeditor.py +0 -0
  311. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/datadisplay/logo.py +0 -0
  312. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/__init__.py +0 -0
  313. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/constants/__init__.py +0 -0
  314. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/constants/html.py +0 -0
  315. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/constants/react.py +0 -0
  316. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/constants/reflex.py +0 -0
  317. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/element.py +0 -0
  318. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/__init__.py +0 -0
  319. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/base.py +0 -0
  320. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/forms.py +0 -0
  321. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/inline.py +0 -0
  322. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/media.py +0 -0
  323. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/metadata.py +0 -0
  324. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/other.py +0 -0
  325. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/scripts.py +0 -0
  326. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/sectioning.py +0 -0
  327. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/tables.py +0 -0
  328. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/el/elements/typography.py +0 -0
  329. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/gridjs/__init__.py +0 -0
  330. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/literals.py +0 -0
  331. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/lucide/__init__.py +0 -0
  332. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/markdown/__init__.py +0 -0
  333. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/moment/__init__.py +0 -0
  334. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/plotly/__init__.py +0 -0
  335. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/__init__.py +0 -0
  336. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/__init__.py +0 -0
  337. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/base.py +0 -0
  338. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/drawer.py +0 -0
  339. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/form.py +0 -0
  340. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/progress.py +0 -0
  341. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/primitives/slider.py +0 -0
  342. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/__init__.py +0 -0
  343. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/__init__.py +0 -0
  344. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  345. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  346. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/avatar.py +0 -0
  347. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/badge.py +0 -0
  348. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/button.py +0 -0
  349. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/callout.py +0 -0
  350. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/card.py +0 -0
  351. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox.py +0 -0
  352. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  353. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  354. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/context_menu.py +0 -0
  355. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/data_list.py +0 -0
  356. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/dialog.py +0 -0
  357. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  358. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/hover_card.py +0 -0
  359. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/icon_button.py +0 -0
  360. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/inset.py +0 -0
  361. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/popover.py +0 -0
  362. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/progress.py +0 -0
  363. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/radio.py +0 -0
  364. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  365. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/radio_group.py +0 -0
  366. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  367. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  368. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/select.py +0 -0
  369. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/separator.py +0 -0
  370. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/skeleton.py +0 -0
  371. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/slider.py +0 -0
  372. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/spinner.py +0 -0
  373. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/switch.py +0 -0
  374. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/table.py +0 -0
  375. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/tabs.py +0 -0
  376. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/text_area.py +0 -0
  377. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/text_field.py +0 -0
  378. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/components/tooltip.py +0 -0
  379. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/__init__.py +0 -0
  380. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/base.py +0 -0
  381. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/box.py +0 -0
  382. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/center.py +0 -0
  383. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/container.py +0 -0
  384. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/flex.py +0 -0
  385. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/grid.py +0 -0
  386. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/list.py +0 -0
  387. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/section.py +0 -0
  388. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/spacer.py +0 -0
  389. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/layout/stack.py +0 -0
  390. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/__init__.py +0 -0
  391. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/base.py +0 -0
  392. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  393. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/code.py +0 -0
  394. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/heading.py +0 -0
  395. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/radix/themes/typography/text.py +0 -0
  396. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/react_player/__init__.py +0 -0
  397. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/react_player/audio.py +0 -0
  398. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/react_player/react_player.py +0 -0
  399. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/react_player/video.py +0 -0
  400. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/__init__.py +0 -0
  401. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/recharts/general.py +0 -0
  402. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/sonner/__init__.py +0 -0
  403. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/tags/__init__.py +0 -0
  404. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/tags/cond_tag.py +0 -0
  405. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/tags/iter_tag.py +0 -0
  406. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/tags/match_tag.py +0 -0
  407. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/tags/tag.py +0 -0
  408. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/components/tags/tagless.py +0 -0
  409. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/colors.py +0 -0
  410. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/config.py +0 -0
  411. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/custom_components.py +0 -0
  412. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/constants/utils.py +0 -0
  413. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/custom_components/__init__.py +0 -0
  414. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/experimental/client_state.py +0 -0
  415. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/experimental/hooks.py +0 -0
  416. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/istate/data.py +0 -0
  417. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/istate/dynamic.py +0 -0
  418. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/istate/storage.py +0 -0
  419. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/istate/wrappers.py +0 -0
  420. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/middleware/__init__.py +0 -0
  421. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/middleware/hydrate_middleware.py +0 -0
  422. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/middleware/middleware.py +0 -0
  423. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/model.py +0 -0
  424. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/py.typed +0 -0
  425. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/style.py +0 -0
  426. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/__init__.py +0 -0
  427. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/codespaces.py +0 -0
  428. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/compat.py +0 -0
  429. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/console.py +0 -0
  430. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/decorator.py +0 -0
  431. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/exceptions.py +0 -0
  432. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/lazy_loader.py +0 -0
  433. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/net.py +0 -0
  434. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/path_ops.py +0 -0
  435. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/redir.py +0 -0
  436. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/utils/registry.py +0 -0
  437. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/vars/datetime.py +0 -0
  438. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/vars/dep_tracking.py +0 -0
  439. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/vars/function.py +0 -0
  440. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/vars/number.py +0 -0
  441. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/vars/object.py +0 -0
  442. {reflex-0.7.14a6 → reflex-0.8.0}/reflex/vars/sequence.py +0 -0
  443. {reflex-0.7.14a6 → reflex-0.8.0}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.7.14a6
3
+ Version: 0.8.0
4
4
  Summary: Web apps in pure Python.
5
5
  Project-URL: homepage, https://reflex.dev
6
6
  Project-URL: repository, https://github.com/reflex-dev/reflex
@@ -19,14 +19,14 @@ Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3.13
20
20
  Requires-Python: <4.0,>=3.10
21
21
  Requires-Dist: alembic<2.0,>=1.15.2
22
- Requires-Dist: click>=8
22
+ Requires-Dist: click>=8.2
23
23
  Requires-Dist: fastapi>=0.115.0
24
- Requires-Dist: granian[reload]>=2.2.5
24
+ Requires-Dist: granian[reload]>=2.4.0
25
25
  Requires-Dist: httpx<1.0,>=0.28.0
26
26
  Requires-Dist: jinja2<4.0,>=3.1.2
27
27
  Requires-Dist: packaging<26,>=24.2
28
28
  Requires-Dist: platformdirs<5.0,>=4.3.7
29
- Requires-Dist: psutil<8.0,>=7.0.0
29
+ Requires-Dist: psutil<8.0,>=7.0.0; sys_platform == 'win32'
30
30
  Requires-Dist: pydantic<3.0,>=1.10.21
31
31
  Requires-Dist: python-multipart<1.0,>=0.0.20
32
32
  Requires-Dist: python-socketio<6.0,>=5.12.0
@@ -39,8 +39,7 @@ Requires-Dist: wrapt<2.0,>=1.17.0
39
39
  Description-Content-Type: text/markdown
40
40
 
41
41
  <div align="center">
42
- <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_dark.svg#gh-light-mode-only" alt="Reflex Logo" width="300px">
43
- <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_light.svg#gh-dark-mode-only" alt="Reflex Logo" width="300px">
42
+ <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex.svg" alt="Reflex Logo" width="300px">
44
43
 
45
44
  <hr>
46
45
 
@@ -60,7 +59,12 @@ Description-Content-Type: text/markdown
60
59
 
61
60
  ---
62
61
 
63
- # Reflex
62
+ > [!NOTE]
63
+ > 🚀 **Try [Reflex Build](https://build.reflex.dev/)** – our AI-powered app builder that generates full-stack Reflex applications in seconds.
64
+
65
+ ---
66
+
67
+ # Introduction
64
68
 
65
69
  Reflex is a library to build full-stack web apps in pure Python.
66
70
 
@@ -268,7 +272,10 @@ You can create a multi-page app by adding more pages.
268
272
 
269
273
  Reflex launched in December 2022 with the name Pynecone.
270
274
 
271
- Beginning in 2025, [Reflex Cloud](https://cloud.reflex.dev) has launched to provide the best hosting experience for Reflex apps. We will continue to develop it and implement more features.
275
+ 🚀 Introducing [Reflex Build](https://build.reflex.dev/) Our AI-Powered Builder
276
+ Reflex Build uses AI to generate complete full-stack Python applications. It helps you quickly create, customize, and refine your Reflex apps — from frontend components to backend logic — so you can focus on your ideas instead of boilerplate code. Whether you’re prototyping or scaling, Reflex Build accelerates development by intelligently scaffolding and optimizing your app’s entire stack.
277
+
278
+ Alongside this, [Reflex Cloud](https://cloud.reflex.dev) launched in 2025 to offer the best hosting experience for your Reflex apps. We’re continuously improving the platform with new features and capabilities.
272
279
 
273
280
  Reflex has new releases and features coming every week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
274
281
 
@@ -1,6 +1,5 @@
1
1
  <div align="center">
2
- <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_dark.svg#gh-light-mode-only" alt="Reflex Logo" width="300px">
3
- <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex_light.svg#gh-dark-mode-only" alt="Reflex Logo" width="300px">
2
+ <img src="https://raw.githubusercontent.com/reflex-dev/reflex/main/docs/images/reflex.svg" alt="Reflex Logo" width="300px">
4
3
 
5
4
  <hr>
6
5
 
@@ -20,7 +19,12 @@
20
19
 
21
20
  ---
22
21
 
23
- # Reflex
22
+ > [!NOTE]
23
+ > 🚀 **Try [Reflex Build](https://build.reflex.dev/)** – our AI-powered app builder that generates full-stack Reflex applications in seconds.
24
+
25
+ ---
26
+
27
+ # Introduction
24
28
 
25
29
  Reflex is a library to build full-stack web apps in pure Python.
26
30
 
@@ -228,7 +232,10 @@ You can create a multi-page app by adding more pages.
228
232
 
229
233
  Reflex launched in December 2022 with the name Pynecone.
230
234
 
231
- Beginning in 2025, [Reflex Cloud](https://cloud.reflex.dev) has launched to provide the best hosting experience for Reflex apps. We will continue to develop it and implement more features.
235
+ 🚀 Introducing [Reflex Build](https://build.reflex.dev/) Our AI-Powered Builder
236
+ Reflex Build uses AI to generate complete full-stack Python applications. It helps you quickly create, customize, and refine your Reflex apps — from frontend components to backend logic — so you can focus on your ideas instead of boilerplate code. Whether you’re prototyping or scaling, Reflex Build accelerates development by intelligently scaffolding and optimizing your app’s entire stack.
237
+
238
+ Alongside this, [Reflex Cloud](https://cloud.reflex.dev) launched in 2025 to offer the best hosting experience for your Reflex apps. We’re continuously improving the platform with new features and capabilities.
232
239
 
233
240
  Reflex has new releases and features coming every week! Make sure to :star: star and :eyes: watch this repository to stay up to date.
234
241
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.7.14a6"
3
+ version = "0.8.0"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -22,12 +22,12 @@ requires-python = ">=3.10,<4.0"
22
22
  dependencies = [
23
23
  "alembic >=1.15.2,<2.0",
24
24
  "fastapi >=0.115.0",
25
- "granian[reload] >=2.2.5",
25
+ "granian[reload] >=2.4.0",
26
26
  "httpx >=0.28.0,<1.0",
27
27
  "jinja2 >=3.1.2,<4.0",
28
28
  "packaging >=24.2,<26",
29
29
  "platformdirs >=4.3.7,<5.0",
30
- "psutil >=7.0.0,<8.0",
30
+ "psutil >=7.0.0,<8.0; sys_platform == 'win32'",
31
31
  "pydantic >=1.10.21,<3.0",
32
32
  "python-socketio >=5.12.0,<6.0",
33
33
  "python-multipart >=0.0.20,<1.0",
@@ -35,7 +35,7 @@ dependencies = [
35
35
  "reflex-hosting-cli >=0.1.47",
36
36
  "rich >=13,<15",
37
37
  "sqlmodel >=0.0.24,<0.1",
38
- "click >=8",
38
+ "click >=8.2",
39
39
  "typing_extensions >=4.13.0",
40
40
  "wrapt >=1.17.0,<2.0",
41
41
  ]
@@ -165,6 +165,7 @@ dev = [
165
165
  "playwright >=1.51",
166
166
  "plotly >=6.0",
167
167
  "pre-commit ==4.2.0",
168
+ "psutil >=7.0.0",
168
169
  "psycopg[binary] >=3.2",
169
170
  "pyright >=1.1.400",
170
171
  "pytest >=8.3",
@@ -228,7 +229,7 @@ fail_fast = true
228
229
 
229
230
  [[tool.pre-commit.repos]]
230
231
  repo = "https://github.com/astral-sh/ruff-pre-commit"
231
- rev = "v0.11.12"
232
+ rev = "v0.11.13"
232
233
  hooks = [
233
234
  { id = "ruff-format", args = [
234
235
  "reflex",
@@ -260,7 +261,7 @@ hooks = [
260
261
 
261
262
  [[tool.pre-commit.repos]]
262
263
  repo = "https://github.com/RobertCraigie/pyright-python"
263
- rev = "v1.1.401"
264
+ rev = "v1.1.402"
264
265
  hooks = [{ id = "pyright", args = ["reflex", "tests"], language = "system" }]
265
266
 
266
267
  [[tool.pre-commit.repos]]
@@ -0,0 +1,9 @@
1
+ import reflex as rx
2
+
3
+ config = rx.Config(
4
+ app_name="{{ app_name }}",
5
+ plugins=[
6
+ rx.plugins.SitemapPlugin(),
7
+ rx.plugins.TailwindV4Plugin(),
8
+ ],
9
+ )
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "reflex",
3
+ "type": "module",
3
4
  "scripts": {
4
5
  "dev": "{{ scripts.dev }}",
5
6
  "export": "{{ scripts.export }}",
6
- "export-sitemap": "{{ scripts.export_sitemap }}",
7
7
  "prod": "{{ scripts.prod }}"
8
8
  },
9
9
  "dependencies": {
@@ -2,12 +2,14 @@
2
2
  {% from "web/pages/macros.js.jinja2" import renderHooks %}
3
3
 
4
4
  {% block early_imports %}
5
- import '$/styles/__reflex_global_styles.css'
5
+ import reflexGlobalStyles from '$/styles/__reflex_global_styles.css?url';
6
6
  {% endblock %}
7
7
 
8
8
  {% block declaration %}
9
- import { EventLoopProvider, StateProvider, defaultColorMode } from "$/utils/context.js";
10
- import { ThemeProvider } from 'next-themes'
9
+ import { EventLoopProvider, StateProvider, defaultColorMode } from "$/utils/context";
10
+ import { ThemeProvider } from '$/utils/react-theme';
11
+ import { Layout as AppLayout } from './_document';
12
+ import { Outlet } from 'react-router';
11
13
  {% for library_alias, library_path in window_libraries %}
12
14
  import * as {{library_alias}} from "{{library_path}}";
13
15
  {% endfor %}
@@ -18,6 +20,10 @@ import * as {{library_alias}} from "{{library_path}}";
18
20
  {% endblock %}
19
21
 
20
22
  {% block export %}
23
+ export const links = () => [
24
+ { rel: 'stylesheet', href: reflexGlobalStyles, type: 'text/css' }
25
+ ];
26
+
21
27
  function AppWrap({children}) {
22
28
  {{ renderHooks(hooks) }}
23
29
 
@@ -26,8 +32,9 @@ function AppWrap({children}) {
26
32
  )
27
33
  }
28
34
 
29
- export default function MyApp({ Component, pageProps }) {
30
- React.useEffect(() => {
35
+
36
+ export function Layout({children}) {
37
+ useEffect(() => {
31
38
  // Make contexts and state objects available globally for dynamic eval'd components
32
39
  let windowImports = {
33
40
  {% for library_alias, library_path in window_libraries %}
@@ -36,17 +43,20 @@ export default function MyApp({ Component, pageProps }) {
36
43
  };
37
44
  window["__reflex"] = windowImports;
38
45
  }, []);
39
- return (
40
- jsx(ThemeProvider, {defaultTheme:defaultColorMode,attribute:"class"},
46
+
47
+ return jsx(AppLayout, {},
48
+ jsx(ThemeProvider, {defaultTheme: defaultColorMode, attribute: "class"},
41
49
  jsx(StateProvider, {},
42
- jsx(EventLoopProvider, {},
43
- jsx(AppWrap, {},
44
- jsx(Component, pageProps)
45
- )
50
+ jsx(EventLoopProvider, {},
51
+ jsx(AppWrap, {}, children)
46
52
  )
47
53
  )
48
54
  )
49
55
  );
50
56
  }
51
57
 
58
+ export default function App() {
59
+ return jsx(Outlet, {});
60
+ }
61
+
52
62
  {% endblock %}
@@ -1,7 +1,7 @@
1
1
  {% extends "web/pages/base_page.js.jinja2" %}
2
2
 
3
3
  {% block export %}
4
- export default function Document() {
4
+ export function Layout({children}) {
5
5
  return (
6
6
  {{utils.render(document)}}
7
7
  )
@@ -1,5 +1,4 @@
1
1
  {% import 'web/pages/utils.js.jinja2' as utils %}
2
- /** @jsxImportSource @emotion/react */
3
2
 
4
3
  {% block early_imports %}
5
4
  {% endblock %}
@@ -2,7 +2,11 @@
2
2
  {% from 'web/pages/macros.js.jinja2' import renderHooksWithMemo %}
3
3
  {% set all_hooks = component._get_all_hooks() %}
4
4
 
5
+ {% if export %}
5
6
  export function {{tag_name}} () {
7
+ {% else %}
8
+ function {{tag_name}} () {
9
+ {% endif %}
6
10
  {{ renderHooksWithMemo(all_hooks, memo_trigger_hooks) }}
7
11
 
8
12
  return (
@@ -1,4 +1,5 @@
1
1
  {%- block imports_styles %}
2
+ @layer __reflex_base;
2
3
  {% for sheet_name in stylesheets %}
3
4
  {{- "@import url('" + sheet_name + "'); " }}
4
5
  {% endfor %}
@@ -1,5 +1,6 @@
1
- import { createContext, useContext, useMemo, useReducer, useState, createElement } from "react"
2
- import { applyDelta, Event, hydrateClientStorage, useEventLoop, refs } from "$/utils/state.js"
1
+ import { createContext, useContext, useMemo, useReducer, useState, createElement, useEffect } from "react"
2
+ import { applyDelta, Event, hydrateClientStorage, useEventLoop, refs } from "$/utils/state"
3
+ import { jsx } from "@emotion/react";
3
4
 
4
5
  {% if initial_state %}
5
6
  export const initialState = {{ initial_state|json_dumps }}
@@ -68,8 +69,6 @@ export const initialEvents = () => []
68
69
 
69
70
  export const isDevMode = {{ is_dev_mode|json_dumps }}
70
71
 
71
- export const lastCompiledTimeStamp = {{ last_compiled_time|json_dumps }}
72
-
73
72
  export function UploadFilesProvider({ children }) {
74
73
  const [filesById, setFilesById] = useState({})
75
74
  refs["__clear_selected_files"] = (id) => setFilesById(filesById => {
@@ -77,7 +76,21 @@ export function UploadFilesProvider({ children }) {
77
76
  delete newFilesById[id]
78
77
  return newFilesById
79
78
  })
80
- return createElement(UploadFilesContext, {value:[filesById, setFilesById]}, children);
79
+ return createElement(
80
+ UploadFilesContext.Provider,
81
+ { value: [filesById, setFilesById] },
82
+ children
83
+ );
84
+ }
85
+
86
+ export function ClientSide(component) {
87
+ return ({ children, ...props }) => {
88
+ const [Component, setComponent] = useState(null);
89
+ useEffect(() => {
90
+ setComponent(component);
91
+ }, []);
92
+ return Component ? jsx(Component, props, children) : null;
93
+ };
81
94
  }
82
95
 
83
96
  export function EventLoopProvider({ children }) {
@@ -87,7 +100,11 @@ export function EventLoopProvider({ children }) {
87
100
  initialEvents,
88
101
  clientStorage,
89
102
  )
90
- return createElement(EventLoopContext, {value:[addEvents, connectErrors]}, children);
103
+ return createElement(
104
+ EventLoopContext.Provider,
105
+ { value: [addEvents, connectErrors] },
106
+ children
107
+ );
91
108
  }
92
109
 
93
110
  export function StateProvider({ children }) {
@@ -106,7 +123,7 @@ export function StateProvider({ children }) {
106
123
  {% for state_name in initial_state %}
107
124
  createElement(StateContexts.{{state_name|var_name}},{value: {{state_name|var_name}}},
108
125
  {% endfor %}
109
- createElement(DispatchContext.Provider, {value: dispatchers}, children),
110
- {% for state_name in initial_state|reverse %}){% endfor %}
126
+ createElement(DispatchContext, {value: dispatchers}, children)
127
+ {% for state_name in initial_state %}){% endfor %}
111
128
  )
112
129
  }
@@ -0,0 +1,8 @@
1
+ import { startTransition } from "react";
2
+ import { hydrateRoot } from "react-dom/client";
3
+ import { HydratedRouter } from "react-router/dom";
4
+ import { createElement } from "react";
5
+
6
+ startTransition(() => {
7
+ hydrateRoot(document, createElement(HydratedRouter));
8
+ });
@@ -0,0 +1,10 @@
1
+ import { route } from "@react-router/dev/routes";
2
+ import { flatRoutes } from "@react-router/fs-routes";
3
+
4
+ export default [
5
+ route("404", "routes/[404]._index.jsx", { id: "404" }),
6
+ ...(await flatRoutes({
7
+ ignoredRouteFiles: ["routes/\\[404\\]._index.jsx"],
8
+ })),
9
+ route("*", "routes/[404]._index.jsx"),
10
+ ];
@@ -0,0 +1,35 @@
1
+ import { useTheme } from "$/utils/react-theme";
2
+ import { createElement } from "react";
3
+ import { ColorModeContext, defaultColorMode } from "$/utils/context";
4
+
5
+ export default function RadixThemesColorModeProvider({ children }) {
6
+ const { theme, resolvedTheme, setTheme } = useTheme();
7
+
8
+ const toggleColorMode = () => {
9
+ setTheme(resolvedTheme === "light" ? "dark" : "light");
10
+ };
11
+
12
+ const setColorMode = (mode) => {
13
+ const allowedModes = ["light", "dark", "system"];
14
+ if (!allowedModes.includes(mode)) {
15
+ console.error(
16
+ `Invalid color mode "${mode}". Defaulting to "${defaultColorMode}".`,
17
+ );
18
+ mode = defaultColorMode;
19
+ }
20
+ setTheme(mode);
21
+ };
22
+
23
+ return createElement(
24
+ ColorModeContext.Provider,
25
+ {
26
+ value: {
27
+ rawColorMode: theme,
28
+ resolvedColorMode: resolvedTheme,
29
+ toggleColorMode,
30
+ setColorMode,
31
+ },
32
+ },
33
+ children,
34
+ );
35
+ }
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  plugins: {
3
3
  "postcss-import": {},
4
4
  autoprefixer: {},
@@ -0,0 +1,6 @@
1
+ export default {
2
+ future: {
3
+ unstable_optimizeDeps: true,
4
+ },
5
+ ssr: false,
6
+ };