@kbach/react 0.2.2 → 0.2.3
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/index.js +17 -38
- package/dist/index.mjs +17 -38
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2065,17 +2065,15 @@ function subscribeGlobalDarkMode(callback) {
|
|
|
2065
2065
|
|
|
2066
2066
|
// src/ThemeProvider.tsx
|
|
2067
2067
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
2068
|
-
var
|
|
2068
|
+
var _useColorScheme;
|
|
2069
2069
|
try {
|
|
2070
|
-
({
|
|
2070
|
+
({ useColorScheme: _useColorScheme } = require("react-native"));
|
|
2071
2071
|
} catch {
|
|
2072
2072
|
}
|
|
2073
2073
|
var STORAGE_KEY = "kbach-theme";
|
|
2074
2074
|
function loadPersistedMode() {
|
|
2075
2075
|
try {
|
|
2076
|
-
if (isWeb)
|
|
2077
|
-
return localStorage.getItem(STORAGE_KEY);
|
|
2078
|
-
}
|
|
2076
|
+
if (isWeb) return localStorage.getItem(STORAGE_KEY);
|
|
2079
2077
|
return null;
|
|
2080
2078
|
} catch {
|
|
2081
2079
|
return null;
|
|
@@ -2106,17 +2104,14 @@ function ThemeProvider({
|
|
|
2106
2104
|
const [resolvedConfig, setResolvedConfig] = (0, import_react2.useState)(
|
|
2107
2105
|
() => configOverride ? buildConfig(configOverride) : getConfig()
|
|
2108
2106
|
);
|
|
2109
|
-
const
|
|
2107
|
+
const nativeScheme = _useColorScheme?.();
|
|
2108
|
+
const [webScheme, setWebScheme] = (0, import_react2.useState)(() => {
|
|
2110
2109
|
if (isWeb && typeof window !== "undefined") {
|
|
2111
2110
|
return window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
2112
2111
|
}
|
|
2113
|
-
if (Appearance) {
|
|
2114
|
-
const scheme = Appearance.getColorScheme();
|
|
2115
|
-
return scheme === "dark" ? "dark" : "light";
|
|
2116
|
-
}
|
|
2117
2112
|
return "light";
|
|
2118
|
-
}
|
|
2119
|
-
const
|
|
2113
|
+
});
|
|
2114
|
+
const systemScheme = isWeb ? webScheme : nativeScheme === "dark" ? "dark" : "light";
|
|
2120
2115
|
const [mode, _setMode] = (0, import_react2.useState)(() => {
|
|
2121
2116
|
if (!disablePersistence) {
|
|
2122
2117
|
const persisted = loadPersistedMode();
|
|
@@ -2138,33 +2133,17 @@ function ThemeProvider({
|
|
|
2138
2133
|
applyWebTheme(resolvedMode, resolvedConfig.darkMode);
|
|
2139
2134
|
setGlobalDarkMode(isDark);
|
|
2140
2135
|
}, [isDark, resolvedMode, resolvedConfig.darkMode]);
|
|
2141
|
-
const
|
|
2142
|
-
|
|
2136
|
+
const setWebSchemeRef = (0, import_react2.useRef)(setWebScheme);
|
|
2137
|
+
setWebSchemeRef.current = setWebScheme;
|
|
2143
2138
|
(0, import_react2.useEffect)(() => {
|
|
2144
|
-
if (
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
}
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
if (isWeb && typeof window !== "undefined") {
|
|
2153
|
-
const mq = window.matchMedia?.("(prefers-color-scheme: dark)");
|
|
2154
|
-
if (!mq) return;
|
|
2155
|
-
const handler = (e) => {
|
|
2156
|
-
setSystemSchemeRef.current(e.matches ? "dark" : "light");
|
|
2157
|
-
};
|
|
2158
|
-
mq.addEventListener("change", handler);
|
|
2159
|
-
return () => mq.removeEventListener("change", handler);
|
|
2160
|
-
}
|
|
2161
|
-
if (Appearance) {
|
|
2162
|
-
const sub = Appearance.addChangeListener(({ colorScheme }) => {
|
|
2163
|
-
setSystemSchemeRef.current(colorScheme === "dark" ? "dark" : "light");
|
|
2164
|
-
});
|
|
2165
|
-
return () => sub.remove();
|
|
2166
|
-
}
|
|
2167
|
-
return void 0;
|
|
2139
|
+
if (!isWeb || typeof window === "undefined") return;
|
|
2140
|
+
const mq = window.matchMedia?.("(prefers-color-scheme: dark)");
|
|
2141
|
+
if (!mq) return;
|
|
2142
|
+
const handler = (e) => {
|
|
2143
|
+
setWebSchemeRef.current(e.matches ? "dark" : "light");
|
|
2144
|
+
};
|
|
2145
|
+
mq.addEventListener("change", handler);
|
|
2146
|
+
return () => mq.removeEventListener("change", handler);
|
|
2168
2147
|
}, []);
|
|
2169
2148
|
(0, import_react2.useEffect)(() => {
|
|
2170
2149
|
if (configOverride) return;
|
package/dist/index.mjs
CHANGED
|
@@ -39,17 +39,15 @@ import {
|
|
|
39
39
|
useState
|
|
40
40
|
} from "react";
|
|
41
41
|
import { jsx } from "react/jsx-runtime";
|
|
42
|
-
var
|
|
42
|
+
var _useColorScheme;
|
|
43
43
|
try {
|
|
44
|
-
({
|
|
44
|
+
({ useColorScheme: _useColorScheme } = __require("react-native"));
|
|
45
45
|
} catch {
|
|
46
46
|
}
|
|
47
47
|
var STORAGE_KEY = "kbach-theme";
|
|
48
48
|
function loadPersistedMode() {
|
|
49
49
|
try {
|
|
50
|
-
if (isWeb)
|
|
51
|
-
return localStorage.getItem(STORAGE_KEY);
|
|
52
|
-
}
|
|
50
|
+
if (isWeb) return localStorage.getItem(STORAGE_KEY);
|
|
53
51
|
return null;
|
|
54
52
|
} catch {
|
|
55
53
|
return null;
|
|
@@ -80,17 +78,14 @@ function ThemeProvider({
|
|
|
80
78
|
const [resolvedConfig, setResolvedConfig] = useState(
|
|
81
79
|
() => configOverride ? buildConfig(configOverride) : getConfig()
|
|
82
80
|
);
|
|
83
|
-
const
|
|
81
|
+
const nativeScheme = _useColorScheme?.();
|
|
82
|
+
const [webScheme, setWebScheme] = useState(() => {
|
|
84
83
|
if (isWeb && typeof window !== "undefined") {
|
|
85
84
|
return window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
86
85
|
}
|
|
87
|
-
if (Appearance) {
|
|
88
|
-
const scheme = Appearance.getColorScheme();
|
|
89
|
-
return scheme === "dark" ? "dark" : "light";
|
|
90
|
-
}
|
|
91
86
|
return "light";
|
|
92
|
-
}
|
|
93
|
-
const
|
|
87
|
+
});
|
|
88
|
+
const systemScheme = isWeb ? webScheme : nativeScheme === "dark" ? "dark" : "light";
|
|
94
89
|
const [mode, _setMode] = useState(() => {
|
|
95
90
|
if (!disablePersistence) {
|
|
96
91
|
const persisted = loadPersistedMode();
|
|
@@ -112,33 +107,17 @@ function ThemeProvider({
|
|
|
112
107
|
applyWebTheme(resolvedMode, resolvedConfig.darkMode);
|
|
113
108
|
setGlobalDarkMode(isDark);
|
|
114
109
|
}, [isDark, resolvedMode, resolvedConfig.darkMode]);
|
|
115
|
-
const
|
|
116
|
-
|
|
110
|
+
const setWebSchemeRef = useRef(setWebScheme);
|
|
111
|
+
setWebSchemeRef.current = setWebScheme;
|
|
117
112
|
useEffect(() => {
|
|
118
|
-
if (
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (isWeb && typeof window !== "undefined") {
|
|
127
|
-
const mq = window.matchMedia?.("(prefers-color-scheme: dark)");
|
|
128
|
-
if (!mq) return;
|
|
129
|
-
const handler = (e) => {
|
|
130
|
-
setSystemSchemeRef.current(e.matches ? "dark" : "light");
|
|
131
|
-
};
|
|
132
|
-
mq.addEventListener("change", handler);
|
|
133
|
-
return () => mq.removeEventListener("change", handler);
|
|
134
|
-
}
|
|
135
|
-
if (Appearance) {
|
|
136
|
-
const sub = Appearance.addChangeListener(({ colorScheme }) => {
|
|
137
|
-
setSystemSchemeRef.current(colorScheme === "dark" ? "dark" : "light");
|
|
138
|
-
});
|
|
139
|
-
return () => sub.remove();
|
|
140
|
-
}
|
|
141
|
-
return void 0;
|
|
113
|
+
if (!isWeb || typeof window === "undefined") return;
|
|
114
|
+
const mq = window.matchMedia?.("(prefers-color-scheme: dark)");
|
|
115
|
+
if (!mq) return;
|
|
116
|
+
const handler = (e) => {
|
|
117
|
+
setWebSchemeRef.current(e.matches ? "dark" : "light");
|
|
118
|
+
};
|
|
119
|
+
mq.addEventListener("change", handler);
|
|
120
|
+
return () => mq.removeEventListener("change", handler);
|
|
142
121
|
}, []);
|
|
143
122
|
useEffect(() => {
|
|
144
123
|
if (configOverride) return;
|