reflex 0.3.8a2__py3-none-any.whl → 0.3.9__py3-none-any.whl

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 (67) hide show
  1. reflex/.templates/apps/blank/code/blank.py +1 -1
  2. reflex/.templates/apps/demo/code/demo.py +1 -1
  3. reflex/.templates/jinja/web/pages/utils.js.jinja2 +1 -1
  4. reflex/__init__.py +1 -0
  5. reflex/__init__.pyi +1 -0
  6. reflex/app.py +4 -5
  7. reflex/components/component.py +3 -1
  8. reflex/components/core/match.py +8 -4
  9. reflex/components/datadisplay/dataeditor.py +5 -1
  10. reflex/components/markdown/markdown.py +1 -0
  11. reflex/components/radix/__init__.py +2 -0
  12. reflex/components/radix/primitives/__init__.py +14 -1
  13. reflex/components/radix/primitives/accordion.py +430 -69
  14. reflex/components/radix/primitives/accordion.pyi +41 -11
  15. reflex/components/radix/primitives/base.py +4 -0
  16. reflex/components/radix/primitives/base.pyi +81 -0
  17. reflex/components/radix/primitives/form.py +4 -2
  18. reflex/components/radix/primitives/form.pyi +2 -2
  19. reflex/components/radix/primitives/progress.py +4 -2
  20. reflex/components/radix/primitives/progress.pyi +2 -2
  21. reflex/components/radix/primitives/slider.py +7 -5
  22. reflex/components/radix/primitives/slider.pyi +5 -5
  23. reflex/components/radix/themes/components/__init__.py +8 -2
  24. reflex/components/radix/themes/components/alertdialog.py +4 -4
  25. reflex/components/radix/themes/components/alertdialog.pyi +8 -1
  26. reflex/components/radix/themes/components/aspectratio.py +2 -4
  27. reflex/components/radix/themes/components/aspectratio.pyi +1 -3
  28. reflex/components/radix/themes/components/avatar.py +7 -3
  29. reflex/components/radix/themes/components/avatar.pyi +5 -3
  30. reflex/components/radix/themes/components/badge.py +5 -7
  31. reflex/components/radix/themes/components/badge.pyi +4 -6
  32. reflex/components/radix/themes/components/callout.py +36 -5
  33. reflex/components/radix/themes/components/callout.pyi +273 -9
  34. reflex/components/radix/themes/components/card.py +3 -3
  35. reflex/components/radix/themes/components/card.pyi +2 -2
  36. reflex/components/radix/themes/components/checkbox.py +41 -4
  37. reflex/components/radix/themes/components/checkbox.pyi +231 -8
  38. reflex/components/radix/themes/components/dialog.py +1 -1
  39. reflex/components/radix/themes/components/dialog.pyi +1 -1
  40. reflex/components/radix/themes/components/dropdownmenu.py +6 -0
  41. reflex/components/radix/themes/components/dropdownmenu.pyi +193 -0
  42. reflex/components/radix/themes/components/iconbutton.py +1 -1
  43. reflex/components/radix/themes/components/iconbutton.pyi +1 -1
  44. reflex/components/radix/themes/components/icons.py +1 -0
  45. reflex/components/radix/themes/components/inset.py +1 -0
  46. reflex/components/radix/themes/components/inset.pyi +1 -0
  47. reflex/components/radix/themes/components/radiogroup.py +68 -1
  48. reflex/components/radix/themes/components/radiogroup.pyi +254 -2
  49. reflex/components/radix/themes/components/select.py +94 -5
  50. reflex/components/radix/themes/components/select.pyi +251 -5
  51. reflex/components/radix/themes/components/slider.py +9 -6
  52. reflex/components/radix/themes/components/slider.pyi +12 -6
  53. reflex/components/radix/themes/components/tooltip.py +1 -0
  54. reflex/components/radix/themes/components/tooltip.pyi +1 -0
  55. reflex/components/radix/themes/layout/box.py +1 -1
  56. reflex/state.py +9 -4
  57. reflex/style.py +15 -0
  58. reflex/utils/format.py +13 -9
  59. reflex/utils/path_ops.py +2 -2
  60. reflex/utils/prerequisites.py +57 -5
  61. reflex/utils/types.py +4 -1
  62. reflex/vars.py +36 -3
  63. {reflex-0.3.8a2.dist-info → reflex-0.3.9.dist-info}/METADATA +2 -2
  64. {reflex-0.3.8a2.dist-info → reflex-0.3.9.dist-info}/RECORD +67 -67
  65. {reflex-0.3.8a2.dist-info → reflex-0.3.9.dist-info}/WHEEL +1 -1
  66. {reflex-0.3.8a2.dist-info → reflex-0.3.9.dist-info}/LICENSE +0 -0
  67. {reflex-0.3.8a2.dist-info → reflex-0.3.9.dist-info}/entry_points.txt +0 -0
@@ -39,6 +39,6 @@ def index() -> rx.Component:
39
39
  )
40
40
 
41
41
 
42
- # Add state and page to the app.
42
+ # Create app instance and add index page.
43
43
  app = rx.App()
44
44
  app.add_page(index)
@@ -118,5 +118,5 @@ def chatapp() -> rx.Component:
118
118
  return chatapp_page()
119
119
 
120
120
 
121
- # Add state and page to the app.
121
+ # Create the app.
122
122
  app = rx.App(style=base_style)
@@ -85,7 +85,7 @@
85
85
  {% macro render_match_tag(component) %}
86
86
  {
87
87
  (() => {
88
- switch (JSON.stringify({{ component.cond._var_full_name }})) {
88
+ switch (JSON.stringify({{ component.cond._var_name_unwrapped }})) {
89
89
  {% for case in component.match_cases %}
90
90
  {% for condition in case[:-1] %}
91
91
  case JSON.stringify({{ condition._var_name_unwrapped }}):
reflex/__init__.py CHANGED
@@ -253,6 +253,7 @@ _MAPPING = {
253
253
  "reflex.compiler.utils": ["get_asset_path"],
254
254
  "reflex.components": _ALL_COMPONENTS + ["chakra", "next"],
255
255
  "reflex.components.component": ["memo"],
256
+ "reflex.components.radix": ["radix"],
256
257
  "reflex.components.recharts": ["recharts"],
257
258
  "reflex.components.moment.moment": ["MomentDelta"],
258
259
  "reflex.config": ["config", "Config", "DBConfig"],
reflex/__init__.pyi CHANGED
@@ -447,6 +447,7 @@ from reflex.components import NoSSRComponent as NoSSRComponent
447
447
  from reflex.components import chakra as chakra
448
448
  from reflex.components import next as next
449
449
  from reflex.components.component import memo as memo
450
+ from reflex.components import radix as radix
450
451
  from reflex.components import recharts as recharts
451
452
  from reflex.components.moment.moment import MomentDelta as MomentDelta
452
453
  from reflex import config as config
reflex/app.py CHANGED
@@ -43,7 +43,6 @@ from reflex.components.core.client_side_routing import (
43
43
  Default404Page,
44
44
  wait_for_client_redirect,
45
45
  )
46
- from reflex.components.radix import themes
47
46
  from reflex.config import get_config
48
47
  from reflex.event import Event, EventHandler, EventSpec
49
48
  from reflex.middleware import HydrateMiddleware, Middleware
@@ -129,11 +128,11 @@ class App(Base):
129
128
  Union[Component, ComponentCallable]
130
129
  ] = default_overlay_component
131
130
 
132
- # Background tasks that are currently running
131
+ # Background tasks that are currently running.
133
132
  background_tasks: Set[asyncio.Task] = set()
134
133
 
135
- # The radix theme for the entire app
136
- theme: Optional[Component] = themes.theme(accent_color="blue")
134
+ # The radix theme for the entire app.
135
+ theme: Optional[Component]
137
136
 
138
137
  def __init__(self, *args, **kwargs):
139
138
  """Initialize the app.
@@ -592,7 +591,7 @@ class App(Base):
592
591
  continue
593
592
  _frontend_packages.append(package)
594
593
  page_imports.update(_frontend_packages)
595
- prerequisites.install_frontend_packages(page_imports)
594
+ prerequisites.install_frontend_packages(page_imports, get_config())
596
595
 
597
596
  def _app_root(self, app_wrappers: dict[tuple[int, str], Component]) -> Component:
598
597
  for component in tuple(app_wrappers.values()):
@@ -623,6 +623,8 @@ class Component(BaseComponent, ABC):
623
623
  Returns:
624
624
  The dictionary of the component style as value and the style notation as key.
625
625
  """
626
+ if isinstance(self.style, Var):
627
+ return {"css": self.style}
626
628
  return {"css": Var.create(format_as_emotion(self.style))}
627
629
 
628
630
  def render(self) -> Dict:
@@ -721,7 +723,7 @@ class Component(BaseComponent, ABC):
721
723
  vars.append(prop_var)
722
724
 
723
725
  # Style keeps track of its own VarData instance, so embed in a temp Var that is yielded.
724
- if self.style:
726
+ if isinstance(self.style, dict) and self.style or isinstance(self.style, Var):
725
727
  vars.append(
726
728
  BaseVar(
727
729
  _var_name="style",
@@ -64,7 +64,8 @@ class Match(MemoizationLeaf):
64
64
  Raises:
65
65
  ValueError: If the condition is not provided.
66
66
  """
67
- match_cond_var = Var.create(cond)
67
+ match_cond_var = Var.create(cond, _var_is_string=type(cond) is str)
68
+
68
69
  if match_cond_var is None:
69
70
  raise ValueError("The condition must be set")
70
71
  return match_cond_var # type: ignore
@@ -216,13 +217,14 @@ class Match(MemoizationLeaf):
216
217
 
217
218
  return match_cond_var._replace(
218
219
  _var_name=format.format_match(
219
- cond=match_cond_var._var_full_name,
220
+ cond=match_cond_var._var_name_unwrapped,
220
221
  match_cases=match_cases, # type: ignore
221
222
  default=default, # type: ignore
222
223
  ),
223
224
  _var_type=default._var_type, # type: ignore
224
225
  _var_is_local=False,
225
226
  _var_full_name_needs_state_prefix=False,
227
+ _var_is_string=False,
226
228
  merge_var_data=VarData.merge(*var_data),
227
229
  )
228
230
 
@@ -247,11 +249,13 @@ class Match(MemoizationLeaf):
247
249
  for case in self.match_cases:
248
250
  if isinstance(case[-1], BaseComponent):
249
251
  merged_imports = imports.merge_imports(
250
- merged_imports, case[-1].get_imports()
252
+ merged_imports,
253
+ case[-1].get_imports(),
251
254
  )
252
255
  # Get the import of the default case component.
253
256
  if isinstance(self.default, BaseComponent):
254
257
  merged_imports = imports.merge_imports(
255
- merged_imports, self.default.get_imports()
258
+ merged_imports,
259
+ self.default.get_imports(),
256
260
  )
257
261
  return merged_imports
@@ -109,7 +109,11 @@ class DataEditor(NoSSRComponent):
109
109
  tag = "DataEditor"
110
110
  is_default = True
111
111
  library: str = "@glideapps/glide-data-grid@^5.3.0"
112
- lib_dependencies: List[str] = ["lodash", "marked", "react-responsive-carousel"]
112
+ lib_dependencies: List[str] = [
113
+ "lodash@^4.17.21",
114
+ "marked@^4.0.10",
115
+ "react-responsive-carousel@^3.2.7",
116
+ ]
113
117
 
114
118
  # Number of rows.
115
119
  rows: Var[int]
@@ -41,6 +41,7 @@ _REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
41
41
  # These tags do NOT get props passed to them
42
42
  NO_PROPS_TAGS = ("ul", "ol", "li")
43
43
 
44
+
44
45
  # Component Mapping
45
46
  @lru_cache
46
47
  def get_base_component_map() -> dict[str, Callable]:
@@ -1 +1,3 @@
1
1
  """Namespace for components provided by @radix-ui packages."""
2
+
3
+ from . import primitives, themes
@@ -1,6 +1,12 @@
1
1
  """Radix primitive components (https://www.radix-ui.com/primitives)."""
2
2
 
3
- from .accordion import accordion, accordion_item
3
+ from .accordion import (
4
+ AccordionContent,
5
+ AccordionHeader,
6
+ AccordionRoot,
7
+ AccordionTrigger,
8
+ accordion_item,
9
+ )
4
10
  from .form import (
5
11
  form_control,
6
12
  form_field,
@@ -12,3 +18,10 @@ from .form import (
12
18
  )
13
19
  from .progress import progress
14
20
  from .slider import slider
21
+
22
+ # accordion
23
+ accordion = AccordionRoot.create
24
+ accordion_root = AccordionRoot.create
25
+ accordion_header = AccordionHeader.create
26
+ accordion_trigger = AccordionTrigger.create
27
+ accordion_content = AccordionContent.create