reflex 0.7.14a6__py3-none-any.whl → 0.8.0a1__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.
- reflex/.templates/jinja/app/rxconfig.py.jinja2 +4 -1
- reflex/.templates/jinja/web/package.json.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/_app.js.jinja2 +16 -10
- reflex/.templates/jinja/web/pages/_document.js.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -1
- reflex/.templates/jinja/web/utils/context.js.jinja2 +25 -6
- reflex/.templates/web/app/entry.client.js +8 -0
- reflex/.templates/web/app/routes.js +10 -0
- reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +12 -32
- reflex/.templates/web/postcss.config.js +1 -1
- reflex/.templates/web/react-router.config.js +6 -0
- reflex/.templates/web/utils/client_side_routing.js +21 -19
- reflex/.templates/web/utils/react-theme.js +89 -0
- reflex/.templates/web/utils/state.js +155 -67
- reflex/.templates/web/vite.config.js +32 -0
- reflex/__init__.py +1 -6
- reflex/__init__.pyi +0 -4
- reflex/app.py +52 -115
- reflex/base.py +1 -87
- reflex/compiler/compiler.py +40 -3
- reflex/compiler/utils.py +54 -28
- reflex/components/__init__.py +0 -2
- reflex/components/__init__.pyi +0 -3
- reflex/components/base/__init__.py +1 -5
- reflex/components/base/__init__.pyi +4 -6
- reflex/components/base/app_wrap.pyi +5 -4
- reflex/components/base/body.pyi +5 -4
- reflex/components/base/document.py +18 -14
- reflex/components/base/document.pyi +83 -27
- reflex/components/base/error_boundary.pyi +5 -4
- reflex/components/base/fragment.pyi +5 -4
- reflex/components/base/link.pyi +9 -7
- reflex/components/base/meta.pyi +17 -13
- reflex/components/base/script.py +60 -58
- reflex/components/base/script.pyi +246 -31
- reflex/components/base/strict_mode.pyi +5 -4
- reflex/components/component.py +109 -194
- reflex/components/core/__init__.py +1 -0
- reflex/components/core/__init__.pyi +1 -0
- reflex/components/core/auto_scroll.pyi +5 -4
- reflex/components/core/banner.pyi +25 -19
- reflex/components/core/client_side_routing.py +7 -6
- reflex/components/core/client_side_routing.pyi +6 -56
- reflex/components/core/clipboard.pyi +5 -4
- reflex/components/core/debounce.py +1 -0
- reflex/components/core/debounce.pyi +5 -4
- reflex/components/core/foreach.py +3 -2
- reflex/components/core/helmet.py +14 -0
- reflex/components/{next/base.pyi → core/helmet.pyi} +10 -7
- reflex/components/core/html.pyi +5 -4
- reflex/components/core/sticky.pyi +17 -13
- reflex/components/core/upload.py +2 -1
- reflex/components/core/upload.pyi +21 -16
- reflex/components/datadisplay/code.pyi +9 -7
- reflex/components/datadisplay/dataeditor.pyi +5 -4
- reflex/components/datadisplay/shiki_code_block.pyi +13 -10
- reflex/components/dynamic.py +4 -5
- reflex/components/el/element.pyi +5 -4
- reflex/components/el/elements/base.pyi +5 -4
- reflex/components/el/elements/forms.pyi +69 -52
- reflex/components/el/elements/inline.pyi +113 -85
- reflex/components/el/elements/media.pyi +105 -79
- reflex/components/el/elements/metadata.pyi +25 -19
- reflex/components/el/elements/other.pyi +29 -22
- reflex/components/el/elements/scripts.pyi +13 -10
- reflex/components/el/elements/sectioning.pyi +61 -46
- reflex/components/el/elements/tables.pyi +41 -31
- reflex/components/el/elements/typography.pyi +61 -46
- reflex/components/field.py +175 -0
- reflex/components/gridjs/datatable.py +2 -2
- reflex/components/gridjs/datatable.pyi +11 -9
- reflex/components/lucide/icon.py +6 -2
- reflex/components/lucide/icon.pyi +15 -10
- reflex/components/markdown/markdown.pyi +5 -4
- reflex/components/moment/moment.pyi +5 -4
- reflex/components/plotly/plotly.pyi +19 -10
- reflex/components/props.py +376 -27
- reflex/components/radix/primitives/accordion.py +8 -1
- reflex/components/radix/primitives/accordion.pyi +29 -22
- reflex/components/radix/primitives/base.pyi +9 -7
- reflex/components/radix/primitives/drawer.pyi +45 -34
- reflex/components/radix/primitives/form.pyi +41 -31
- reflex/components/radix/primitives/progress.pyi +21 -16
- reflex/components/radix/primitives/slider.pyi +21 -16
- reflex/components/radix/themes/base.py +3 -3
- reflex/components/radix/themes/base.pyi +33 -25
- reflex/components/radix/themes/color_mode.pyi +13 -10
- reflex/components/radix/themes/components/alert_dialog.pyi +29 -22
- reflex/components/radix/themes/components/aspect_ratio.pyi +5 -4
- reflex/components/radix/themes/components/avatar.pyi +5 -4
- reflex/components/radix/themes/components/badge.pyi +5 -4
- reflex/components/radix/themes/components/button.pyi +5 -4
- reflex/components/radix/themes/components/callout.pyi +21 -16
- reflex/components/radix/themes/components/card.pyi +5 -4
- reflex/components/radix/themes/components/checkbox.pyi +13 -10
- reflex/components/radix/themes/components/checkbox_cards.pyi +9 -7
- reflex/components/radix/themes/components/checkbox_group.pyi +9 -7
- reflex/components/radix/themes/components/context_menu.pyi +53 -40
- reflex/components/radix/themes/components/data_list.pyi +17 -13
- reflex/components/radix/themes/components/dialog.pyi +29 -22
- reflex/components/radix/themes/components/dropdown_menu.pyi +33 -25
- reflex/components/radix/themes/components/hover_card.pyi +17 -13
- reflex/components/radix/themes/components/icon_button.pyi +5 -4
- reflex/components/radix/themes/components/inset.pyi +5 -4
- reflex/components/radix/themes/components/popover.pyi +17 -13
- reflex/components/radix/themes/components/progress.pyi +5 -4
- reflex/components/radix/themes/components/radio.pyi +5 -4
- reflex/components/radix/themes/components/radio_cards.pyi +9 -7
- reflex/components/radix/themes/components/radio_group.pyi +17 -13
- reflex/components/radix/themes/components/scroll_area.pyi +5 -4
- reflex/components/radix/themes/components/segmented_control.pyi +9 -7
- reflex/components/radix/themes/components/select.pyi +37 -28
- reflex/components/radix/themes/components/separator.pyi +5 -4
- reflex/components/radix/themes/components/skeleton.pyi +5 -4
- reflex/components/radix/themes/components/slider.pyi +5 -4
- reflex/components/radix/themes/components/spinner.pyi +5 -4
- reflex/components/radix/themes/components/switch.pyi +5 -4
- reflex/components/radix/themes/components/table.pyi +29 -22
- reflex/components/radix/themes/components/tabs.pyi +21 -16
- reflex/components/radix/themes/components/text_area.pyi +5 -4
- reflex/components/radix/themes/components/text_field.pyi +13 -10
- reflex/components/radix/themes/components/tooltip.pyi +5 -4
- reflex/components/radix/themes/layout/base.pyi +5 -4
- reflex/components/radix/themes/layout/box.pyi +5 -4
- reflex/components/radix/themes/layout/center.pyi +5 -4
- reflex/components/radix/themes/layout/container.pyi +5 -4
- reflex/components/radix/themes/layout/flex.pyi +5 -4
- reflex/components/radix/themes/layout/grid.pyi +5 -4
- reflex/components/radix/themes/layout/list.pyi +21 -16
- reflex/components/radix/themes/layout/section.pyi +5 -4
- reflex/components/radix/themes/layout/spacer.pyi +5 -4
- reflex/components/radix/themes/layout/stack.pyi +13 -10
- reflex/components/radix/themes/typography/blockquote.pyi +5 -4
- reflex/components/radix/themes/typography/code.pyi +5 -4
- reflex/components/radix/themes/typography/heading.pyi +5 -4
- reflex/components/radix/themes/typography/link.py +42 -9
- reflex/components/radix/themes/typography/link.pyi +311 -6
- reflex/components/radix/themes/typography/text.pyi +29 -22
- reflex/components/react_player/audio.pyi +5 -4
- reflex/components/react_player/react_player.pyi +5 -4
- reflex/components/react_player/video.pyi +5 -4
- reflex/components/recharts/cartesian.py +2 -1
- reflex/components/recharts/cartesian.pyi +65 -46
- reflex/components/recharts/charts.py +4 -2
- reflex/components/recharts/charts.pyi +36 -24
- reflex/components/recharts/general.pyi +24 -18
- reflex/components/recharts/polar.py +8 -4
- reflex/components/recharts/polar.pyi +16 -10
- reflex/components/recharts/recharts.pyi +9 -7
- reflex/components/sonner/toast.py +2 -2
- reflex/components/sonner/toast.pyi +7 -6
- reflex/config.py +3 -77
- reflex/constants/__init__.py +1 -0
- reflex/constants/base.py +38 -8
- reflex/constants/compiler.py +4 -2
- reflex/constants/event.py +1 -0
- reflex/constants/installer.py +23 -16
- reflex/constants/state.py +2 -0
- reflex/custom_components/custom_components.py +0 -14
- reflex/environment.py +1 -1
- reflex/event.py +178 -81
- reflex/experimental/__init__.py +0 -30
- reflex/istate/proxy.py +5 -3
- reflex/page.py +0 -27
- reflex/plugins/__init__.py +3 -2
- reflex/plugins/base.py +5 -1
- reflex/plugins/shared_tailwind.py +158 -0
- reflex/plugins/sitemap.py +206 -0
- reflex/plugins/tailwind_v3.py +13 -106
- reflex/plugins/tailwind_v4.py +15 -108
- reflex/reflex.py +1 -0
- reflex/state.py +134 -140
- reflex/testing.py +57 -9
- reflex/utils/build.py +9 -69
- reflex/utils/exec.py +59 -161
- reflex/utils/export.py +1 -1
- reflex/utils/imports.py +0 -4
- reflex/utils/misc.py +28 -0
- reflex/utils/prerequisites.py +62 -59
- reflex/utils/processes.py +6 -6
- reflex/utils/pyi_generator.py +21 -9
- reflex/utils/serializers.py +14 -1
- reflex/utils/types.py +196 -61
- reflex/vars/__init__.py +2 -0
- reflex/vars/base.py +367 -134
- {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/METADATA +12 -5
- {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/RECORD +190 -197
- reflex/.templates/web/next.config.js +0 -7
- reflex/components/base/head.py +0 -20
- reflex/components/base/head.pyi +0 -116
- reflex/components/next/__init__.py +0 -10
- reflex/components/next/base.py +0 -7
- reflex/components/next/image.py +0 -117
- reflex/components/next/image.pyi +0 -94
- reflex/components/next/link.py +0 -20
- reflex/components/next/link.pyi +0 -67
- reflex/components/next/video.py +0 -38
- reflex/components/next/video.pyi +0 -68
- reflex/components/suneditor/__init__.py +0 -5
- reflex/components/suneditor/editor.py +0 -269
- reflex/components/suneditor/editor.pyi +0 -199
- reflex/experimental/layout.py +0 -254
- reflex/experimental/layout.pyi +0 -814
- {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/WHEEL +0 -0
- {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/entry_points.txt +0 -0
- {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/licenses/LICENSE +0 -0
reflex/experimental/layout.py
DELETED
|
@@ -1,254 +0,0 @@
|
|
|
1
|
-
"""To experiment with layout component, move them to reflex/components later."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
|
-
from reflex import color, cond
|
|
8
|
-
from reflex.components.base.fragment import Fragment
|
|
9
|
-
from reflex.components.component import Component, ComponentNamespace, MemoizationLeaf
|
|
10
|
-
from reflex.components.radix.primitives.drawer import DrawerRoot, drawer
|
|
11
|
-
from reflex.components.radix.themes.components.icon_button import IconButton
|
|
12
|
-
from reflex.components.radix.themes.layout.box import Box
|
|
13
|
-
from reflex.components.radix.themes.layout.container import Container
|
|
14
|
-
from reflex.components.radix.themes.layout.stack import HStack
|
|
15
|
-
from reflex.constants.compiler import MemoizationMode
|
|
16
|
-
from reflex.event import run_script
|
|
17
|
-
from reflex.experimental import hooks
|
|
18
|
-
from reflex.state import ComponentState
|
|
19
|
-
from reflex.style import Style
|
|
20
|
-
from reflex.vars.base import Var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class Sidebar(Box, MemoizationLeaf):
|
|
24
|
-
"""A component that renders the sidebar."""
|
|
25
|
-
|
|
26
|
-
@classmethod
|
|
27
|
-
def create(cls, *children, **props):
|
|
28
|
-
"""Create the sidebar component.
|
|
29
|
-
|
|
30
|
-
Args:
|
|
31
|
-
children: The children components.
|
|
32
|
-
props: The properties of the sidebar.
|
|
33
|
-
|
|
34
|
-
Returns:
|
|
35
|
-
The sidebar component.
|
|
36
|
-
"""
|
|
37
|
-
return super().create(
|
|
38
|
-
Box.create(*children, **props), # sidebar for content
|
|
39
|
-
Box.create(width=props.get("width")), # spacer for layout
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
def add_style(self) -> dict[str, Any] | None:
|
|
43
|
-
"""Add style to the component.
|
|
44
|
-
|
|
45
|
-
Returns:
|
|
46
|
-
The style of the component.
|
|
47
|
-
"""
|
|
48
|
-
sidebar: Component = self.children[-2] # pyright: ignore [reportAssignmentType]
|
|
49
|
-
spacer: Component = self.children[-1] # pyright: ignore [reportAssignmentType]
|
|
50
|
-
open = (
|
|
51
|
-
self.State.open # pyright: ignore [reportAttributeAccessIssue]
|
|
52
|
-
if self.State
|
|
53
|
-
else Var(_js_expr="open")
|
|
54
|
-
)
|
|
55
|
-
sidebar.style["display"] = spacer.style["display"] = cond(open, "block", "none")
|
|
56
|
-
|
|
57
|
-
return Style(
|
|
58
|
-
{
|
|
59
|
-
"position": "fixed",
|
|
60
|
-
"border_right": f"1px solid {color('accent', 12)}",
|
|
61
|
-
"background_color": color("accent", 1),
|
|
62
|
-
"width": "20vw",
|
|
63
|
-
"height": "100vh",
|
|
64
|
-
}
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
def add_hooks(self) -> list[Var]:
|
|
68
|
-
"""Get the hooks to render.
|
|
69
|
-
|
|
70
|
-
Returns:
|
|
71
|
-
The hooks for the sidebar.
|
|
72
|
-
"""
|
|
73
|
-
return [hooks.useState("open", "true")] if not self.State else []
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
class StatefulSidebar(ComponentState):
|
|
77
|
-
"""Bind a state to a sidebar component."""
|
|
78
|
-
|
|
79
|
-
open: bool = True
|
|
80
|
-
|
|
81
|
-
def toggle(self):
|
|
82
|
-
"""Toggle the sidebar."""
|
|
83
|
-
self.open = not self.open
|
|
84
|
-
|
|
85
|
-
@classmethod
|
|
86
|
-
def get_component(cls, *children, **props):
|
|
87
|
-
"""Get the stateful sidebar component.
|
|
88
|
-
|
|
89
|
-
Args:
|
|
90
|
-
children: The children components.
|
|
91
|
-
props: The properties of the sidebar.
|
|
92
|
-
|
|
93
|
-
Returns:
|
|
94
|
-
The stateful sidebar component.
|
|
95
|
-
"""
|
|
96
|
-
return Sidebar.create(*children, **props)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
class DrawerSidebar(DrawerRoot):
|
|
100
|
-
"""A component that renders a drawer sidebar."""
|
|
101
|
-
|
|
102
|
-
@classmethod
|
|
103
|
-
def create(cls, *children, **props):
|
|
104
|
-
"""Create the sidebar component.
|
|
105
|
-
|
|
106
|
-
Args:
|
|
107
|
-
children: The children components.
|
|
108
|
-
props: The properties of the sidebar.
|
|
109
|
-
|
|
110
|
-
Returns:
|
|
111
|
-
The drawer sidebar component.
|
|
112
|
-
"""
|
|
113
|
-
direction = props.pop("direction", "left")
|
|
114
|
-
props.setdefault("border_right", f"1px solid {color('accent', 12)}")
|
|
115
|
-
props.setdefault("background_color", color("accent", 1))
|
|
116
|
-
props.setdefault("width", "20vw")
|
|
117
|
-
props.setdefault("height", "100vh")
|
|
118
|
-
return super().create(
|
|
119
|
-
drawer.trigger(
|
|
120
|
-
IconButton.create(
|
|
121
|
-
"arrow-right-from-line",
|
|
122
|
-
background_color="transparent",
|
|
123
|
-
),
|
|
124
|
-
position="absolute",
|
|
125
|
-
top="15",
|
|
126
|
-
left="15",
|
|
127
|
-
),
|
|
128
|
-
drawer.portal(
|
|
129
|
-
drawer.content(
|
|
130
|
-
*children,
|
|
131
|
-
**props,
|
|
132
|
-
)
|
|
133
|
-
),
|
|
134
|
-
direction=direction,
|
|
135
|
-
)
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
sidebar_trigger_style = {
|
|
139
|
-
"position": "fixed",
|
|
140
|
-
"z_index": "15",
|
|
141
|
-
"color": color("accent", 12),
|
|
142
|
-
"background_color": "transparent",
|
|
143
|
-
"padding": "0",
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
class SidebarTrigger(Fragment):
|
|
148
|
-
"""A component that renders the sidebar trigger."""
|
|
149
|
-
|
|
150
|
-
_memoization_mode = MemoizationMode(recursive=False)
|
|
151
|
-
|
|
152
|
-
@classmethod
|
|
153
|
-
def create(cls, sidebar: Component, **props):
|
|
154
|
-
"""Create the sidebar trigger component.
|
|
155
|
-
|
|
156
|
-
Args:
|
|
157
|
-
sidebar: The sidebar component.
|
|
158
|
-
props: The properties of the sidebar trigger.
|
|
159
|
-
|
|
160
|
-
Returns:
|
|
161
|
-
The sidebar trigger component.
|
|
162
|
-
"""
|
|
163
|
-
trigger_props = {**props, **sidebar_trigger_style}
|
|
164
|
-
|
|
165
|
-
inner_sidebar: Component = sidebar.children[0] # pyright: ignore [reportAssignmentType]
|
|
166
|
-
sidebar_width = inner_sidebar.style.get("width")
|
|
167
|
-
|
|
168
|
-
if sidebar.State:
|
|
169
|
-
open, toggle = sidebar.State.open, sidebar.State.toggle # pyright: ignore [reportAttributeAccessIssue]
|
|
170
|
-
else:
|
|
171
|
-
open, toggle = (
|
|
172
|
-
Var(_js_expr="open"),
|
|
173
|
-
run_script("setOpen(!open)"),
|
|
174
|
-
)
|
|
175
|
-
|
|
176
|
-
trigger_props["left"] = cond(open, f"calc({sidebar_width} - 32px)", "0")
|
|
177
|
-
|
|
178
|
-
trigger = cond(
|
|
179
|
-
open,
|
|
180
|
-
IconButton.create(
|
|
181
|
-
"arrow-left-from-line",
|
|
182
|
-
on_click=toggle,
|
|
183
|
-
**trigger_props,
|
|
184
|
-
),
|
|
185
|
-
IconButton.create(
|
|
186
|
-
"arrow-right-from-line",
|
|
187
|
-
on_click=toggle,
|
|
188
|
-
**trigger_props,
|
|
189
|
-
),
|
|
190
|
-
)
|
|
191
|
-
return super().create(trigger)
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
class Layout(Box):
|
|
195
|
-
"""A component that renders the layout."""
|
|
196
|
-
|
|
197
|
-
@classmethod
|
|
198
|
-
def create(
|
|
199
|
-
cls,
|
|
200
|
-
*content: Component,
|
|
201
|
-
sidebar: Component | None = None,
|
|
202
|
-
**props,
|
|
203
|
-
):
|
|
204
|
-
"""Create the layout component.
|
|
205
|
-
|
|
206
|
-
Args:
|
|
207
|
-
content: The content component.
|
|
208
|
-
sidebar: The sidebar component.
|
|
209
|
-
props: The properties of the layout.
|
|
210
|
-
|
|
211
|
-
Returns:
|
|
212
|
-
The layout component.
|
|
213
|
-
"""
|
|
214
|
-
layout_root = HStack.create
|
|
215
|
-
|
|
216
|
-
if sidebar is None:
|
|
217
|
-
return Container.create(*content, **props)
|
|
218
|
-
|
|
219
|
-
if isinstance(sidebar, DrawerSidebar):
|
|
220
|
-
return super().create(
|
|
221
|
-
sidebar,
|
|
222
|
-
Container.create(*content, height="100%"),
|
|
223
|
-
**props,
|
|
224
|
-
width="100vw",
|
|
225
|
-
min_height="100vh",
|
|
226
|
-
)
|
|
227
|
-
|
|
228
|
-
if not isinstance(sidebar, Sidebar):
|
|
229
|
-
sidebar = Sidebar.create(sidebar)
|
|
230
|
-
|
|
231
|
-
# Add the sidebar trigger to the sidebar as first child to not mess up the rendering.
|
|
232
|
-
sidebar.children.insert(0, SidebarTrigger.create(sidebar))
|
|
233
|
-
|
|
234
|
-
return super().create(
|
|
235
|
-
layout_root(
|
|
236
|
-
sidebar,
|
|
237
|
-
Container.create(*content, height="100%"),
|
|
238
|
-
**props,
|
|
239
|
-
width="100vw",
|
|
240
|
-
min_height="100vh",
|
|
241
|
-
)
|
|
242
|
-
)
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
class LayoutNamespace(ComponentNamespace):
|
|
246
|
-
"""Namespace for layout components."""
|
|
247
|
-
|
|
248
|
-
drawer_sidebar = staticmethod(DrawerSidebar.create)
|
|
249
|
-
stateful_sidebar = staticmethod(StatefulSidebar.create)
|
|
250
|
-
sidebar = staticmethod(Sidebar.create)
|
|
251
|
-
__call__ = staticmethod(Layout.create)
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
layout = LayoutNamespace()
|