@a-type/ui 3.0.15 → 3.0.17
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/components/layouts/PageRoot.js +1 -1
- package/dist/cjs/components/layouts/PageRoot.js.map +1 -1
- package/dist/cjs/hooks/index.d.ts +1 -0
- package/dist/cjs/hooks/index.js +1 -0
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useStorage.js +20 -12
- package/dist/cjs/hooks/useStorage.js.map +1 -1
- package/dist/esm/components/layouts/PageRoot.js +1 -1
- package/dist/esm/components/layouts/PageRoot.js.map +1 -1
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useStorage.js +20 -12
- package/dist/esm/hooks/useStorage.js.map +1 -1
- package/package.json +18 -23
- package/src/components/layouts/PageRoot.tsx +1 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useStorage.ts +18 -11
|
@@ -21,7 +21,7 @@ const clsx_1 = __importDefault(require("clsx"));
|
|
|
21
21
|
const hooks_js_1 = require("../../hooks.js");
|
|
22
22
|
function PageRoot(_a) {
|
|
23
23
|
var { className, children, disableTitleBarColor } = _a, rest = __rest(_a, ["className", "children", "disableTitleBarColor"]);
|
|
24
|
-
(0, hooks_js_1.useThemedTitleBar)('
|
|
24
|
+
(0, hooks_js_1.useThemedTitleBar)('high-contrast', 'wash', undefined, disableTitleBarColor);
|
|
25
25
|
return ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: (0, clsx_1.default)('layer-components:flex-grow-1 layer-components:flex-shrink-1 layer-components:flex-basis-0 layer-components:min-h-100dvh layer-components:bg-wash', 'layer-components:grid layer-components:grid-areas-[content]-[nav] layer-components:grid-cols-[1fr] layer-components:grid-rows-[1fr_auto] layer-components:items-start layer-components:justify-center', 'md:layer-responsive:grid-areas-[gutter1_nav_content_gutter2] md:layer-responsive:grid-cols-[1fr_auto_20fr_1fr] md:layer-responsive:min-h-auto md:layer-responsive:h-auto md:layer-responsive:bg-wash', 'lg:layer-responsive:grid-cols-[1fr_auto_min(800px,70vw)_1fr]', className) }, rest, { children: children })));
|
|
26
26
|
}
|
|
27
27
|
//# sourceMappingURL=PageRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageRoot.js","sourceRoot":"","sources":["../../../../src/components/layouts/PageRoot.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAQA,4BAqBC;;AA7BD,gDAAwB;AAExB,6CAAmD;AAMnD,SAAgB,QAAQ,CAAC,EAKT;QALS,EACxB,SAAS,EACT,QAAQ,EACR,oBAAoB,OAEL,EADZ,IAAI,cAJiB,iDAKxB,CADO;IAEP,IAAA,4BAAiB,EAAC,
|
|
1
|
+
{"version":3,"file":"PageRoot.js","sourceRoot":"","sources":["../../../../src/components/layouts/PageRoot.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAQA,4BAqBC;;AA7BD,gDAAwB;AAExB,6CAAmD;AAMnD,SAAgB,QAAQ,CAAC,EAKT;QALS,EACxB,SAAS,EACT,QAAQ,EACR,oBAAoB,OAEL,EADZ,IAAI,cAJiB,iDAKxB,CADO;IAEP,IAAA,4BAAiB,EAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5E,OAAO,CACN,8CACC,SAAS,EAAE,IAAA,cAAI,EACd,gFAAgF,EAChF,oHAAoH,EACpH,wHAAwH,EACxH,gEAAgE,EAChE,SAAS,CACT,IACG,IAAI,cAEP,QAAQ,IACJ,CACN,CAAC;AACH,CAAC"}
|
|
@@ -6,6 +6,7 @@ export * from './useOverrideTheme.js';
|
|
|
6
6
|
export * from './useSize.js';
|
|
7
7
|
export * from './useStableCallback.js';
|
|
8
8
|
export * from './useStayScrolledToBottom.js';
|
|
9
|
+
export * from './useStorage.js';
|
|
9
10
|
export * from './useTitleBarColor.js';
|
|
10
11
|
export * from './useToggle.js';
|
|
11
12
|
export * from './useVisualViewportOffset.js';
|
package/dist/cjs/hooks/index.js
CHANGED
|
@@ -23,6 +23,7 @@ __exportStar(require("./useOverrideTheme.js"), exports);
|
|
|
23
23
|
__exportStar(require("./useSize.js"), exports);
|
|
24
24
|
__exportStar(require("./useStableCallback.js"), exports);
|
|
25
25
|
__exportStar(require("./useStayScrolledToBottom.js"), exports);
|
|
26
|
+
__exportStar(require("./useStorage.js"), exports);
|
|
26
27
|
__exportStar(require("./useTitleBarColor.js"), exports);
|
|
27
28
|
__exportStar(require("./useToggle.js"), exports);
|
|
28
29
|
__exportStar(require("./useVisualViewportOffset.js"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,oDAAkC;AAClC,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC;AACtC,+CAA6B;AAC7B,yDAAuC;AACvC,+DAA6C;AAC7C,wDAAsC;AACtC,iDAA+B;AAC/B,+DAA6C;AAC7C,qDAAmC;AACnC,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,oDAAkC;AAClC,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC;AACtC,+CAA6B;AAC7B,yDAAuC;AACvC,+DAA6C;AAC7C,kDAAgC;AAChC,wDAAsC;AACtC,iDAA+B;AAC/B,+DAA6C;AAC7C,qDAAmC;AACnC,iDAA+B"}
|
|
@@ -6,32 +6,40 @@ const react_1 = require("react");
|
|
|
6
6
|
const valtio_1 = require("valtio");
|
|
7
7
|
function makeUseStorage(storage, cache, name = storage.constructor.name) {
|
|
8
8
|
return function useStorage(key, initialValue, writeInitialValue = false) {
|
|
9
|
-
var _a;
|
|
9
|
+
var _a, _b;
|
|
10
10
|
// using useMemo to execute synchronous code in render just once.
|
|
11
11
|
// this hook comes before useLocalStorageCache because we want to load
|
|
12
12
|
// values into the cache before accessing them.
|
|
13
|
-
(0, react_1.useMemo)(() => {
|
|
13
|
+
const stored = (0, react_1.useMemo)(() => {
|
|
14
14
|
if (typeof window === 'undefined')
|
|
15
15
|
return;
|
|
16
16
|
try {
|
|
17
17
|
const stored = storage.getItem(key);
|
|
18
|
-
if (stored)
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
if (stored === '"undefined"')
|
|
19
|
+
return undefined;
|
|
20
|
+
if (stored === null)
|
|
21
|
+
return undefined;
|
|
22
|
+
return JSON.parse(stored);
|
|
21
23
|
}
|
|
22
24
|
catch (err) {
|
|
23
|
-
console.error(`Error
|
|
25
|
+
console.error(`Error parsing use-${name} value for ${key}: ${err}`);
|
|
24
26
|
storage.removeItem(key);
|
|
25
27
|
}
|
|
26
28
|
}, [key]);
|
|
29
|
+
(0, react_1.useEffect)(() => {
|
|
30
|
+
if (stored !== undefined) {
|
|
31
|
+
cache[key] = stored;
|
|
32
|
+
}
|
|
33
|
+
}, [stored, key]);
|
|
27
34
|
const snapshot = (0, valtio_1.useSnapshot)(cache);
|
|
28
|
-
const storedValue = ((_a = snapshot[key]) !== null && _a !== void 0 ? _a : initialValue);
|
|
29
|
-
const hasValue = snapshot[key] !== undefined;
|
|
35
|
+
const storedValue = ((_b = (_a = snapshot[key]) !== null && _a !== void 0 ? _a : stored) !== null && _b !== void 0 ? _b : initialValue);
|
|
30
36
|
(0, react_1.useEffect)(() => {
|
|
31
|
-
if (
|
|
37
|
+
if (typeof window === 'undefined')
|
|
38
|
+
return;
|
|
39
|
+
if (snapshot[key] === undefined && writeInitialValue) {
|
|
32
40
|
storage.setItem(key, JSON.stringify(initialValue));
|
|
33
41
|
}
|
|
34
|
-
}, [
|
|
42
|
+
}, [!!snapshot[key], initialValue, writeInitialValue, key]);
|
|
35
43
|
// Return a wrapped version of useState's setter function that
|
|
36
44
|
// persists the new value to localStorage. It's throttled to prevent
|
|
37
45
|
// frequent writes to localStorage, which can be costly.
|
|
@@ -66,8 +74,8 @@ const mockStorage = {
|
|
|
66
74
|
return null;
|
|
67
75
|
},
|
|
68
76
|
};
|
|
69
|
-
exports.useLocalStorage = makeUseStorage(typeof
|
|
70
|
-
exports.useSessionStorage = makeUseStorage(typeof
|
|
77
|
+
exports.useLocalStorage = makeUseStorage(typeof window === 'undefined' ? mockStorage : localStorage, (0, valtio_1.proxy)({}), 'LocalStorage');
|
|
78
|
+
exports.useSessionStorage = makeUseStorage(typeof window === 'undefined' ? mockStorage : sessionStorage, (0, valtio_1.proxy)({}), 'SessionStorage');
|
|
71
79
|
function throttle(func, wait, options) {
|
|
72
80
|
let previous = 0;
|
|
73
81
|
return function (...args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStorage.js","sourceRoot":"","sources":["../../../src/hooks/useStorage.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAC3C,mCAA4C;AAE5C,SAAS,cAAc,CACtB,OAAgB,EAChB,KAA0B,EAC1B,OAAe,OAAO,CAAC,WAAW,CAAC,IAAI;IAEvC,OAAO,SAAS,UAAU,CACzB,GAAW,EACX,YAAe,EACf,iBAAiB,GAAG,KAAK;;QAEzB,iEAAiE;QACjE,sEAAsE;QACtE,+CAA+C;QAC/C,IAAA,eAAO,EAAC,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"useStorage.js","sourceRoot":"","sources":["../../../src/hooks/useStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import clsx from 'clsx';
|
|
|
15
15
|
import { useThemedTitleBar } from '../../hooks.js';
|
|
16
16
|
export function PageRoot(_a) {
|
|
17
17
|
var { className, children, disableTitleBarColor } = _a, rest = __rest(_a, ["className", "children", "disableTitleBarColor"]);
|
|
18
|
-
useThemedTitleBar('
|
|
18
|
+
useThemedTitleBar('high-contrast', 'wash', undefined, disableTitleBarColor);
|
|
19
19
|
return (_jsx("div", Object.assign({ className: clsx('layer-components:flex-grow-1 layer-components:flex-shrink-1 layer-components:flex-basis-0 layer-components:min-h-100dvh layer-components:bg-wash', 'layer-components:grid layer-components:grid-areas-[content]-[nav] layer-components:grid-cols-[1fr] layer-components:grid-rows-[1fr_auto] layer-components:items-start layer-components:justify-center', 'md:layer-responsive:grid-areas-[gutter1_nav_content_gutter2] md:layer-responsive:grid-cols-[1fr_auto_20fr_1fr] md:layer-responsive:min-h-auto md:layer-responsive:h-auto md:layer-responsive:bg-wash', 'lg:layer-responsive:grid-cols-[1fr_auto_min(800px,70vw)_1fr]', className) }, rest, { children: children })));
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=PageRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageRoot.js","sourceRoot":"","sources":["../../../../src/components/layouts/PageRoot.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMnD,MAAM,UAAU,QAAQ,CAAC,EAKT;QALS,EACxB,SAAS,EACT,QAAQ,EACR,oBAAoB,OAEL,EADZ,IAAI,cAJiB,iDAKxB,CADO;IAEP,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"PageRoot.js","sourceRoot":"","sources":["../../../../src/components/layouts/PageRoot.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMnD,MAAM,UAAU,QAAQ,CAAC,EAKT;QALS,EACxB,SAAS,EACT,QAAQ,EACR,oBAAoB,OAEL,EADZ,IAAI,cAJiB,iDAKxB,CADO;IAEP,iBAAiB,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC5E,OAAO,CACN,4BACC,SAAS,EAAE,IAAI,CACd,gFAAgF,EAChF,oHAAoH,EACpH,wHAAwH,EACxH,gEAAgE,EAChE,SAAS,CACT,IACG,IAAI,cAEP,QAAQ,IACJ,CACN,CAAC;AACH,CAAC"}
|
|
@@ -6,6 +6,7 @@ export * from './useOverrideTheme.js';
|
|
|
6
6
|
export * from './useSize.js';
|
|
7
7
|
export * from './useStableCallback.js';
|
|
8
8
|
export * from './useStayScrolledToBottom.js';
|
|
9
|
+
export * from './useStorage.js';
|
|
9
10
|
export * from './useTitleBarColor.js';
|
|
10
11
|
export * from './useToggle.js';
|
|
11
12
|
export * from './useVisualViewportOffset.js';
|
package/dist/esm/hooks/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export * from './useOverrideTheme.js';
|
|
|
7
7
|
export * from './useSize.js';
|
|
8
8
|
export * from './useStableCallback.js';
|
|
9
9
|
export * from './useStayScrolledToBottom.js';
|
|
10
|
+
export * from './useStorage.js';
|
|
10
11
|
export * from './useTitleBarColor.js';
|
|
11
12
|
export * from './useToggle.js';
|
|
12
13
|
export * from './useVisualViewportOffset.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}
|
|
@@ -3,32 +3,40 @@ import { useEffect, useMemo } from 'react';
|
|
|
3
3
|
import { proxy, useSnapshot } from 'valtio';
|
|
4
4
|
function makeUseStorage(storage, cache, name = storage.constructor.name) {
|
|
5
5
|
return function useStorage(key, initialValue, writeInitialValue = false) {
|
|
6
|
-
var _a;
|
|
6
|
+
var _a, _b;
|
|
7
7
|
// using useMemo to execute synchronous code in render just once.
|
|
8
8
|
// this hook comes before useLocalStorageCache because we want to load
|
|
9
9
|
// values into the cache before accessing them.
|
|
10
|
-
useMemo(() => {
|
|
10
|
+
const stored = useMemo(() => {
|
|
11
11
|
if (typeof window === 'undefined')
|
|
12
12
|
return;
|
|
13
13
|
try {
|
|
14
14
|
const stored = storage.getItem(key);
|
|
15
|
-
if (stored)
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
if (stored === '"undefined"')
|
|
16
|
+
return undefined;
|
|
17
|
+
if (stored === null)
|
|
18
|
+
return undefined;
|
|
19
|
+
return JSON.parse(stored);
|
|
18
20
|
}
|
|
19
21
|
catch (err) {
|
|
20
|
-
console.error(`Error
|
|
22
|
+
console.error(`Error parsing use-${name} value for ${key}: ${err}`);
|
|
21
23
|
storage.removeItem(key);
|
|
22
24
|
}
|
|
23
25
|
}, [key]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (stored !== undefined) {
|
|
28
|
+
cache[key] = stored;
|
|
29
|
+
}
|
|
30
|
+
}, [stored, key]);
|
|
24
31
|
const snapshot = useSnapshot(cache);
|
|
25
|
-
const storedValue = ((_a = snapshot[key]) !== null && _a !== void 0 ? _a : initialValue);
|
|
26
|
-
const hasValue = snapshot[key] !== undefined;
|
|
32
|
+
const storedValue = ((_b = (_a = snapshot[key]) !== null && _a !== void 0 ? _a : stored) !== null && _b !== void 0 ? _b : initialValue);
|
|
27
33
|
useEffect(() => {
|
|
28
|
-
if (
|
|
34
|
+
if (typeof window === 'undefined')
|
|
35
|
+
return;
|
|
36
|
+
if (snapshot[key] === undefined && writeInitialValue) {
|
|
29
37
|
storage.setItem(key, JSON.stringify(initialValue));
|
|
30
38
|
}
|
|
31
|
-
}, [
|
|
39
|
+
}, [!!snapshot[key], initialValue, writeInitialValue, key]);
|
|
32
40
|
// Return a wrapped version of useState's setter function that
|
|
33
41
|
// persists the new value to localStorage. It's throttled to prevent
|
|
34
42
|
// frequent writes to localStorage, which can be costly.
|
|
@@ -63,8 +71,8 @@ const mockStorage = {
|
|
|
63
71
|
return null;
|
|
64
72
|
},
|
|
65
73
|
};
|
|
66
|
-
export const useLocalStorage = makeUseStorage(typeof
|
|
67
|
-
export const useSessionStorage = makeUseStorage(typeof
|
|
74
|
+
export const useLocalStorage = makeUseStorage(typeof window === 'undefined' ? mockStorage : localStorage, proxy({}), 'LocalStorage');
|
|
75
|
+
export const useSessionStorage = makeUseStorage(typeof window === 'undefined' ? mockStorage : sessionStorage, proxy({}), 'SessionStorage');
|
|
68
76
|
function throttle(func, wait, options) {
|
|
69
77
|
let previous = 0;
|
|
70
78
|
return function (...args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStorage.js","sourceRoot":"","sources":["../../../src/hooks/useStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE5C,SAAS,cAAc,CACtB,OAAgB,EAChB,KAA0B,EAC1B,OAAe,OAAO,CAAC,WAAW,CAAC,IAAI;IAEvC,OAAO,SAAS,UAAU,CACzB,GAAW,EACX,YAAe,EACf,iBAAiB,GAAG,KAAK;;QAEzB,iEAAiE;QACjE,sEAAsE;QACtE,+CAA+C;QAC/C,OAAO,CAAC,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"useStorage.js","sourceRoot":"","sources":["../../../src/hooks/useStorage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a-type/ui",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.17",
|
|
4
4
|
"type": "module",
|
|
5
|
+
"repository": {
|
|
6
|
+
"url": "https://github.com/a-type/ui"
|
|
7
|
+
},
|
|
5
8
|
"files": [
|
|
6
9
|
"/dist",
|
|
7
10
|
"/src"
|
|
@@ -30,20 +33,6 @@
|
|
|
30
33
|
"default": "./dist/css/main.css"
|
|
31
34
|
}
|
|
32
35
|
},
|
|
33
|
-
"scripts": {
|
|
34
|
-
"build:transpile": "tsc && tsc -P tsconfig-cjs.json",
|
|
35
|
-
"build:prefix": "node ./scripts/addUnoInclude.js",
|
|
36
|
-
"build:process": "unocss --write-transformed -o ./dist/css/main.css -m -c uno.config.js \"./dist/**/*.js\"",
|
|
37
|
-
"build": "pnpm run build:transpile && pnpm run build:prefix && pnpm run build:process",
|
|
38
|
-
"prepublish": "pnpm run build",
|
|
39
|
-
"icons": "node ./scripts/generateIcons.js",
|
|
40
|
-
"storybook": "storybook dev -p 6006",
|
|
41
|
-
"build-storybook": "storybook build",
|
|
42
|
-
"up-radix": "pnpm update \"@radix-ui/*\" --latest",
|
|
43
|
-
"bump": "pnpx bumpp",
|
|
44
|
-
"test": "vitest",
|
|
45
|
-
"test:browser": "vitest --config=vitest.browser.config.ts"
|
|
46
|
-
},
|
|
47
36
|
"peerDependencies": {
|
|
48
37
|
"react": "^19",
|
|
49
38
|
"react-dom": "^19",
|
|
@@ -123,12 +112,18 @@
|
|
|
123
112
|
"vitest": "^4.0.6",
|
|
124
113
|
"vitest-browser-react": "^2.0.2"
|
|
125
114
|
},
|
|
126
|
-
"
|
|
127
|
-
"
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
"
|
|
131
|
-
|
|
132
|
-
|
|
115
|
+
"scripts": {
|
|
116
|
+
"build:transpile": "tsc && tsc -P tsconfig-cjs.json",
|
|
117
|
+
"build:prefix": "node ./scripts/addUnoInclude.js",
|
|
118
|
+
"build:process": "unocss --write-transformed -o ./dist/css/main.css -m -c uno.config.js \"./dist/**/*.js\"",
|
|
119
|
+
"build": "pnpm run build:transpile && pnpm run build:prefix && pnpm run build:process",
|
|
120
|
+
"prepublish": "pnpm run build",
|
|
121
|
+
"icons": "node ./scripts/generateIcons.js",
|
|
122
|
+
"storybook": "storybook dev -p 6006",
|
|
123
|
+
"build-storybook": "storybook build",
|
|
124
|
+
"up-radix": "pnpm update \"@radix-ui/*\" --latest",
|
|
125
|
+
"bump": "bumpp",
|
|
126
|
+
"test": "vitest",
|
|
127
|
+
"test:browser": "vitest --config=vitest.browser.config.ts"
|
|
133
128
|
}
|
|
134
|
-
}
|
|
129
|
+
}
|
|
@@ -12,7 +12,7 @@ export function PageRoot({
|
|
|
12
12
|
disableTitleBarColor,
|
|
13
13
|
...rest
|
|
14
14
|
}: PageRootProps) {
|
|
15
|
-
useThemedTitleBar('
|
|
15
|
+
useThemedTitleBar('high-contrast', 'wash', undefined, disableTitleBarColor);
|
|
16
16
|
return (
|
|
17
17
|
<div
|
|
18
18
|
className={clsx(
|
package/src/hooks/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './useOverrideTheme.js';
|
|
|
6
6
|
export * from './useSize.js';
|
|
7
7
|
export * from './useStableCallback.js';
|
|
8
8
|
export * from './useStayScrolledToBottom.js';
|
|
9
|
+
export * from './useStorage.js';
|
|
9
10
|
export * from './useTitleBarColor.js';
|
|
10
11
|
export * from './useToggle.js';
|
|
11
12
|
export * from './useVisualViewportOffset.js';
|
package/src/hooks/useStorage.ts
CHANGED
|
@@ -14,28 +14,35 @@ function makeUseStorage(
|
|
|
14
14
|
// using useMemo to execute synchronous code in render just once.
|
|
15
15
|
// this hook comes before useLocalStorageCache because we want to load
|
|
16
16
|
// values into the cache before accessing them.
|
|
17
|
-
useMemo(() => {
|
|
17
|
+
const stored = useMemo(() => {
|
|
18
18
|
if (typeof window === 'undefined') return;
|
|
19
19
|
|
|
20
20
|
try {
|
|
21
21
|
const stored = storage.getItem(key);
|
|
22
|
-
if (stored)
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
if (stored === '"undefined"') return undefined;
|
|
23
|
+
if (stored === null) return undefined;
|
|
24
|
+
return JSON.parse(stored);
|
|
25
25
|
} catch (err) {
|
|
26
|
-
console.error(`Error
|
|
26
|
+
console.error(`Error parsing use-${name} value for ${key}: ${err}`);
|
|
27
27
|
storage.removeItem(key);
|
|
28
28
|
}
|
|
29
29
|
}, [key]);
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (stored !== undefined) {
|
|
33
|
+
cache[key] = stored;
|
|
34
|
+
}
|
|
35
|
+
}, [stored, key]);
|
|
36
|
+
|
|
30
37
|
const snapshot = useSnapshot(cache);
|
|
31
|
-
const storedValue = (snapshot[key] ?? initialValue) as T;
|
|
38
|
+
const storedValue = (snapshot[key] ?? stored ?? initialValue) as T;
|
|
32
39
|
|
|
33
|
-
const hasValue = snapshot[key] !== undefined;
|
|
34
40
|
useEffect(() => {
|
|
35
|
-
if (
|
|
41
|
+
if (typeof window === 'undefined') return;
|
|
42
|
+
if (snapshot[key] === undefined && writeInitialValue) {
|
|
36
43
|
storage.setItem(key, JSON.stringify(initialValue));
|
|
37
44
|
}
|
|
38
|
-
}, [
|
|
45
|
+
}, [!!snapshot[key], initialValue, writeInitialValue, key]);
|
|
39
46
|
|
|
40
47
|
// Return a wrapped version of useState's setter function that
|
|
41
48
|
// persists the new value to localStorage. It's throttled to prevent
|
|
@@ -85,12 +92,12 @@ const mockStorage: Storage = {
|
|
|
85
92
|
};
|
|
86
93
|
|
|
87
94
|
export const useLocalStorage = makeUseStorage(
|
|
88
|
-
typeof
|
|
95
|
+
typeof window === 'undefined' ? mockStorage : localStorage,
|
|
89
96
|
proxy({}),
|
|
90
97
|
'LocalStorage',
|
|
91
98
|
);
|
|
92
99
|
export const useSessionStorage = makeUseStorage(
|
|
93
|
-
typeof
|
|
100
|
+
typeof window === 'undefined' ? mockStorage : sessionStorage,
|
|
94
101
|
proxy({}),
|
|
95
102
|
'SessionStorage',
|
|
96
103
|
);
|