@vxrn/color-scheme 1.19.3 → 1.19.5

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.
Files changed (41) hide show
  1. package/dist/cjs/index.cjs +8 -6
  2. package/dist/cjs/index.native.js +4 -2
  3. package/dist/cjs/index.native.js.map +1 -1
  4. package/dist/cjs/safeStorage.cjs +40 -0
  5. package/dist/cjs/safeStorage.native.js +43 -0
  6. package/dist/cjs/safeStorage.native.js.map +1 -0
  7. package/dist/cjs/safeStorage.test.cjs +49 -0
  8. package/dist/cjs/safeStorage.test.native.js +66 -0
  9. package/dist/cjs/safeStorage.test.native.js.map +1 -0
  10. package/dist/cjs/userScheme.cjs +9 -12
  11. package/dist/cjs/userScheme.native.js +11 -16
  12. package/dist/cjs/userScheme.native.js.map +1 -1
  13. package/dist/esm/index.js +8 -6
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/index.mjs +8 -6
  16. package/dist/esm/index.mjs.map +1 -1
  17. package/dist/esm/index.native.js +3 -2
  18. package/dist/esm/index.native.js.map +1 -1
  19. package/dist/esm/safeStorage.mjs +14 -0
  20. package/dist/esm/safeStorage.mjs.map +1 -0
  21. package/dist/esm/safeStorage.native.js +14 -0
  22. package/dist/esm/safeStorage.native.js.map +1 -0
  23. package/dist/esm/safeStorage.test.mjs +50 -0
  24. package/dist/esm/safeStorage.test.mjs.map +1 -0
  25. package/dist/esm/safeStorage.test.native.js +64 -0
  26. package/dist/esm/safeStorage.test.native.js.map +1 -0
  27. package/dist/esm/userScheme.mjs +9 -12
  28. package/dist/esm/userScheme.mjs.map +1 -1
  29. package/dist/esm/userScheme.native.js +11 -16
  30. package/dist/esm/userScheme.native.js.map +1 -1
  31. package/package.json +5 -3
  32. package/src/index.tsx +10 -6
  33. package/src/safeStorage.test.ts +63 -0
  34. package/src/safeStorage.ts +20 -0
  35. package/src/userScheme.ts +13 -20
  36. package/types/index.d.ts.map +1 -1
  37. package/types/safeStorage.d.ts +3 -0
  38. package/types/safeStorage.d.ts.map +1 -0
  39. package/types/safeStorage.test.d.ts +2 -0
  40. package/types/safeStorage.test.d.ts.map +1 -0
  41. package/types/userScheme.d.ts.map +1 -1
package/src/userScheme.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { useIsomorphicLayoutEffect } from '@vxrn/use-isomorphic-layout-effect'
2
2
  import { useState, useMemo } from 'react'
3
3
  import { Appearance } from 'react-native'
4
+ import { getStorageItem, setStorageItem } from './safeStorage'
4
5
  import { getSystemScheme, type Scheme } from './systemScheme'
5
6
 
6
7
  export type SchemeSetting = 'system' | 'light' | 'dark'
@@ -29,13 +30,11 @@ function notifyListeners() {
29
30
  }
30
31
 
31
32
  function restoreUnforcedScheme() {
32
- if (typeof localStorage !== 'undefined') {
33
- const stored = localStorage.getItem(storageKey) as SchemeSetting | null
34
- if (stored) {
35
- currentSetting = stored
36
- currentValue = stored === 'system' ? resolveValue('system') : stored
37
- return
38
- }
33
+ const stored = getStorageItem(storageKey) as SchemeSetting | null
34
+ if (stored) {
35
+ currentSetting = stored
36
+ currentValue = stored === 'system' ? resolveValue('system') : stored
37
+ return
39
38
  }
40
39
 
41
40
  currentSetting = 'system'
@@ -70,11 +69,9 @@ export function getForceScheme(): Scheme | null {
70
69
  // eagerly init from localStorage on module load (native only - web uses effect for SSR)
71
70
  function getInitialSetting(): SchemeSetting {
72
71
  if (process.env.TAMAGUI_TARGET === 'native') {
73
- if (typeof localStorage !== 'undefined') {
74
- const stored = localStorage.getItem(storageKey)
75
- if (stored === 'light' || stored === 'dark' || stored === 'system') {
76
- return stored
77
- }
72
+ const stored = getStorageItem(storageKey)
73
+ if (stored === 'light' || stored === 'dark' || stored === 'system') {
74
+ return stored
78
75
  }
79
76
  }
80
77
  // web: always return system for SSR compat
@@ -177,9 +174,7 @@ function updateScheme(setting: SchemeSetting) {
177
174
  */
178
175
  export function setUserScheme(setting: SchemeSetting) {
179
176
  if (_forceScheme) return
180
- if (typeof localStorage !== 'undefined') {
181
- localStorage.setItem(storageKey, setting)
182
- }
177
+ setStorageItem(storageKey, setting)
183
178
  updateScheme(setting)
184
179
  }
185
180
 
@@ -231,11 +226,9 @@ export function useUserScheme(): UserScheme {
231
226
  useIsomorphicLayoutEffect(() => {
232
227
  if (!_forceScheme) {
233
228
  // restore from localStorage on mount
234
- if (typeof localStorage !== 'undefined') {
235
- const stored = localStorage.getItem(storageKey) as SchemeSetting | null
236
- if (stored) {
237
- updateScheme(stored)
238
- }
229
+ const stored = getStorageItem(storageKey) as SchemeSetting | null
230
+ if (stored) {
231
+ updateScheme(stored)
239
232
  }
240
233
  startWebListener()
241
234
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAS5C,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAG7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,cAAc,CAAA;AAIrB,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,YAAoC,EACpC,aAAa,EACb,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,GAAG,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC,+GAA+G;IAC/G,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+HAA+H;IAC/H,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,2CAmEA;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,SAAS,EACT,UAAU,GACX,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,2CA0BA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAS5C,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAG7D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,cAAc,CAAA;AAIrB,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,YAAoC,EACpC,aAAa,EACb,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,GAAG,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC,+GAA+G;IAC/G,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+HAA+H;IAC/H,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,2CAqEA;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,SAAS,EACT,UAAU,GACX,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,2CA2BA"}
@@ -0,0 +1,3 @@
1
+ export declare function getStorageItem(key: string): string | null;
2
+ export declare function setStorageItem(key: string, value: string): void;
3
+ //# sourceMappingURL=safeStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeStorage.d.ts","sourceRoot":"","sources":["../src/safeStorage.ts"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMzD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=safeStorage.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeStorage.test.d.ts","sourceRoot":"","sources":["../src/safeStorage.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"userScheme.d.ts","sourceRoot":"","sources":["../src/userScheme.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE7D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;AAEvD,MAAM,MAAM,UAAU,GAAG;IACvB,0DAA0D;IAC1D,OAAO,EAAE,aAAa,CAAA;IACtB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,gCAAgC;IAChC,GAAG,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;CACtC,CAAA;AAED,KAAK,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;AA4BrE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,QAcnD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C;AAwGD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,QAMnD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGzE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,cAM1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAoC1C"}
1
+ {"version":3,"file":"userScheme.d.ts","sourceRoot":"","sources":["../src/userScheme.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE7D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;AAEvD,MAAM,MAAM,UAAU,GAAG;IACvB,0DAA0D;IAC1D,OAAO,EAAE,aAAa,CAAA;IACtB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,gCAAgC;IAChC,GAAG,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;CACtC,CAAA;AAED,KAAK,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;AA0BrE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,QAcnD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAE9C;AAsGD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,QAInD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAGzE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,cAM1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAkC1C"}