@brightweblabs/ui 1.5.4 → 1.5.6
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/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightweblabs/ui",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.6",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
7
7
|
"files": [
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
18
|
"exports": {
|
|
19
|
+
"./utils": "./src/lib/utils.ts",
|
|
19
20
|
".": "./src/index.ts",
|
|
20
21
|
"./action": "./src/components/action.tsx",
|
|
21
22
|
"./activity-format": "./src/lib/activity-format.ts",
|
|
@@ -80,7 +81,7 @@
|
|
|
80
81
|
"recharts": "^2.15.4",
|
|
81
82
|
"sonner": "^2.0.7",
|
|
82
83
|
"tailwind-merge": "^3.6.0",
|
|
83
|
-
"@brightweblabs/theme": "0.8.
|
|
84
|
+
"@brightweblabs/theme": "0.8.4"
|
|
84
85
|
},
|
|
85
86
|
"peerDependencies": {
|
|
86
87
|
"lucide-react": "^1.8.0",
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
BW_THEME_MEDIA_QUERY,
|
|
16
16
|
BW_THEME_STORAGE_KEY,
|
|
17
17
|
getSystemTheme,
|
|
18
|
+
getThemeStorage,
|
|
18
19
|
persistTheme,
|
|
19
20
|
readStoredTheme,
|
|
20
21
|
resolveTheme,
|
|
@@ -77,7 +78,7 @@ export function ThemeProvider({
|
|
|
77
78
|
|
|
78
79
|
useLayoutEffect(() => {
|
|
79
80
|
const mediaQuery = window.matchMedia(BW_THEME_MEDIA_QUERY);
|
|
80
|
-
setThemeState(readStoredTheme(
|
|
81
|
+
setThemeState(readStoredTheme(getThemeStorage(), defaultTheme));
|
|
81
82
|
setSystemTheme(getSystemTheme(mediaQuery));
|
|
82
83
|
setIsReady(true);
|
|
83
84
|
}, [defaultTheme]);
|
|
@@ -96,7 +97,7 @@ export function ThemeProvider({
|
|
|
96
97
|
useEffect(() => {
|
|
97
98
|
const handleStorage = (event: StorageEvent) => {
|
|
98
99
|
if (event.key !== BW_THEME_STORAGE_KEY) return;
|
|
99
|
-
setThemeState(readStoredTheme(
|
|
100
|
+
setThemeState(readStoredTheme(getThemeStorage(), defaultTheme));
|
|
100
101
|
};
|
|
101
102
|
window.addEventListener("storage", handleStorage);
|
|
102
103
|
return () => window.removeEventListener("storage", handleStorage);
|
|
@@ -104,7 +105,7 @@ export function ThemeProvider({
|
|
|
104
105
|
|
|
105
106
|
const setTheme = useCallback((nextTheme: ThemeMode) => {
|
|
106
107
|
setThemeState(nextTheme);
|
|
107
|
-
persistTheme(
|
|
108
|
+
persistTheme(getThemeStorage(), nextTheme);
|
|
108
109
|
}, []);
|
|
109
110
|
|
|
110
111
|
const value = useMemo<ThemeContextValue>(
|
|
@@ -18,6 +18,14 @@ export function resolveTheme(mode: ThemeMode, systemTheme: ResolvedTheme, enable
|
|
|
18
18
|
return mode;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
export function getThemeStorage(): ThemeStorage | null {
|
|
22
|
+
try {
|
|
23
|
+
return typeof window === "undefined" ? null : window.localStorage;
|
|
24
|
+
} catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
21
29
|
export function readStoredTheme(
|
|
22
30
|
storage: Pick<ThemeStorage, "getItem"> | null | undefined,
|
|
23
31
|
defaultTheme: ThemeMode = "system",
|