@tamagui/next-theme 1.59.4 → 1.60.0
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.
- package/dist/cjs/NextThemeProvider.js +14 -15
- package/dist/cjs/NextThemeProvider.js.map +2 -2
- package/dist/esm/NextThemeProvider.js +15 -16
- package/dist/esm/NextThemeProvider.js.map +2 -2
- package/package.json +3 -3
- package/src/NextThemeProvider.tsx +14 -18
- package/types/NextThemeProvider.d.ts.map +1 -1
|
@@ -43,7 +43,7 @@ var import_useIsomorphicLayoutEffect = require("./useIsomorphicLayoutEffect");
|
|
|
43
43
|
const NextThemeProvider = (0, import_react.memo)(
|
|
44
44
|
({
|
|
45
45
|
forcedTheme,
|
|
46
|
-
disableTransitionOnChange =
|
|
46
|
+
disableTransitionOnChange = false,
|
|
47
47
|
enableSystem = true,
|
|
48
48
|
enableColorScheme = true,
|
|
49
49
|
storageKey = "theme",
|
|
@@ -62,16 +62,17 @@ const NextThemeProvider = (0, import_react.memo)(
|
|
|
62
62
|
const [resolvedTheme, setResolvedTheme] = (0, import_react.useState)(() => (0, import_helpers.getTheme)(storageKey));
|
|
63
63
|
const attrs = !value ? themes : Object.values(value);
|
|
64
64
|
const handleMediaQuery = (0, import_use_event.useEvent)((e) => {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
const _ = (0, import_helpers.getSystemTheme)(e);
|
|
66
|
+
const update = () => setResolvedTheme(_);
|
|
67
|
+
if (disableTransitionOnChange) {
|
|
68
|
+
update();
|
|
69
|
+
} else {
|
|
70
|
+
React.startTransition(() => update());
|
|
71
|
+
}
|
|
69
72
|
if (theme === "system" && !forcedTheme) {
|
|
70
|
-
handleChangeTheme(
|
|
73
|
+
handleChangeTheme(_, false);
|
|
71
74
|
}
|
|
72
75
|
});
|
|
73
|
-
const mediaListener = (0, import_react.useRef)(handleMediaQuery);
|
|
74
|
-
mediaListener.current = handleMediaQuery;
|
|
75
76
|
const handleChangeTheme = (0, import_use_event.useEvent)(
|
|
76
77
|
(theme2, updateStorage = true, updateDOM = true) => {
|
|
77
78
|
let name = (value == null ? void 0 : value[theme2]) || theme2;
|
|
@@ -98,12 +99,11 @@ const NextThemeProvider = (0, import_react.memo)(
|
|
|
98
99
|
}
|
|
99
100
|
);
|
|
100
101
|
(0, import_useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => {
|
|
101
|
-
const handler = (...args) => mediaListener.current(...args);
|
|
102
102
|
const media = window.matchMedia(import_constants.MEDIA);
|
|
103
|
-
media.addListener(
|
|
104
|
-
|
|
103
|
+
media.addListener(handleMediaQuery);
|
|
104
|
+
handleMediaQuery(media);
|
|
105
105
|
return () => {
|
|
106
|
-
media.removeListener(
|
|
106
|
+
media.removeListener(handleMediaQuery);
|
|
107
107
|
};
|
|
108
108
|
}, []);
|
|
109
109
|
const set = (0, import_use_event.useEvent)((newTheme) => {
|
|
@@ -151,7 +151,6 @@ const NextThemeProvider = (0, import_react.memo)(
|
|
|
151
151
|
const next = order[(order.indexOf(theme) + 1) % order.length];
|
|
152
152
|
set(next);
|
|
153
153
|
});
|
|
154
|
-
const contextResolvedTheme = theme === "system" ? resolvedTheme : theme;
|
|
155
154
|
const systemTheme = enableSystem ? resolvedTheme : void 0;
|
|
156
155
|
const contextValue = (0, import_react.useMemo)(() => {
|
|
157
156
|
const value2 = {
|
|
@@ -160,7 +159,7 @@ const NextThemeProvider = (0, import_react.memo)(
|
|
|
160
159
|
set,
|
|
161
160
|
toggle,
|
|
162
161
|
forcedTheme,
|
|
163
|
-
resolvedTheme:
|
|
162
|
+
resolvedTheme: theme === "system" ? resolvedTheme : theme,
|
|
164
163
|
themes: enableSystem ? [...themes, "system"] : themes,
|
|
165
164
|
systemTheme
|
|
166
165
|
};
|
|
@@ -170,7 +169,7 @@ const NextThemeProvider = (0, import_react.memo)(
|
|
|
170
169
|
set,
|
|
171
170
|
toggle,
|
|
172
171
|
forcedTheme,
|
|
173
|
-
|
|
172
|
+
resolvedTheme,
|
|
174
173
|
enableSystem,
|
|
175
174
|
themes,
|
|
176
175
|
systemTheme
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/NextThemeProvider.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
5
|
-
"names": ["
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["theme", "value", "NextHead"]
|
|
6
6
|
}
|
|
@@ -2,7 +2,7 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useEvent } from "@tamagui/use-event";
|
|
3
3
|
import NextHead from "next/head";
|
|
4
4
|
import * as React from "react";
|
|
5
|
-
import { memo, useEffect, useMemo,
|
|
5
|
+
import { memo, useEffect, useMemo, useState } from "react";
|
|
6
6
|
import { MEDIA, colorSchemes } from "./constants";
|
|
7
7
|
import { getSystemTheme, getTheme } from "./helpers";
|
|
8
8
|
import { ThemeSettingContext } from "./ThemeSettingContext";
|
|
@@ -10,7 +10,7 @@ import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
|
|
|
10
10
|
const NextThemeProvider = memo(
|
|
11
11
|
({
|
|
12
12
|
forcedTheme,
|
|
13
|
-
disableTransitionOnChange =
|
|
13
|
+
disableTransitionOnChange = false,
|
|
14
14
|
enableSystem = true,
|
|
15
15
|
enableColorScheme = true,
|
|
16
16
|
storageKey = "theme",
|
|
@@ -29,16 +29,17 @@ const NextThemeProvider = memo(
|
|
|
29
29
|
const [resolvedTheme, setResolvedTheme] = useState(() => getTheme(storageKey));
|
|
30
30
|
const attrs = !value ? themes : Object.values(value);
|
|
31
31
|
const handleMediaQuery = useEvent((e) => {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
const _ = getSystemTheme(e);
|
|
33
|
+
const update = () => setResolvedTheme(_);
|
|
34
|
+
if (disableTransitionOnChange) {
|
|
35
|
+
update();
|
|
36
|
+
} else {
|
|
37
|
+
React.startTransition(() => update());
|
|
38
|
+
}
|
|
36
39
|
if (theme === "system" && !forcedTheme) {
|
|
37
|
-
handleChangeTheme(
|
|
40
|
+
handleChangeTheme(_, false);
|
|
38
41
|
}
|
|
39
42
|
});
|
|
40
|
-
const mediaListener = useRef(handleMediaQuery);
|
|
41
|
-
mediaListener.current = handleMediaQuery;
|
|
42
43
|
const handleChangeTheme = useEvent(
|
|
43
44
|
(theme2, updateStorage = true, updateDOM = true) => {
|
|
44
45
|
let name = (value == null ? void 0 : value[theme2]) || theme2;
|
|
@@ -65,12 +66,11 @@ const NextThemeProvider = memo(
|
|
|
65
66
|
}
|
|
66
67
|
);
|
|
67
68
|
useIsomorphicLayoutEffect(() => {
|
|
68
|
-
const handler = (...args) => mediaListener.current(...args);
|
|
69
69
|
const media = window.matchMedia(MEDIA);
|
|
70
|
-
media.addListener(
|
|
71
|
-
|
|
70
|
+
media.addListener(handleMediaQuery);
|
|
71
|
+
handleMediaQuery(media);
|
|
72
72
|
return () => {
|
|
73
|
-
media.removeListener(
|
|
73
|
+
media.removeListener(handleMediaQuery);
|
|
74
74
|
};
|
|
75
75
|
}, []);
|
|
76
76
|
const set = useEvent((newTheme) => {
|
|
@@ -118,7 +118,6 @@ const NextThemeProvider = memo(
|
|
|
118
118
|
const next = order[(order.indexOf(theme) + 1) % order.length];
|
|
119
119
|
set(next);
|
|
120
120
|
});
|
|
121
|
-
const contextResolvedTheme = theme === "system" ? resolvedTheme : theme;
|
|
122
121
|
const systemTheme = enableSystem ? resolvedTheme : void 0;
|
|
123
122
|
const contextValue = useMemo(() => {
|
|
124
123
|
const value2 = {
|
|
@@ -127,7 +126,7 @@ const NextThemeProvider = memo(
|
|
|
127
126
|
set,
|
|
128
127
|
toggle,
|
|
129
128
|
forcedTheme,
|
|
130
|
-
resolvedTheme:
|
|
129
|
+
resolvedTheme: theme === "system" ? resolvedTheme : theme,
|
|
131
130
|
themes: enableSystem ? [...themes, "system"] : themes,
|
|
132
131
|
systemTheme
|
|
133
132
|
};
|
|
@@ -137,7 +136,7 @@ const NextThemeProvider = memo(
|
|
|
137
136
|
set,
|
|
138
137
|
toggle,
|
|
139
138
|
forcedTheme,
|
|
140
|
-
|
|
139
|
+
resolvedTheme,
|
|
141
140
|
enableSystem,
|
|
142
141
|
themes,
|
|
143
142
|
systemTheme
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/NextThemeProvider.tsx"],
|
|
4
|
-
"mappings": "
|
|
5
|
-
"names": ["
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["theme", "value"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/next-theme",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.60.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"types": "./types/index.d.ts",
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
"watch": "tamagui-build --watch"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@tamagui/use-event": "1.
|
|
19
|
+
"@tamagui/use-event": "1.60.0"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"react": "*"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@tamagui/build": "1.
|
|
25
|
+
"@tamagui/build": "1.60.0",
|
|
26
26
|
"react": "^18.2.0"
|
|
27
27
|
},
|
|
28
28
|
"publishConfig": {
|
|
@@ -13,7 +13,7 @@ import { ThemeProviderProps, UseThemeProps } from './UseThemeProps'
|
|
|
13
13
|
export const NextThemeProvider = memo(
|
|
14
14
|
({
|
|
15
15
|
forcedTheme,
|
|
16
|
-
disableTransitionOnChange =
|
|
16
|
+
disableTransitionOnChange = false,
|
|
17
17
|
enableSystem = true,
|
|
18
18
|
enableColorScheme = true,
|
|
19
19
|
storageKey = 'theme',
|
|
@@ -30,23 +30,21 @@ export const NextThemeProvider = memo(
|
|
|
30
30
|
}: ThemeProviderProps) => {
|
|
31
31
|
const [theme, setThemeState] = useState(() => getTheme(storageKey, defaultTheme))
|
|
32
32
|
const [resolvedTheme, setResolvedTheme] = useState(() => getTheme(storageKey))
|
|
33
|
-
// const resolvedTheme = React.useDeferredValue(resolvedThemeFast)
|
|
34
33
|
const attrs = !value ? themes : Object.values(value)
|
|
35
34
|
|
|
36
35
|
const handleMediaQuery = useEvent((e?) => {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
const _ = getSystemTheme(e)
|
|
37
|
+
const update = () => setResolvedTheme(_)
|
|
38
|
+
if (disableTransitionOnChange) {
|
|
39
|
+
update()
|
|
40
|
+
} else {
|
|
41
|
+
React.startTransition(() => update())
|
|
42
|
+
}
|
|
41
43
|
if (theme === 'system' && !forcedTheme) {
|
|
42
|
-
handleChangeTheme(
|
|
44
|
+
handleChangeTheme(_, false)
|
|
43
45
|
}
|
|
44
46
|
})
|
|
45
47
|
|
|
46
|
-
// Ref hack to avoid adding handleMediaQuery as a dep
|
|
47
|
-
const mediaListener = useRef(handleMediaQuery)
|
|
48
|
-
mediaListener.current = handleMediaQuery
|
|
49
|
-
|
|
50
48
|
const handleChangeTheme = useEvent(
|
|
51
49
|
(theme, updateStorage = true, updateDOM = true) => {
|
|
52
50
|
let name = value?.[theme] || theme
|
|
@@ -79,14 +77,13 @@ export const NextThemeProvider = memo(
|
|
|
79
77
|
)
|
|
80
78
|
|
|
81
79
|
useIsomorphicLayoutEffect(() => {
|
|
82
|
-
const handler = (...args: any) => mediaListener.current(...args)
|
|
83
80
|
// Always listen to System preference
|
|
84
81
|
const media = window.matchMedia(MEDIA)
|
|
85
82
|
// Intentionally use deprecated listener methods to support iOS & old browsers
|
|
86
|
-
media.addListener(
|
|
87
|
-
|
|
83
|
+
media.addListener(handleMediaQuery)
|
|
84
|
+
handleMediaQuery(media)
|
|
88
85
|
return () => {
|
|
89
|
-
media.removeListener(
|
|
86
|
+
media.removeListener(handleMediaQuery)
|
|
90
87
|
}
|
|
91
88
|
}, [])
|
|
92
89
|
|
|
@@ -157,7 +154,6 @@ export const NextThemeProvider = memo(
|
|
|
157
154
|
set(next)
|
|
158
155
|
})
|
|
159
156
|
|
|
160
|
-
const contextResolvedTheme = theme === 'system' ? resolvedTheme : theme
|
|
161
157
|
const systemTheme = (enableSystem ? resolvedTheme : undefined) as
|
|
162
158
|
| 'light'
|
|
163
159
|
| 'dark'
|
|
@@ -170,7 +166,7 @@ export const NextThemeProvider = memo(
|
|
|
170
166
|
set,
|
|
171
167
|
toggle,
|
|
172
168
|
forcedTheme,
|
|
173
|
-
resolvedTheme:
|
|
169
|
+
resolvedTheme: theme === 'system' ? resolvedTheme : theme,
|
|
174
170
|
themes: enableSystem ? [...themes, 'system'] : themes,
|
|
175
171
|
systemTheme,
|
|
176
172
|
} as const
|
|
@@ -180,7 +176,7 @@ export const NextThemeProvider = memo(
|
|
|
180
176
|
set,
|
|
181
177
|
toggle,
|
|
182
178
|
forcedTheme,
|
|
183
|
-
|
|
179
|
+
resolvedTheme,
|
|
184
180
|
enableSystem,
|
|
185
181
|
themes,
|
|
186
182
|
systemTheme,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NextThemeProvider.d.ts","sourceRoot":"","sources":["../src/NextThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,EAAE,kBAAkB,EAAiB,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,iBAAiB,sMAiBzB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"NextThemeProvider.d.ts","sourceRoot":"","sources":["../src/NextThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,EAAE,kBAAkB,EAAiB,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,iBAAiB,sMAiBzB,kBAAkB,iBA+KtB,CAAA"}
|