Skip to content

Commit d3bf1c1

Browse files
authored
reflex 0.8.0 compat (#41)
1 parent ff5c00c commit d3bf1c1

9 files changed

Lines changed: 313 additions & 237 deletions

File tree

docs/rcweb/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
.web
55
__pycache__/
66
assets/external/
7-
assets/chakra_color_mode_provider.js
7+
assets/chakra_color_mode_provider.js
8+
*.zip

docs/rcweb/backend.zip

-59.8 KB
Binary file not shown.

docs/rcweb/frontend.zip

-3.65 MB
Binary file not shown.

docs/rcweb/rxconfig.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22

33
config = rx.Config(
44
app_name="rcweb",
5+
plugins=[rx.plugins.TailwindV3Plugin()],
56
)

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "reflex-chakra"
3-
version = "0.7.1"
3+
version = "0.8.0"
44
description = "reflex using chakra components"
55
authors = [{ name = "Elijah Ahianyo", email = "elijahahianyo@gmail.com" }]
66
maintainers = [
@@ -11,7 +11,7 @@ maintainers = [
1111
readme = "README.md"
1212
requires-python = ">=3.10"
1313
license.text = "Apache-2.0"
14-
dependencies = ["reflex >=0.7.11"]
14+
dependencies = ["reflex >=0.8.0a"]
1515

1616

1717
[build-system]
Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
1+
import { useTheme } from "$/utils/react-theme";
12
import { useColorMode as chakraUseColorMode } from "@chakra-ui/react";
2-
import { useTheme } from "next-themes";
3-
import { useEffect, useState } from "react";
4-
import { ColorModeContext, defaultColorMode } from "$/utils/context.js";
3+
import { createElement, useEffect } from "react";
4+
import { ColorModeContext, defaultColorMode } from "$/utils/context";
55

66
export default function ChakraColorModeProvider({ children }) {
77
const { theme, resolvedTheme, setTheme } = useTheme();
8-
const { colorMode, toggleColorMode } = chakraUseColorMode();
9-
const [resolvedColorMode, setResolvedColorMode] = useState(colorMode);
8+
const { colorMode: chakraColorMode, toggleColorMode: toggleChakraColorMode } =
9+
chakraUseColorMode();
1010

1111
useEffect(() => {
12-
if (colorMode != resolvedTheme) {
13-
toggleColorMode();
12+
if (chakraColorMode != resolvedTheme) {
13+
toggleChakraColorMode();
1414
}
15-
setResolvedColorMode(resolvedTheme);
1615
}, [theme, resolvedTheme]);
1716

18-
const rawColorMode = colorMode;
17+
const toggleColorMode = () => {
18+
setTheme(resolvedTheme === "light" ? "dark" : "light");
19+
};
20+
1921
const setColorMode = (mode) => {
2022
const allowedModes = ["light", "dark", "system"];
2123
if (!allowedModes.includes(mode)) {
@@ -26,11 +28,17 @@ export default function ChakraColorModeProvider({ children }) {
2628
}
2729
setTheme(mode);
2830
};
29-
return (
30-
<ColorModeContext.Provider
31-
value={{ rawColorMode, resolvedColorMode, toggleColorMode, setColorMode }}
32-
>
33-
{children}
34-
</ColorModeContext.Provider>
31+
32+
return createElement(
33+
ColorModeContext.Provider,
34+
{
35+
value: {
36+
rawColorMode: theme,
37+
resolvedColorMode: resolvedTheme,
38+
toggleColorMode,
39+
setColorMode,
40+
},
41+
},
42+
children
3543
);
3644
}

reflex_chakra/components/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def add_imports(self) -> ImportDict:
115115
"""
116116
return {
117117
self.library: ImportVar(tag="extendTheme", is_default=False),
118-
"$/utils/theme.js": ImportVar(tag="theme", is_default=True),
118+
"$/utils/theme": ImportVar(tag="theme", is_default=True),
119119
}
120120

121121
@staticmethod
@@ -132,7 +132,7 @@ def _get_app_wrap_components() -> dict[tuple[int, str], Component]:
132132
class ChakraColorModeProvider(Component):
133133
"""Next-themes integration for chakra colorModeProvider."""
134134

135-
library = "$/public/chakra_color_mode_provider.js"
135+
library = "$/public/chakra_color_mode_provider"
136136
tag = "ChakraColorModeProvider"
137137
is_default = True
138138

reflex_chakra/components/navigation/link.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
"""A link component."""
22

3+
from reflex import ImportVar
34
from reflex_chakra.components import ChakraComponent
45
from reflex.components.component import Component
5-
from reflex.components.next.link import NextLink
66
from reflex.utils.imports import ImportDict
77
from reflex.vars import Var
88

9-
next_link = NextLink.create()
10-
119

1210
class Link(ChakraComponent):
1311
"""Link to another page."""
@@ -24,7 +22,7 @@ class Link(ChakraComponent):
2422
text: Var[str]
2523

2624
# What the link renders to.
27-
as_: Var[Component] = Var("NextLink", _var_type=Component)
25+
as_: Var[Component] = Var("ReactRouterLink", _var_type=Component)
2826

2927
# If true, the link will open in new tab.
3028
is_external: Var[bool]
@@ -35,10 +33,12 @@ def add_imports(self) -> ImportDict:
3533
Returns:
3634
The import dict.
3735
"""
38-
return next_link._get_imports() # type: ignore
36+
return {
37+
"react-router": ImportVar("Link", alias="ReactRouterLink"),
38+
}
3939

4040
@classmethod
41-
def create(cls, *children, **props) -> Component:
41+
def create(cls, *children, **props):
4242
"""Create a Link component.
4343
4444
Args:

uv.lock

Lines changed: 277 additions & 211 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)