reflex 0.5.3a2__tar.gz → 0.5.4a1__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 (538) hide show
  1. {reflex-0.5.3a2 → reflex-0.5.4a1}/PKG-INFO +1 -1
  2. {reflex-0.5.3a2 → reflex-0.5.4a1}/pyproject.toml +1 -1
  3. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/state.py +3 -2
  4. reflex-0.5.4a1/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +21 -0
  5. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/utils/state.js +6 -0
  6. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/__init__.py +7 -1
  7. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/__init__.pyi +2 -0
  8. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/app.py +2 -5
  9. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/compiler/compiler.py +2 -2
  10. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/component.py +19 -6
  11. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/client_side_routing.py +2 -2
  12. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/client_side_routing.pyi +1 -0
  13. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/upload.py +1 -1
  14. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/datadisplay/dataeditor.py +7 -2
  15. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/datadisplay/dataeditor.pyi +1 -0
  16. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/forms.py +18 -11
  17. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/forms.pyi +1 -0
  18. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/markdown/markdown.py +1 -1
  19. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/plotly/plotly.py +76 -12
  20. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/plotly/plotly.pyi +15 -82
  21. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/base.py +9 -2
  22. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/base.pyi +1 -0
  23. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/cartesian.py +42 -14
  24. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/cartesian.pyi +81 -17
  25. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/charts.py +12 -21
  26. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/charts.pyi +53 -14
  27. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/sonner/toast.py +30 -14
  28. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/sonner/toast.pyi +8 -4
  29. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/config.py +22 -14
  30. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/__init__.py +2 -0
  31. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/config.py +7 -0
  32. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/event.py +12 -6
  33. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/experimental/__init__.py +22 -2
  34. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/experimental/client_state.py +81 -23
  35. reflex-0.5.4a1/reflex/experimental/hooks.py +89 -0
  36. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/experimental/layout.py +8 -3
  37. reflex-0.5.4a1/reflex/experimental/layout.pyi +536 -0
  38. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/reflex.py +9 -5
  39. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/style.py +1 -0
  40. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/testing.py +44 -13
  41. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/format.py +8 -1
  42. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/processes.py +27 -0
  43. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/pyi_generator.py +11 -4
  44. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/serializers.py +114 -15
  45. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/types.py +6 -2
  46. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/vars.py +39 -10
  47. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/vars.pyi +2 -2
  48. reflex-0.5.3a2/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -22
  49. reflex-0.5.3a2/reflex/experimental/hooks.py +0 -95
  50. {reflex-0.5.3a2 → reflex-0.5.4a1}/LICENSE +0 -0
  51. {reflex-0.5.3a2 → reflex-0.5.4a1}/README.md +0 -0
  52. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  53. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  54. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  55. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/.gitignore +0 -0
  56. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/assets/favicon.ico +0 -0
  57. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/assets/github.svg +0 -0
  58. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/assets/icon.svg +0 -0
  59. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/assets/logo.svg +0 -0
  60. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/assets/paneleft.svg +0 -0
  61. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/__init__.py +0 -0
  62. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/demo.py +0 -0
  63. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/pages/__init__.py +0 -0
  64. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/pages/chatapp.py +0 -0
  65. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/pages/datatable.py +0 -0
  66. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/pages/forms.py +0 -0
  67. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/pages/graphing.py +0 -0
  68. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/pages/home.py +0 -0
  69. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/sidebar.py +0 -0
  70. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/state.py +0 -0
  71. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/states/form_state.py +0 -0
  72. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/states/pie_state.py +0 -0
  73. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/styles.py +0 -0
  74. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
  75. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -0
  76. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/components/chat.py +0 -0
  77. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -0
  78. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/components/modal.py +0 -0
  79. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -0
  80. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -0
  81. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/apps/demo/code/webui/styles.py +0 -0
  82. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  83. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  84. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  85. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  86. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  87. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  88. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  89. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  90. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  91. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  92. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  93. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  94. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  95. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  96. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  97. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  98. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  99. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  100. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  101. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  102. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/.gitignore +0 -0
  103. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -0
  104. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/jsconfig.json +0 -0
  105. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/next.config.js +0 -0
  106. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/postcss.config.js +0 -0
  107. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/styles/tailwind.css +0 -0
  108. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  109. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  110. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  111. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  112. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  113. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/__main__.py +0 -0
  114. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/admin.py +0 -0
  115. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/app_module_for_backend.py +0 -0
  116. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/base.py +0 -0
  117. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/compiler/__init__.py +0 -0
  118. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/compiler/templates.py +0 -0
  119. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/compiler/utils.py +0 -0
  120. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/__init__.py +0 -0
  121. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/__init__.pyi +0 -0
  122. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/__init__.py +0 -0
  123. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/__init__.pyi +0 -0
  124. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/app_wrap.py +0 -0
  125. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/app_wrap.pyi +0 -0
  126. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/bare.py +0 -0
  127. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/body.py +0 -0
  128. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/body.pyi +0 -0
  129. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/document.py +0 -0
  130. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/document.pyi +0 -0
  131. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/fragment.py +0 -0
  132. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/fragment.pyi +0 -0
  133. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/head.py +0 -0
  134. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/head.pyi +0 -0
  135. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/link.py +0 -0
  136. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/link.pyi +0 -0
  137. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/meta.py +0 -0
  138. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/meta.pyi +0 -0
  139. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/script.py +0 -0
  140. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/base/script.pyi +0 -0
  141. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/__init__.py +0 -0
  142. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/base.py +0 -0
  143. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/base.pyi +0 -0
  144. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/__init__.py +0 -0
  145. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/badge.py +0 -0
  146. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/badge.pyi +0 -0
  147. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/code.py +0 -0
  148. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/code.pyi +0 -0
  149. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/divider.py +0 -0
  150. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/divider.pyi +0 -0
  151. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/keyboard_key.py +0 -0
  152. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/keyboard_key.pyi +0 -0
  153. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/list.py +0 -0
  154. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/list.pyi +0 -0
  155. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/stat.py +0 -0
  156. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/stat.pyi +0 -0
  157. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/table.py +0 -0
  158. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/table.pyi +0 -0
  159. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/tag.py +0 -0
  160. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/datadisplay/tag.pyi +0 -0
  161. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/__init__.py +0 -0
  162. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/accordion.py +0 -0
  163. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/accordion.pyi +0 -0
  164. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/tabs.py +0 -0
  165. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/tabs.pyi +0 -0
  166. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/transition.py +0 -0
  167. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/transition.pyi +0 -0
  168. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/visuallyhidden.py +0 -0
  169. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/disclosure/visuallyhidden.pyi +0 -0
  170. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/__init__.py +0 -0
  171. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/alert.py +0 -0
  172. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/alert.pyi +0 -0
  173. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/circularprogress.py +0 -0
  174. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/circularprogress.pyi +0 -0
  175. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/progress.py +0 -0
  176. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/progress.pyi +0 -0
  177. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/skeleton.py +0 -0
  178. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/skeleton.pyi +0 -0
  179. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/spinner.py +0 -0
  180. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/feedback/spinner.pyi +0 -0
  181. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/__init__.py +0 -0
  182. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/button.py +0 -0
  183. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/button.pyi +0 -0
  184. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/checkbox.py +0 -0
  185. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/checkbox.pyi +0 -0
  186. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/colormodeswitch.py +0 -0
  187. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/colormodeswitch.pyi +0 -0
  188. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/date_picker.py +0 -0
  189. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/date_picker.pyi +0 -0
  190. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/date_time_picker.py +0 -0
  191. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/date_time_picker.pyi +0 -0
  192. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/editable.py +0 -0
  193. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/editable.pyi +0 -0
  194. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/email.py +0 -0
  195. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/email.pyi +0 -0
  196. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/form.py +0 -0
  197. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/form.pyi +0 -0
  198. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/iconbutton.py +0 -0
  199. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/iconbutton.pyi +0 -0
  200. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/input.py +0 -0
  201. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/input.pyi +0 -0
  202. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/multiselect.py +0 -0
  203. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/numberinput.py +0 -0
  204. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/numberinput.pyi +0 -0
  205. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/password.py +0 -0
  206. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/password.pyi +0 -0
  207. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/pininput.py +0 -0
  208. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/pininput.pyi +0 -0
  209. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/radio.py +0 -0
  210. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/radio.pyi +0 -0
  211. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/rangeslider.py +0 -0
  212. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/rangeslider.pyi +0 -0
  213. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/select.py +0 -0
  214. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/select.pyi +0 -0
  215. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/slider.py +0 -0
  216. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/slider.pyi +0 -0
  217. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/switch.py +0 -0
  218. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/switch.pyi +0 -0
  219. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/textarea.py +0 -0
  220. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/textarea.pyi +0 -0
  221. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/time_picker.py +0 -0
  222. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/forms/time_picker.pyi +0 -0
  223. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/__init__.py +0 -0
  224. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/aspect_ratio.py +0 -0
  225. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/aspect_ratio.pyi +0 -0
  226. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/box.py +0 -0
  227. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/box.pyi +0 -0
  228. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/card.py +0 -0
  229. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/card.pyi +0 -0
  230. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/center.py +0 -0
  231. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/center.pyi +0 -0
  232. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/container.py +0 -0
  233. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/container.pyi +0 -0
  234. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/flex.py +0 -0
  235. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/flex.pyi +0 -0
  236. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/grid.py +0 -0
  237. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/grid.pyi +0 -0
  238. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/spacer.py +0 -0
  239. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/spacer.pyi +0 -0
  240. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/stack.py +0 -0
  241. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/stack.pyi +0 -0
  242. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/wrap.py +0 -0
  243. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/layout/wrap.pyi +0 -0
  244. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/media/__init__.py +0 -0
  245. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/media/avatar.py +0 -0
  246. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/media/avatar.pyi +0 -0
  247. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/media/icon.py +0 -0
  248. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/media/icon.pyi +0 -0
  249. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/media/image.py +0 -0
  250. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/media/image.pyi +0 -0
  251. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/__init__.py +0 -0
  252. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/breadcrumb.py +0 -0
  253. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/breadcrumb.pyi +0 -0
  254. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/link.py +0 -0
  255. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/link.pyi +0 -0
  256. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/linkoverlay.py +0 -0
  257. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/linkoverlay.pyi +0 -0
  258. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/stepper.py +0 -0
  259. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/navigation/stepper.pyi +0 -0
  260. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/__init__.py +0 -0
  261. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/alertdialog.py +0 -0
  262. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/alertdialog.pyi +0 -0
  263. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/drawer.py +0 -0
  264. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/drawer.pyi +0 -0
  265. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/menu.py +0 -0
  266. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/menu.pyi +0 -0
  267. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/modal.py +0 -0
  268. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/modal.pyi +0 -0
  269. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/popover.py +0 -0
  270. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/popover.pyi +0 -0
  271. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/tooltip.py +0 -0
  272. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/overlay/tooltip.pyi +0 -0
  273. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/__init__.py +0 -0
  274. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/heading.py +0 -0
  275. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/heading.pyi +0 -0
  276. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/highlight.py +0 -0
  277. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/highlight.pyi +0 -0
  278. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/span.py +0 -0
  279. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/span.pyi +0 -0
  280. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/text.py +0 -0
  281. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/chakra/typography/text.pyi +0 -0
  282. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/__init__.py +0 -0
  283. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/__init__.pyi +0 -0
  284. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/banner.py +0 -0
  285. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/banner.pyi +0 -0
  286. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/colors.py +0 -0
  287. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/cond.py +0 -0
  288. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/debounce.py +0 -0
  289. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/debounce.pyi +0 -0
  290. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/foreach.py +0 -0
  291. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/html.py +0 -0
  292. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/html.pyi +0 -0
  293. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/layout/__init__.py +0 -0
  294. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/match.py +0 -0
  295. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/responsive.py +0 -0
  296. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/core/upload.pyi +0 -0
  297. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/datadisplay/__init__.py +0 -0
  298. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/datadisplay/__init__.pyi +0 -0
  299. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/datadisplay/code.py +0 -0
  300. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/datadisplay/code.pyi +0 -0
  301. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/datadisplay/logo.py +0 -0
  302. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/__init__.py +0 -0
  303. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/__init__.pyi +0 -0
  304. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/constants/__init__.py +0 -0
  305. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/constants/html.py +0 -0
  306. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/constants/react.py +0 -0
  307. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/constants/reflex.py +0 -0
  308. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/element.py +0 -0
  309. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/element.pyi +0 -0
  310. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/__init__.py +0 -0
  311. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/__init__.pyi +0 -0
  312. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/base.py +0 -0
  313. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/base.pyi +0 -0
  314. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/inline.py +0 -0
  315. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/inline.pyi +0 -0
  316. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/media.py +0 -0
  317. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/media.pyi +0 -0
  318. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/metadata.py +0 -0
  319. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/metadata.pyi +0 -0
  320. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/other.py +0 -0
  321. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/other.pyi +0 -0
  322. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/scripts.py +0 -0
  323. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/scripts.pyi +0 -0
  324. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/sectioning.py +0 -0
  325. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/sectioning.pyi +0 -0
  326. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/tables.py +0 -0
  327. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/tables.pyi +0 -0
  328. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/typography.py +0 -0
  329. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/el/elements/typography.pyi +0 -0
  330. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/gridjs/__init__.py +0 -0
  331. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/gridjs/datatable.py +0 -0
  332. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/gridjs/datatable.pyi +0 -0
  333. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/literals.py +0 -0
  334. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/lucide/__init__.py +0 -0
  335. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/lucide/icon.py +0 -0
  336. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/lucide/icon.pyi +0 -0
  337. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/markdown/__init__.py +0 -0
  338. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/markdown/markdown.pyi +0 -0
  339. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/media/__init__.py +0 -0
  340. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/media/icon.py +0 -0
  341. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/moment/__init__.py +0 -0
  342. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/moment/moment.py +0 -0
  343. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/moment/moment.pyi +0 -0
  344. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/__init__.py +0 -0
  345. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/base.py +0 -0
  346. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/base.pyi +0 -0
  347. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/image.py +0 -0
  348. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/image.pyi +0 -0
  349. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/link.py +0 -0
  350. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/link.pyi +0 -0
  351. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/video.py +0 -0
  352. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/next/video.pyi +0 -0
  353. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/plotly/__init__.py +0 -0
  354. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/props.py +0 -0
  355. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/__init__.py +0 -0
  356. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/__init__.pyi +0 -0
  357. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/__init__.py +0 -0
  358. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  359. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/accordion.py +0 -0
  360. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  361. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/base.py +0 -0
  362. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/base.pyi +0 -0
  363. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/drawer.py +0 -0
  364. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  365. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/form.py +0 -0
  366. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/form.pyi +0 -0
  367. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/progress.py +0 -0
  368. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/progress.pyi +0 -0
  369. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/slider.py +0 -0
  370. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/primitives/slider.pyi +0 -0
  371. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/__init__.py +0 -0
  372. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/__init__.pyi +0 -0
  373. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/color_mode.py +0 -0
  374. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  375. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/__init__.py +0 -0
  376. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  377. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  378. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  379. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  380. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  381. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/avatar.py +0 -0
  382. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  383. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/badge.py +0 -0
  384. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  385. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/button.py +0 -0
  386. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/button.pyi +0 -0
  387. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/callout.py +0 -0
  388. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  389. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/card.py +0 -0
  390. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/card.pyi +0 -0
  391. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  392. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  393. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  394. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  395. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  396. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  397. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  398. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  399. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/data_list.py +0 -0
  400. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  401. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/dialog.py +0 -0
  402. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  403. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  404. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  405. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  406. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  407. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  408. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  409. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/inset.py +0 -0
  410. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  411. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/popover.py +0 -0
  412. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  413. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/progress.py +0 -0
  414. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  415. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/radio.py +0 -0
  416. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  417. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  418. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  419. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  420. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  421. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  422. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  423. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  424. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  425. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/select.py +0 -0
  426. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/select.pyi +0 -0
  427. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/separator.py +0 -0
  428. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  429. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  430. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  431. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/slider.py +0 -0
  432. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  433. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/spinner.py +0 -0
  434. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  435. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/switch.py +0 -0
  436. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  437. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/table.py +0 -0
  438. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/table.pyi +0 -0
  439. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/tabs.py +0 -0
  440. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  441. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/text_area.py +0 -0
  442. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  443. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/text_field.py +0 -0
  444. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  445. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  446. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  447. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  448. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  449. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/base.py +0 -0
  450. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  451. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/box.py +0 -0
  452. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  453. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/center.py +0 -0
  454. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  455. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/container.py +0 -0
  456. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  457. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/flex.py +0 -0
  458. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  459. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/grid.py +0 -0
  460. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  461. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/list.py +0 -0
  462. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  463. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/section.py +0 -0
  464. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  465. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  466. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  467. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/stack.py +0 -0
  468. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  469. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  470. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  471. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/base.py +0 -0
  472. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  473. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  474. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/code.py +0 -0
  475. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  476. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/heading.py +0 -0
  477. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  478. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/link.py +0 -0
  479. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  480. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/text.py +0 -0
  481. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  482. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/react_player/__init__.py +0 -0
  483. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/react_player/audio.py +0 -0
  484. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/react_player/audio.pyi +0 -0
  485. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/react_player/react_player.py +0 -0
  486. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/react_player/react_player.pyi +0 -0
  487. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/react_player/video.py +0 -0
  488. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/react_player/video.pyi +0 -0
  489. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/__init__.py +0 -0
  490. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/__init__.pyi +0 -0
  491. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/general.py +0 -0
  492. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/general.pyi +0 -0
  493. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/polar.py +0 -0
  494. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/polar.pyi +0 -0
  495. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/recharts.py +0 -0
  496. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/recharts/recharts.pyi +0 -0
  497. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/sonner/__init__.py +0 -0
  498. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/suneditor/__init__.py +0 -0
  499. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/suneditor/editor.py +0 -0
  500. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/suneditor/editor.pyi +0 -0
  501. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/tags/__init__.py +0 -0
  502. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/tags/cond_tag.py +0 -0
  503. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/tags/iter_tag.py +0 -0
  504. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/tags/match_tag.py +0 -0
  505. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/tags/tag.py +0 -0
  506. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/components/tags/tagless.py +0 -0
  507. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/base.py +0 -0
  508. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/colors.py +0 -0
  509. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/compiler.py +0 -0
  510. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/custom_components.py +0 -0
  511. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/event.py +0 -0
  512. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/installer.py +0 -0
  513. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/route.py +0 -0
  514. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/constants/style.py +0 -0
  515. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/custom_components/__init__.py +0 -0
  516. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/custom_components/custom_components.py +0 -0
  517. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/experimental/assets.py +0 -0
  518. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/experimental/misc.py +0 -0
  519. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/middleware/__init__.py +0 -0
  520. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/middleware/hydrate_middleware.py +0 -0
  521. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/middleware/middleware.py +0 -0
  522. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/model.py +0 -0
  523. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/page.py +0 -0
  524. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/route.py +0 -0
  525. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/state.py +0 -0
  526. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/__init__.py +0 -0
  527. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/build.py +0 -0
  528. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/compat.py +0 -0
  529. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/console.py +0 -0
  530. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/exceptions.py +0 -0
  531. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/exec.py +0 -0
  532. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/export.py +0 -0
  533. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/imports.py +0 -0
  534. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/lazy_loader.py +0 -0
  535. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/path_ops.py +0 -0
  536. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/prerequisites.py +0 -0
  537. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/telemetry.py +0 -0
  538. {reflex-0.5.3a2 → reflex-0.5.4a1}/reflex/utils/watch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.5.3a2
3
+ Version: 0.5.4a1
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "reflex"
3
- version = "0.5.3a2"
3
+ version = "0.5.4a1"
4
4
  description = "Web apps in pure Python."
5
5
  license = "Apache-2.0"
6
6
  authors = [
@@ -66,7 +66,8 @@ class State(State):
66
66
  del self.chats[self.current_chat]
67
67
  if len(self.chats) == 0:
68
68
  self.chats = DEFAULT_CHATS
69
- self.current_chat = list(self.chats.keys())[0]
69
+ # set self.current_chat to the first chat.
70
+ self.current_chat = next(iter(self.chats))
70
71
  self.toggle_drawer()
71
72
 
72
73
  def set_chat(self, chat_name: str):
@@ -85,7 +86,7 @@ class State(State):
85
86
  Returns:
86
87
  The list of chat names.
87
88
  """
88
- return list(self.chats.keys())
89
+ return [*self.chats]
89
90
 
90
91
  async def process_question(self, form_data: dict[str, str]):
91
92
  """Get the response from the API.
@@ -0,0 +1,21 @@
1
+ import { useTheme } from "next-themes";
2
+ import { useEffect, useState } from "react";
3
+ import { ColorModeContext, defaultColorMode } from "/utils/context.js";
4
+
5
+ export default function RadixThemesColorModeProvider({ children }) {
6
+ const { resolvedTheme, setTheme } = useTheme();
7
+ const [colorMode, setColorMode] = useState(defaultColorMode);
8
+
9
+ useEffect(() => {
10
+ setColorMode(resolvedTheme);
11
+ }, [resolvedTheme]);
12
+
13
+ const toggleColorMode = () => {
14
+ setTheme(resolvedTheme === "light" ? "dark" : "light");
15
+ };
16
+ return (
17
+ <ColorModeContext.Provider value={[colorMode, toggleColorMode]}>
18
+ {children}
19
+ </ColorModeContext.Provider>
20
+ );
21
+ }
@@ -358,6 +358,12 @@ export const connect = async (
358
358
  socket.current.on("connect_error", (error) => {
359
359
  setConnectErrors((connectErrors) => [connectErrors.slice(-9), error]);
360
360
  });
361
+
362
+ // When the socket disconnects reset the event_processing flag
363
+ socket.current.on("disconnect", () => {
364
+ event_processing = false;
365
+ });
366
+
361
367
  // On each received message, queue the updates and events.
362
368
  socket.current.on("event", (message) => {
363
369
  const update = JSON5.parse(message);
@@ -248,7 +248,12 @@ _MAPPING: dict = {
248
248
  "admin": ["AdminDash"],
249
249
  "app": ["App", "UploadFile"],
250
250
  "base": ["Base"],
251
- "components.component": ["Component", "NoSSRComponent", "memo"],
251
+ "components.component": [
252
+ "Component",
253
+ "NoSSRComponent",
254
+ "memo",
255
+ "ComponentNamespace",
256
+ ],
252
257
  "components.el.elements.media": ["image"],
253
258
  "components.lucide": ["icon"],
254
259
  **COMPONENTS_BASE_MAPPING,
@@ -270,6 +275,7 @@ _MAPPING: dict = {
270
275
  "data_editor",
271
276
  "data_editor_theme",
272
277
  ],
278
+ "components.sonner.toast": ["toast"],
273
279
  "components.datadisplay.logo": ["logo"],
274
280
  "components.gridjs": ["data_table"],
275
281
  "components.moment": ["MomentDelta", "moment"],
@@ -24,6 +24,7 @@ from .base import Base as Base
24
24
  from .components.component import Component as Component
25
25
  from .components.component import NoSSRComponent as NoSSRComponent
26
26
  from .components.component import memo as memo
27
+ from .components.component import ComponentNamespace as ComponentNamespace
27
28
  from .components.el.elements.media import image as image
28
29
  from .components.lucide import icon as icon
29
30
  from .components.base.fragment import fragment as fragment
@@ -143,6 +144,7 @@ from .components.core.upload import upload as upload
143
144
  from .components.datadisplay.code import code_block as code_block
144
145
  from .components.datadisplay.dataeditor import data_editor as data_editor
145
146
  from .components.datadisplay.dataeditor import data_editor_theme as data_editor_theme
147
+ from .components.sonner.toast import toast as toast
146
148
  from .components.datadisplay.logo import logo as logo
147
149
  from .components.gridjs import data_table as data_table
148
150
  from .components.moment import MomentDelta as MomentDelta
@@ -707,11 +707,8 @@ class App(LifespanMixin, Base):
707
707
  page_imports = {
708
708
  i
709
709
  for i, tags in imports.items()
710
- if i
711
- not in [
712
- *constants.PackageJson.DEPENDENCIES.keys(),
713
- *constants.PackageJson.DEV_DEPENDENCIES.keys(),
714
- ]
710
+ if i not in constants.PackageJson.DEPENDENCIES
711
+ and i not in constants.PackageJson.DEV_DEPENDENCIES
715
712
  and not any(i.startswith(prefix) for prefix in ["/", ".", "next/"])
716
713
  and i != ""
717
714
  and any(tag.install for tag in tags)
@@ -17,7 +17,7 @@ from reflex.components.component import (
17
17
  )
18
18
  from reflex.config import get_config
19
19
  from reflex.state import BaseState
20
- from reflex.style import LIGHT_COLOR_MODE
20
+ from reflex.style import SYSTEM_COLOR_MODE
21
21
  from reflex.utils.exec import is_prod_mode
22
22
  from reflex.utils.imports import ImportVar
23
23
  from reflex.vars import Var
@@ -79,7 +79,7 @@ def _compile_contexts(state: Optional[Type[BaseState]], theme: Component | None)
79
79
  """
80
80
  appearance = getattr(theme, "appearance", None)
81
81
  if appearance is None:
82
- appearance = LIGHT_COLOR_MODE
82
+ appearance = SYSTEM_COLOR_MODE
83
83
  return (
84
84
  templates.CONTEXT.render(
85
85
  initial_state=utils.compile_state(state),
@@ -360,7 +360,6 @@ class Component(BaseComponent, ABC):
360
360
  # Get the component fields, triggers, and props.
361
361
  fields = self.get_fields()
362
362
  component_specific_triggers = self.get_event_triggers()
363
- triggers = component_specific_triggers.keys()
364
363
  props = self.get_props()
365
364
 
366
365
  # Add any events triggers.
@@ -370,13 +369,17 @@ class Component(BaseComponent, ABC):
370
369
 
371
370
  # Iterate through the kwargs and set the props.
372
371
  for key, value in kwargs.items():
373
- if key.startswith("on_") and key not in triggers and key not in props:
372
+ if (
373
+ key.startswith("on_")
374
+ and key not in component_specific_triggers
375
+ and key not in props
376
+ ):
374
377
  raise ValueError(
375
378
  f"The {(comp_name := type(self).__name__)} does not take in an `{key}` event trigger. If {comp_name}"
376
379
  f" is a third party component make sure to add `{key}` to the component's event triggers. "
377
380
  f"visit https://reflex.dev/docs/wrapping-react/guide/#event-triggers for more info."
378
381
  )
379
- if key in triggers:
382
+ if key in component_specific_triggers:
380
383
  # Event triggers are bound to event chains.
381
384
  field_type = EventChain
382
385
  elif key in props:
@@ -436,7 +439,7 @@ class Component(BaseComponent, ABC):
436
439
  )
437
440
 
438
441
  # Check if the key is an event trigger.
439
- if key in triggers:
442
+ if key in component_specific_triggers:
440
443
  # Temporarily disable full control for event triggers.
441
444
  kwargs["event_triggers"][key] = self._create_event_chain(
442
445
  value=value, args_spec=component_specific_triggers[key]
@@ -519,13 +522,23 @@ class Component(BaseComponent, ABC):
519
522
  events.append(event)
520
523
  elif isinstance(v, Callable):
521
524
  # Call the lambda to get the event chain.
522
- events.extend(call_event_fn(v, args_spec))
525
+ result = call_event_fn(v, args_spec)
526
+ if isinstance(result, Var):
527
+ raise ValueError(
528
+ f"Invalid event chain: {v}. Cannot use a Var-returning "
529
+ "lambda inside an EventChain list."
530
+ )
531
+ events.extend(result)
523
532
  else:
524
533
  raise ValueError(f"Invalid event: {v}")
525
534
 
526
535
  # If the input is a callable, create an event chain.
527
536
  elif isinstance(value, Callable):
528
- events = call_event_fn(value, args_spec)
537
+ result = call_event_fn(value, args_spec)
538
+ if isinstance(result, Var):
539
+ # Recursively call this function if the lambda returned an EventChain Var.
540
+ return self._create_event_chain(args_spec, result)
541
+ events = result
529
542
 
530
543
  # Otherwise, raise an error.
531
544
  else:
@@ -23,13 +23,13 @@ class ClientSideRouting(Component):
23
23
  library = "/utils/client_side_routing"
24
24
  tag = "useClientSideRouting"
25
25
 
26
- def _get_hooks(self) -> str:
26
+ def add_hooks(self) -> list[str]:
27
27
  """Get the hooks to render.
28
28
 
29
29
  Returns:
30
30
  The useClientSideRouting hook.
31
31
  """
32
- return f"const {constants.ROUTE_NOT_FOUND} = {self.tag}()"
32
+ return [f"const {constants.ROUTE_NOT_FOUND} = {self.tag}()"]
33
33
 
34
34
  def render(self) -> str:
35
35
  """Render the component.
@@ -15,6 +15,7 @@ from reflex.vars import Var
15
15
  route_not_found: Var
16
16
 
17
17
  class ClientSideRouting(Component):
18
+ def add_hooks(self) -> list[str]: ...
18
19
  def render(self) -> str: ...
19
20
  @overload
20
21
  @classmethod
@@ -230,7 +230,7 @@ class Upload(MemoizationLeaf):
230
230
  key: value for key, value in props.items() if key in supported_props
231
231
  }
232
232
  # The file input to use.
233
- upload = Input.create(type_="file")
233
+ upload = Input.create(type="file")
234
234
  upload.special_props = {
235
235
  BaseVar(_var_name="{...getInputProps()}", _var_type=None)
236
236
  }
@@ -252,7 +252,12 @@ class DataEditor(NoSSRComponent):
252
252
  "on_column_resize": lambda col, width: [col, width],
253
253
  }
254
254
 
255
- def _get_hooks(self) -> str | None:
255
+ def add_hooks(self) -> list[str]:
256
+ """Get the hooks to render.
257
+
258
+ Returns:
259
+ The hooks to render.
260
+ """
256
261
  # Define the id of the component in case multiple are used in the same page.
257
262
  editor_id = get_unique_variable_name()
258
263
 
@@ -272,7 +277,7 @@ class DataEditor(NoSSRComponent):
272
277
  ]
273
278
  )
274
279
 
275
- return "\n".join(code)
280
+ return ["\n".join(code)]
276
281
 
277
282
  @classmethod
278
283
  def create(cls, *children, **props) -> Component:
@@ -81,6 +81,7 @@ class DataEditorTheme(Base):
81
81
 
82
82
  class DataEditor(NoSSRComponent):
83
83
  def get_event_triggers(self) -> Dict[str, Callable]: ...
84
+ def add_hooks(self) -> list[str]: ...
84
85
  @overload
85
86
  @classmethod
86
87
  def create( # type: ignore
@@ -181,18 +181,25 @@ class Form(BaseHTML):
181
181
  },
182
182
  )
183
183
 
184
- def _get_hooks(self) -> str | None:
184
+ def add_hooks(self) -> list[str]:
185
+ """Add hooks for the form.
186
+
187
+ Returns:
188
+ The hooks for the form.
189
+ """
185
190
  if EventTriggers.ON_SUBMIT not in self.event_triggers:
186
- return
187
- return HANDLE_SUBMIT_JS_JINJA2.render(
188
- handle_submit_unique_name=self.handle_submit_unique_name,
189
- form_data=FORM_DATA,
190
- field_ref_mapping=str(Var.create_safe(self._get_form_refs())),
191
- on_submit_event_chain=format_event_chain(
192
- self.event_triggers[EventTriggers.ON_SUBMIT]
193
- ),
194
- reset_on_submit=self.reset_on_submit,
195
- )
191
+ return []
192
+ return [
193
+ HANDLE_SUBMIT_JS_JINJA2.render(
194
+ handle_submit_unique_name=self.handle_submit_unique_name,
195
+ form_data=FORM_DATA,
196
+ field_ref_mapping=str(Var.create_safe(self._get_form_refs())),
197
+ on_submit_event_chain=format_event_chain(
198
+ self.event_triggers[EventTriggers.ON_SUBMIT]
199
+ ),
200
+ reset_on_submit=self.reset_on_submit,
201
+ )
202
+ ]
196
203
 
197
204
  def _render(self) -> Tag:
198
205
  render_tag = super()._render()
@@ -581,6 +581,7 @@ class Form(BaseHTML):
581
581
  The form component.
582
582
  """
583
583
  ...
584
+ def add_hooks(self) -> list[str]: ...
584
585
 
585
586
  class Input(BaseHTML):
586
587
  def get_event_triggers(self) -> Dict[str, Any]: ...
@@ -229,7 +229,7 @@ class Markdown(Component):
229
229
  Returns:
230
230
  The formatted component.
231
231
  """
232
- return str(self.get_component(tag, **props)).replace("\n", " ")
232
+ return str(self.get_component(tag, **props)).replace("\n", "")
233
233
 
234
234
  def format_component_map(self) -> dict[str, str]:
235
235
  """Format the component map for rendering.
@@ -4,14 +4,20 @@ from __future__ import annotations
4
4
  from typing import Any, Dict, List
5
5
 
6
6
  from reflex.base import Base
7
- from reflex.components.component import NoSSRComponent
7
+ from reflex.components.component import Component, NoSSRComponent
8
+ from reflex.components.core.cond import color_mode_cond
8
9
  from reflex.event import EventHandler
10
+ from reflex.utils import console
9
11
  from reflex.vars import Var
10
12
 
11
13
  try:
12
- from plotly.graph_objects import Figure
14
+ from plotly.graph_objects import Figure, layout
15
+
16
+ Template = layout.Template
13
17
  except ImportError:
18
+ console.warn("Plotly is not installed. Please run `pip install plotly`.")
14
19
  Figure = Any # type: ignore
20
+ Template = Any # type: ignore
15
21
 
16
22
 
17
23
  def _event_data_signature(e0: Var) -> List[Any]:
@@ -84,17 +90,13 @@ def _null_signature() -> List[Any]:
84
90
  return []
85
91
 
86
92
 
87
- class PlotlyLib(NoSSRComponent):
88
- """A component that wraps a plotly lib."""
93
+ class Plotly(NoSSRComponent):
94
+ """Display a plotly graph."""
89
95
 
90
96
  library = "react-plotly.js@2.6.0"
91
97
 
92
98
  lib_dependencies: List[str] = ["plotly.js@2.22.0"]
93
99
 
94
-
95
- class Plotly(PlotlyLib):
96
- """Display a plotly graph."""
97
-
98
100
  tag = "Plot"
99
101
 
100
102
  is_default = True
@@ -105,6 +107,9 @@ class Plotly(PlotlyLib):
105
107
  # The layout of the graph.
106
108
  layout: Var[Dict]
107
109
 
110
+ # The template for visual appearance of the graph.
111
+ template: Var[Template]
112
+
108
113
  # The config of the graph.
109
114
  config: Var[Dict]
110
115
 
@@ -171,6 +176,17 @@ class Plotly(PlotlyLib):
171
176
  # Fired when a hovered element is no longer hovered.
172
177
  on_unhover: EventHandler[_event_points_data_signature]
173
178
 
179
+ def add_imports(self) -> dict[str, str]:
180
+ """Add imports for the plotly component.
181
+
182
+ Returns:
183
+ The imports for the plotly component.
184
+ """
185
+ return {
186
+ # For merging plotly data/layout/templates.
187
+ "mergician@v2.0.2": "mergician"
188
+ }
189
+
174
190
  def add_custom_code(self) -> list[str]:
175
191
  """Add custom codes for processing the plotly points data.
176
192
 
@@ -210,14 +226,62 @@ const extractPoints = (points) => {
210
226
  """,
211
227
  ]
212
228
 
229
+ @classmethod
230
+ def create(cls, *children, **props) -> Component:
231
+ """Create the Plotly component.
232
+
233
+ Args:
234
+ *children: The children of the component.
235
+ **props: The properties of the component.
236
+
237
+ Returns:
238
+ The Plotly component.
239
+ """
240
+ from plotly.io import templates
241
+
242
+ responsive_template = color_mode_cond(
243
+ light=Var.create_safe(templates["plotly"]).to(dict),
244
+ dark=Var.create_safe(templates["plotly_dark"]).to(dict),
245
+ )
246
+ if isinstance(responsive_template, Var):
247
+ # Mark the conditional Var as a Template to avoid type mismatch
248
+ responsive_template = responsive_template.to(Template)
249
+ props.setdefault("template", responsive_template)
250
+ return super().create(*children, **props)
251
+
252
+ def _exclude_props(self) -> set[str]:
253
+ # These props are handled specially in the _render function
254
+ return {"data", "layout", "template"}
255
+
213
256
  def _render(self):
214
257
  tag = super()._render()
215
258
  figure = self.data.to(dict)
216
- if self.layout is None:
217
- tag.remove_props("data", "layout")
259
+ merge_dicts = [] # Data will be merged and spread from these dict Vars
260
+ if self.layout is not None:
261
+ # Why is this not a literal dict? Great question... it didn't work
262
+ # reliably because of how _var_name_unwrapped strips the outer curly
263
+ # brackets if any of the contained Vars depend on state.
264
+ layout_dict = Var.create_safe(
265
+ f"{{'layout': {self.layout.to(dict)._var_name_unwrapped}}}"
266
+ ).to(dict)
267
+ merge_dicts.append(layout_dict)
268
+ if self.template is not None:
269
+ template_dict = Var.create_safe(
270
+ {"layout": {"template": self.template.to(dict)}}
271
+ )
272
+ template_dict._var_data = None # To avoid stripping outer curly brackets
273
+ merge_dicts.append(template_dict)
274
+ if merge_dicts:
218
275
  tag.special_props.add(
219
- Var.create_safe(f"{{...{figure._var_name_unwrapped}}}")
276
+ # Merge all dictionaries and spread the result over props.
277
+ Var.create_safe(
278
+ f"{{...mergician({figure._var_name_unwrapped},"
279
+ f"{','.join(md._var_name_unwrapped for md in merge_dicts)})}}",
280
+ ),
220
281
  )
221
282
  else:
222
- tag.add_props(data=figure["data"])
283
+ # Spread the figure dict over props, nothing to merge.
284
+ tag.special_props.add(
285
+ Var.create_safe(f"{{...{figure._var_name_unwrapped}}}")
286
+ )
223
287
  return tag
@@ -9,97 +9,28 @@ from reflex.event import EventChain, EventHandler, EventSpec
9
9
  from reflex.style import Style
10
10
  from typing import Any, Dict, List
11
11
  from reflex.base import Base
12
- from reflex.components.component import NoSSRComponent
12
+ from reflex.components.component import Component, NoSSRComponent
13
+ from reflex.components.core.cond import color_mode_cond
13
14
  from reflex.event import EventHandler
15
+ from reflex.utils import console
14
16
  from reflex.vars import Var
15
17
 
16
18
  try:
17
- from plotly.graph_objects import Figure # type: ignore
19
+ from plotly.graph_objects import Figure, layout # type: ignore
20
+
21
+ Template = layout.Template
18
22
  except ImportError:
23
+ console.warn("Plotly is not installed. Please run `pip install plotly`.")
19
24
  Figure = Any # type: ignore
25
+ Template = Any
20
26
 
21
27
  class _ButtonClickData(Base):
22
28
  menu: Any
23
29
  button: Any
24
30
  active: Any
25
31
 
26
- class PlotlyLib(NoSSRComponent):
27
- @overload
28
- @classmethod
29
- def create( # type: ignore
30
- cls,
31
- *children,
32
- style: Optional[Style] = None,
33
- key: Optional[Any] = None,
34
- id: Optional[Any] = None,
35
- class_name: Optional[Any] = None,
36
- autofocus: Optional[bool] = None,
37
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
38
- on_blur: Optional[
39
- Union[EventHandler, EventSpec, list, function, BaseVar]
40
- ] = None,
41
- on_click: Optional[
42
- Union[EventHandler, EventSpec, list, function, BaseVar]
43
- ] = None,
44
- on_context_menu: Optional[
45
- Union[EventHandler, EventSpec, list, function, BaseVar]
46
- ] = None,
47
- on_double_click: Optional[
48
- Union[EventHandler, EventSpec, list, function, BaseVar]
49
- ] = None,
50
- on_focus: Optional[
51
- Union[EventHandler, EventSpec, list, function, BaseVar]
52
- ] = None,
53
- on_mount: Optional[
54
- Union[EventHandler, EventSpec, list, function, BaseVar]
55
- ] = None,
56
- on_mouse_down: Optional[
57
- Union[EventHandler, EventSpec, list, function, BaseVar]
58
- ] = None,
59
- on_mouse_enter: Optional[
60
- Union[EventHandler, EventSpec, list, function, BaseVar]
61
- ] = None,
62
- on_mouse_leave: Optional[
63
- Union[EventHandler, EventSpec, list, function, BaseVar]
64
- ] = None,
65
- on_mouse_move: Optional[
66
- Union[EventHandler, EventSpec, list, function, BaseVar]
67
- ] = None,
68
- on_mouse_out: Optional[
69
- Union[EventHandler, EventSpec, list, function, BaseVar]
70
- ] = None,
71
- on_mouse_over: Optional[
72
- Union[EventHandler, EventSpec, list, function, BaseVar]
73
- ] = None,
74
- on_mouse_up: Optional[
75
- Union[EventHandler, EventSpec, list, function, BaseVar]
76
- ] = None,
77
- on_scroll: Optional[
78
- Union[EventHandler, EventSpec, list, function, BaseVar]
79
- ] = None,
80
- on_unmount: Optional[
81
- Union[EventHandler, EventSpec, list, function, BaseVar]
82
- ] = None,
83
- **props
84
- ) -> "PlotlyLib":
85
- """Create the component.
86
-
87
- Args:
88
- *children: The children of the component.
89
- style: The style of the component.
90
- key: A unique key for the component.
91
- id: The id for the component.
92
- class_name: The class name for the component.
93
- autofocus: Whether the component should take the focus once the page is loaded
94
- custom_attrs: custom attribute
95
- **props: The props of the component.
96
-
97
- Returns:
98
- The component.
99
- """
100
- ...
101
-
102
- class Plotly(PlotlyLib):
32
+ class Plotly(NoSSRComponent):
33
+ def add_imports(self) -> dict[str, str]: ...
103
34
  def add_custom_code(self) -> list[str]: ...
104
35
  @overload
105
36
  @classmethod
@@ -108,6 +39,7 @@ class Plotly(PlotlyLib):
108
39
  *children,
109
40
  data: Optional[Union[Var[Figure], Figure]] = None, # type: ignore
110
41
  layout: Optional[Union[Var[Dict], Dict]] = None,
42
+ template: Optional[Union[Var[Template], Template]] = None, # type: ignore
111
43
  config: Optional[Union[Var[Dict], Dict]] = None,
112
44
  use_resize_handler: Optional[Union[Var[bool], bool]] = None,
113
45
  style: Optional[Style] = None,
@@ -217,12 +149,13 @@ class Plotly(PlotlyLib):
217
149
  ] = None,
218
150
  **props
219
151
  ) -> "Plotly":
220
- """Create the component.
152
+ """Create the Plotly component.
221
153
 
222
154
  Args:
223
155
  *children: The children of the component.
224
156
  data: The figure to display. This can be a plotly figure or a plotly data json.
225
157
  layout: The layout of the graph.
158
+ template: The template for visual appearance of the graph.
226
159
  config: The config of the graph.
227
160
  use_resize_handler: If true, the graph will resize when the window is resized.
228
161
  style: The style of the component.
@@ -231,9 +164,9 @@ class Plotly(PlotlyLib):
231
164
  class_name: The class name for the component.
232
165
  autofocus: Whether the component should take the focus once the page is loaded
233
166
  custom_attrs: custom attribute
234
- **props: The props of the component.
167
+ **props: The properties of the component.
235
168
 
236
169
  Returns:
237
- The component.
170
+ The Plotly component.
238
171
  """
239
172
  ...
@@ -257,10 +257,16 @@ class ThemePanel(RadixThemesComponent):
257
257
  """
258
258
  return {"react": "useEffect"}
259
259
 
260
- def _get_hooks(self) -> str | None:
260
+ def add_hooks(self) -> list[str]:
261
+ """Add a hook on the ThemePanel to clear chakra-ui-color-mode.
262
+
263
+ Returns:
264
+ The hooks to render.
265
+ """
261
266
  # The panel freezes the tab if the user color preference differs from the
262
267
  # theme "appearance", so clear it out when theme panel is used.
263
- return """
268
+ return [
269
+ """
264
270
  useEffect(() => {
265
271
  if (typeof window !== 'undefined') {
266
272
  window.onbeforeunload = () => {
@@ -269,6 +275,7 @@ class ThemePanel(RadixThemesComponent):
269
275
  window.onbeforeunload();
270
276
  }
271
277
  }, [])"""
278
+ ]
272
279
 
273
280
 
274
281
  class RadixThemesColorModeProvider(Component):
@@ -584,6 +584,7 @@ class Theme(RadixThemesComponent):
584
584
 
585
585
  class ThemePanel(RadixThemesComponent):
586
586
  def add_imports(self) -> dict[str, str]: ...
587
+ def add_hooks(self) -> list[str]: ...
587
588
  @overload
588
589
  @classmethod
589
590
  def create( # type: ignore