reflex 0.7.14a5__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 (442) hide show
  1. {reflex-0.7.14a5 → reflex-0.8.0}/PKG-INFO +15 -8
  2. {reflex-0.7.14a5 → reflex-0.8.0}/README.md +11 -4
  3. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/package.json.jinja2 +1 -1
  6. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +21 -11
  7. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +1 -1
  8. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -1
  9. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +4 -0
  10. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +1 -0
  11. {reflex-0.7.14a5 → 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.14a5 → 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.14a5 → 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.14a5 → reflex-0.8.0}/reflex/__init__.py +1 -6
  24. reflex-0.8.0/reflex/__init__.pyi +351 -0
  25. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/app.py +103 -152
  26. reflex-0.8.0/reflex/base.py +47 -0
  27. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/compiler/compiler.py +70 -19
  28. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/compiler/templates.py +3 -3
  29. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/compiler/utils.py +91 -33
  30. {reflex-0.7.14a5 → 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.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/base/app_wrap.pyi +7 -7
  35. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/base/document.pyi +88 -38
  38. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/error_boundary.pyi +7 -7
  39. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/fragment.pyi +7 -7
  40. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/link.pyi +12 -12
  41. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/meta.py +4 -15
  42. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/base/strict_mode.pyi +7 -7
  46. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/component.py +146 -217
  47. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/core/auto_scroll.pyi +7 -7
  50. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/banner.pyi +33 -33
  51. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/core/clipboard.pyi +7 -7
  54. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/debounce.py +1 -0
  55. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/debounce.pyi +7 -7
  56. {reflex-0.7.14a5 → 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.14a5/reflex/components/next/base.pyi → reflex-0.8.0/reflex/components/core/helmet.pyi +12 -10
  59. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/html.pyi +7 -7
  60. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/match.py +3 -3
  61. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/sticky.pyi +21 -20
  62. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/upload.py +4 -2
  63. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/datadisplay/code.py +14 -79
  66. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/datadisplay/code.pyi +11 -13
  67. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/datadisplay/dataeditor.pyi +38 -15
  68. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/datadisplay/shiki_code_block.py +5 -3
  69. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/datadisplay/shiki_code_block.pyi +16 -15
  70. {reflex-0.7.14a5 → 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.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/el/elements/base.pyi +7 -7
  75. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/forms.pyi +146 -101
  76. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/inline.pyi +142 -142
  77. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/media.pyi +131 -130
  78. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/metadata.pyi +32 -32
  79. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/other.pyi +37 -37
  80. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/scripts.pyi +17 -17
  81. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/sectioning.pyi +77 -77
  82. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/tables.pyi +52 -52
  83. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/gridjs/datatable.py +2 -2
  86. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/gridjs/datatable.pyi +14 -14
  87. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/lucide/icon.py +6 -2
  88. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/lucide/icon.pyi +19 -17
  89. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/markdown/markdown.py +5 -3
  90. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/markdown/markdown.pyi +7 -7
  91. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/moment/moment.py +1 -1
  92. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/moment/moment.pyi +7 -7
  93. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/plotly/plotly.py +12 -6
  94. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/__init__.pyi +6 -4
  98. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/accordion.py +8 -1
  99. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/accordion.pyi +37 -37
  100. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/base.pyi +12 -12
  101. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/drawer.pyi +56 -55
  102. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/form.pyi +63 -53
  103. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/progress.pyi +26 -25
  104. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/slider.pyi +27 -27
  105. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/__init__.pyi +5 -6
  106. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/base.py +3 -3
  107. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/base.pyi +42 -42
  108. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/color_mode.py +5 -6
  109. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/alert_dialog.pyi +37 -37
  112. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/aspect_ratio.pyi +7 -7
  113. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/avatar.pyi +7 -7
  114. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/badge.pyi +7 -7
  115. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/button.pyi +7 -7
  116. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/callout.pyi +26 -25
  117. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/card.pyi +7 -7
  118. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox.pyi +16 -15
  119. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox_cards.pyi +12 -12
  120. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox_group.pyi +12 -12
  121. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/context_menu.pyi +67 -67
  122. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/data_list.pyi +22 -22
  123. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/dialog.pyi +36 -35
  124. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/dropdown_menu.pyi +42 -42
  125. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/hover_card.pyi +21 -20
  126. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/icon_button.pyi +7 -7
  127. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/inset.pyi +7 -7
  128. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/popover.pyi +22 -22
  129. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/progress.pyi +7 -7
  130. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/radio.pyi +7 -7
  131. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/radio_cards.pyi +12 -12
  132. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/radio_group.pyi +21 -20
  133. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/scroll_area.pyi +7 -7
  134. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/segmented_control.pyi +12 -12
  135. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/select.pyi +46 -45
  136. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/separator.pyi +7 -7
  137. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/skeleton.pyi +7 -7
  138. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/slider.pyi +17 -9
  139. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/spinner.pyi +7 -7
  140. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/switch.pyi +7 -7
  141. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/table.pyi +37 -37
  142. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/tabs.pyi +26 -25
  143. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/text_area.pyi +15 -9
  144. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/text_field.pyi +32 -19
  145. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/base.pyi +7 -7
  148. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/box.pyi +7 -7
  149. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/center.pyi +7 -7
  150. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/container.pyi +7 -7
  151. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/flex.pyi +7 -7
  152. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/grid.pyi +7 -7
  153. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/list.pyi +26 -25
  154. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/section.pyi +7 -7
  155. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/spacer.pyi +7 -7
  156. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/stack.pyi +17 -17
  157. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/__init__.pyi +7 -5
  158. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/blockquote.pyi +7 -7
  159. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/code.pyi +7 -7
  160. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/heading.pyi +7 -7
  161. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/text.pyi +36 -35
  164. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/react_player/audio.pyi +10 -8
  165. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/react_player/react_player.pyi +7 -7
  166. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/components/recharts/cartesian.py +10 -8
  169. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/cartesian.pyi +90 -94
  170. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/charts.py +4 -2
  171. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/charts.pyi +49 -49
  172. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/general.pyi +31 -31
  173. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/polar.py +8 -4
  174. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/polar.pyi +23 -23
  175. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/recharts.py +2 -2
  176. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/recharts.pyi +12 -12
  177. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/sonner/toast.py +3 -3
  178. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/sonner/toast.pyi +9 -9
  179. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/config.py +10 -113
  180. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/__init__.py +2 -2
  181. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/base.py +28 -11
  182. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/compiler.py +12 -3
  183. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/event.py +1 -0
  184. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/installer.py +26 -20
  185. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/route.py +27 -8
  186. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/state.py +2 -0
  187. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/custom_components/custom_components.py +0 -14
  188. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/environment.py +77 -5
  189. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/event.py +178 -81
  190. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/istate/manager.py +1 -0
  193. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/istate/proxy.py +5 -3
  194. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/page.py +0 -27
  195. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/plugins/__init__.py +3 -2
  196. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/plugins/tailwind_v3.py +15 -108
  200. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/plugins/tailwind_v4.py +18 -110
  201. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/reflex.py +1 -0
  202. reflex-0.8.0/reflex/route.py +222 -0
  203. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/state.py +171 -155
  204. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/testing.py +86 -16
  205. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/build.py +38 -82
  206. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/exec.py +83 -175
  207. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/export.py +2 -2
  208. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/format.py +1 -5
  209. {reflex-0.7.14a5 → 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.14a5 → reflex-0.8.0}/reflex/utils/prerequisites.py +66 -68
  212. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/processes.py +24 -47
  213. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/pyi_generator.py +44 -49
  214. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/serializers.py +14 -1
  215. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/telemetry.py +0 -15
  216. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/types.py +197 -62
  217. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/vars/__init__.py +2 -0
  218. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/vars/base.py +367 -134
  219. reflex-0.7.14a5/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -6
  220. reflex-0.7.14a5/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -60
  221. reflex-0.7.14a5/reflex/.templates/web/next.config.js +0 -7
  222. reflex-0.7.14a5/reflex/.templates/web/utils/client_side_routing.js +0 -43
  223. reflex-0.7.14a5/reflex/__init__.pyi +0 -216
  224. reflex-0.7.14a5/reflex/base.py +0 -133
  225. reflex-0.7.14a5/reflex/components/__init__.pyi +0 -23
  226. reflex-0.7.14a5/reflex/components/base/__init__.pyi +0 -26
  227. reflex-0.7.14a5/reflex/components/base/document.py +0 -35
  228. reflex-0.7.14a5/reflex/components/base/head.py +0 -20
  229. reflex-0.7.14a5/reflex/components/base/head.pyi +0 -116
  230. reflex-0.7.14a5/reflex/components/base/script.py +0 -76
  231. reflex-0.7.14a5/reflex/components/base/script.pyi +0 -90
  232. reflex-0.7.14a5/reflex/components/core/__init__.pyi +0 -42
  233. reflex-0.7.14a5/reflex/components/core/client_side_routing.pyi +0 -121
  234. reflex-0.7.14a5/reflex/components/datadisplay/__init__.pyi +0 -12
  235. reflex-0.7.14a5/reflex/components/el/__init__.pyi +0 -251
  236. reflex-0.7.14a5/reflex/components/el/elements/__init__.pyi +0 -388
  237. reflex-0.7.14a5/reflex/components/next/__init__.py +0 -10
  238. reflex-0.7.14a5/reflex/components/next/base.py +0 -7
  239. reflex-0.7.14a5/reflex/components/next/image.py +0 -117
  240. reflex-0.7.14a5/reflex/components/next/image.pyi +0 -94
  241. reflex-0.7.14a5/reflex/components/next/link.py +0 -20
  242. reflex-0.7.14a5/reflex/components/next/link.pyi +0 -67
  243. reflex-0.7.14a5/reflex/components/next/video.py +0 -38
  244. reflex-0.7.14a5/reflex/components/next/video.pyi +0 -68
  245. reflex-0.7.14a5/reflex/components/props.py +0 -77
  246. reflex-0.7.14a5/reflex/components/radix/__init__.pyi +0 -70
  247. reflex-0.7.14a5/reflex/components/radix/themes/components/__init__.pyi +0 -43
  248. reflex-0.7.14a5/reflex/components/radix/themes/layout/__init__.pyi +0 -19
  249. reflex-0.7.14a5/reflex/components/radix/themes/typography/link.pyi +0 -408
  250. reflex-0.7.14a5/reflex/components/recharts/__init__.pyi +0 -108
  251. reflex-0.7.14a5/reflex/components/suneditor/__init__.py +0 -5
  252. reflex-0.7.14a5/reflex/components/suneditor/editor.py +0 -269
  253. reflex-0.7.14a5/reflex/components/suneditor/editor.pyi +0 -199
  254. reflex-0.7.14a5/reflex/experimental/layout.py +0 -254
  255. reflex-0.7.14a5/reflex/istate/__init__.py +0 -1
  256. reflex-0.7.14a5/reflex/route.py +0 -140
  257. reflex-0.7.14a5/reflex/utils/misc.py +0 -25
  258. {reflex-0.7.14a5 → reflex-0.8.0}/.gitignore +0 -0
  259. {reflex-0.7.14a5 → reflex-0.8.0}/LICENSE +0 -0
  260. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  261. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  262. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/apps/blank/code/blank.py +0 -0
  263. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  264. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  265. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  266. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  267. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  268. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  269. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  270. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  271. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/macros.js.jinja2 +0 -0
  272. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  273. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  274. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  275. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/web/.gitignore +0 -0
  276. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/web/components/shiki/code.js +0 -0
  277. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/web/jsconfig.json +0 -0
  278. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  279. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  280. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  281. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/range.js +0 -0
  282. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  283. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/__main__.py +0 -0
  284. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/admin.py +0 -0
  285. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/app_mixins/__init__.py +0 -0
  286. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/app_mixins/lifespan.py +0 -0
  287. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/app_mixins/middleware.py +0 -0
  288. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/app_mixins/mixin.py +0 -0
  289. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/assets.py +0 -0
  290. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/compiler/__init__.py +0 -0
  291. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/app_wrap.py +0 -0
  292. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/bare.py +0 -0
  293. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/body.py +0 -0
  294. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/error_boundary.py +0 -0
  295. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/fragment.py +0 -0
  296. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/link.py +0 -0
  297. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/base/strict_mode.py +0 -0
  298. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/auto_scroll.py +0 -0
  299. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/banner.py +0 -0
  300. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/breakpoints.py +0 -0
  301. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/clipboard.py +0 -0
  302. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/colors.py +0 -0
  303. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/cond.py +0 -0
  304. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/html.py +0 -0
  305. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/layout/__init__.py +0 -0
  306. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/responsive.py +0 -0
  307. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/core/sticky.py +0 -0
  308. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/datadisplay/__init__.py +0 -0
  309. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/datadisplay/dataeditor.py +0 -0
  310. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/datadisplay/logo.py +0 -0
  311. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/__init__.py +0 -0
  312. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/constants/__init__.py +0 -0
  313. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/constants/html.py +0 -0
  314. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/constants/react.py +0 -0
  315. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/constants/reflex.py +0 -0
  316. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/element.py +0 -0
  317. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/__init__.py +0 -0
  318. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/base.py +0 -0
  319. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/forms.py +0 -0
  320. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/inline.py +0 -0
  321. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/media.py +0 -0
  322. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/metadata.py +0 -0
  323. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/other.py +0 -0
  324. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/scripts.py +0 -0
  325. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/sectioning.py +0 -0
  326. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/tables.py +0 -0
  327. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/el/elements/typography.py +0 -0
  328. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/gridjs/__init__.py +0 -0
  329. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/literals.py +0 -0
  330. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/lucide/__init__.py +0 -0
  331. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/markdown/__init__.py +0 -0
  332. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/moment/__init__.py +0 -0
  333. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/plotly/__init__.py +0 -0
  334. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/__init__.py +0 -0
  335. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/__init__.py +0 -0
  336. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/base.py +0 -0
  337. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/drawer.py +0 -0
  338. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/form.py +0 -0
  339. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/progress.py +0 -0
  340. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/primitives/slider.py +0 -0
  341. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/__init__.py +0 -0
  342. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/__init__.py +0 -0
  343. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  344. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  345. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/avatar.py +0 -0
  346. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/badge.py +0 -0
  347. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/button.py +0 -0
  348. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/callout.py +0 -0
  349. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/card.py +0 -0
  350. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox.py +0 -0
  351. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  352. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  353. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/context_menu.py +0 -0
  354. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/data_list.py +0 -0
  355. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/dialog.py +0 -0
  356. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  357. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/hover_card.py +0 -0
  358. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/icon_button.py +0 -0
  359. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/inset.py +0 -0
  360. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/popover.py +0 -0
  361. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/progress.py +0 -0
  362. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/radio.py +0 -0
  363. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  364. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/radio_group.py +0 -0
  365. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  366. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  367. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/select.py +0 -0
  368. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/separator.py +0 -0
  369. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/skeleton.py +0 -0
  370. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/slider.py +0 -0
  371. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/spinner.py +0 -0
  372. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/switch.py +0 -0
  373. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/table.py +0 -0
  374. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/tabs.py +0 -0
  375. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/text_area.py +0 -0
  376. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/text_field.py +0 -0
  377. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/components/tooltip.py +0 -0
  378. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/__init__.py +0 -0
  379. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/base.py +0 -0
  380. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/box.py +0 -0
  381. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/center.py +0 -0
  382. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/container.py +0 -0
  383. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/flex.py +0 -0
  384. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/grid.py +0 -0
  385. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/list.py +0 -0
  386. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/section.py +0 -0
  387. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/spacer.py +0 -0
  388. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/layout/stack.py +0 -0
  389. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/__init__.py +0 -0
  390. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/base.py +0 -0
  391. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  392. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/code.py +0 -0
  393. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/heading.py +0 -0
  394. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/radix/themes/typography/text.py +0 -0
  395. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/react_player/__init__.py +0 -0
  396. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/react_player/audio.py +0 -0
  397. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/react_player/react_player.py +0 -0
  398. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/react_player/video.py +0 -0
  399. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/__init__.py +0 -0
  400. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/recharts/general.py +0 -0
  401. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/sonner/__init__.py +0 -0
  402. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/tags/__init__.py +0 -0
  403. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/tags/cond_tag.py +0 -0
  404. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/tags/iter_tag.py +0 -0
  405. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/tags/match_tag.py +0 -0
  406. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/tags/tag.py +0 -0
  407. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/components/tags/tagless.py +0 -0
  408. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/colors.py +0 -0
  409. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/config.py +0 -0
  410. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/custom_components.py +0 -0
  411. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/constants/utils.py +0 -0
  412. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/custom_components/__init__.py +0 -0
  413. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/experimental/client_state.py +0 -0
  414. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/experimental/hooks.py +0 -0
  415. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/istate/data.py +0 -0
  416. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/istate/dynamic.py +0 -0
  417. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/istate/storage.py +0 -0
  418. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/istate/wrappers.py +0 -0
  419. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/middleware/__init__.py +0 -0
  420. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/middleware/hydrate_middleware.py +0 -0
  421. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/middleware/middleware.py +0 -0
  422. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/model.py +0 -0
  423. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/py.typed +0 -0
  424. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/style.py +0 -0
  425. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/__init__.py +0 -0
  426. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/codespaces.py +0 -0
  427. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/compat.py +0 -0
  428. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/console.py +0 -0
  429. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/decorator.py +0 -0
  430. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/exceptions.py +0 -0
  431. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/lazy_loader.py +0 -0
  432. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/net.py +0 -0
  433. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/path_ops.py +0 -0
  434. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/redir.py +0 -0
  435. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/utils/registry.py +0 -0
  436. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/vars/datetime.py +0 -0
  437. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/vars/dep_tracking.py +0 -0
  438. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/vars/function.py +0 -0
  439. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/vars/number.py +0 -0
  440. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/vars/object.py +0 -0
  441. {reflex-0.7.14a5 → reflex-0.8.0}/reflex/vars/sequence.py +0 -0
  442. {reflex-0.7.14a5 → 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.14a5
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.14a5"
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
+ };