reflex 0.6.5a2__tar.gz → 0.6.6__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 (397) hide show
  1. {reflex-0.6.5a2 → reflex-0.6.6}/PKG-INFO +3 -2
  2. {reflex-0.6.5a2 → reflex-0.6.6}/pyproject.toml +4 -3
  3. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/utils/state.js +39 -14
  4. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/__init__.py +3 -1
  5. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/__init__.pyi +3 -0
  6. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/app.py +24 -4
  7. reflex-0.6.6/reflex/assets.py +95 -0
  8. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/base.py +2 -2
  9. reflex-0.6.6/reflex/components/base/error_boundary.py +155 -0
  10. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/error_boundary.pyi +3 -4
  11. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/component.py +29 -7
  12. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/cond.py +8 -0
  13. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/upload.py +8 -5
  14. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/code.py +1 -1
  15. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/logo.py +26 -13
  16. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/__init__.pyi +2 -0
  17. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/__init__.py +1 -0
  18. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/__init__.pyi +3 -0
  19. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/forms.py +1 -0
  20. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/forms.pyi +1 -0
  21. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/moment/moment.py +4 -3
  22. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/moment/moment.pyi +12 -2
  23. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/plotly/plotly.py +1 -1
  24. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/drawer.py +5 -23
  25. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/base.py +3 -0
  26. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/segmented_control.py +3 -1
  27. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/segmented_control.pyi +7 -2
  28. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/text_field.py +3 -0
  29. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/text_field.pyi +4 -0
  30. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/recharts.py +2 -14
  31. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/recharts.pyi +0 -1
  32. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/sonner/toast.py +23 -12
  33. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/sonner/toast.pyi +6 -6
  34. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/config.py +60 -9
  35. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/base.py +12 -0
  36. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/installer.py +3 -3
  37. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/style.py +1 -1
  38. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/event.py +22 -5
  39. reflex-0.6.6/reflex/experimental/assets.py +37 -0
  40. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/reflex.py +16 -35
  41. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/state.py +99 -28
  42. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/exceptions.py +4 -0
  43. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/prerequisites.py +174 -40
  44. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/redir.py +13 -4
  45. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/serializers.py +52 -1
  46. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/telemetry.py +2 -1
  47. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/types.py +52 -1
  48. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/vars/base.py +18 -4
  49. reflex-0.6.6/reflex/vars/function.py +479 -0
  50. reflex-0.6.5a2/reflex/components/base/error_boundary.py +0 -92
  51. reflex-0.6.5a2/reflex/experimental/assets.py +0 -59
  52. reflex-0.6.5a2/reflex/vars/function.py +0 -233
  53. {reflex-0.6.5a2 → reflex-0.6.6}/LICENSE +0 -0
  54. {reflex-0.6.5a2 → reflex-0.6.6}/README.md +0 -0
  55. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
  56. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/apps/blank/code/__init__.py +0 -0
  57. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/apps/blank/code/blank.py +0 -0
  58. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
  59. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
  60. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
  61. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
  62. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
  63. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
  64. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
  65. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
  66. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
  67. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
  68. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
  69. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
  70. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
  71. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
  72. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
  73. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
  74. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
  75. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
  76. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
  77. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
  78. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/.gitignore +0 -0
  79. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
  80. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/components/shiki/code.js +0 -0
  81. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/jsconfig.json +0 -0
  82. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/next.config.js +0 -0
  83. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/postcss.config.js +0 -0
  84. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/styles/tailwind.css +0 -0
  85. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/utils/client_side_routing.js +0 -0
  86. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
  87. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
  88. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/utils/helpers/paste.js +0 -0
  89. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/utils/helpers/range.js +0 -0
  90. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
  91. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/__main__.py +0 -0
  92. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/admin.py +0 -0
  93. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/app_mixins/__init__.py +0 -0
  94. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/app_mixins/lifespan.py +0 -0
  95. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/app_mixins/middleware.py +0 -0
  96. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/app_mixins/mixin.py +0 -0
  97. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/app_module_for_backend.py +0 -0
  98. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/compiler/__init__.py +0 -0
  99. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/compiler/compiler.py +0 -0
  100. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/compiler/templates.py +0 -0
  101. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/compiler/utils.py +0 -0
  102. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/__init__.py +0 -0
  103. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/__init__.pyi +0 -0
  104. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/__init__.py +0 -0
  105. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/__init__.pyi +0 -0
  106. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/app_wrap.py +0 -0
  107. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/app_wrap.pyi +0 -0
  108. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/bare.py +0 -0
  109. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/body.py +0 -0
  110. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/body.pyi +0 -0
  111. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/document.py +0 -0
  112. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/document.pyi +0 -0
  113. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/fragment.py +0 -0
  114. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/fragment.pyi +0 -0
  115. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/head.py +0 -0
  116. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/head.pyi +0 -0
  117. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/link.py +0 -0
  118. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/link.pyi +0 -0
  119. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/meta.py +0 -0
  120. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/meta.pyi +0 -0
  121. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/script.py +0 -0
  122. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/base/script.pyi +0 -0
  123. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/__init__.py +0 -0
  124. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/__init__.pyi +0 -0
  125. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/banner.py +0 -0
  126. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/banner.pyi +0 -0
  127. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/breakpoints.py +0 -0
  128. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/client_side_routing.py +0 -0
  129. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/client_side_routing.pyi +0 -0
  130. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/clipboard.py +0 -0
  131. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/clipboard.pyi +0 -0
  132. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/colors.py +0 -0
  133. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/debounce.py +0 -0
  134. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/debounce.pyi +0 -0
  135. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/foreach.py +0 -0
  136. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/html.py +0 -0
  137. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/html.pyi +0 -0
  138. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/layout/__init__.py +0 -0
  139. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/match.py +0 -0
  140. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/responsive.py +0 -0
  141. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/core/upload.pyi +0 -0
  142. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/__init__.py +0 -0
  143. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/__init__.pyi +0 -0
  144. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/code.pyi +0 -0
  145. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/dataeditor.py +0 -0
  146. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/dataeditor.pyi +0 -0
  147. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/shiki_code_block.py +0 -0
  148. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
  149. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/dynamic.py +0 -0
  150. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/__init__.py +0 -0
  151. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/constants/__init__.py +0 -0
  152. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/constants/html.py +0 -0
  153. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/constants/react.py +0 -0
  154. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/constants/reflex.py +0 -0
  155. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/element.py +0 -0
  156. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/element.pyi +0 -0
  157. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/base.py +0 -0
  158. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/base.pyi +0 -0
  159. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/inline.py +0 -0
  160. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/inline.pyi +0 -0
  161. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/media.py +0 -0
  162. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/media.pyi +0 -0
  163. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/metadata.py +0 -0
  164. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/metadata.pyi +0 -0
  165. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/other.py +0 -0
  166. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/other.pyi +0 -0
  167. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/scripts.py +0 -0
  168. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/scripts.pyi +0 -0
  169. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/sectioning.py +0 -0
  170. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/sectioning.pyi +0 -0
  171. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/tables.py +0 -0
  172. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/tables.pyi +0 -0
  173. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/typography.py +0 -0
  174. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/el/elements/typography.pyi +0 -0
  175. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/gridjs/__init__.py +0 -0
  176. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/gridjs/datatable.py +0 -0
  177. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/gridjs/datatable.pyi +0 -0
  178. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/literals.py +0 -0
  179. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/lucide/__init__.py +0 -0
  180. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/lucide/icon.py +0 -0
  181. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/lucide/icon.pyi +0 -0
  182. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/markdown/__init__.py +0 -0
  183. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/markdown/markdown.py +0 -0
  184. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/markdown/markdown.pyi +0 -0
  185. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/moment/__init__.py +0 -0
  186. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/__init__.py +0 -0
  187. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/base.py +0 -0
  188. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/base.pyi +0 -0
  189. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/image.py +0 -0
  190. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/image.pyi +0 -0
  191. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/link.py +0 -0
  192. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/link.pyi +0 -0
  193. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/video.py +0 -0
  194. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/next/video.pyi +0 -0
  195. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/plotly/__init__.py +0 -0
  196. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/plotly/plotly.pyi +0 -0
  197. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/props.py +0 -0
  198. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/__init__.py +0 -0
  199. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/__init__.pyi +0 -0
  200. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/__init__.py +0 -0
  201. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/__init__.pyi +0 -0
  202. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/accordion.py +0 -0
  203. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/accordion.pyi +0 -0
  204. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/base.py +0 -0
  205. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/base.pyi +0 -0
  206. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/drawer.pyi +0 -0
  207. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/form.py +0 -0
  208. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/form.pyi +0 -0
  209. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/progress.py +0 -0
  210. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/progress.pyi +0 -0
  211. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/slider.py +0 -0
  212. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/primitives/slider.pyi +0 -0
  213. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/__init__.py +0 -0
  214. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/__init__.pyi +0 -0
  215. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/base.pyi +0 -0
  216. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/color_mode.py +0 -0
  217. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/color_mode.pyi +0 -0
  218. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/__init__.py +0 -0
  219. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/__init__.pyi +0 -0
  220. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
  221. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
  222. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
  223. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
  224. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/avatar.py +0 -0
  225. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/avatar.pyi +0 -0
  226. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/badge.py +0 -0
  227. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/badge.pyi +0 -0
  228. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/button.py +0 -0
  229. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/button.pyi +0 -0
  230. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/callout.py +0 -0
  231. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/callout.pyi +0 -0
  232. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/card.py +0 -0
  233. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/card.pyi +0 -0
  234. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/checkbox.py +0 -0
  235. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
  236. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
  237. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
  238. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
  239. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
  240. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/context_menu.py +0 -0
  241. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
  242. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/data_list.py +0 -0
  243. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/data_list.pyi +0 -0
  244. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/dialog.py +0 -0
  245. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/dialog.pyi +0 -0
  246. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
  247. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
  248. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/hover_card.py +0 -0
  249. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
  250. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/icon_button.py +0 -0
  251. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
  252. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/inset.py +0 -0
  253. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/inset.pyi +0 -0
  254. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/popover.py +0 -0
  255. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/popover.pyi +0 -0
  256. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/progress.py +0 -0
  257. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/progress.pyi +0 -0
  258. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/radio.py +0 -0
  259. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/radio.pyi +0 -0
  260. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/radio_cards.py +0 -0
  261. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
  262. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/radio_group.py +0 -0
  263. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
  264. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/scroll_area.py +0 -0
  265. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
  266. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/select.py +0 -0
  267. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/select.pyi +0 -0
  268. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/separator.py +0 -0
  269. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/separator.pyi +0 -0
  270. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/skeleton.py +0 -0
  271. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
  272. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/slider.py +0 -0
  273. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/slider.pyi +0 -0
  274. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/spinner.py +0 -0
  275. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/spinner.pyi +0 -0
  276. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/switch.py +0 -0
  277. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/switch.pyi +0 -0
  278. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/table.py +0 -0
  279. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/table.pyi +0 -0
  280. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/tabs.py +0 -0
  281. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/tabs.pyi +0 -0
  282. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/text_area.py +0 -0
  283. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/text_area.pyi +0 -0
  284. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/tooltip.py +0 -0
  285. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
  286. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/__init__.py +0 -0
  287. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
  288. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/base.py +0 -0
  289. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/base.pyi +0 -0
  290. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/box.py +0 -0
  291. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/box.pyi +0 -0
  292. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/center.py +0 -0
  293. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/center.pyi +0 -0
  294. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/container.py +0 -0
  295. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/container.pyi +0 -0
  296. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/flex.py +0 -0
  297. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/flex.pyi +0 -0
  298. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/grid.py +0 -0
  299. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/grid.pyi +0 -0
  300. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/list.py +0 -0
  301. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/list.pyi +0 -0
  302. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/section.py +0 -0
  303. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/section.pyi +0 -0
  304. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/spacer.py +0 -0
  305. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
  306. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/stack.py +0 -0
  307. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/layout/stack.pyi +0 -0
  308. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/__init__.py +0 -0
  309. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
  310. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/base.py +0 -0
  311. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/blockquote.py +0 -0
  312. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
  313. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/code.py +0 -0
  314. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/code.pyi +0 -0
  315. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/heading.py +0 -0
  316. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/heading.pyi +0 -0
  317. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/link.py +0 -0
  318. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/link.pyi +0 -0
  319. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/text.py +0 -0
  320. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/radix/themes/typography/text.pyi +0 -0
  321. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/react_player/__init__.py +0 -0
  322. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/react_player/audio.py +0 -0
  323. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/react_player/audio.pyi +0 -0
  324. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/react_player/react_player.py +0 -0
  325. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/react_player/react_player.pyi +0 -0
  326. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/react_player/video.py +0 -0
  327. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/react_player/video.pyi +0 -0
  328. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/__init__.py +0 -0
  329. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/__init__.pyi +0 -0
  330. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/cartesian.py +0 -0
  331. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/cartesian.pyi +0 -0
  332. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/charts.py +0 -0
  333. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/charts.pyi +0 -0
  334. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/general.py +0 -0
  335. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/general.pyi +0 -0
  336. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/polar.py +0 -0
  337. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/recharts/polar.pyi +0 -0
  338. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/sonner/__init__.py +0 -0
  339. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/suneditor/__init__.py +0 -0
  340. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/suneditor/editor.py +0 -0
  341. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/suneditor/editor.pyi +0 -0
  342. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/tags/__init__.py +0 -0
  343. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/tags/cond_tag.py +0 -0
  344. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/tags/iter_tag.py +0 -0
  345. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/tags/match_tag.py +0 -0
  346. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/tags/tag.py +0 -0
  347. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/components/tags/tagless.py +0 -0
  348. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/__init__.py +0 -0
  349. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/colors.py +0 -0
  350. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/compiler.py +0 -0
  351. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/config.py +0 -0
  352. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/custom_components.py +0 -0
  353. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/event.py +0 -0
  354. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/route.py +0 -0
  355. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/state.py +0 -0
  356. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/constants/utils.py +0 -0
  357. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/custom_components/__init__.py +0 -0
  358. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/custom_components/custom_components.py +0 -0
  359. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/experimental/__init__.py +0 -0
  360. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/experimental/client_state.py +0 -0
  361. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/experimental/hooks.py +0 -0
  362. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/experimental/layout.py +0 -0
  363. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/experimental/layout.pyi +0 -0
  364. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/experimental/misc.py +0 -0
  365. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/istate/__init__.py +0 -0
  366. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/istate/data.py +0 -0
  367. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/istate/dynamic.py +0 -0
  368. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/istate/proxy.py +0 -0
  369. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/istate/storage.py +0 -0
  370. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/istate/wrappers.py +0 -0
  371. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/middleware/__init__.py +0 -0
  372. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/middleware/hydrate_middleware.py +0 -0
  373. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/middleware/middleware.py +0 -0
  374. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/model.py +0 -0
  375. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/page.py +0 -0
  376. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/route.py +0 -0
  377. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/style.py +0 -0
  378. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/testing.py +0 -0
  379. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/__init__.py +0 -0
  380. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/build.py +0 -0
  381. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/codespaces.py +0 -0
  382. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/compat.py +0 -0
  383. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/console.py +0 -0
  384. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/exec.py +0 -0
  385. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/export.py +0 -0
  386. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/format.py +0 -0
  387. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/imports.py +0 -0
  388. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/lazy_loader.py +0 -0
  389. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/net.py +0 -0
  390. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/path_ops.py +0 -0
  391. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/processes.py +0 -0
  392. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/pyi_generator.py +0 -0
  393. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/utils/registry.py +0 -0
  394. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/vars/__init__.py +0 -0
  395. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/vars/number.py +0 -0
  396. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/vars/object.py +0 -0
  397. {reflex-0.6.5a2 → reflex-0.6.6}/reflex/vars/sequence.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reflex
3
- Version: 0.6.5a2
3
+ Version: 0.6.6
4
4
  Summary: Web apps in pure Python.
5
5
  Home-page: https://reflex.dev
6
6
  License: Apache-2.0
@@ -33,7 +33,7 @@ Requires-Dist: python-multipart (>=0.0.5,<0.1)
33
33
  Requires-Dist: python-socketio (>=5.7.0,<6.0)
34
34
  Requires-Dist: redis (>=4.3.5,<6.0)
35
35
  Requires-Dist: reflex-chakra (>=0.6.0)
36
- Requires-Dist: reflex-hosting-cli (>=0.1.5,<2.0)
36
+ Requires-Dist: reflex-hosting-cli (>=0.1.17,<2.0)
37
37
  Requires-Dist: rich (>=13.0.0,<14.0)
38
38
  Requires-Dist: setuptools (>=75.0)
39
39
  Requires-Dist: sqlmodel (>=0.0.14,<0.1)
@@ -41,6 +41,7 @@ Requires-Dist: starlette-admin (>=0.11.0,<1.0)
41
41
  Requires-Dist: tomlkit (>=0.12.4,<1.0)
42
42
  Requires-Dist: twine (>=4.0.0,<6.0)
43
43
  Requires-Dist: typer (>=0.4.2,<1.0)
44
+ Requires-Dist: typing_extensions (>=4.6.0)
44
45
  Requires-Dist: uvicorn (>=0.20.0)
45
46
  Requires-Dist: wheel (>=0.42.0,<1.0)
46
47
  Requires-Dist: wrapt (>=1.11.0,<2.0) ; python_version < "3.11"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "reflex"
3
- version = "0.6.5a2"
3
+ version = "0.6.6"
4
4
  description = "Web apps in pure Python."
5
5
  license = "Apache-2.0"
6
6
  authors = [
@@ -49,7 +49,7 @@ wrapt = [
49
49
  {version = ">=1.11.0,<2.0", python = "<3.11"},
50
50
  ]
51
51
  packaging = ">=23.1,<25.0"
52
- reflex-hosting-cli = ">=0.1.5,<2.0"
52
+ reflex-hosting-cli = ">=0.1.17,<2.0"
53
53
  charset-normalizer = ">=3.3.2,<4.0"
54
54
  wheel = ">=0.42.0,<1.0"
55
55
  build = ">=1.0.3,<2.0"
@@ -59,6 +59,7 @@ twine = ">=4.0.0,<6.0"
59
59
  tomlkit = ">=0.12.4,<1.0"
60
60
  lazy_loader = ">=0.4"
61
61
  reflex-chakra = ">=0.6.0"
62
+ typing_extensions = ">=4.6.0"
62
63
 
63
64
  [tool.poetry.group.dev.dependencies]
64
65
  pytest = ">=7.1.2,<9.0"
@@ -69,7 +70,7 @@ dill = ">=0.3.8"
69
70
  toml = ">=0.10.2,<1.0"
70
71
  pytest-asyncio = ">=0.24.0"
71
72
  pytest-cov = ">=4.0.0,<7.0"
72
- ruff = "0.7.2"
73
+ ruff = "0.7.4"
73
74
  pandas = ">=2.1.1,<3.0"
74
75
  pillow = ">=10.0.0,<12.0"
75
76
  plotly = ">=5.13.0,<6.0"
@@ -454,6 +454,10 @@ export const connect = async (
454
454
  queueEvents(update.events, socket);
455
455
  }
456
456
  });
457
+ socket.current.on("reload", async (event) => {
458
+ event_processing = false;
459
+ queueEvents([...initialEvents(), JSON5.parse(event)], socket);
460
+ });
457
461
 
458
462
  document.addEventListener("visibilitychange", checkVisibility);
459
463
  };
@@ -486,23 +490,30 @@ export const uploadFiles = async (
486
490
  return false;
487
491
  }
488
492
 
493
+ // Track how many partial updates have been processed for this upload.
489
494
  let resp_idx = 0;
490
495
  const eventHandler = (progressEvent) => {
491
- // handle any delta / event streamed from the upload event handler
496
+ const event_callbacks = socket._callbacks.$event;
497
+ // Whenever called, responseText will contain the entire response so far.
492
498
  const chunks = progressEvent.event.target.responseText.trim().split("\n");
499
+ // So only process _new_ chunks beyond resp_idx.
493
500
  chunks.slice(resp_idx).map((chunk) => {
494
- try {
495
- socket._callbacks.$event.map((f) => {
496
- f(chunk);
497
- });
498
- resp_idx += 1;
499
- } catch (e) {
500
- if (progressEvent.progress === 1) {
501
- // Chunk may be incomplete, so only report errors when full response is available.
502
- console.log("Error parsing chunk", chunk, e);
503
- }
504
- return;
505
- }
501
+ event_callbacks.map((f, ix) => {
502
+ f(chunk)
503
+ .then(() => {
504
+ if (ix === event_callbacks.length - 1) {
505
+ // Mark this chunk as processed.
506
+ resp_idx += 1;
507
+ }
508
+ })
509
+ .catch((e) => {
510
+ if (progressEvent.progress === 1) {
511
+ // Chunk may be incomplete, so only report errors when full response is available.
512
+ console.log("Error parsing chunk", chunk, e);
513
+ }
514
+ return;
515
+ });
516
+ });
506
517
  });
507
518
  };
508
519
 
@@ -705,6 +716,11 @@ export const useEventLoop = (
705
716
  _e.stopPropagation();
706
717
  }
707
718
  const combined_name = events.map((e) => e.name).join("+++");
719
+ if (event_actions?.temporal) {
720
+ if (!socket.current || !socket.current.connected) {
721
+ return; // don't queue when the backend is not connected
722
+ }
723
+ }
708
724
  if (event_actions?.throttle) {
709
725
  // If throttle returns false, the events are not added to the queue.
710
726
  if (!throttle(combined_name, event_actions.throttle)) {
@@ -762,7 +778,7 @@ export const useEventLoop = (
762
778
  window.onunhandledrejection = function (event) {
763
779
  addEvents([
764
780
  Event(`${exception_state_name}.handle_frontend_exception`, {
765
- stack: event.reason.stack,
781
+ stack: event.reason?.stack,
766
782
  component_stack: "",
767
783
  }),
768
784
  ]);
@@ -837,11 +853,20 @@ export const useEventLoop = (
837
853
  }
838
854
  };
839
855
  const change_complete = () => addEvents(onLoadInternalEvent());
856
+ const change_error = () => {
857
+ // Remove cached error state from router for this page, otherwise the
858
+ // page will never send on_load events again.
859
+ if (router.components[router.pathname].error) {
860
+ delete router.components[router.pathname].error;
861
+ }
862
+ };
840
863
  router.events.on("routeChangeStart", change_start);
841
864
  router.events.on("routeChangeComplete", change_complete);
865
+ router.events.on("routeChangeError", change_error);
842
866
  return () => {
843
867
  router.events.off("routeChangeStart", change_start);
844
868
  router.events.off("routeChangeComplete", change_complete);
869
+ router.events.off("routeChangeError", change_error);
845
870
  };
846
871
  }, [router]);
847
872
 
@@ -264,6 +264,7 @@ _MAPPING: dict = {
264
264
  "experimental": ["_x"],
265
265
  "admin": ["AdminDash"],
266
266
  "app": ["App", "UploadFile"],
267
+ "assets": ["asset"],
267
268
  "base": ["Base"],
268
269
  "components.component": [
269
270
  "Component",
@@ -298,6 +299,7 @@ _MAPPING: dict = {
298
299
  "components.moment": ["MomentDelta", "moment"],
299
300
  "config": ["Config", "DBConfig"],
300
301
  "constants": ["Env"],
302
+ "constants.colors": ["Color"],
301
303
  "event": [
302
304
  "EventChain",
303
305
  "EventHandler",
@@ -338,7 +340,7 @@ _MAPPING: dict = {
338
340
  ],
339
341
  "istate.wrappers": ["get_state"],
340
342
  "style": ["Style", "toggle_color_mode"],
341
- "utils.imports": ["ImportVar"],
343
+ "utils.imports": ["ImportDict", "ImportVar"],
342
344
  "utils.serializers": ["serializer"],
343
345
  "vars": ["Var", "field", "Field"],
344
346
  }
@@ -19,6 +19,7 @@ from . import vars as vars
19
19
  from .admin import AdminDash as AdminDash
20
20
  from .app import App as App
21
21
  from .app import UploadFile as UploadFile
22
+ from .assets import asset as asset
22
23
  from .base import Base as Base
23
24
  from .components import el as el
24
25
  from .components import lucide as lucide
@@ -152,6 +153,7 @@ from .components.suneditor import editor as editor
152
153
  from .config import Config as Config
153
154
  from .config import DBConfig as DBConfig
154
155
  from .constants import Env as Env
156
+ from .constants.colors import Color as Color
155
157
  from .event import EventChain as EventChain
156
158
  from .event import EventHandler as EventHandler
157
159
  from .event import background as background
@@ -192,6 +194,7 @@ from .state import dynamic as dynamic
192
194
  from .state import var as var
193
195
  from .style import Style as Style
194
196
  from .style import toggle_color_mode as toggle_color_mode
197
+ from .utils.imports import ImportDict as ImportDict
195
198
  from .utils.imports import ImportVar as ImportVar
196
199
  from .utils.serializers import serializer as serializer
197
200
  from .vars import Field as Field
@@ -73,6 +73,7 @@ from reflex.event import (
73
73
  EventSpec,
74
74
  EventType,
75
75
  IndividualEventType,
76
+ get_hydrate_event,
76
77
  window_alert,
77
78
  )
78
79
  from reflex.model import Model, get_db_status
@@ -850,10 +851,9 @@ class App(MiddlewareMixin, LifespanMixin):
850
851
  if self.theme is not None:
851
852
  # If a theme component was provided, wrap the app with it
852
853
  app_wrappers[(20, "Theme")] = self.theme
853
- # Fix #2992 by removing the top-level appearance prop
854
- self.theme.appearance = None
855
854
 
856
855
  for route in self.unevaluated_pages:
856
+ console.debug(f"Evaluating page: {route}")
857
857
  self._compile_page(route)
858
858
 
859
859
  # Add the optional endpoints (_upload)
@@ -1006,6 +1006,9 @@ class App(MiddlewareMixin, LifespanMixin):
1006
1006
  compile_results.append(
1007
1007
  compiler.compile_contexts(self.state, self.theme),
1008
1008
  )
1009
+ if self.theme is not None:
1010
+ # Fix #2992 by removing the top-level appearance prop
1011
+ self.theme.appearance = None
1009
1012
  progress.advance(task)
1010
1013
 
1011
1014
  # Compile the app root.
@@ -1257,6 +1260,21 @@ async def process(
1257
1260
  )
1258
1261
  # Get the state for the session exclusively.
1259
1262
  async with app.state_manager.modify_state(event.substate_token) as state:
1263
+ # When this is a brand new instance of the state, signal the
1264
+ # frontend to reload before processing it.
1265
+ if (
1266
+ not state.router_data
1267
+ and event.name != get_hydrate_event(state)
1268
+ and app.event_namespace is not None
1269
+ ):
1270
+ await asyncio.create_task(
1271
+ app.event_namespace.emit(
1272
+ "reload",
1273
+ data=format.json_dumps(event),
1274
+ to=sid,
1275
+ )
1276
+ )
1277
+ return
1260
1278
  # re-assign only when the value is different
1261
1279
  if state.router_data != router_data:
1262
1280
  # assignment will recurse into substates and force recalculation of
@@ -1460,10 +1478,10 @@ class EventNamespace(AsyncNamespace):
1460
1478
  app: App
1461
1479
 
1462
1480
  # Keep a mapping between socket ID and client token.
1463
- token_to_sid: dict[str, str] = {}
1481
+ token_to_sid: dict[str, str]
1464
1482
 
1465
1483
  # Keep a mapping between client token and socket ID.
1466
- sid_to_token: dict[str, str] = {}
1484
+ sid_to_token: dict[str, str]
1467
1485
 
1468
1486
  def __init__(self, namespace: str, app: App):
1469
1487
  """Initialize the event namespace.
@@ -1473,6 +1491,8 @@ class EventNamespace(AsyncNamespace):
1473
1491
  app: The application object.
1474
1492
  """
1475
1493
  super().__init__(namespace)
1494
+ self.token_to_sid = {}
1495
+ self.sid_to_token = {}
1476
1496
  self.app = app
1477
1497
 
1478
1498
  def on_connect(self, sid, environ):
@@ -0,0 +1,95 @@
1
+ """Helper functions for adding assets to the app."""
2
+
3
+ import inspect
4
+ from pathlib import Path
5
+ from typing import Optional
6
+
7
+ from reflex import constants
8
+ from reflex.utils.exec import is_backend_only
9
+
10
+
11
+ def asset(
12
+ path: str,
13
+ shared: bool = False,
14
+ subfolder: Optional[str] = None,
15
+ _stack_level: int = 1,
16
+ ) -> str:
17
+ """Add an asset to the app, either shared as a symlink or local.
18
+
19
+ Shared/External/Library assets:
20
+ Place the file next to your including python file.
21
+ Links the file to the app's external assets directory.
22
+
23
+ Example:
24
+ ```python
25
+ # my_custom_javascript.js is a shared asset located next to the including python file.
26
+ rx.script(src=rx.asset(path="my_custom_javascript.js", shared=True))
27
+ rx.image(src=rx.asset(path="test_image.png", shared=True, subfolder="subfolder"))
28
+ ```
29
+
30
+ Local/Internal assets:
31
+ Place the file in the app's assets/ directory.
32
+
33
+ Example:
34
+ ```python
35
+ # local_image.png is an asset located in the app's assets/ directory. It cannot be shared when developing a library.
36
+ rx.image(src=rx.asset(path="local_image.png"))
37
+ ```
38
+
39
+ Args:
40
+ path: The relative path of the asset.
41
+ subfolder: The directory to place the shared asset in.
42
+ shared: Whether to expose the asset to other apps.
43
+ _stack_level: The stack level to determine the calling file, defaults to
44
+ the immediate caller 1. When using rx.asset via a helper function,
45
+ increase this number for each helper function in the stack.
46
+
47
+ Raises:
48
+ FileNotFoundError: If the file does not exist.
49
+ ValueError: If subfolder is provided for local assets.
50
+
51
+ Returns:
52
+ The relative URL to the asset.
53
+ """
54
+ assets = constants.Dirs.APP_ASSETS
55
+ backend_only = is_backend_only()
56
+
57
+ # Local asset handling
58
+ if not shared:
59
+ cwd = Path.cwd()
60
+ src_file_local = cwd / assets / path
61
+ if subfolder is not None:
62
+ raise ValueError("Subfolder is not supported for local assets.")
63
+ if not backend_only and not src_file_local.exists():
64
+ raise FileNotFoundError(f"File not found: {src_file_local}")
65
+ return f"/{path}"
66
+
67
+ # Shared asset handling
68
+ # Determine the file by which the asset is exposed.
69
+ frame = inspect.stack()[_stack_level]
70
+ calling_file = frame.filename
71
+ module = inspect.getmodule(frame[0])
72
+ assert module is not None
73
+
74
+ external = constants.Dirs.EXTERNAL_APP_ASSETS
75
+ src_file_shared = Path(calling_file).parent / path
76
+ if not src_file_shared.exists():
77
+ raise FileNotFoundError(f"File not found: {src_file_shared}")
78
+
79
+ caller_module_path = module.__name__.replace(".", "/")
80
+ subfolder = f"{caller_module_path}/{subfolder}" if subfolder else caller_module_path
81
+
82
+ # Symlink the asset to the app's external assets directory if running frontend.
83
+ if not backend_only:
84
+ # Create the asset folder in the currently compiling app.
85
+ asset_folder = Path.cwd() / assets / external / subfolder
86
+ asset_folder.mkdir(parents=True, exist_ok=True)
87
+
88
+ dst_file = asset_folder / path
89
+
90
+ if not dst_file.exists() and (
91
+ not dst_file.is_symlink() or dst_file.resolve() != src_file_shared.resolve()
92
+ ):
93
+ dst_file.symlink_to(src_file_shared)
94
+
95
+ return f"/{external}/{subfolder}/{path}"
@@ -130,8 +130,8 @@ class Base(BaseModel): # pyright: ignore [reportUnboundVariable]
130
130
  Returns:
131
131
  The value of the field.
132
132
  """
133
- if isinstance(key, str) and key in self.__fields__:
133
+ if isinstance(key, str):
134
134
  # Seems like this function signature was wrong all along?
135
135
  # If the user wants a field that we know of, get it and pass it off to _get_value
136
- key = getattr(self, key)
136
+ return getattr(self, key, key)
137
137
  return key
@@ -0,0 +1,155 @@
1
+ """A React Error Boundary component that catches unhandled frontend exceptions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Dict, Tuple
6
+
7
+ from reflex.components.component import Component
8
+ from reflex.components.datadisplay.logo import svg_logo
9
+ from reflex.components.el import a, button, details, div, h2, hr, p, pre, summary
10
+ from reflex.event import EventHandler, set_clipboard
11
+ from reflex.state import FrontendEventExceptionState
12
+ from reflex.vars.base import Var
13
+ from reflex.vars.function import ArgsFunctionOperation
14
+
15
+
16
+ def on_error_spec(
17
+ error: Var[Dict[str, str]], info: Var[Dict[str, str]]
18
+ ) -> Tuple[Var[str], Var[str]]:
19
+ """The spec for the on_error event handler.
20
+
21
+ Args:
22
+ error: The error message.
23
+ info: Additional information about the error.
24
+
25
+ Returns:
26
+ The arguments for the event handler.
27
+ """
28
+ return (
29
+ error.stack,
30
+ info.componentStack,
31
+ )
32
+
33
+
34
+ class ErrorBoundary(Component):
35
+ """A React Error Boundary component that catches unhandled frontend exceptions."""
36
+
37
+ library = "react-error-boundary"
38
+ tag = "ErrorBoundary"
39
+
40
+ # Fired when the boundary catches an error.
41
+ on_error: EventHandler[on_error_spec]
42
+
43
+ # Rendered instead of the children when an error is caught.
44
+ fallback_render: Var[Component]
45
+
46
+ @classmethod
47
+ def create(cls, *children, **props):
48
+ """Create an ErrorBoundary component.
49
+
50
+ Args:
51
+ *children: The children of the component.
52
+ **props: The props of the component.
53
+
54
+ Returns:
55
+ The ErrorBoundary component.
56
+ """
57
+ if "on_error" not in props:
58
+ props["on_error"] = FrontendEventExceptionState.handle_frontend_exception
59
+ if "fallback_render" not in props:
60
+ props["fallback_render"] = ArgsFunctionOperation.create(
61
+ ("event_args",),
62
+ Var.create(
63
+ div(
64
+ div(
65
+ div(
66
+ h2(
67
+ "An error occurred while rendering this page.",
68
+ font_size="1.25rem",
69
+ font_weight="bold",
70
+ ),
71
+ p(
72
+ "This is an error with the application itself.",
73
+ opacity="0.75",
74
+ ),
75
+ details(
76
+ summary("Error message", padding="0.5rem"),
77
+ div(
78
+ div(
79
+ pre(
80
+ Var(
81
+ _js_expr="event_args.error.stack",
82
+ ),
83
+ ),
84
+ padding="0.5rem",
85
+ width="fit-content",
86
+ ),
87
+ width="100%",
88
+ max_height="50vh",
89
+ overflow="auto",
90
+ background="#000",
91
+ color="#fff",
92
+ border_radius="0.25rem",
93
+ ),
94
+ button(
95
+ "Copy",
96
+ on_click=set_clipboard(
97
+ Var(_js_expr="event_args.error.stack"),
98
+ ),
99
+ padding="0.35rem 0.75rem",
100
+ margin="0.5rem",
101
+ background="#fff",
102
+ color="#000",
103
+ border="1px solid #000",
104
+ border_radius="0.25rem",
105
+ font_weight="bold",
106
+ ),
107
+ ),
108
+ display="flex",
109
+ flex_direction="column",
110
+ gap="1rem",
111
+ max_width="50ch",
112
+ border="1px solid #888888",
113
+ border_radius="0.25rem",
114
+ padding="1rem",
115
+ ),
116
+ hr(
117
+ border_color="currentColor",
118
+ opacity="0.25",
119
+ ),
120
+ a(
121
+ div(
122
+ "Built with ",
123
+ svg_logo("currentColor"),
124
+ display="flex",
125
+ align_items="baseline",
126
+ justify_content="center",
127
+ font_family="monospace",
128
+ gap="0.5rem",
129
+ ),
130
+ href="https://reflex.dev",
131
+ ),
132
+ display="flex",
133
+ flex_direction="column",
134
+ gap="1rem",
135
+ ),
136
+ height="100%",
137
+ width="100%",
138
+ position="absolute",
139
+ display="flex",
140
+ align_items="center",
141
+ justify_content="center",
142
+ )
143
+ ),
144
+ _var_type=Component,
145
+ )
146
+ else:
147
+ props["fallback_render"] = ArgsFunctionOperation.create(
148
+ ("event_args",),
149
+ props["fallback_render"],
150
+ _var_type=Component,
151
+ )
152
+ return super().create(*children, **props)
153
+
154
+
155
+ error_boundary = ErrorBoundary.create
@@ -3,7 +3,7 @@
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
- from typing import Any, Dict, List, Optional, Tuple, Union, overload
6
+ from typing import Any, Dict, Optional, Tuple, Union, overload
7
7
 
8
8
  from reflex.components.component import Component
9
9
  from reflex.event import BASE_STATE, EventType
@@ -15,13 +15,12 @@ def on_error_spec(
15
15
  ) -> Tuple[Var[str], Var[str]]: ...
16
16
 
17
17
  class ErrorBoundary(Component):
18
- def add_custom_code(self) -> List[str]: ...
19
18
  @overload
20
19
  @classmethod
21
20
  def create( # type: ignore
22
21
  cls,
23
22
  *children,
24
- Fallback_component: Optional[Union[Component, Var[Component]]] = None,
23
+ fallback_render: Optional[Union[Component, Var[Component]]] = None,
25
24
  style: Optional[Style] = None,
26
25
  key: Optional[Any] = None,
27
26
  id: Optional[Any] = None,
@@ -57,7 +56,7 @@ class ErrorBoundary(Component):
57
56
  Args:
58
57
  *children: The children of the component.
59
58
  on_error: Fired when the boundary catches an error.
60
- Fallback_component: Rendered instead of the children when an error is caught.
59
+ fallback_render: Rendered instead of the children when an error is caught.
61
60
  style: The style of the component.
62
61
  key: A unique key for the component.
63
62
  id: The id for the component.
@@ -186,6 +186,23 @@ ComponentStyle = Dict[
186
186
  ComponentChild = Union[types.PrimitiveType, Var, BaseComponent]
187
187
 
188
188
 
189
+ def satisfies_type_hint(obj: Any, type_hint: Any) -> bool:
190
+ """Check if an object satisfies a type hint.
191
+
192
+ Args:
193
+ obj: The object to check.
194
+ type_hint: The type hint to check against.
195
+
196
+ Returns:
197
+ Whether the object satisfies the type hint.
198
+ """
199
+ if isinstance(obj, LiteralVar):
200
+ return types._isinstance(obj._var_value, type_hint)
201
+ if isinstance(obj, Var):
202
+ return types._issubclass(obj._var_type, type_hint)
203
+ return types._isinstance(obj, type_hint)
204
+
205
+
189
206
  class Component(BaseComponent, ABC):
190
207
  """A component with style, event trigger and other props."""
191
208
 
@@ -460,8 +477,7 @@ class Component(BaseComponent, ABC):
460
477
  )
461
478
  ) or (
462
479
  # Else just check if the passed var type is valid.
463
- not passed_types
464
- and not types._issubclass(passed_type, expected_type, value)
480
+ not passed_types and not satisfies_type_hint(value, expected_type)
465
481
  ):
466
482
  value_name = value._js_expr if isinstance(value, Var) else value
467
483
 
@@ -1904,6 +1920,11 @@ memo = custom_component
1904
1920
  class NoSSRComponent(Component):
1905
1921
  """A dynamic component that is not rendered on the server."""
1906
1922
 
1923
+ def _get_import_name(self) -> None | str:
1924
+ if not self.library:
1925
+ return None
1926
+ return f"${self.library}" if self.library.startswith("/") else self.library
1927
+
1907
1928
  def _get_imports(self) -> ParsedImportDict:
1908
1929
  """Get the imports for the component.
1909
1930
 
@@ -1917,8 +1938,9 @@ class NoSSRComponent(Component):
1917
1938
  _imports = super()._get_imports()
1918
1939
 
1919
1940
  # Do NOT import the main library/tag statically.
1920
- if self.library is not None:
1921
- _imports[self.library] = [
1941
+ import_name = self._get_import_name()
1942
+ if import_name is not None:
1943
+ _imports[import_name] = [
1922
1944
  imports.ImportVar(
1923
1945
  tag=None,
1924
1946
  render=False,
@@ -1936,10 +1958,10 @@ class NoSSRComponent(Component):
1936
1958
  opts_fragment = ", { ssr: false });"
1937
1959
 
1938
1960
  # extract the correct import name from library name
1939
- if self.library is None:
1961
+ base_import_name = self._get_import_name()
1962
+ if base_import_name is None:
1940
1963
  raise ValueError("Undefined library for NoSSRComponent")
1941
-
1942
- import_name = format.format_library_name(self.library)
1964
+ import_name = format.format_library_name(base_import_name)
1943
1965
 
1944
1966
  library_import = f"const {self.alias if self.alias else self.tag} = dynamic(() => import('{import_name}')"
1945
1967
  mod_import = (
@@ -171,6 +171,14 @@ def cond(condition: Any, c1: Any, c2: Any = None) -> Component | Var:
171
171
  )
172
172
 
173
173
 
174
+ @overload
175
+ def color_mode_cond(light: Component, dark: Component | None = None) -> Component: ... # type: ignore
176
+
177
+
178
+ @overload
179
+ def color_mode_cond(light: Any, dark: Any = None) -> Var: ...
180
+
181
+
174
182
  def color_mode_cond(light: Any, dark: Any = None) -> Var | Component:
175
183
  """Create a component or Prop based on color_mode.
176
184