reflex 0.8.10a1__tar.gz → 0.8.11a1__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 (388) hide show
  1. {reflex-0.8.10a1 → reflex-0.8.11a1}/PKG-INFO +1 -1
  2. {reflex-0.8.10a1 → reflex-0.8.11a1}/pyproject.toml +3 -3
  3. reflex-0.8.11a1/reflex/.templates/web/utils/helpers/upload.js +170 -0
  4. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/utils/state.js +5 -158
  5. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/app.py +15 -6
  6. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/compiler/compiler.py +4 -4
  7. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/compiler/templates.py +3 -2
  8. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/component.py +10 -28
  9. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/upload.py +2 -2
  10. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/code.py +2 -2
  11. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/code.pyi +6 -2
  12. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/field.py +5 -1
  13. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/lucide/icon.py +2 -1
  14. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/lucide/icon.pyi +2 -1
  15. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/props.py +15 -0
  16. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/recharts.py +2 -2
  17. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/installer.py +2 -2
  18. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/state.py +1 -0
  19. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/environment.py +1 -1
  20. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/event.py +34 -0
  21. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/plugins/tailwind_v4.py +2 -2
  22. {reflex-0.8.10a1 → reflex-0.8.11a1}/.gitignore +0 -0
  23. {reflex-0.8.10a1 → reflex-0.8.11a1}/LICENSE +0 -0
  24. {reflex-0.8.10a1 → reflex-0.8.11a1}/README.md +0 -0
  25. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  26. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  27. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
  28. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/.gitignore +0 -0
  29. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/app/entry.client.js +0 -0
  30. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/app/routes.js +0 -0
  31. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  32. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/components/shiki/code.js +0 -0
  33. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/jsconfig.json +0 -0
  34. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/postcss.config.js +0 -0
  35. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/react-router.config.js +0 -0
  36. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
  37. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  38. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  39. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  40. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
  41. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  42. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/utils/react-theme.js +0 -0
  43. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
  44. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/__init__.py +0 -0
  45. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/__init__.pyi +0 -0
  46. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/__main__.py +0 -0
  47. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/admin.py +0 -0
  48. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/app_mixins/__init__.py +0 -0
  49. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/app_mixins/lifespan.py +0 -0
  50. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/app_mixins/middleware.py +0 -0
  51. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/app_mixins/mixin.py +0 -0
  52. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/assets.py +0 -0
  53. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/base.py +0 -0
  54. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/compiler/__init__.py +0 -0
  55. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/compiler/utils.py +0 -0
  56. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/__init__.py +0 -0
  57. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/__init__.pyi +0 -0
  58. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/__init__.py +0 -0
  59. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/__init__.pyi +0 -0
  60. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/app_wrap.py +0 -0
  61. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/app_wrap.pyi +0 -0
  62. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/bare.py +0 -0
  63. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/body.py +0 -0
  64. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/body.pyi +0 -0
  65. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/document.py +0 -0
  66. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/document.pyi +0 -0
  67. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/error_boundary.py +0 -0
  68. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/error_boundary.pyi +0 -0
  69. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/fragment.py +0 -0
  70. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/fragment.pyi +0 -0
  71. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/link.py +0 -0
  72. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/link.pyi +0 -0
  73. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/meta.py +0 -0
  74. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/meta.pyi +0 -0
  75. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/script.py +0 -0
  76. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/script.pyi +0 -0
  77. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/strict_mode.py +0 -0
  78. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/base/strict_mode.pyi +0 -0
  79. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/__init__.py +0 -0
  80. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/__init__.pyi +0 -0
  81. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/auto_scroll.py +0 -0
  82. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/auto_scroll.pyi +0 -0
  83. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/banner.py +0 -0
  84. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/banner.pyi +0 -0
  85. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/breakpoints.py +0 -0
  86. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/clipboard.py +0 -0
  87. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/clipboard.pyi +0 -0
  88. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/colors.py +0 -0
  89. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/cond.py +0 -0
  90. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/debounce.py +0 -0
  91. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/debounce.pyi +0 -0
  92. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/foreach.py +0 -0
  93. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/helmet.py +0 -0
  94. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/helmet.pyi +0 -0
  95. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/html.py +0 -0
  96. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/html.pyi +0 -0
  97. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/layout/__init__.py +0 -0
  98. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/match.py +0 -0
  99. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/responsive.py +0 -0
  100. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/sticky.py +0 -0
  101. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/sticky.pyi +0 -0
  102. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/upload.pyi +0 -0
  103. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/window_events.py +0 -0
  104. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/core/window_events.pyi +0 -0
  105. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/__init__.py +0 -0
  106. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/__init__.pyi +0 -0
  107. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/dataeditor.py +0 -0
  108. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  109. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/logo.py +0 -0
  110. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  111. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  112. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/dynamic.py +0 -0
  113. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/__init__.py +0 -0
  114. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/__init__.pyi +0 -0
  115. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/element.py +0 -0
  116. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/element.pyi +0 -0
  117. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/__init__.py +0 -0
  118. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/__init__.pyi +0 -0
  119. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/base.py +0 -0
  120. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/base.pyi +0 -0
  121. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/forms.py +0 -0
  122. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/forms.pyi +0 -0
  123. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/inline.py +0 -0
  124. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/inline.pyi +0 -0
  125. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/media.py +0 -0
  126. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/media.pyi +0 -0
  127. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/metadata.py +0 -0
  128. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/metadata.pyi +0 -0
  129. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/other.py +0 -0
  130. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/other.pyi +0 -0
  131. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/scripts.py +0 -0
  132. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/scripts.pyi +0 -0
  133. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/sectioning.py +0 -0
  134. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/sectioning.pyi +0 -0
  135. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/tables.py +0 -0
  136. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/tables.pyi +0 -0
  137. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/typography.py +0 -0
  138. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/el/elements/typography.pyi +0 -0
  139. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/gridjs/__init__.py +0 -0
  140. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/gridjs/datatable.py +0 -0
  141. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/gridjs/datatable.pyi +0 -0
  142. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/literals.py +0 -0
  143. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/lucide/__init__.py +0 -0
  144. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/markdown/__init__.py +0 -0
  145. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/markdown/markdown.py +0 -0
  146. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/markdown/markdown.pyi +0 -0
  147. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/moment/__init__.py +0 -0
  148. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/moment/moment.py +0 -0
  149. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/moment/moment.pyi +0 -0
  150. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/plotly/__init__.py +0 -0
  151. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/plotly/plotly.py +0 -0
  152. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/plotly/plotly.pyi +0 -0
  153. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/__init__.py +0 -0
  154. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/__init__.pyi +0 -0
  155. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/__init__.py +0 -0
  156. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/__init__.pyi +0 -0
  157. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/accordion.py +0 -0
  158. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
  159. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/base.py +0 -0
  160. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/base.pyi +0 -0
  161. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/drawer.py +0 -0
  162. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
  163. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/form.py +0 -0
  164. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/form.pyi +0 -0
  165. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/progress.py +0 -0
  166. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/progress.pyi +0 -0
  167. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/slider.py +0 -0
  168. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/primitives/slider.pyi +0 -0
  169. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/__init__.py +0 -0
  170. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/__init__.pyi +0 -0
  171. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/base.py +0 -0
  172. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/base.pyi +0 -0
  173. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/color_mode.py +0 -0
  174. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
  175. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/__init__.py +0 -0
  176. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  177. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  178. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  179. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  180. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  181. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/avatar.py +0 -0
  182. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  183. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/badge.py +0 -0
  184. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
  185. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/button.py +0 -0
  186. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/button.pyi +0 -0
  187. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/callout.py +0 -0
  188. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
  189. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/card.py +0 -0
  190. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/card.pyi +0 -0
  191. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
  192. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  193. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  194. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  195. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  196. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  197. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
  198. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  199. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/data_list.py +0 -0
  200. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  201. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/dialog.py +0 -0
  202. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  203. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  204. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  205. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
  206. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  207. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
  208. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  209. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/inset.py +0 -0
  210. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
  211. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/popover.py +0 -0
  212. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
  213. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/progress.py +0 -0
  214. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
  215. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/radio.py +0 -0
  216. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
  217. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  218. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  219. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
  220. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  221. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  222. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  223. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
  224. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
  225. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/select.py +0 -0
  226. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/select.pyi +0 -0
  227. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/separator.py +0 -0
  228. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
  229. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
  230. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  231. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/slider.py +0 -0
  232. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
  233. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/spinner.py +0 -0
  234. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  235. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/switch.py +0 -0
  236. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
  237. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/table.py +0 -0
  238. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/table.pyi +0 -0
  239. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/tabs.py +0 -0
  240. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  241. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/text_area.py +0 -0
  242. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  243. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/text_field.py +0 -0
  244. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
  245. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
  246. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  247. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
  248. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  249. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/base.py +0 -0
  250. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
  251. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/box.py +0 -0
  252. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
  253. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/center.py +0 -0
  254. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
  255. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/container.py +0 -0
  256. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
  257. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/flex.py +0 -0
  258. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  259. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/grid.py +0 -0
  260. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  261. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/list.py +0 -0
  262. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
  263. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/section.py +0 -0
  264. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
  265. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
  266. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  267. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/stack.py +0 -0
  268. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  269. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
  270. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  271. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/base.py +0 -0
  272. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  273. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  274. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/code.py +0 -0
  275. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
  276. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/heading.py +0 -0
  277. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  278. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/link.py +0 -0
  279. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
  280. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/text.py +0 -0
  281. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
  282. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_player/__init__.py +0 -0
  283. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_player/audio.py +0 -0
  284. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_player/audio.pyi +0 -0
  285. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_player/react_player.py +0 -0
  286. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_player/react_player.pyi +0 -0
  287. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_player/video.py +0 -0
  288. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_player/video.pyi +0 -0
  289. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_router/__init__.py +0 -0
  290. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_router/dom.py +0 -0
  291. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/react_router/dom.pyi +0 -0
  292. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/__init__.py +0 -0
  293. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/__init__.pyi +0 -0
  294. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/cartesian.py +0 -0
  295. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/cartesian.pyi +0 -0
  296. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/charts.py +0 -0
  297. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/charts.pyi +0 -0
  298. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/general.py +0 -0
  299. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/general.pyi +0 -0
  300. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/polar.py +0 -0
  301. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/polar.pyi +0 -0
  302. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/recharts/recharts.pyi +0 -0
  303. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/sonner/__init__.py +0 -0
  304. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/sonner/toast.py +0 -0
  305. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/sonner/toast.pyi +0 -0
  306. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/tags/__init__.py +0 -0
  307. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/tags/cond_tag.py +0 -0
  308. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/tags/iter_tag.py +0 -0
  309. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/tags/match_tag.py +0 -0
  310. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/tags/tag.py +0 -0
  311. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/components/tags/tagless.py +0 -0
  312. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/config.py +0 -0
  313. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/__init__.py +0 -0
  314. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/base.py +0 -0
  315. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/colors.py +0 -0
  316. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/compiler.py +0 -0
  317. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/config.py +0 -0
  318. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/custom_components.py +0 -0
  319. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/event.py +0 -0
  320. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/route.py +0 -0
  321. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/constants/utils.py +0 -0
  322. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/custom_components/__init__.py +0 -0
  323. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/custom_components/custom_components.py +0 -0
  324. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/experimental/__init__.py +0 -0
  325. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/experimental/client_state.py +0 -0
  326. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/experimental/hooks.py +0 -0
  327. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/istate/__init__.py +0 -0
  328. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/istate/data.py +0 -0
  329. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/istate/dynamic.py +0 -0
  330. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/istate/manager.py +0 -0
  331. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/istate/proxy.py +0 -0
  332. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/istate/storage.py +0 -0
  333. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/istate/wrappers.py +0 -0
  334. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/middleware/__init__.py +0 -0
  335. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/middleware/hydrate_middleware.py +0 -0
  336. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/middleware/middleware.py +0 -0
  337. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/model.py +0 -0
  338. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/page.py +0 -0
  339. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/plugins/__init__.py +0 -0
  340. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/plugins/_screenshot.py +0 -0
  341. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/plugins/base.py +0 -0
  342. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/plugins/shared_tailwind.py +0 -0
  343. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/plugins/sitemap.py +0 -0
  344. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/plugins/tailwind_v3.py +0 -0
  345. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/py.typed +0 -0
  346. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/reflex.py +0 -0
  347. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/route.py +0 -0
  348. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/state.py +0 -0
  349. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/style.py +0 -0
  350. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/testing.py +0 -0
  351. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/__init__.py +0 -0
  352. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/build.py +0 -0
  353. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/codespaces.py +0 -0
  354. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/compat.py +0 -0
  355. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/console.py +0 -0
  356. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/decorator.py +0 -0
  357. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/exceptions.py +0 -0
  358. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/exec.py +0 -0
  359. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/export.py +0 -0
  360. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/format.py +0 -0
  361. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/frontend_skeleton.py +0 -0
  362. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/imports.py +0 -0
  363. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/js_runtimes.py +0 -0
  364. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/lazy_loader.py +0 -0
  365. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/misc.py +0 -0
  366. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/monitoring.py +0 -0
  367. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/net.py +0 -0
  368. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/path_ops.py +0 -0
  369. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/prerequisites.py +0 -0
  370. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/processes.py +0 -0
  371. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/pyi_generator.py +0 -0
  372. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/redir.py +0 -0
  373. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/registry.py +0 -0
  374. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/rename.py +0 -0
  375. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/serializers.py +0 -0
  376. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/telemetry.py +0 -0
  377. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/templates.py +0 -0
  378. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/token_manager.py +0 -0
  379. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/utils/types.py +0 -0
  380. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/vars/__init__.py +0 -0
  381. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/vars/base.py +0 -0
  382. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/vars/datetime.py +0 -0
  383. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/vars/dep_tracking.py +0 -0
  384. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/vars/function.py +0 -0
  385. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/vars/number.py +0 -0
  386. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/vars/object.py +0 -0
  387. {reflex-0.8.10a1 → reflex-0.8.11a1}/reflex/vars/sequence.py +0 -0
  388. {reflex-0.8.10a1 → reflex-0.8.11a1}/scripts/hatch_build.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reflex
3
- Version: 0.8.10a1
3
+ Version: 0.8.11a1
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "reflex"
3
- version = "0.8.10a1"
3
+ version = "0.8.11a1"
4
4
  description = "Web apps in pure Python."
5
5
  license.text = "Apache-2.0"
6
6
  authors = [
@@ -230,7 +230,7 @@ fail_fast = true
230
230
 
231
231
  [[tool.pre-commit.repos]]
232
232
  repo = "https://github.com/astral-sh/ruff-pre-commit"
233
- rev = "v0.12.11"
233
+ rev = "v0.12.12"
234
234
  hooks = [
235
235
  { id = "ruff-format", args = [
236
236
  "reflex",
@@ -262,7 +262,7 @@ hooks = [
262
262
 
263
263
  [[tool.pre-commit.repos]]
264
264
  repo = "https://github.com/RobertCraigie/pyright-python"
265
- rev = "v1.1.404"
265
+ rev = "v1.1.405"
266
266
  hooks = [{ id = "pyright", args = ["reflex", "tests"], language = "system" }]
267
267
 
268
268
  [[tool.pre-commit.repos]]
@@ -0,0 +1,170 @@
1
+ import JSON5 from "json5";
2
+ import env from "$/env.json";
3
+
4
+ /**
5
+ * Upload files to the server.
6
+ *
7
+ * @param state The state to apply the delta to.
8
+ * @param handler The handler to use.
9
+ * @param upload_id The upload id to use.
10
+ * @param on_upload_progress The function to call on upload progress.
11
+ * @param socket the websocket connection
12
+ * @param extra_headers Extra headers to send with the request.
13
+ * @param refs The refs object to store the abort controller in.
14
+ * @param getBackendURL Function to get the backend URL.
15
+ * @param getToken Function to get the Reflex token.
16
+ *
17
+ * @returns The response from posting to the UPLOADURL endpoint.
18
+ */
19
+ export const uploadFiles = async (
20
+ handler,
21
+ files,
22
+ upload_id,
23
+ on_upload_progress,
24
+ extra_headers,
25
+ socket,
26
+ refs,
27
+ getBackendURL,
28
+ getToken,
29
+ ) => {
30
+ // return if there's no file to upload
31
+ if (files === undefined || files.length === 0) {
32
+ return false;
33
+ }
34
+
35
+ const upload_ref_name = `__upload_controllers_${upload_id}`;
36
+
37
+ if (refs[upload_ref_name]) {
38
+ console.log("Upload already in progress for ", upload_id);
39
+ return false;
40
+ }
41
+
42
+ // Track how many partial updates have been processed for this upload.
43
+ let resp_idx = 0;
44
+ const eventHandler = (progressEvent) => {
45
+ const event_callbacks = socket._callbacks.$event;
46
+ // Whenever called, responseText will contain the entire response so far.
47
+ const chunks = progressEvent.event.target.responseText.trim().split("\n");
48
+ // So only process _new_ chunks beyond resp_idx.
49
+ chunks.slice(resp_idx).map((chunk_json) => {
50
+ try {
51
+ const chunk = JSON5.parse(chunk_json);
52
+ event_callbacks.map((f, ix) => {
53
+ f(chunk)
54
+ .then(() => {
55
+ if (ix === event_callbacks.length - 1) {
56
+ // Mark this chunk as processed.
57
+ resp_idx += 1;
58
+ }
59
+ })
60
+ .catch((e) => {
61
+ if (progressEvent.progress === 1) {
62
+ // Chunk may be incomplete, so only report errors when full response is available.
63
+ console.log("Error processing chunk", chunk, e);
64
+ }
65
+ return;
66
+ });
67
+ });
68
+ } catch (e) {
69
+ if (progressEvent.progress === 1) {
70
+ console.log("Error parsing chunk", chunk_json, e);
71
+ }
72
+ return;
73
+ }
74
+ });
75
+ };
76
+
77
+ const controller = new AbortController();
78
+ const formdata = new FormData();
79
+
80
+ // Add the token and handler to the file name.
81
+ files.forEach((file) => {
82
+ formdata.append("files", file, file.path || file.name);
83
+ });
84
+
85
+ // Send the file to the server.
86
+ refs[upload_ref_name] = controller;
87
+
88
+ return new Promise((resolve, reject) => {
89
+ const xhr = new XMLHttpRequest();
90
+
91
+ // Set up event handlers
92
+ xhr.onload = function () {
93
+ if (xhr.status >= 200 && xhr.status < 300) {
94
+ resolve({
95
+ data: xhr.responseText,
96
+ status: xhr.status,
97
+ statusText: xhr.statusText,
98
+ headers: {
99
+ get: (name) => xhr.getResponseHeader(name),
100
+ },
101
+ });
102
+ } else {
103
+ reject(new Error(`HTTP error! status: ${xhr.status}`));
104
+ }
105
+ };
106
+
107
+ xhr.onerror = function () {
108
+ reject(new Error("Network error"));
109
+ };
110
+
111
+ xhr.onabort = function () {
112
+ reject(new Error("Upload aborted"));
113
+ };
114
+
115
+ // Handle upload progress
116
+ if (on_upload_progress) {
117
+ xhr.upload.onprogress = function (event) {
118
+ if (event.lengthComputable) {
119
+ const progressEvent = {
120
+ loaded: event.loaded,
121
+ total: event.total,
122
+ progress: event.loaded / event.total,
123
+ };
124
+ on_upload_progress(progressEvent);
125
+ }
126
+ };
127
+ }
128
+
129
+ // Handle download progress with streaming response parsing
130
+ xhr.onprogress = function (event) {
131
+ if (eventHandler) {
132
+ const progressEvent = {
133
+ event: {
134
+ target: {
135
+ responseText: xhr.responseText,
136
+ },
137
+ },
138
+ progress: event.lengthComputable ? event.loaded / event.total : 0,
139
+ };
140
+ eventHandler(progressEvent);
141
+ }
142
+ };
143
+
144
+ // Handle abort controller
145
+ controller.signal.addEventListener("abort", () => {
146
+ xhr.abort();
147
+ });
148
+
149
+ // Configure and send request
150
+ xhr.open("POST", getBackendURL(env.UPLOAD));
151
+ xhr.setRequestHeader("Reflex-Client-Token", getToken());
152
+ xhr.setRequestHeader("Reflex-Event-Handler", handler);
153
+ for (const [key, value] of Object.entries(extra_headers || {})) {
154
+ xhr.setRequestHeader(key, value);
155
+ }
156
+
157
+ try {
158
+ xhr.send(formdata);
159
+ } catch (error) {
160
+ reject(error);
161
+ }
162
+ })
163
+ .catch((error) => {
164
+ console.log("Upload error:", error.message);
165
+ return false;
166
+ })
167
+ .finally(() => {
168
+ delete refs[upload_ref_name];
169
+ });
170
+ };
@@ -20,10 +20,10 @@ import {
20
20
  } from "$/utils/context";
21
21
  import debounce from "$/utils/helpers/debounce";
22
22
  import throttle from "$/utils/helpers/throttle";
23
+ import { uploadFiles } from "$/utils/helpers/upload";
23
24
 
24
25
  // Endpoint URLs.
25
26
  const EVENTURL = env.EVENT;
26
- const UPLOADURL = env.UPLOAD;
27
27
 
28
28
  // These hostnames indicate that the backend and frontend are reachable via the same domain.
29
29
  const SAME_DOMAIN_HOSTNAMES = ["localhost", "0.0.0.0", "::", "0:0:0:0:0:0:0:0"];
@@ -432,7 +432,11 @@ export const applyRestEvent = async (event, socket, navigate, params) => {
432
432
  event.payload.files,
433
433
  event.payload.upload_id,
434
434
  event.payload.on_upload_progress,
435
+ event.payload.extra_headers,
435
436
  socket,
437
+ refs,
438
+ getBackendURL,
439
+ getToken,
436
440
  );
437
441
  return false;
438
442
  }
@@ -614,163 +618,6 @@ export const connect = async (
614
618
  document.addEventListener("visibilitychange", checkVisibility);
615
619
  };
616
620
 
617
- /**
618
- * Upload files to the server.
619
- *
620
- * @param state The state to apply the delta to.
621
- * @param handler The handler to use.
622
- * @param upload_id The upload id to use.
623
- * @param on_upload_progress The function to call on upload progress.
624
- * @param socket the websocket connection
625
- *
626
- * @returns The response from posting to the UPLOADURL endpoint.
627
- */
628
- export const uploadFiles = async (
629
- handler,
630
- files,
631
- upload_id,
632
- on_upload_progress,
633
- socket,
634
- ) => {
635
- // return if there's no file to upload
636
- if (files === undefined || files.length === 0) {
637
- return false;
638
- }
639
-
640
- const upload_ref_name = `__upload_controllers_${upload_id}`;
641
-
642
- if (refs[upload_ref_name]) {
643
- console.log("Upload already in progress for ", upload_id);
644
- return false;
645
- }
646
-
647
- // Track how many partial updates have been processed for this upload.
648
- let resp_idx = 0;
649
- const eventHandler = (progressEvent) => {
650
- const event_callbacks = socket._callbacks.$event;
651
- // Whenever called, responseText will contain the entire response so far.
652
- const chunks = progressEvent.event.target.responseText.trim().split("\n");
653
- // So only process _new_ chunks beyond resp_idx.
654
- chunks.slice(resp_idx).map((chunk_json) => {
655
- try {
656
- const chunk = JSON5.parse(chunk_json);
657
- event_callbacks.map((f, ix) => {
658
- f(chunk)
659
- .then(() => {
660
- if (ix === event_callbacks.length - 1) {
661
- // Mark this chunk as processed.
662
- resp_idx += 1;
663
- }
664
- })
665
- .catch((e) => {
666
- if (progressEvent.progress === 1) {
667
- // Chunk may be incomplete, so only report errors when full response is available.
668
- console.log("Error processing chunk", chunk, e);
669
- }
670
- return;
671
- });
672
- });
673
- } catch (e) {
674
- if (progressEvent.progress === 1) {
675
- console.log("Error parsing chunk", chunk_json, e);
676
- }
677
- return;
678
- }
679
- });
680
- };
681
-
682
- const controller = new AbortController();
683
- const formdata = new FormData();
684
-
685
- // Add the token and handler to the file name.
686
- files.forEach((file) => {
687
- formdata.append("files", file, file.path || file.name);
688
- });
689
-
690
- // Send the file to the server.
691
- refs[upload_ref_name] = controller;
692
-
693
- return new Promise((resolve, reject) => {
694
- const xhr = new XMLHttpRequest();
695
-
696
- // Set up event handlers
697
- xhr.onload = function () {
698
- if (xhr.status >= 200 && xhr.status < 300) {
699
- resolve({
700
- data: xhr.responseText,
701
- status: xhr.status,
702
- statusText: xhr.statusText,
703
- headers: {
704
- get: (name) => xhr.getResponseHeader(name),
705
- },
706
- });
707
- } else {
708
- reject(new Error(`HTTP error! status: ${xhr.status}`));
709
- }
710
- };
711
-
712
- xhr.onerror = function () {
713
- reject(new Error("Network error"));
714
- };
715
-
716
- xhr.onabort = function () {
717
- reject(new Error("Upload aborted"));
718
- };
719
-
720
- // Handle upload progress
721
- if (on_upload_progress) {
722
- xhr.upload.onprogress = function (event) {
723
- if (event.lengthComputable) {
724
- const progressEvent = {
725
- loaded: event.loaded,
726
- total: event.total,
727
- progress: event.loaded / event.total,
728
- };
729
- on_upload_progress(progressEvent);
730
- }
731
- };
732
- }
733
-
734
- // Handle download progress with streaming response parsing
735
- xhr.onprogress = function (event) {
736
- if (eventHandler) {
737
- const progressEvent = {
738
- event: {
739
- target: {
740
- responseText: xhr.responseText,
741
- },
742
- },
743
- progress: event.lengthComputable ? event.loaded / event.total : 0,
744
- };
745
- eventHandler(progressEvent);
746
- }
747
- };
748
-
749
- // Handle abort controller
750
- controller.signal.addEventListener("abort", () => {
751
- xhr.abort();
752
- });
753
-
754
- // Configure and send request
755
- xhr.open("POST", getBackendURL(UPLOADURL));
756
- xhr.setRequestHeader("Reflex-Client-Token", getToken());
757
- xhr.setRequestHeader("Reflex-Event-Handler", handler);
758
-
759
- try {
760
- xhr.send(formdata);
761
- } catch (error) {
762
- reject(error);
763
- }
764
- })
765
- .catch((error) => {
766
- console.log("Upload error:", error.message);
767
- return false;
768
- })
769
- .finally(() => {
770
- delete refs[upload_ref_name];
771
- });
772
- };
773
-
774
621
  /**
775
622
  * Create an event object.
776
623
  * @param {string} name The name of the event.
@@ -258,6 +258,15 @@ class UploadFile(StarletteUploadFile):
258
258
 
259
259
  headers: Headers = dataclasses.field(default_factory=Headers)
260
260
 
261
+ @property
262
+ def filename(self) -> str | None:
263
+ """Get the name of the uploaded file.
264
+
265
+ Returns:
266
+ The name of the uploaded file.
267
+ """
268
+ return self.name
269
+
261
270
  @property
262
271
  def name(self) -> str | None:
263
272
  """Get the name of the uploaded file.
@@ -1272,12 +1281,12 @@ class App(MiddlewareMixin, LifespanMixin):
1272
1281
 
1273
1282
  # Compile custom components.
1274
1283
  (
1275
- custom_components_output,
1276
- custom_components_result,
1277
- custom_components_imports,
1278
- ) = compiler.compile_components(dict.fromkeys(CUSTOM_COMPONENTS.values()))
1279
- compile_results.append((custom_components_output, custom_components_result))
1280
- all_imports.update(custom_components_imports)
1284
+ memo_components_output,
1285
+ memo_components_result,
1286
+ memo_components_imports,
1287
+ ) = compiler.compile_memo_components(dict.fromkeys(CUSTOM_COMPONENTS.values()))
1288
+ compile_results.append((memo_components_output, memo_components_result))
1289
+ all_imports.update(memo_components_imports)
1281
1290
  progress.advance(task)
1282
1291
 
1283
1292
  with console.timing("Collect all imports and app wraps"):
@@ -336,7 +336,7 @@ def _compile_component(component: Component | StatefulComponent) -> str:
336
336
  return templates.component_template(component=component)
337
337
 
338
338
 
339
- def _compile_components(
339
+ def _compile_memo_components(
340
340
  components: Iterable[CustomComponent],
341
341
  ) -> tuple[str, dict[str, list[ImportVar]]]:
342
342
  """Compile the components.
@@ -376,7 +376,7 @@ def _compile_components(
376
376
 
377
377
  # Compile the components page.
378
378
  return (
379
- templates.custom_component_template(
379
+ templates.memo_components_template(
380
380
  imports=utils.compile_imports(imports),
381
381
  components=component_renders,
382
382
  dynamic_imports=sorted(dynamic_imports),
@@ -565,7 +565,7 @@ def compile_page(path: str, component: BaseComponent) -> tuple[str, str]:
565
565
  return output_path, code
566
566
 
567
567
 
568
- def compile_components(
568
+ def compile_memo_components(
569
569
  components: Iterable[CustomComponent],
570
570
  ) -> tuple[str, str, dict[str, list[ImportVar]]]:
571
571
  """Compile the custom components.
@@ -580,7 +580,7 @@ def compile_components(
580
580
  output_path = utils.get_components_path()
581
581
 
582
582
  # Compile the components.
583
- code, imports = _compile_components(components)
583
+ code, imports = _compile_memo_components(components)
584
584
  return output_path, code, imports
585
585
 
586
586
 
@@ -8,6 +8,7 @@ from typing import TYPE_CHECKING, Any
8
8
 
9
9
  from reflex import constants
10
10
  from reflex.constants import Hooks
11
+ from reflex.constants.state import CAMEL_CASE_MEMO_MARKER
11
12
  from reflex.utils.format import format_state_name, json_dumps
12
13
  from reflex.vars.base import VarData
13
14
 
@@ -637,7 +638,7 @@ def stateful_components_template(imports: list[_ImportDict], memoized_code: str)
637
638
  return f"{imports_str}\n{memoized_code}"
638
639
 
639
640
 
640
- def custom_component_template(
641
+ def memo_components_template(
641
642
  imports: list[_ImportDict],
642
643
  components: list[dict[str, Any]],
643
644
  dynamic_imports: Iterable[str],
@@ -661,7 +662,7 @@ def custom_component_template(
661
662
  components_code = ""
662
663
  for component in components:
663
664
  components_code += f"""
664
- export const {component["name"]} = memo(({{ {", ".join(component.get("props", []))} }}) => {{
665
+ export const {component["name"]} = memo(({{ {",".join([f"{prop}:{prop}{CAMEL_CASE_MEMO_MARKER}" for prop in component.get("props", [])])} }}) => {{
665
666
  {_render_hooks(component.get("hooks", {}))}
666
667
  return(
667
668
  {_RenderUtils.render(component["render"])}
@@ -37,12 +37,13 @@ from reflex.constants import (
37
37
  PageNames,
38
38
  )
39
39
  from reflex.constants.compiler import SpecialAttributes
40
- from reflex.constants.state import FRONTEND_EVENT_STATE, MEMO_MARKER
40
+ from reflex.constants.state import CAMEL_CASE_MEMO_MARKER, FRONTEND_EVENT_STATE
41
41
  from reflex.event import (
42
42
  EventCallback,
43
43
  EventChain,
44
44
  EventHandler,
45
45
  EventSpec,
46
+ args_specs_from_fields,
46
47
  no_args_event_spec,
47
48
  parse_args_spec,
48
49
  pointer_event_spec,
@@ -143,14 +144,6 @@ class BaseComponentMeta(FieldBasedMeta, ABCMeta):
143
144
  _fields: Mapping[str, ComponentField]
144
145
  _js_fields: Mapping[str, ComponentField]
145
146
 
146
- @classmethod
147
- def _resolve_annotations(
148
- cls, namespace: dict[str, Any], name: str
149
- ) -> dict[str, Any]:
150
- return types.resolve_annotations(
151
- namespace.get("__annotations__", {}), namespace["__module__"]
152
- )
153
-
154
147
  @classmethod
155
148
  def _process_annotated_fields(
156
149
  cls,
@@ -909,18 +902,7 @@ class Component(BaseComponent, ABC):
909
902
  """
910
903
  # Look for component specific triggers,
911
904
  # e.g. variable declared as EventHandler types.
912
- return DEFAULT_TRIGGERS | {
913
- name: (
914
- metadata[0]
915
- if (
916
- (metadata := getattr(field.annotated_type, "__metadata__", None))
917
- is not None
918
- )
919
- else no_args_event_spec
920
- )
921
- for name, field in cls.get_fields().items()
922
- if field.type_origin is EventHandler
923
- } # pyright: ignore [reportOperatorIssue]
905
+ return DEFAULT_TRIGGERS | args_specs_from_fields(cls.get_fields()) # pyright: ignore [reportOperatorIssue]
924
906
 
925
907
  def __repr__(self) -> str:
926
908
  """Represent the component in React.
@@ -1983,7 +1965,7 @@ class CustomComponent(Component):
1983
1965
 
1984
1966
  super()._post_init(
1985
1967
  event_triggers={
1986
- key + MEMO_MARKER: EventChain.create(
1968
+ key: EventChain.create(
1987
1969
  value=props[key],
1988
1970
  args_spec=get_args_spec(key),
1989
1971
  key=key,
@@ -1994,9 +1976,7 @@ class CustomComponent(Component):
1994
1976
  )
1995
1977
 
1996
1978
  to_camel_cased_props = {
1997
- format.to_camel_case(key + MEMO_MARKER): None
1998
- for key in props
1999
- if key not in event_types
1979
+ format.to_camel_case(key): None for key in props if key not in event_types
2000
1980
  }
2001
1981
  self.get_props = lambda: to_camel_cased_props # pyright: ignore [reportIncompatibleVariableOverride]
2002
1982
 
@@ -2011,7 +1991,7 @@ class CustomComponent(Component):
2011
1991
  if key not in props_types:
2012
1992
  continue
2013
1993
 
2014
- camel_cased_key = format.to_camel_case(key + MEMO_MARKER)
1994
+ camel_cased_key = format.to_camel_case(key)
2015
1995
 
2016
1996
  # Get the type based on the annotation.
2017
1997
  type_ = props_types[key]
@@ -2101,11 +2081,13 @@ class CustomComponent(Component):
2101
2081
  """
2102
2082
  return [
2103
2083
  Var(
2104
- _js_expr=name,
2084
+ _js_expr=name + CAMEL_CASE_MEMO_MARKER,
2105
2085
  _var_type=(prop._var_type if isinstance(prop, Var) else type(prop)),
2106
2086
  ).guess_type()
2107
2087
  if isinstance(prop, Var) or not isinstance(prop, EventChain)
2108
- else CustomComponent._get_event_spec_from_args_spec(name, prop)
2088
+ else CustomComponent._get_event_spec_from_args_spec(
2089
+ name + CAMEL_CASE_MEMO_MARKER, prop
2090
+ )
2109
2091
  for name, prop in self.props.items()
2110
2092
  ]
2111
2093
 
@@ -35,6 +35,7 @@ from reflex.utils import format
35
35
  from reflex.utils.imports import ImportVar
36
36
  from reflex.vars import VarData
37
37
  from reflex.vars.base import Var, get_unique_variable_name
38
+ from reflex.vars.function import FunctionVar
38
39
  from reflex.vars.sequence import LiteralStringVar
39
40
 
40
41
  DEFAULT_UPLOAD_ID: str = "default"
@@ -111,8 +112,7 @@ def clear_selected_files(id_: str = DEFAULT_UPLOAD_ID) -> EventSpec:
111
112
  # UploadFilesProvider assigns a special function to clear selected files
112
113
  # into the shared global refs object to make it accessible outside a React
113
114
  # component via `run_script` (otherwise backend could never clear files).
114
- func = Var("__clear_selected_files")._as_ref()
115
- return run_script(f"{func}({id_!r})")
115
+ return run_script(Var("__clear_selected_files")._as_ref().to(FunctionVar).call(id_))
116
116
 
117
117
 
118
118
  def cancel_upload(upload_id: str) -> EventSpec:
@@ -382,7 +382,7 @@ for theme_name in dir(Theme):
382
382
  class CodeBlock(Component, MarkdownComponentMap):
383
383
  """A code block."""
384
384
 
385
- library = "react-syntax-highlighter@15.6.1"
385
+ library = "react-syntax-highlighter@15.6.6"
386
386
 
387
387
  tag = "PrismAsyncLight"
388
388
 
@@ -412,7 +412,7 @@ class CodeBlock(Component, MarkdownComponentMap):
412
412
  )
413
413
 
414
414
  # Props passed down to the code tag.
415
- code_tag_props: Var[dict[str, str]]
415
+ code_tag_props: Var[dict[str, str | dict[str, str]]]
416
416
 
417
417
  # Whether a copy button should appear.
418
418
  can_copy: bool | None = field(
@@ -926,7 +926,9 @@ class CodeBlock(Component, MarkdownComponentMap):
926
926
  starting_line_number: Var[int] | int | None = None,
927
927
  wrap_long_lines: Var[bool] | bool | None = None,
928
928
  custom_style: dict[str, str | Var | Color] | None = None,
929
- code_tag_props: Var[dict[str, str]] | dict[str, str] | None = None,
929
+ code_tag_props: Var[dict[str, dict[str, str] | str]]
930
+ | dict[str, dict[str, str] | str]
931
+ | None = None,
930
932
  can_copy: bool | None = None,
931
933
  copy_button: Component | bool | None = None,
932
934
  style: Sequence[Mapping[str, Any]]
@@ -1562,7 +1564,9 @@ class CodeblockNamespace(ComponentNamespace):
1562
1564
  starting_line_number: Var[int] | int | None = None,
1563
1565
  wrap_long_lines: Var[bool] | bool | None = None,
1564
1566
  custom_style: dict[str, str | Var | Color] | None = None,
1565
- code_tag_props: Var[dict[str, str]] | dict[str, str] | None = None,
1567
+ code_tag_props: Var[dict[str, dict[str, str] | str]]
1568
+ | dict[str, dict[str, str] | str]
1569
+ | None = None,
1566
1570
  can_copy: bool | None = None,
1567
1571
  copy_button: Component | bool | None = None,
1568
1572
  style: Sequence[Mapping[str, Any]]
@@ -6,6 +6,8 @@ from collections.abc import Callable
6
6
  from dataclasses import _MISSING_TYPE, MISSING
7
7
  from typing import Annotated, Any, Generic, TypeVar, get_origin
8
8
 
9
+ from reflex.utils import types
10
+
9
11
  FIELD_TYPE = TypeVar("FIELD_TYPE")
10
12
 
11
13
 
@@ -114,7 +116,9 @@ class FieldBasedMeta(type):
114
116
  def _resolve_annotations(
115
117
  cls, namespace: dict[str, Any], name: str
116
118
  ) -> dict[str, Any]:
117
- return namespace.get("__annotations__", {})
119
+ return types.resolve_annotations(
120
+ namespace.get("__annotations__", {}), namespace["__module__"]
121
+ )
118
122
 
119
123
  @classmethod
120
124
  def _process_field_overrides(
@@ -6,7 +6,7 @@ from reflex.utils.imports import ImportVar
6
6
  from reflex.vars.base import LiteralVar, Var
7
7
  from reflex.vars.sequence import LiteralStringVar, StringVar
8
8
 
9
- LUCIDE_LIBRARY = "lucide-react@0.542.0"
9
+ LUCIDE_LIBRARY = "lucide-react@0.543.0"
10
10
 
11
11
 
12
12
  class LucideIconComponent(Component):
@@ -921,6 +921,7 @@ LUCIDE_ICON_LIST = [
921
921
  "hospital",
922
922
  "hotel",
923
923
  "hourglass",
924
+ "house_heart",
924
925
  "house_plug",
925
926
  "house_plus",
926
927
  "house_wifi",