@vxrn/color-scheme 1.2.28 → 1.2.31

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 (46) hide show
  1. package/dist/cjs/index.cjs +34 -58
  2. package/dist/cjs/index.js +27 -56
  3. package/dist/cjs/index.js.map +2 -2
  4. package/dist/cjs/index.native.js +23 -52
  5. package/dist/cjs/index.native.js.map +1 -1
  6. package/dist/cjs/systemScheme.cjs +40 -0
  7. package/dist/cjs/systemScheme.js +34 -0
  8. package/dist/cjs/systemScheme.js.map +6 -0
  9. package/dist/cjs/systemScheme.native.js +48 -0
  10. package/dist/cjs/systemScheme.native.js.map +1 -0
  11. package/dist/cjs/userScheme.cjs +95 -0
  12. package/dist/cjs/userScheme.js +80 -0
  13. package/dist/cjs/userScheme.js.map +6 -0
  14. package/dist/cjs/userScheme.native.js +109 -0
  15. package/dist/cjs/userScheme.native.js.map +1 -0
  16. package/dist/esm/index.js +29 -62
  17. package/dist/esm/index.js.map +2 -2
  18. package/dist/esm/index.mjs +28 -52
  19. package/dist/esm/index.mjs.map +1 -1
  20. package/dist/esm/index.native.js +18 -47
  21. package/dist/esm/index.native.js.map +1 -1
  22. package/dist/esm/systemScheme.js +19 -0
  23. package/dist/esm/systemScheme.js.map +6 -0
  24. package/dist/esm/systemScheme.mjs +16 -0
  25. package/dist/esm/systemScheme.mjs.map +1 -0
  26. package/dist/esm/systemScheme.native.js +21 -0
  27. package/dist/esm/systemScheme.native.js.map +1 -0
  28. package/dist/esm/userScheme.js +67 -0
  29. package/dist/esm/userScheme.js.map +6 -0
  30. package/dist/esm/userScheme.mjs +68 -0
  31. package/dist/esm/userScheme.mjs.map +1 -0
  32. package/dist/esm/userScheme.native.js +80 -0
  33. package/dist/esm/userScheme.native.js.map +1 -0
  34. package/package.json +3 -4
  35. package/src/index.tsx +28 -85
  36. package/src/systemScheme.native.ts +21 -0
  37. package/src/systemScheme.ts +26 -0
  38. package/src/userScheme.ts +149 -0
  39. package/types/index.d.ts +9 -15
  40. package/types/index.d.ts.map +1 -1
  41. package/types/systemScheme.d.ts +4 -0
  42. package/types/systemScheme.d.ts.map +1 -0
  43. package/types/systemScheme.native.d.ts +4 -0
  44. package/types/systemScheme.native.d.ts.map +1 -0
  45. package/types/userScheme.d.ts +20 -0
  46. package/types/userScheme.d.ts.map +1 -0
@@ -0,0 +1,80 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: !0 });
8
+ }, __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from == "object" || typeof from == "function")
10
+ for (let key of __getOwnPropNames(from))
11
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
+ var userScheme_exports = {};
16
+ __export(userScheme_exports, {
17
+ getUserScheme: () => getUserScheme,
18
+ onUserSchemeChange: () => onUserSchemeChange,
19
+ setUserScheme: () => setUserScheme,
20
+ useUserScheme: () => useUserScheme
21
+ });
22
+ module.exports = __toCommonJS(userScheme_exports);
23
+ var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"), import_react = require("react"), import_react_native = require("react-native-web"), import_systemScheme = require("./systemScheme");
24
+ const listeners = /* @__PURE__ */ new Set(), storageKey = "vxrn-scheme";
25
+ let currentSetting = "system", currentValue = "light", isWebListening = !1;
26
+ function startWebListener() {
27
+ if (isWebListening) return;
28
+ isWebListening = !0;
29
+ const matcher = typeof window < "u" ? window.matchMedia?.("(prefers-color-scheme: dark)") : null, onSystemChange = () => {
30
+ currentSetting === "system" && updateValueFromSystem();
31
+ };
32
+ onSystemChange(), matcher?.addEventListener?.("change", onSystemChange);
33
+ }
34
+ function resolveValue(setting) {
35
+ return setting === "system" ? (0, import_systemScheme.getSystemScheme)() : setting;
36
+ }
37
+ function updateValueFromSystem() {
38
+ const value = resolveValue("system");
39
+ value !== currentValue && (currentValue = value, listeners.forEach((l) => {
40
+ l(currentSetting, currentValue);
41
+ }));
42
+ }
43
+ function updateScheme(setting) {
44
+ const value = setting === "system" ? resolveValue("system") : setting;
45
+ (value !== currentValue || currentSetting !== setting) && (currentSetting = setting, currentValue = value, listeners.forEach((l) => {
46
+ l(currentSetting, currentValue);
47
+ }));
48
+ }
49
+ function setUserScheme(setting) {
50
+ typeof localStorage < "u" && localStorage.setItem(storageKey, setting), updateScheme(setting);
51
+ }
52
+ function getUserScheme() {
53
+ return { setting: currentSetting, value: currentValue };
54
+ }
55
+ function onUserSchemeChange(listener) {
56
+ return listeners.add(listener), listener(currentSetting, currentValue), () => {
57
+ listeners.delete(listener);
58
+ };
59
+ }
60
+ function useUserScheme() {
61
+ const [state, setState] = (0, import_react.useState)(() => getUserScheme());
62
+ return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
63
+ if (typeof localStorage < "u") {
64
+ const stored = localStorage.getItem(storageKey);
65
+ stored && updateScheme(stored);
66
+ }
67
+ const dispose = onUserSchemeChange((setting, value) => {
68
+ setState({ setting, value });
69
+ });
70
+ return startWebListener(), dispose;
71
+ }, []), (0, import_react.useMemo)(
72
+ () => ({
73
+ setting: state.setting,
74
+ value: state.value,
75
+ set: setUserScheme
76
+ }),
77
+ [state.setting, state.value]
78
+ );
79
+ }
80
+ //# sourceMappingURL=userScheme.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/userScheme.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAA0C,+CAC1C,eAAkC,kBAClC,sBAA2B,yBAC3B,sBAA6C;AAe7C,MAAM,YAAY,oBAAI,IAAoB,GACpC,aAAa;AAEnB,IAAI,iBAAgC,UAChC,eAAuB,SAiBvB,iBAAiB;AACrB,SAAS,mBAAmB;AAC1B,MAAI,eAAgB;AACpB,mBAAiB;AAEjB,QAAM,UACJ,OAAO,SAAW,MAAc,OAAO,aAAa,8BAA8B,IAAI,MAElF,iBAAiB,MAAM;AAC3B,IAAI,mBAAmB,YACrB,sBAAsB;AAAA,EAE1B;AAEA,iBAAe,GACf,SAAS,mBAAmB,UAAU,cAAc;AACtD;AAEA,SAAS,aAAa,SAAgC;AACpD,SAAI,YAAY,eAIP,qCAAgB,IAElB;AACT;AAGA,SAAS,wBAAwB;AAC/B,QAAM,QAAQ,aAAa,QAAQ;AACnC,EAAI,UAAU,iBACZ,eAAe,OAMf,UAAU,QAAQ,CAAC,MAAM;AACvB,MAAE,gBAAgB,YAAY;AAAA,EAChC,CAAC;AAEL;AAEA,SAAS,aAAa,SAAwB;AAC5C,QAAM,QAAQ,YAAY,WAAW,aAAa,QAAQ,IAAI;AAE9D,GAAI,UAAU,gBAAgB,mBAAmB,aAC/C,iBAAiB,SACjB,eAAe,OAMf,UAAU,QAAQ,CAAC,MAAM;AACvB,MAAE,gBAAgB,YAAY;AAAA,EAChC,CAAC;AAEL;AAEO,SAAS,cAAc,SAAwB;AACpD,EAAI,OAAO,eAAiB,OAC1B,aAAa,QAAQ,YAAY,OAAO,GAE1C,aAAa,OAAO;AACtB;AAEO,SAAS,gBAA2D;AACzE,SAAO,EAAE,SAAS,gBAAgB,OAAO,aAAa;AACxD;AAEO,SAAS,mBAAmB,UAA0B;AAC3D,mBAAU,IAAI,QAAQ,GACtB,SAAS,gBAAgB,YAAY,GAC9B,MAAM;AACX,cAAU,OAAO,QAAQ;AAAA,EAC3B;AACF;AAEO,SAAS,gBAA4B;AAC1C,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAS,MAAM,cAAc,CAAC;AAExD,4EAA0B,MAAM;AAE9B,QAAI,OAAO,eAAiB,KAAa;AACvC,YAAM,SAAS,aAAa,QAAQ,UAAU;AAC9C,MAAI,UACF,aAAa,MAAM;AAAA,IAEvB;AAEA,UAAM,UAAU,mBAAmB,CAAC,SAAS,UAAU;AACrD,eAAS,EAAE,SAAS,MAAM,CAAC;AAAA,IAC7B,CAAC;AAED,4BAAiB,GAEV;AAAA,EACT,GAAG,CAAC,CAAC,OAEE;AAAA,IACL,OAAO;AAAA,MACL,SAAS,MAAM;AAAA,MACf,OAAO,MAAM;AAAA,MACb,KAAK;AAAA,IACP;AAAA,IACA,CAAC,MAAM,SAAS,MAAM,KAAK;AAAA,EAC7B;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var userScheme_exports = {};
24
+ __export(userScheme_exports, {
25
+ getUserScheme: () => getUserScheme,
26
+ onUserSchemeChange: () => onUserSchemeChange,
27
+ setUserScheme: () => setUserScheme,
28
+ useUserScheme: () => useUserScheme
29
+ });
30
+ module.exports = __toCommonJS(userScheme_exports);
31
+ var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"),
32
+ import_react = require("react"),
33
+ import_react_native = require("react-native"),
34
+ import_systemScheme = require("./systemScheme.native.js"),
35
+ listeners = /* @__PURE__ */new Set(),
36
+ storageKey = "vxrn-scheme",
37
+ currentSetting = "system",
38
+ currentValue = "light";
39
+ import_react_native.Appearance.addChangeListener(function (next) {
40
+ currentSetting === "system" && next.colorScheme && updateValueFromSystem();
41
+ });
42
+ var cur = import_react_native.Appearance.getColorScheme();
43
+ cur && currentSetting === "system" && (currentValue = cur);
44
+ var isWebListening = !1;
45
+ function startWebListener() {
46
+ var _window_matchMedia, _window, _matcher_addEventListener;
47
+ if (!isWebListening) {
48
+ isWebListening = !0;
49
+ var matcher = typeof window < "u" ? (_window_matchMedia = (_window = window).matchMedia) === null || _window_matchMedia === void 0 ? void 0 : _window_matchMedia.call(_window, "(prefers-color-scheme: dark)") : null,
50
+ onSystemChange = function () {
51
+ currentSetting === "system" && updateValueFromSystem();
52
+ };
53
+ onSystemChange(), matcher == null || (_matcher_addEventListener = matcher.addEventListener) === null || _matcher_addEventListener === void 0 || _matcher_addEventListener.call(matcher, "change", onSystemChange);
54
+ }
55
+ }
56
+ function resolveValue(setting) {
57
+ return setting === "system" ? import_react_native.Appearance.getColorScheme() || "light" : setting;
58
+ }
59
+ function updateValueFromSystem() {
60
+ var value = resolveValue("system");
61
+ value !== currentValue && (currentValue = value, import_react_native.Appearance.setColorScheme(value), listeners.forEach(function (l) {
62
+ l(currentSetting, currentValue);
63
+ }));
64
+ }
65
+ function updateScheme(setting) {
66
+ var value = setting === "system" ? resolveValue("system") : setting;
67
+ (value !== currentValue || currentSetting !== setting) && (currentSetting = setting, currentValue = value, import_react_native.Appearance.setColorScheme(value), listeners.forEach(function (l) {
68
+ l(currentSetting, currentValue);
69
+ }));
70
+ }
71
+ function setUserScheme(setting) {
72
+ typeof localStorage < "u" && localStorage.setItem(storageKey, setting), updateScheme(setting);
73
+ }
74
+ function getUserScheme() {
75
+ return {
76
+ setting: currentSetting,
77
+ value: currentValue
78
+ };
79
+ }
80
+ function onUserSchemeChange(listener) {
81
+ return listeners.add(listener), listener(currentSetting, currentValue), function () {
82
+ listeners.delete(listener);
83
+ };
84
+ }
85
+ function useUserScheme() {
86
+ var [state, setState] = (0, import_react.useState)(function () {
87
+ return getUserScheme();
88
+ });
89
+ return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(function () {
90
+ if (typeof localStorage < "u") {
91
+ var stored = localStorage.getItem(storageKey);
92
+ stored && updateScheme(stored);
93
+ }
94
+ var dispose = onUserSchemeChange(function (setting, value) {
95
+ setState({
96
+ setting,
97
+ value
98
+ });
99
+ });
100
+ return startWebListener(), dispose;
101
+ }, []), (0, import_react.useMemo)(function () {
102
+ return {
103
+ setting: state.setting,
104
+ value: state.value,
105
+ set: setUserScheme
106
+ };
107
+ }, [state.setting, state.value]);
108
+ }
109
+ //# sourceMappingURL=userScheme.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","userScheme_exports","__export","getUserScheme","onUserSchemeChange","setUserScheme","useUserScheme","module","exports","import_use_isomorphic_layout_effect","require","import_react","import_react_native","import_systemScheme","listeners","Set","storageKey","currentSetting","currentValue","Appearance","addChangeListener","next","colorScheme","updateValueFromSystem","cur","getColorScheme","isWebListening","startWebListener","_window_matchMedia","_window","_matcher_addEventListener","matcher","window","matchMedia","call","onSystemChange","addEventListener","resolveValue","setting","setColorScheme","forEach","l","updateScheme","localStorage","setItem","listener","add","delete","state","setState","useState","useIsomorphicLayoutEffect","stored","getItem","dispose"],"sources":["../../src/userScheme.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -1,79 +1,46 @@
1
- import {
2
- setColorScheme,
3
- useColorScheme as useColorSchemeBase,
4
- useColorSchemeSetting
5
- } from "@vxrn/universal-color-scheme";
6
1
  import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
7
- import { createContext, useContext, useMemo } from "react";
8
- import { getColorScheme, onColorSchemeChange } from "@vxrn/universal-color-scheme";
2
+ import { useUserScheme } from "./userScheme";
3
+ import { getSystemScheme, useSystemScheme } from "./systemScheme";
4
+ import { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme as useUserScheme2 } from "./userScheme";
9
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
- const storageKey = "vxrn-scheme", clearColorSchemeSetting = () => {
11
- setSchemeSetting("system");
12
- }, getSetting = () => typeof localStorage < "u" && localStorage.getItem(storageKey) || "system", SchemeContext = createContext({
13
- setting: "system",
14
- scheme: "light"
15
- }), useColorScheme = () => {
16
- const [state] = useColorSchemeBase();
17
- return [state, setSchemeSetting];
18
- };
19
- function useSchemeSetting() {
20
- return [useContext(SchemeContext), setSchemeSetting];
21
- }
22
- function setSchemeSetting(next) {
23
- typeof localStorage < "u" && localStorage.setItem(storageKey, next), setColorScheme(next);
24
- }
6
+ const storageKey = "vxrn-scheme";
25
7
  function SchemeProvider({
26
8
  children,
27
- // defaults to tamagui-compatible
28
9
  getClassName = (name) => `t_${name}`
29
10
  }) {
30
- const [colorSchemeSetting] = useColorSchemeSetting(), [colorScheme] = useColorScheme();
11
+ const { value } = useUserScheme();
31
12
  return useIsomorphicLayoutEffect(() => {
32
- setColorScheme(getSetting());
33
- const toAdd = getClassName(colorScheme), { classList } = document.documentElement;
13
+ const toAdd = getClassName(value), { classList } = document.documentElement;
34
14
  if (!classList.contains(toAdd)) {
35
- const toRemove = colorScheme === "light" ? "dark" : "light";
15
+ const toRemove = value === "light" ? "dark" : "light";
36
16
  classList.remove(getClassName(toRemove)), classList.add(toAdd);
37
17
  }
38
- }, [colorScheme]), /* @__PURE__ */ jsxs(Fragment, { children: [
18
+ }, [value]), /* @__PURE__ */ jsxs(Fragment, { children: [
39
19
  /* @__PURE__ */ jsx(
40
20
  "script",
41
21
  {
42
22
  dangerouslySetInnerHTML: {
43
23
  __html: `let d = document.documentElement.classList
44
- d.remove('${getClassName("light")}')
45
- d.remove('${getClassName("dark")}')
46
- let e = localStorage.getItem('${storageKey}')
47
- let t =
48
- 'system' === e || !e
49
- ? window.matchMedia('(prefers-color-scheme: dark)').matches
50
- : e === 'dark'
51
- t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
52
- `
24
+ d.remove('${getClassName("light")}')
25
+ d.remove('${getClassName("dark")}')
26
+ let e = localStorage.getItem('${storageKey}')
27
+ let t = 'system' === e || !e
28
+ ? window.matchMedia('(prefers-color-scheme: dark)').matches
29
+ : e === 'dark'
30
+ t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
31
+ `
53
32
  }
54
33
  }
55
34
  ),
56
- /* @__PURE__ */ jsx(
57
- SchemeContext.Provider,
58
- {
59
- value: useMemo(
60
- () => ({
61
- scheme: colorScheme,
62
- setting: colorSchemeSetting
63
- }),
64
- [colorScheme, colorSchemeSetting]
65
- ),
66
- children
67
- }
68
- )
35
+ children
69
36
  ] });
70
37
  }
71
- const MetaTheme = ({
38
+ function MetaTheme({
72
39
  color,
73
40
  darkColor,
74
41
  lightColor
75
- }) => {
76
- const [colorScheme] = useColorScheme();
42
+ }) {
43
+ const { value } = useUserScheme();
77
44
  return /* @__PURE__ */ jsxs(Fragment, { children: [
78
45
  /* @__PURE__ */ jsx(
79
46
  "meta",
@@ -82,7 +49,7 @@ const MetaTheme = ({
82
49
  suppressHydrationWarning: !0,
83
50
  id: "vxrn-theme-color",
84
51
  name: "theme-color",
85
- content: color ?? (colorScheme === "dark" ? darkColor : lightColor)
52
+ content: color ?? (value === "dark" ? darkColor : lightColor)
86
53
  }
87
54
  ),
88
55
  /* @__PURE__ */ jsx(
@@ -95,20 +62,20 @@ let dc = document.getElementById('vxrn-theme-color')
95
62
  let e1 = localStorage.getItem('${storageKey}')
96
63
  let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
97
64
  dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
98
- `
65
+ `
99
66
  }
100
67
  }
101
68
  )
102
69
  ] });
103
- };
70
+ }
104
71
  export {
105
72
  MetaTheme,
106
73
  SchemeProvider,
107
- clearColorSchemeSetting,
108
- getColorScheme,
109
- onColorSchemeChange,
110
- setSchemeSetting,
111
- useColorScheme,
112
- useSchemeSetting
74
+ getSystemScheme,
75
+ getUserScheme,
76
+ onUserSchemeChange,
77
+ setUserScheme,
78
+ useSystemScheme,
79
+ useUserScheme2 as useUserScheme
113
80
  };
114
81
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.tsx"],
4
- "mappings": "AAAA;AAAA,EAEE;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,OACK;AACP,SAAS,iCAAiC;AAC1C,SAAS,eAAe,YAAY,eAAe;AAKnD,SAAS,gBAAgB,2BAA2B;AAgEhD,mBAEI,KAFJ;AA9DJ,MAAM,aAAa,eAEN,0BAA0B,MAAM;AAC3C,mBAAiB,QAAQ;AAC3B,GAEM,aAAa,MAChB,OAAO,eAAiB,OAAgB,aAAa,QAAQ,UAAU,KACxE,UAEI,gBAAgB,cAGnB;AAAA,EACD,SAAS;AAAA,EACT,QAAQ;AACV,CAAC,GAEY,iBAAiB,MAAM;AAClC,QAAM,CAAC,KAAK,IAAI,mBAAmB;AACnC,SAAO,CAAC,OAAO,gBAAgB;AACjC;AAEO,SAAS,mBAAmB;AAEjC,SAAO,CADQ,WAAW,aAAa,GACvB,gBAAgB;AAClC;AAEO,SAAS,iBAAiB,MAAqB;AACpD,EAAI,OAAO,eAAiB,OAC1B,aAAa,QAAQ,YAAY,IAAI,GAEvC,eAAe,IAAI;AACrB;AAEO,SAAS,eAAe;AAAA,EAC7B;AAAA;AAAA,EAEA,eAAe,CAAC,SAAS,KAAK,IAAI;AACpC,GAGG;AACD,QAAM,CAAC,kBAAkB,IAAI,sBAAsB,GAC7C,CAAC,WAAW,IAAI,eAAe;AAGnC,mCAA0B,MAAM;AAE9B,mBAAe,WAAW,CAAC;AAE3B,UAAM,QAAQ,aAAa,WAAW,GAChC,EAAE,UAAU,IAAI,SAAS;AAC/B,QAAI,CAAC,UAAU,SAAS,KAAK,GAAG;AAC9B,YAAM,WAAW,gBAAgB,UAAU,SAAS;AACpD,gBAAU,OAAO,aAAa,QAAQ,CAAC,GACvC,UAAU,IAAI,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,WAAW,CAAC,GAIhB,iCAEI;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,yBAAyB;AAAA,UACvB,QAAQ;AAAA,sBACE,aAAa,OAAO,CAAC;AAAA,wBACnB,aAAa,MAAM,CAAC;AAAA,0CACF,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,uBAK7B,aAAa,MAAM,CAAC,eAAe,aAAa,OAAO,CAAC;AAAA;AAAA,QAErE;AAAA;AAAA,IACF;AAAA,IAEF;AAAA,MAAC,cAAc;AAAA,MAAd;AAAA,QACC,OAAO;AAAA,UACL,OAAO;AAAA,YACL,QAAQ;AAAA,YACR,SAAS;AAAA,UACX;AAAA,UACA,CAAC,aAAa,kBAAkB;AAAA,QAClC;AAAA,QAEC;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAEO,MAAM,YAAY,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF,MAIM;AACJ,QAAM,CAAC,WAAW,IAAI,eAAe;AAErC,SACE,iCAGE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QAGT,0BAAwB;AAAA,QACxB,IAAG;AAAA,QACH,MAAK;AAAA,QACL,SAAS,UAAU,gBAAgB,SAAS,YAAY;AAAA;AAAA,IAC1D;AAAA,IAGA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,yBAAyB;AAAA,UACvB,QAAQ;AAAA;AAAA,iCAEe,UAAU;AAAA;AAAA,oCAEP,SAAS,QAAQ,UAAU;AAAA;AAAA,QAEvD;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;",
5
- "names": []
4
+ "mappings": "AAAA,SAAS,iCAAiC;AAE1C,SAAS,qBAAqB;AAO9B,SAAS,iBAAiB,uBAAuB;AACjD,SAAS,eAAe,oBAAoB,eAAe,iBAAAA,sBAAqB;AA0B5E,mBAEI,KAFJ;AAxBJ,MAAM,aAAa;AAEZ,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA,eAAe,CAAC,SAAS,KAAK,IAAI;AACpC,GAGG;AACD,QAAM,EAAE,MAAM,IAAI,cAAc;AAG9B,mCAA0B,MAAM;AAC9B,UAAM,QAAQ,aAAa,KAAK,GAC1B,EAAE,UAAU,IAAI,SAAS;AAC/B,QAAI,CAAC,UAAU,SAAS,KAAK,GAAG;AAC9B,YAAM,WAAW,UAAU,UAAU,SAAS;AAC9C,gBAAU,OAAO,aAAa,QAAQ,CAAC,GACvC,UAAU,IAAI,KAAK;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC,GAIV,iCAEI;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,yBAAyB;AAAA,UACvB,QAAQ;AAAA,YACR,aAAa,OAAO,CAAC;AAAA,YACrB,aAAa,MAAM,CAAC;AAAA,gCACA,UAAU;AAAA;AAAA;AAAA;AAAA,aAI7B,aAAa,MAAM,CAAC,eAAe,aAAa,OAAO,CAAC;AAAA;AAAA,QAE3D;AAAA;AAAA,IACF;AAAA,IAED;AAAA,KACH;AAEJ;AAEO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,MAAM,IAAI,cAAc;AAEhC,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAS;AAAA,QACT,0BAAwB;AAAA,QACxB,IAAG;AAAA,QACH,MAAK;AAAA,QACL,SAAS,UAAU,UAAU,SAAS,YAAY;AAAA;AAAA,IACpD;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,yBAAyB;AAAA,UACvB,QAAQ;AAAA;AAAA,iCAEe,UAAU;AAAA;AAAA,oCAEP,SAAS,QAAQ,UAAU;AAAA;AAAA,QAEvD;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;",
5
+ "names": ["useUserScheme"]
6
6
  }
@@ -1,80 +1,56 @@
1
- import { setColorScheme, useColorScheme as useColorSchemeBase, useColorSchemeSetting } from "@vxrn/universal-color-scheme";
2
1
  import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
3
- import { createContext, useContext, useMemo } from "react";
4
- import { getColorScheme, onColorSchemeChange } from "@vxrn/universal-color-scheme";
2
+ import { useUserScheme } from "./userScheme.mjs";
3
+ import { getSystemScheme, useSystemScheme } from "./systemScheme.mjs";
4
+ import { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme as useUserScheme2 } from "./userScheme.mjs";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
- const storageKey = "vxrn-scheme",
7
- clearColorSchemeSetting = () => {
8
- setSchemeSetting("system");
9
- },
10
- getSetting = () => typeof localStorage < "u" && localStorage.getItem(storageKey) || "system",
11
- SchemeContext = createContext({
12
- setting: "system",
13
- scheme: "light"
14
- }),
15
- useColorScheme = () => {
16
- const [state] = useColorSchemeBase();
17
- return [state, setSchemeSetting];
18
- };
19
- function useSchemeSetting() {
20
- return [useContext(SchemeContext), setSchemeSetting];
21
- }
22
- function setSchemeSetting(next) {
23
- typeof localStorage < "u" && localStorage.setItem(storageKey, next), setColorScheme(next);
24
- }
6
+ const storageKey = "vxrn-scheme";
25
7
  function SchemeProvider({
26
8
  children,
27
- // defaults to tamagui-compatible
28
9
  getClassName = name => `t_${name}`
29
10
  }) {
30
- const [colorSchemeSetting] = useColorSchemeSetting(),
31
- [colorScheme] = useColorScheme();
11
+ const {
12
+ value
13
+ } = useUserScheme();
32
14
  return useIsomorphicLayoutEffect(() => {
33
- setColorScheme(getSetting());
34
- const toAdd = getClassName(colorScheme),
15
+ const toAdd = getClassName(value),
35
16
  {
36
17
  classList
37
18
  } = document.documentElement;
38
19
  if (!classList.contains(toAdd)) {
39
- const toRemove = colorScheme === "light" ? "dark" : "light";
20
+ const toRemove = value === "light" ? "dark" : "light";
40
21
  classList.remove(getClassName(toRemove)), classList.add(toAdd);
41
22
  }
42
- }, [colorScheme]), /* @__PURE__ */jsxs(Fragment, {
23
+ }, [value]), /* @__PURE__ */jsxs(Fragment, {
43
24
  children: [/* @__PURE__ */jsx("script", {
44
25
  dangerouslySetInnerHTML: {
45
26
  __html: `let d = document.documentElement.classList
46
- d.remove('${getClassName("light")}')
47
- d.remove('${getClassName("dark")}')
48
- let e = localStorage.getItem('${storageKey}')
49
- let t =
50
- 'system' === e || !e
51
- ? window.matchMedia('(prefers-color-scheme: dark)').matches
52
- : e === 'dark'
53
- t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
54
- `
27
+ d.remove('${getClassName("light")}')
28
+ d.remove('${getClassName("dark")}')
29
+ let e = localStorage.getItem('${storageKey}')
30
+ let t = 'system' === e || !e
31
+ ? window.matchMedia('(prefers-color-scheme: dark)').matches
32
+ : e === 'dark'
33
+ t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
34
+ `
55
35
  }
56
- }), /* @__PURE__ */jsx(SchemeContext.Provider, {
57
- value: useMemo(() => ({
58
- scheme: colorScheme,
59
- setting: colorSchemeSetting
60
- }), [colorScheme, colorSchemeSetting]),
61
- children
62
- })]
36
+ }), children]
63
37
  });
64
38
  }
65
- const MetaTheme = ({
39
+ function MetaTheme({
66
40
  color,
67
41
  darkColor,
68
42
  lightColor
69
- }) => {
70
- const [colorScheme] = useColorScheme();
43
+ }) {
44
+ const {
45
+ value
46
+ } = useUserScheme();
71
47
  return /* @__PURE__ */jsxs(Fragment, {
72
48
  children: [/* @__PURE__ */jsx("meta", {
73
49
  itemProp: "__deopt",
74
50
  suppressHydrationWarning: !0,
75
51
  id: "vxrn-theme-color",
76
52
  name: "theme-color",
77
- content: color ?? (colorScheme === "dark" ? darkColor : lightColor)
53
+ content: color ?? (value === "dark" ? darkColor : lightColor)
78
54
  }), /* @__PURE__ */jsx("script", {
79
55
  id: "meta-theme-hydrate",
80
56
  dangerouslySetInnerHTML: {
@@ -83,10 +59,10 @@ let dc = document.getElementById('vxrn-theme-color')
83
59
  let e1 = localStorage.getItem('${storageKey}')
84
60
  let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
85
61
  dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
86
- `
62
+ `
87
63
  }
88
64
  })]
89
65
  });
90
- };
91
- export { MetaTheme, SchemeProvider, clearColorSchemeSetting, getColorScheme, onColorSchemeChange, setSchemeSetting, useColorScheme, useSchemeSetting };
66
+ }
67
+ export { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };
92
68
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["setColorScheme","useColorScheme","useColorSchemeBase","useColorSchemeSetting","useIsomorphicLayoutEffect","createContext","useContext","useMemo","getColorScheme","onColorSchemeChange","Fragment","jsx","jsxs","storageKey","clearColorSchemeSetting","setSchemeSetting","getSetting","localStorage","getItem","SchemeContext","setting","scheme","state","useSchemeSetting","next","setItem","SchemeProvider","children","getClassName","name","colorSchemeSetting","colorScheme","toAdd","classList","document","documentElement","contains","toRemove","remove","add","dangerouslySetInnerHTML","__html","Provider","value","MetaTheme","color","darkColor","lightColor","itemProp","suppressHydrationWarning","id","content"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","useUserScheme","getSystemScheme","useSystemScheme","getUserScheme","onUserSchemeChange","setUserScheme","useUserScheme2","Fragment","jsx","jsxs","storageKey","SchemeProvider","children","getClassName","name","value","toAdd","classList","document","documentElement","contains","toRemove","remove","add","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","itemProp","suppressHydrationWarning","id","content"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAE1C,SAASC,aAAA,QAAqB;AAO9B,SAASC,eAAA,EAAiBC,eAAA,QAAuB;AACjD,SAASC,aAAA,EAAeC,kBAAA,EAAoBC,aAAA,EAAeL,aAAA,IAAAM,cAAA,QAAqB;AA0B5E,SAAAC,QAAA,EAEIC,GAAA,EAFJC,IAAA;AAxBJ,MAAMC,UAAA,GAAa;AAEZ,SAASC,eAAe;EAC7BC,QAAA;EACAC,YAAA,GAAgBC,IAAA,IAAS,KAAKA,IAAI;AACpC,GAGG;EACD,MAAM;IAAEC;EAAM,IAAIf,aAAA,CAAc;EAG9B,OAAAD,yBAAA,CAA0B,MAAM;IAC9B,MAAMiB,KAAA,GAAQH,YAAA,CAAaE,KAAK;MAC1B;QAAEE;MAAU,IAAIC,QAAA,CAASC,eAAA;IAC/B,IAAI,CAACF,SAAA,CAAUG,QAAA,CAASJ,KAAK,GAAG;MAC9B,MAAMK,QAAA,GAAWN,KAAA,KAAU,UAAU,SAAS;MAC9CE,SAAA,CAAUK,MAAA,CAAOT,YAAA,CAAaQ,QAAQ,CAAC,GACvCJ,SAAA,CAAUM,GAAA,CAAIP,KAAK;IACrB;EACF,GAAG,CAACD,KAAK,CAAC,GAIV,eAAAN,IAAA,CAAAF,QAAA;IAEIK,QAAA,kBAAAJ,GAAA,CAAC;MACCgB,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA,YACRZ,YAAA,CAAa,OAAO,CAAC;AAAA,YACrBA,YAAA,CAAa,MAAM,CAAC;AAAA,gCACAH,UAAU;AAAA;AAAA;AAAA;AAAA,aAI7BG,YAAA,CAAa,MAAM,CAAC,eAAeA,YAAA,CAAa,OAAO,CAAC;AAAA;MAE3D;IAAA,CACF,GAEDD,QAAA;EAAA,CACH;AAEJ;AAEO,SAASc,UAAU;EACxBC,KAAA;EACAC,SAAA;EACAC;AACF,GAIG;EACD,MAAM;IAAEd;EAAM,IAAIf,aAAA,CAAc;EAEhC,OACE,eAAAS,IAAA,CAAAF,QAAA;IACEK,QAAA,kBAAAJ,GAAA,CAAC;MACCsB,QAAA,EAAS;MACTC,wBAAA,EAAwB;MACxBC,EAAA,EAAG;MACHlB,IAAA,EAAK;MACLmB,OAAA,EAASN,KAAA,KAAUZ,KAAA,KAAU,SAASa,SAAA,GAAYC,UAAA;IAAA,CACpD,GACA,eAAArB,GAAA,CAAC;MACCwB,EAAA,EAAG;MACHR,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA;AAAA,iCAEef,UAAU;AAAA;AAAA,oCAEPkB,SAAS,QAAQC,UAAU;AAAA;MAEvD;IAAA,CACF;EAAA,CACF;AAEJ","ignoreList":[]}
@@ -1,69 +1,40 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { setColorScheme, useColorScheme as useColorSchemeBase, useColorSchemeSetting } from "@vxrn/universal-color-scheme";
3
2
  import "@vxrn/use-isomorphic-layout-effect";
4
- import { createContext, useContext, useMemo } from "react";
5
- import { getColorScheme, onColorSchemeChange } from "@vxrn/universal-color-scheme";
6
- var storageKey = "vxrn-scheme",
7
- clearColorSchemeSetting = function () {
8
- setSchemeSetting("system");
9
- };
10
- var SchemeContext = /* @__PURE__ */createContext({
11
- setting: "system",
12
- scheme: "light"
13
- }),
14
- useColorScheme = function () {
15
- var [state] = useColorSchemeBase();
16
- return [state, setSchemeSetting];
17
- };
18
- function useSchemeSetting() {
19
- var values = useContext(SchemeContext);
20
- return [values, setSchemeSetting];
21
- }
22
- function setSchemeSetting(next) {
23
- typeof localStorage < "u" && localStorage.setItem(storageKey, next), setColorScheme(next);
24
- }
3
+ import { useUserScheme } from "./userScheme.native.js";
4
+ import { getSystemScheme, useSystemScheme } from "./systemScheme.native.js";
5
+ import { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme as useUserScheme2 } from "./userScheme.native.js";
6
+ var storageKey = "vxrn-scheme";
25
7
  function SchemeProvider(param) {
26
8
  var {
27
9
  children,
28
- // defaults to tamagui-compatible
29
10
  getClassName = function (name) {
30
11
  return `t_${name}`;
31
12
  }
32
13
  } = param,
33
- [colorSchemeSetting] = useColorSchemeSetting(),
34
- [colorScheme] = useColorScheme();
14
+ {
15
+ value
16
+ } = useUserScheme();
35
17
  return /* @__PURE__ */_jsxs(_Fragment, {
36
- children: [null, /* @__PURE__ */_jsx(SchemeContext.Provider, {
37
- value: useMemo(function () {
38
- return {
39
- scheme: colorScheme,
40
- setting: colorSchemeSetting
41
- };
42
- }, [colorScheme, colorSchemeSetting]),
43
- children
44
- })]
18
+ children: [null, children]
45
19
  });
46
20
  }
47
- var MetaTheme = function (param) {
21
+ function MetaTheme(param) {
48
22
  var {
49
23
  color,
50
24
  darkColor,
51
25
  lightColor
52
26
  } = param,
53
- [colorScheme] = useColorScheme();
27
+ {
28
+ value
29
+ } = useUserScheme();
54
30
  return /* @__PURE__ */_jsxs(_Fragment, {
55
- children: [/* itemProp removes hoisting - react wasnt de-duping it properly causing two in DOM */
56
- /* maybe bug in safari or react */
57
- /* @__PURE__ */_jsx("meta", {
31
+ children: [/* @__PURE__ */_jsx("meta", {
58
32
  itemProp: "__deopt",
59
- // because the script below runs before render it actually ruins our nice ssr logic here
60
- // instead we just avoid the warning its a single tag
61
33
  suppressHydrationWarning: !0,
62
34
  id: "vxrn-theme-color",
63
35
  name: "theme-color",
64
- content: color ?? (colorScheme === "dark" ? darkColor : lightColor)
65
- }), /* ssr compat theme-color */
66
- /* @__PURE__ */_jsx("script", {
36
+ content: color ?? (value === "dark" ? darkColor : lightColor)
37
+ }), /* @__PURE__ */_jsx("script", {
67
38
  id: "meta-theme-hydrate",
68
39
  dangerouslySetInnerHTML: {
69
40
  __html: `
@@ -71,10 +42,10 @@ let dc = document.getElementById('vxrn-theme-color')
71
42
  let e1 = localStorage.getItem('${storageKey}')
72
43
  let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
73
44
  dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
74
- `
45
+ `
75
46
  }
76
47
  })]
77
48
  });
78
- };
79
- export { MetaTheme, SchemeProvider, clearColorSchemeSetting, getColorScheme, onColorSchemeChange, setSchemeSetting, useColorScheme, useSchemeSetting };
49
+ }
50
+ export { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };
80
51
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","setColorScheme","useColorScheme","useColorSchemeBase","useColorSchemeSetting","createContext","useContext","useMemo","getColorScheme","onColorSchemeChange","storageKey","clearColorSchemeSetting","setSchemeSetting","SchemeContext","setting","scheme","state","useSchemeSetting","values","next","localStorage","setItem","SchemeProvider","param","children","getClassName","name","colorSchemeSetting","colorScheme","Provider","value","MetaTheme","color","darkColor","lightColor","itemProp","suppressHydrationWarning","id","content","dangerouslySetInnerHTML","__html"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAAAA,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAAA,SAEEC,cAAA,EAAAC,cAAA,IAAAC,kBAAA,EAAAC,qBAAA;AAAA,OACA,oCAAkB;AAAA,SAClBC,aAAA,EAAAC,UAAA,EAAAC,OAAA;AAAA,SACKC,cAAA,EAAAC,mBAAA;AACP,IAAAC,UAAS;EAAAC,uBAAiC,YAAAA,CAAA;IAC1CC,gBAAS,SAAe;EAKxB;AAgEI,IAAAC,aAAA,GAEI,eAFJR,aAAA;IA9DJS,OAAM,UAAa;IAGjBC,MAAA;EACF;EAEMb,cAAa,YAAAA,CAAA,EACT;IAOR,KAAAc,KAAS,IAAAb,kBAAA;IACT,QAGWa,KAAA,EACXJ,gBAAgB,CAChB;EACF;AAEO,SAASK,iBAAA,EAAmB;EAEjC,IAAAC,MADe,GAAAZ,UAAW,CAAAO,aACV;EAClB,QAEOK,MAAS,EACVN,gBAAO,CAIb;AAEO;AAAwB,SAC7BA,iBAAAO,IAAA;EAAA,OAAAC,YAAA,UAAAA,YAAA,CAAAC,OAAA,CAAAX,UAAA,EAAAS,IAAA,GAAAlB,cAAA,CAAAkB,IAAA;AAAA;AAGF,SAGGG,eAAAC,KAAA;EACD;MAIEC,QAAA;MAEE;MAEAC,YAAM,GAAQ,SAAAA,CAAAC,IAAa;QAE3B,OAAK,KAAAA,IAAU;MACb;IACA,IAAAH,KAAA;IAAA,CAAAI,kBAAiB,IAAavB,qBAC9B,CAAU;IAAA,CAAIwB,WAAK,IAAA1B,cAAA;EAAA,OACrB,eAAAJ,KAAA,CAAAE,SAAA;IACFwB,QAAI,GAMA,MAAC,eAAA5B,IAAA,CAAAiB,aAAA,CAAAgB,QAAA;MAAAC,KAAA,EAAAvB,OAAA;QACC;UACEQ,MAAQ,EAAAa,WAAA;UAAAd,OAAA,EAAAa;QACuB;MACC,IACQC,WAAA,EAAAD,kBAAA;MAAAH;IAAA;EAK2B;AAErE;AAAA,IACFO,SAAA,YAAAA,CAAAR,KAAA;EAAA,IAEF;MAAAS,KAAA;MAAAC,SAAA;MAAAC;IAAA,IAAAX,KAAA;IAAA,CAAAK,WAAA,IAAA1B,cAAA;EAAA,OAAC,eAAcJ,KAAA,CAAAE,SAAA;IAAAwB,QAAd;IACQ;IACE,eACG5B,IAAA;MAAAuC,QACR,WAAS;MAAA;MACX;MAEFC,wBAAA;MAECC,EAAA;MAAAX,IAAA;MACHY,OAAA,EAAAN,KAAA,KAAAJ,WAAA,cAAAK,SAAA,GAAAC,UAAA;IACF,IAEJ;IAEa,eAAatC,IAAA;MACxByC,EAAA;MACAE,uBAAA;QACAC,MAAA;AACF;AAKE,iCAAsB9B,UAAe;AAErC;AAII,oCAAAuB,SAAA,QAAAC,UAAA;AAAA;MAAC;IAAA,EACC;EAGwB;AACrB;AACE,SACmDH,SAAA,EAAAT,cAC1D,EAAAX,uBAGA,EAAAH,cAAC,EAAAC,mBAAA,EAAAG,gBACI,EAAAV,cACH,EAAyBe,gBACf","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","useUserScheme","getSystemScheme","useSystemScheme","getUserScheme","onUserSchemeChange","setUserScheme","useUserScheme2","storageKey","SchemeProvider","param","children","getClassName","name","value","MetaTheme","color","darkColor","lightColor","itemProp","suppressHydrationWarning","id","content","dangerouslySetInnerHTML","__html"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAiC,IAAAC,SAAA;AAE1C,2CAA8B;AAO9B,SAASC,aAAA,QAAiB;AAC1B,SAASC,eAAe,EAAAC,eAAA,QAAoB,0BAAe;AA0BvD,SAAAC,aAEI,EAFJC,kBAAA,EAAAC,aAAA,EAAAL,aAAA,IAAAM,cAAA;AAxBJ,IAAAC,UAAM,gBAAa;AAEZ,SAASC,eAAeC,KAAA;EAC7B;MAAAC,QAAA;MAAAC,YAAA,YAAAA,CAAAC,IAAA;QACA,YAAAA,IAAgB;MAClB;IAGG,IAAAH,KAAA;IAAA;MAAAI;IAAA,IAAAb,aAAA;EACD,OAAM,eAAYH,KAAA,CAAAE,SAAc;IAG9BW,QAAA,GACE,IAAM,EAENA,QAAK;EAEH;AACmB;AACrB,SACEI,SAIJA,CAAAL,KAAA;EAEI;MAAAM,KAAA;MAAAC,SAAA;MAAAC;IAAA,IAAAR,KAAA;IAAA;MAAAI;IAAA,IAAAb,aAAA;EAAA,OAAC,eAAAH,KAAA,CAAAE,SAAA;IAAAW,QAAA,kBACCf,IAAA,OAAyB;MAAAuB,QACvB,EAAQ;MAAAC,wBACY,EAAC;MAAAC,EAAA,EACrB,kBAAa;MAAOR,IAAA;MACUS,OAAA,EAAAN,KAAA,KAAAF,KAAA,cAAAG,SAAA,GAAAC,UAAA;IAAA,mBAAAtB,IAAA;MAAAyB,EAAA,sBAIV;MAAqCE,uBAAA;QAE3DC,MAAA;AAAA;AAAA,iCACFhB,UAAA;AAAA;AAED,oCACHS,SAAA,QAAAC,UAAA;AAEJ;MAEO;IACL;EAEA;AACF;AAKE,SAEAH,SACE,EACEN,cAAA,EAAAP,eAAC,EAAAE,aAAA,EAAAC,kBACU,EAAAC,aACT,EAAwBH,eACrB,EAAAI,cACE,IAAAN,aAAA","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
2
+ import { useState } from "react";
3
+ const media = typeof window < "u" && window.matchMedia ? window.matchMedia("(prefers-color-scheme: dark)") : null;
4
+ function getSystemScheme() {
5
+ return media?.matches ? "dark" : "light";
6
+ }
7
+ function useSystemScheme() {
8
+ const [scheme, setScheme] = useState("light");
9
+ return useIsomorphicLayoutEffect(() => {
10
+ setScheme(getSystemScheme());
11
+ const onChange = () => setScheme(getSystemScheme());
12
+ return media?.addEventListener("change", onChange), () => media?.removeEventListener("change", onChange);
13
+ }, []), scheme;
14
+ }
15
+ export {
16
+ getSystemScheme,
17
+ useSystemScheme
18
+ };
19
+ //# sourceMappingURL=systemScheme.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/systemScheme.ts"],
4
+ "mappings": "AAAA,SAAS,iCAAiC;AAC1C,SAAS,gBAAgB;AAIzB,MAAM,QACJ,OAAO,SAAW,OAAe,OAAO,aACpC,OAAO,WAAW,8BAA8B,IAChD;AAEC,SAAS,kBAA0B;AACxC,SAAO,OAAO,UAAU,SAAS;AACnC;AAEO,SAAS,kBAA0B;AACxC,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,OAAO;AAEpD,mCAA0B,MAAM;AAC9B,cAAU,gBAAgB,CAAC;AAC3B,UAAM,WAAW,MAAM,UAAU,gBAAgB,CAAC;AAClD,kBAAO,iBAAiB,UAAU,QAAQ,GACnC,MAAM,OAAO,oBAAoB,UAAU,QAAQ;AAAA,EAC5D,GAAG,CAAC,CAAC,GAEE;AACT;",
5
+ "names": []
6
+ }