@vxrn/color-scheme 1.13.1 → 1.13.2

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.
@@ -38,21 +38,25 @@ var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-e
38
38
  const storageKey = "vxrn-scheme";
39
39
  function SchemeProvider({
40
40
  children,
41
- getClassName = name => `t_${name}`
41
+ getClassName = name => `t_${name}`,
42
+ defaultScheme
42
43
  }) {
43
44
  const {
44
45
  value
45
46
  } = (0, import_userScheme.useUserScheme)();
46
- return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
47
+ (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
48
+ defaultScheme && typeof localStorage < "u" && (localStorage.getItem(storageKey) || (0, import_userScheme.setUserScheme)(defaultScheme));
49
+ }, []), (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
47
50
  const toAdd = getClassName(value),
51
+ toRemove = getClassName(value === "light" ? "dark" : "light"),
48
52
  {
49
53
  classList
50
54
  } = document.documentElement;
51
- if (!classList.contains(toAdd)) {
52
- const toRemove = value === "light" ? "dark" : "light";
53
- classList.remove(getClassName(toRemove)), classList.add(toAdd);
54
- }
55
- }, [value]), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
55
+ classList.remove(toRemove), classList.contains(toAdd) || classList.add(toAdd);
56
+ }, [value]);
57
+ const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
58
+ seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
59
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
56
60
  children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("script", {
57
61
  suppressHydrationWarning: !0,
58
62
  dangerouslySetInnerHTML: {
@@ -60,8 +64,9 @@ function SchemeProvider({
60
64
  d.remove('${getClassName("light")}')
61
65
  d.remove('${getClassName("dark")}')
62
66
  let e = localStorage.getItem('${storageKey}')
67
+ ${seedStorage}
63
68
  let t = 'system' === e || !e
64
- ? window.matchMedia('(prefers-color-scheme: dark)').matches
69
+ ? ${fallback}
65
70
  : e === 'dark'
66
71
  t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
67
72
  `
@@ -35,7 +35,7 @@ module.exports = __toCommonJS(index_exports);
35
35
  var import_jsx_runtime = require("react/jsx-runtime"),
36
36
  import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"),
37
37
  import_userScheme = require("./userScheme.native.js"),
38
- import_systemScheme = require("./systemScheme"),
38
+ import_systemScheme = require("./systemScheme.native.js"),
39
39
  import_userScheme2 = require("./userScheme.native.js"),
40
40
  storageKey = "vxrn-scheme";
41
41
  function SchemeProvider(param) {
@@ -43,11 +43,14 @@ function SchemeProvider(param) {
43
43
  children,
44
44
  getClassName = function (name) {
45
45
  return `t_${name}`;
46
- }
46
+ },
47
+ defaultScheme
47
48
  } = param,
48
49
  {
49
50
  value
50
- } = (0, import_userScheme.useUserScheme)();
51
+ } = (0, import_userScheme.useUserScheme)(),
52
+ fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
53
+ seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
51
54
  return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
52
55
  children: [null, children]
53
56
  });
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","index_exports","MetaTheme","SchemeProvider","getSystemScheme","import_systemScheme","getUserScheme","import_userScheme2","onUserSchemeChange","setUserScheme","useSystemScheme","useUserScheme","module","exports","import_jsx_runtime","require","import_use_isomorphic_layout_effect","import_userScheme","storageKey","param","children","getClassName","jsxs","Fragment","color","darkColor","lightColor","jsx","suppressHydrationWarning","id","content","dangerouslySetInnerHTML","__html"],"sources":["index.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: !0 });\n}, __copyProps = (to, from, except, desc) => {\n if (from && typeof from == \"object\" || typeof from == \"function\")\n for (let key of __getOwnPropNames(from))\n !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: !0 }), mod);\nvar index_exports = {};\n__export(index_exports, {\n MetaTheme: () => MetaTheme,\n SchemeProvider: () => SchemeProvider,\n getSystemScheme: () => import_systemScheme.getSystemScheme,\n getUserScheme: () => import_userScheme2.getUserScheme,\n onUserSchemeChange: () => import_userScheme2.onUserSchemeChange,\n setUserScheme: () => import_userScheme2.setUserScheme,\n useSystemScheme: () => import_systemScheme.useSystemScheme,\n useUserScheme: () => import_userScheme2.useUserScheme\n});\nmodule.exports = __toCommonJS(index_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\"), import_use_isomorphic_layout_effect = require(\"@vxrn/use-isomorphic-layout-effect\"), import_userScheme = require(\"./userScheme\"), import_systemScheme = require(\"./systemScheme\"), import_userScheme2 = require(\"./userScheme\"), storageKey = \"vxrn-scheme\";\nfunction SchemeProvider(param) {\n var { children, getClassName = function(name) {\n return `t_${name}`;\n } } = param, { value } = (0, import_userScheme.useUserScheme)();\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {\n children: [\n null,\n children\n ]\n });\n}\nfunction MetaTheme(param) {\n var { color, darkColor, lightColor } = param, { value } = (0, import_userScheme.useUserScheme)();\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"meta\", {\n suppressHydrationWarning: !0,\n id: \"vxrn-theme-color\",\n name: \"theme-color\",\n content: color ?? (value === \"dark\" ? darkColor : lightColor)\n }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"script\", {\n suppressHydrationWarning: !0,\n id: \"meta-theme-hydrate\",\n dangerouslySetInnerHTML: {\n __html: `\nlet dc = document.getElementById('vxrn-theme-color')\nlet e1 = localStorage.getItem('${storageKey}')\nlet isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'\ndc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')\n`\n }\n })\n ]\n });\n}\n//# sourceMappingURL=index.js.map\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","MetaTheme","SchemeProvider","getSystemScheme","import_systemScheme","getUserScheme","import_userScheme2","onUserSchemeChange","setUserScheme","useSystemScheme","useUserScheme","module","exports","import_jsx_runtime","require","import_use_isomorphic_layout_effect","import_userScheme","storageKey","param","children","getClassName","name","defaultScheme","fallback","seedStorage","jsxs","Fragment","color","darkColor","lightColor","jsx","suppressHydrationWarning","id","content","dangerouslySetInnerHTML","__html"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,aAAA;AAAAC,QAAA,CAAAD,aAAA;EAAAE,SAAA,EAAAA,CAAA,KAAAA,SAAA;EAAAC,cAAA,EAAAA,CAAA,KAAAA,cAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAC,mBAAA,CAAAD,eAAA;EAAAE,aAAA,EAAAA,CAAA,KAAAC,kBAAA,CAAAD,aAAA;EAAAE,kBAAA,EAAAA,CAAA,KAAAD,kBAAA,CAAAC,kBAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAF,kBAAA,CAAAE,aAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAL,mBAAA,CAAAK,eAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAJ,kBAAA,CAAAI;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAlB,YAAA,CAAAK,aAA0C;AAiB1C,IAAAc,kBAAmB,GAAAC,OAAA;EAAAC,mCAAA,GAAAD,OAAA;EAAAE,iBAAA,GAAAF,OAAA;EAAAV,mBAAA,GAAAU,OAAA;EAAAR,kBAAA,GAAAQ,OAAA;EAAAG,UAAA;AAEZ,SAASf,eAAegB,KAAA;EAC7B;MAAAC,QAAA;MAAAC,YAAA,YAAAA,CAAAC,IAAA;QACA,YAAAA,IAAgB;MAChB;MAAAC;IAAA,IAAAJ,KAAA;IAAA;MAAApB;IAAA,QAAAkB,iBAAA,CAAAN,aAAA;IAAAa,QAAA,GAAAD,aAAA,OAAAA,aAAA;IAAAE,WAAA,GAAAF,aAAA,mCAAAL,UAAA,MAAAK,aAAA;EACF,OAKG,mBAAAT,kBAAA,CAAAY,IAAA,EAAAZ,kBAAA,CAAAa,QAAA;IACDP,QAAQ,GAIN,MACMA,QAAA;EAQJ;AAGA;AAEqB,SAEnBlB,SAAMA,CAAAiB,KAAA;EAGZ;MAAMS,KAAA;MAAAC,SAAW;MAAAC;IACb,IAAIX,KAAA;IAAA;MAAApB;IAAa,QAAAkB,iBACjB,CAAAN,aAAA;EAMJ,OACE,mBAAAG,kBAAA,CAAAY,IAAA,EAAAZ,kBAAA,CAAAa,QAAA;IAEIP,QAAA,GAAC,mBAAAN,kBAAA,CAAAiB,GAAA;MAAAC,wBAAA;MACCC,EAAA;MACAX,IAAA;MAAyBY,OACvB,EAAAN,KAAQ,KAAA7B,KAAA,cAAA8B,SAAA,GAAAC,UAAA;IAAA,IACa,eACrB,IAAahB,kBAAO,CAAAiB,GAAA;MAAAC,wBACA;MAC9BC,EAAA,sBAAW;MAAAE,uBAAA;QAEPC,MAAQ;AAAA;AAAA,iCAEmBlB,UAAA;AAAoC;AAAA,oCAE3DW,SAAA,QAAAC,UAAA;AAAA;MACF;IAED;EAGP;AAEO","ignoreList":[]}
@@ -31,7 +31,7 @@ module.exports = __toCommonJS(userScheme_exports);
31
31
  var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"),
32
32
  import_react = require("react"),
33
33
  import_react_native = require("react-native"),
34
- import_systemScheme = require("./systemScheme"),
34
+ import_systemScheme = require("./systemScheme.native.js"),
35
35
  listeners = /* @__PURE__ */new Set(),
36
36
  storageKey = "vxrn-scheme";
37
37
  function getInitialSetting() {
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","userScheme_exports","getUserScheme","onUserSchemeChange","setUserScheme","useUserScheme","module","exports","import_use_isomorphic_layout_effect","require","import_react","import_react_native","import_systemScheme","listeners","Set","storageKey","getInitialSetting","localStorage","stored","getItem","getInitialValue","setting","Appearance","getColorScheme","initialSetting","currentSetting","currentValue","addChangeListener","next","colorScheme","updateValueFromSystem","isWebListening","startWebListener","_window_matchMedia","_window","_matcher_addEventListener","matcher","window","matchMedia","onSystemChange","addEventListener","resolveValue","forEach","l","updateScheme","setColorScheme","setItem","listener","add","delete","state","setState","useState","useIsomorphicLayoutEffect","dispose","useMemo","set"],"sources":["userScheme.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: !0 });\n}, __copyProps = (to, from, except, desc) => {\n if (from && typeof from == \"object\" || typeof from == \"function\")\n for (let key of __getOwnPropNames(from))\n !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: !0 }), mod);\nvar userScheme_exports = {};\n__export(userScheme_exports, {\n getUserScheme: () => getUserScheme,\n onUserSchemeChange: () => onUserSchemeChange,\n setUserScheme: () => setUserScheme,\n useUserScheme: () => useUserScheme\n});\nmodule.exports = __toCommonJS(userScheme_exports);\nvar import_use_isomorphic_layout_effect = require(\"@vxrn/use-isomorphic-layout-effect\"), import_react = require(\"react\"), import_react_native = require(\"react-native\"), import_systemScheme = require(\"./systemScheme\"), listeners = /* @__PURE__ */ new Set(), storageKey = \"vxrn-scheme\";\nfunction getInitialSetting() {\n if (typeof localStorage < \"u\") {\n var stored = localStorage.getItem(storageKey);\n if (stored === \"light\" || stored === \"dark\" || stored === \"system\")\n return stored;\n }\n return \"system\";\n}\nfunction getInitialValue(setting) {\n return setting === \"system\" ? import_react_native.Appearance.getColorScheme() === \"dark\" ? \"dark\" : \"light\" : setting;\n}\nvar initialSetting = getInitialSetting(), currentSetting = initialSetting, currentValue = getInitialValue(initialSetting);\nimport_react_native.Appearance.addChangeListener(function(next) {\n currentSetting === \"system\" && next.colorScheme && updateValueFromSystem();\n});\nvar isWebListening = !1;\nfunction startWebListener() {\n var _window_matchMedia, _window, _matcher_addEventListener;\n if (!isWebListening) {\n isWebListening = !0;\n 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, onSystemChange = function() {\n currentSetting === \"system\" && updateValueFromSystem();\n };\n onSystemChange(), matcher == null || (_matcher_addEventListener = matcher.addEventListener) === null || _matcher_addEventListener === void 0 || _matcher_addEventListener.call(matcher, \"change\", onSystemChange);\n }\n}\nfunction resolveValue(setting) {\n return setting === \"system\" ? import_react_native.Appearance.getColorScheme() === \"dark\" ? \"dark\" : \"light\" : setting;\n}\nfunction updateValueFromSystem() {\n var value = resolveValue(\"system\");\n value !== currentValue && (currentValue = value, listeners.forEach(function(l) {\n l(currentSetting, currentValue);\n }));\n}\nfunction updateScheme(setting) {\n var value = setting === \"system\" ? resolveValue(\"system\") : setting;\n (value !== currentValue || currentSetting !== setting) && (currentSetting = setting, currentValue = value, setting !== \"system\" ? import_react_native.Appearance.setColorScheme(value) : import_react_native.Appearance.setColorScheme(\"unspecified\"), listeners.forEach(function(l) {\n l(currentSetting, currentValue);\n }));\n}\nfunction setUserScheme(setting) {\n typeof localStorage < \"u\" && localStorage.setItem(storageKey, setting), updateScheme(setting);\n}\nfunction getUserScheme() {\n return {\n setting: currentSetting,\n value: currentValue\n };\n}\nfunction onUserSchemeChange(listener) {\n return listeners.add(listener), listener(currentSetting, currentValue), function() {\n listeners.delete(listener);\n };\n}\nfunction useUserScheme() {\n var [state, setState] = (0, import_react.useState)(function() {\n return getUserScheme();\n });\n return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(function() {\n if (typeof localStorage < \"u\") {\n var stored = localStorage.getItem(storageKey);\n stored && updateScheme(stored);\n }\n var dispose = onUserSchemeChange(function(setting, value) {\n setState({\n setting,\n value\n });\n });\n return startWebListener(), dispose;\n }, []), (0, import_react.useMemo)(function() {\n return {\n setting: state.setting,\n value: state.value,\n set: setUserScheme\n };\n }, [\n state.setting,\n state.value\n ]);\n}\n//# sourceMappingURL=userScheme.js.map\n"],"mappings":"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","ignoreList":[]}
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","getInitialSetting","localStorage","stored","getItem","getInitialValue","setting","Appearance","getColorScheme","initialSetting","currentSetting","currentValue","addChangeListener","next","colorScheme","updateValueFromSystem","isWebListening","startWebListener","_window_matchMedia","_window","_matcher_addEventListener","matcher","window","matchMedia","call","onSystemChange","addEventListener","resolveValue","forEach","l","updateScheme","setColorScheme","setItem","listener","add","delete","state","setState","useState","useIsomorphicLayoutEffect"],"sources":["../../src/userScheme.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -1,26 +1,30 @@
1
1
  import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
2
- import { useUserScheme } from "./userScheme.mjs";
2
+ import { setUserScheme, useUserScheme } from "./userScheme.mjs";
3
3
  import { getSystemScheme, useSystemScheme } from "./systemScheme.mjs";
4
- import { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme as useUserScheme2 } from "./userScheme.mjs";
4
+ import { getUserScheme, onUserSchemeChange, setUserScheme as setUserScheme2, useUserScheme as useUserScheme2 } from "./userScheme.mjs";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  const storageKey = "vxrn-scheme";
7
7
  function SchemeProvider({
8
8
  children,
9
- getClassName = name => `t_${name}`
9
+ getClassName = name => `t_${name}`,
10
+ defaultScheme
10
11
  }) {
11
12
  const {
12
13
  value
13
14
  } = useUserScheme();
14
- return useIsomorphicLayoutEffect(() => {
15
+ useIsomorphicLayoutEffect(() => {
16
+ defaultScheme && typeof localStorage < "u" && (localStorage.getItem(storageKey) || setUserScheme(defaultScheme));
17
+ }, []), useIsomorphicLayoutEffect(() => {
15
18
  const toAdd = getClassName(value),
19
+ toRemove = getClassName(value === "light" ? "dark" : "light"),
16
20
  {
17
21
  classList
18
22
  } = document.documentElement;
19
- if (!classList.contains(toAdd)) {
20
- const toRemove = value === "light" ? "dark" : "light";
21
- classList.remove(getClassName(toRemove)), classList.add(toAdd);
22
- }
23
- }, [value]), /* @__PURE__ */jsxs(Fragment, {
23
+ classList.remove(toRemove), classList.contains(toAdd) || classList.add(toAdd);
24
+ }, [value]);
25
+ const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
26
+ seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
27
+ return /* @__PURE__ */jsxs(Fragment, {
24
28
  children: [/* @__PURE__ */jsx("script", {
25
29
  suppressHydrationWarning: !0,
26
30
  dangerouslySetInnerHTML: {
@@ -28,8 +32,9 @@ function SchemeProvider({
28
32
  d.remove('${getClassName("light")}')
29
33
  d.remove('${getClassName("dark")}')
30
34
  let e = localStorage.getItem('${storageKey}')
35
+ ${seedStorage}
31
36
  let t = 'system' === e || !e
32
- ? window.matchMedia('(prefers-color-scheme: dark)').matches
37
+ ? ${fallback}
33
38
  : e === 'dark'
34
39
  t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
35
40
  `
@@ -65,5 +70,5 @@ dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
65
70
  })]
66
71
  });
67
72
  }
68
- export { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };
73
+ export { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme2 as setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };
69
74
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","id","content"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAE1C,SAASC,aAAA,QAAqB;AAO9B,SAASC,eAAA,EAAiBC,eAAA,QAAuB;AACjD,SACEC,aAAA,EACAC,kBAAA,EACAC,aAAA,EACAL,aAAA,IAAAM,cAAA,QACK;AA0BH,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,wBAAA,EAAwB;MACxBC,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA,YACRb,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,SAASe,UAAU;EACxBC,KAAA;EACAC,SAAA;EACAC;AACF,GAIG;EACD,MAAM;IAAEf;EAAM,IAAIf,aAAA,CAAc;EAEhC,OACE,eAAAS,IAAA,CAAAF,QAAA;IACEK,QAAA,kBAAAJ,GAAA,CAAC;MACCgB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHjB,IAAA,EAAK;MACLkB,OAAA,EAASJ,KAAA,KAAUb,KAAA,KAAU,SAASc,SAAA,GAAYC,UAAA;IAAA,CACpD,GACA,eAAAtB,GAAA,CAAC;MACCgB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHN,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA;AAAA,iCAEehB,UAAU;AAAA;AAAA,oCAEPmB,SAAS,QAAQC,UAAU;AAAA;MAEvD;IAAA,CACF;EAAA,CACF;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","setUserScheme","useUserScheme","getSystemScheme","useSystemScheme","getUserScheme","onUserSchemeChange","setUserScheme2","useUserScheme2","Fragment","jsx","jsxs","storageKey","SchemeProvider","children","getClassName","name","defaultScheme","value","localStorage","getItem","toAdd","toRemove","classList","document","documentElement","remove","contains","add","fallback","seedStorage","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","id","content"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAE1C,SAASC,aAAA,EAAeC,aAAA,QAAqB;AAO7C,SAASC,eAAA,EAAiBC,eAAA,QAAuB;AACjD,SACEC,aAAA,EACAC,kBAAA,EACAL,aAAA,IAAAM,cAAA,EACAL,aAAA,IAAAM,cAAA,QACK;AA8CH,SAAAC,QAAA,EAEIC,GAAA,EAFJC,IAAA;AA5CJ,MAAMC,UAAA,GAAa;AAEZ,SAASC,eAAe;EAC7BC,QAAA;EACAC,YAAA,GAAgBC,IAAA,IAAS,KAAKA,IAAI;EAClCC;AACF,GAKG;EACD,MAAM;IAAEC;EAAM,IAAIhB,aAAA,CAAc;EAI9BF,yBAAA,CAA0B,MAAM;IAC1BiB,aAAA,IAAiB,OAAOE,YAAA,GAAiB,QACtCA,YAAA,CAAaC,OAAA,CAAQR,UAAU,KAClCX,aAAA,CAAcgB,aAAa;EAGjC,GAAG,EAAE,GAELjB,yBAAA,CAA0B,MAAM;IAC9B,MAAMqB,KAAA,GAAQN,YAAA,CAAaG,KAAK;MAC1BI,QAAA,GAAWP,YAAA,CAAaG,KAAA,KAAU,UAAU,SAAS,OAAO;MAC5D;QAAEK;MAAU,IAAIC,QAAA,CAASC,eAAA;IAC/BF,SAAA,CAAUG,MAAA,CAAOJ,QAAQ,GACpBC,SAAA,CAAUI,QAAA,CAASN,KAAK,KAC3BE,SAAA,CAAUK,GAAA,CAAIP,KAAK;EAEvB,GAAG,CAACH,KAAK,CAAC;EAGZ,MAAMW,QAAA,GAAWZ,aAAA,GACb,IAAIA,aAAa,iBACjB;IAEEa,WAAA,GAAcb,aAAA,GAChB,gCAAgCL,UAAU,MAAMK,aAAa,QAC7D;EAEJ,OACE,eAAAN,IAAA,CAAAF,QAAA;IAEIK,QAAA,kBAAAJ,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBC,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA,YACRlB,YAAA,CAAa,OAAO,CAAC;AAAA,YACrBA,YAAA,CAAa,MAAM,CAAC;AAAA,gCACAH,UAAU;AAAA,EACxCkB,WAAW;AAAA;AAAA,MAEPD,QAAQ;AAAA;AAAA,aAEDd,YAAA,CAAa,MAAM,CAAC,eAAeA,YAAA,CAAa,OAAO,CAAC;AAAA;MAE3D;IAAA,CACF,GAEDD,QAAA;EAAA,CACH;AAEJ;AAEO,SAASoB,UAAU;EACxBC,KAAA;EACAC,SAAA;EACAC;AACF,GAIG;EACD,MAAM;IAAEnB;EAAM,IAAIhB,aAAA,CAAc;EAEhC,OACE,eAAAS,IAAA,CAAAF,QAAA;IACEK,QAAA,kBAAAJ,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHtB,IAAA,EAAK;MACLuB,OAAA,EAASJ,KAAA,KAAUjB,KAAA,KAAU,SAASkB,SAAA,GAAYC,UAAA;IAAA,CACpD,GACA,eAAA3B,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHN,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA;AAAA,iCAEerB,UAAU;AAAA;AAAA,oCAEPwB,SAAS,QAAQC,UAAU;AAAA;MAEvD;IAAA,CACF;EAAA,CACF;AAEJ","ignoreList":[]}
@@ -1,26 +1,30 @@
1
1
  import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
2
- import { useUserScheme } from "./userScheme.mjs";
2
+ import { setUserScheme, useUserScheme } from "./userScheme.mjs";
3
3
  import { getSystemScheme, useSystemScheme } from "./systemScheme.mjs";
4
- import { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme as useUserScheme2 } from "./userScheme.mjs";
4
+ import { getUserScheme, onUserSchemeChange, setUserScheme as setUserScheme2, useUserScheme as useUserScheme2 } from "./userScheme.mjs";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  const storageKey = "vxrn-scheme";
7
7
  function SchemeProvider({
8
8
  children,
9
- getClassName = name => `t_${name}`
9
+ getClassName = name => `t_${name}`,
10
+ defaultScheme
10
11
  }) {
11
12
  const {
12
13
  value
13
14
  } = useUserScheme();
14
- return useIsomorphicLayoutEffect(() => {
15
+ useIsomorphicLayoutEffect(() => {
16
+ defaultScheme && typeof localStorage < "u" && (localStorage.getItem(storageKey) || setUserScheme(defaultScheme));
17
+ }, []), useIsomorphicLayoutEffect(() => {
15
18
  const toAdd = getClassName(value),
19
+ toRemove = getClassName(value === "light" ? "dark" : "light"),
16
20
  {
17
21
  classList
18
22
  } = document.documentElement;
19
- if (!classList.contains(toAdd)) {
20
- const toRemove = value === "light" ? "dark" : "light";
21
- classList.remove(getClassName(toRemove)), classList.add(toAdd);
22
- }
23
- }, [value]), /* @__PURE__ */jsxs(Fragment, {
23
+ classList.remove(toRemove), classList.contains(toAdd) || classList.add(toAdd);
24
+ }, [value]);
25
+ const fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
26
+ seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
27
+ return /* @__PURE__ */jsxs(Fragment, {
24
28
  children: [/* @__PURE__ */jsx("script", {
25
29
  suppressHydrationWarning: !0,
26
30
  dangerouslySetInnerHTML: {
@@ -28,8 +32,9 @@ function SchemeProvider({
28
32
  d.remove('${getClassName("light")}')
29
33
  d.remove('${getClassName("dark")}')
30
34
  let e = localStorage.getItem('${storageKey}')
35
+ ${seedStorage}
31
36
  let t = 'system' === e || !e
32
- ? window.matchMedia('(prefers-color-scheme: dark)').matches
37
+ ? ${fallback}
33
38
  : e === 'dark'
34
39
  t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
35
40
  `
@@ -65,5 +70,5 @@ dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
65
70
  })]
66
71
  });
67
72
  }
68
- export { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };
73
+ export { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme2 as setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };
69
74
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
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","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","id","content"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAE1C,SAASC,aAAA,QAAqB;AAO9B,SAASC,eAAA,EAAiBC,eAAA,QAAuB;AACjD,SACEC,aAAA,EACAC,kBAAA,EACAC,aAAA,EACAL,aAAA,IAAAM,cAAA,QACK;AA0BH,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,wBAAA,EAAwB;MACxBC,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA,YACRb,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,SAASe,UAAU;EACxBC,KAAA;EACAC,SAAA;EACAC;AACF,GAIG;EACD,MAAM;IAAEf;EAAM,IAAIf,aAAA,CAAc;EAEhC,OACE,eAAAS,IAAA,CAAAF,QAAA;IACEK,QAAA,kBAAAJ,GAAA,CAAC;MACCgB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHjB,IAAA,EAAK;MACLkB,OAAA,EAASJ,KAAA,KAAUb,KAAA,KAAU,SAASc,SAAA,GAAYC,UAAA;IAAA,CACpD,GACA,eAAAtB,GAAA,CAAC;MACCgB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHN,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA;AAAA,iCAEehB,UAAU;AAAA;AAAA,oCAEPmB,SAAS,QAAQC,UAAU;AAAA;MAEvD;IAAA,CACF;EAAA,CACF;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","setUserScheme","useUserScheme","getSystemScheme","useSystemScheme","getUserScheme","onUserSchemeChange","setUserScheme2","useUserScheme2","Fragment","jsx","jsxs","storageKey","SchemeProvider","children","getClassName","name","defaultScheme","value","localStorage","getItem","toAdd","toRemove","classList","document","documentElement","remove","contains","add","fallback","seedStorage","suppressHydrationWarning","dangerouslySetInnerHTML","__html","MetaTheme","color","darkColor","lightColor","id","content"],"sources":["../../src/index.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAE1C,SAASC,aAAA,EAAeC,aAAA,QAAqB;AAO7C,SAASC,eAAA,EAAiBC,eAAA,QAAuB;AACjD,SACEC,aAAA,EACAC,kBAAA,EACAL,aAAA,IAAAM,cAAA,EACAL,aAAA,IAAAM,cAAA,QACK;AA8CH,SAAAC,QAAA,EAEIC,GAAA,EAFJC,IAAA;AA5CJ,MAAMC,UAAA,GAAa;AAEZ,SAASC,eAAe;EAC7BC,QAAA;EACAC,YAAA,GAAgBC,IAAA,IAAS,KAAKA,IAAI;EAClCC;AACF,GAKG;EACD,MAAM;IAAEC;EAAM,IAAIhB,aAAA,CAAc;EAI9BF,yBAAA,CAA0B,MAAM;IAC1BiB,aAAA,IAAiB,OAAOE,YAAA,GAAiB,QACtCA,YAAA,CAAaC,OAAA,CAAQR,UAAU,KAClCX,aAAA,CAAcgB,aAAa;EAGjC,GAAG,EAAE,GAELjB,yBAAA,CAA0B,MAAM;IAC9B,MAAMqB,KAAA,GAAQN,YAAA,CAAaG,KAAK;MAC1BI,QAAA,GAAWP,YAAA,CAAaG,KAAA,KAAU,UAAU,SAAS,OAAO;MAC5D;QAAEK;MAAU,IAAIC,QAAA,CAASC,eAAA;IAC/BF,SAAA,CAAUG,MAAA,CAAOJ,QAAQ,GACpBC,SAAA,CAAUI,QAAA,CAASN,KAAK,KAC3BE,SAAA,CAAUK,GAAA,CAAIP,KAAK;EAEvB,GAAG,CAACH,KAAK,CAAC;EAGZ,MAAMW,QAAA,GAAWZ,aAAA,GACb,IAAIA,aAAa,iBACjB;IAEEa,WAAA,GAAcb,aAAA,GAChB,gCAAgCL,UAAU,MAAMK,aAAa,QAC7D;EAEJ,OACE,eAAAN,IAAA,CAAAF,QAAA;IAEIK,QAAA,kBAAAJ,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBC,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA,YACRlB,YAAA,CAAa,OAAO,CAAC;AAAA,YACrBA,YAAA,CAAa,MAAM,CAAC;AAAA,gCACAH,UAAU;AAAA,EACxCkB,WAAW;AAAA;AAAA,MAEPD,QAAQ;AAAA;AAAA,aAEDd,YAAA,CAAa,MAAM,CAAC,eAAeA,YAAA,CAAa,OAAO,CAAC;AAAA;MAE3D;IAAA,CACF,GAEDD,QAAA;EAAA,CACH;AAEJ;AAEO,SAASoB,UAAU;EACxBC,KAAA;EACAC,SAAA;EACAC;AACF,GAIG;EACD,MAAM;IAAEnB;EAAM,IAAIhB,aAAA,CAAc;EAEhC,OACE,eAAAS,IAAA,CAAAF,QAAA;IACEK,QAAA,kBAAAJ,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHtB,IAAA,EAAK;MACLuB,OAAA,EAASJ,KAAA,KAAUjB,KAAA,KAAU,SAASkB,SAAA,GAAYC,UAAA;IAAA,CACpD,GACA,eAAA3B,GAAA,CAAC;MACCqB,wBAAA,EAAwB;MACxBO,EAAA,EAAG;MACHN,uBAAA,EAAyB;QACvBC,MAAA,EAAQ;AAAA;AAAA,iCAEerB,UAAU;AAAA;AAAA,oCAEPwB,SAAS,QAAQC,UAAU;AAAA;MAEvD;IAAA,CACF;EAAA,CACF;AAEJ","ignoreList":[]}
@@ -1,18 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useUserScheme } from "./userScheme.native.js";
3
3
  import { getSystemScheme, useSystemScheme } from "./systemScheme.native.js";
4
- import { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme as useUserScheme2 } from "./userScheme.native.js";
4
+ import { getUserScheme, onUserSchemeChange, setUserScheme as setUserScheme2, useUserScheme as useUserScheme2 } from "./userScheme.native.js";
5
5
  var storageKey = "vxrn-scheme";
6
6
  function SchemeProvider(param) {
7
7
  var {
8
8
  children,
9
9
  getClassName = function (name) {
10
10
  return `t_${name}`;
11
- }
11
+ },
12
+ defaultScheme
12
13
  } = param,
13
14
  {
14
15
  value
15
- } = useUserScheme();
16
+ } = useUserScheme(),
17
+ fallback = defaultScheme ? `'${defaultScheme}' === 'dark'` : "window.matchMedia('(prefers-color-scheme: dark)').matches",
18
+ seedStorage = defaultScheme ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}` : "";
16
19
  return /* @__PURE__ */_jsxs(_Fragment, {
17
20
  children: [null, children]
18
21
  });
@@ -46,5 +49,5 @@ dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
46
49
  })]
47
50
  });
48
51
  }
49
- export { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };
52
+ export { MetaTheme, SchemeProvider, getSystemScheme, getUserScheme, onUserSchemeChange, setUserScheme2 as setUserScheme, useSystemScheme, useUserScheme2 as useUserScheme };
50
53
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
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","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;AAS1C,SAASC,aAAA,QAAiB;AAC1B,SAAAC,eAAA,EAAAC,eAAA;AAAA,SACEC,aAAA,EAAAC,kBAAA,EAAAC,aAAA,EAAAL,aAAA,IAAAM,cAAA;AAAA,IACAC,UAAA;AAAA,SACAC,eAAAC,KAAA;EACA;MAAAC,QAAA;MAAAC,YAAA,YAAAA,CAAAC,IAAA;QAAA,OACK,KAAAA,IAAA;MA0BH;IAAA,IAAAH,KAAA;IAAA;MAAAI;IAEI,CAFJ,GAAAb,aAAA;EAxBJ,OAAM,eAAaH,KAAA,CAAAE,SAAA;IAEZW,QAAS,GACd,MACAA,QAAA;EAKA;AAGE;AACE,SAAAI,SAAcA,CAAAL,KAAA;EAEd;MAAIM,KAAC;MAAAC,SAAU;MAAAC;IAAiB,IAAAR,KAAA;IAAA;MAAAI;IAAA,IAAAb,aAAA;EAC9B,sBAAiBH,KAAA,CAAAE,SAAU;IAC3BW,QAAA,GAEF,eAAAf,IAAA;MACEuB,wBAIJ;MAEIC,EAAA;MAACP,IAAA;MAAAQ,OAAA,EAAAL,KAAA,KAAAF,KAAA,cAAAG,SAAA,GAAAC,UAAA;IAAA,EACC,EAAwB,eACxBtB,IAAA,SAAyB;MAAAuB,wBACf;MAAAC,EAAA,EACR,oBAAoB;MAACE,uBACF,EAAC;QAAAC,MAAA;AACU;AAAA,iCAAAf,UAAA;AAAA;AAAA,oCAITS,SAAA,QAAeC,UAAa;AAAQ;MAE3D;IAAA;EACF,EAED;AAAA;AAGP,SAEOH,SAAS,EACdN,cAAA,EACAP,eAAA,EACAE,aAAA,EACFC,kBAIG,EACDC,aAAQ,EAERH,eACE,EACEI,cAAA,IAAAN,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","useUserScheme","getSystemScheme","useSystemScheme","getUserScheme","onUserSchemeChange","setUserScheme","setUserScheme2","useUserScheme2","storageKey","SchemeProvider","param","children","getClassName","name","defaultScheme","value","fallback","seedStorage","MetaTheme","color","darkColor","lightColor","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;AAS1C,SAASC,aAAA,QAAiB;AAC1B,SAAAC,eAAA,EAAAC,eAAA;AAAA,SACEC,aAAA,EAAAC,kBAAA,EAAAC,aAAA,IAAAC,cAAA,EAAAN,aAAA,IAAAO,cAAA;AAAA,IACAC,UAAA;AAAA,SACAC,eAAAC,KAAA;EACA;MAAAC,QAAA;MAAAC,YAAA,YAAAA,CAAAC,IAAA;QAAA,OACK,KAAAA,IAAA;MA8CH;MAAAC;IAEI,IAAAJ,KAFJ;IAAA;MAAAK;IAAA,IAAAf,aAAA;IAAAgB,QAAA,GAAAF,aAAA,OAAAA,aAAA;IAAAG,WAAA,GAAAH,aAAA,mCAAAN,UAAA,MAAAM,aAAA;EA5CJ,OAAM,eAAajB,KAAA,CAAAE,SAAA;IAEZY,QAAS,GACd,MACAA,QAAA;EAEF,CAKG;AACD;AAIE,SAAAO,UAAAR,KAAA;EACE,IAAI;MAAAS,KAAA;MAAAC,SAAiB;MAAAC;IAAO,IAAAX,KAAiB;IAAA;MAAAK;IACtC,IAAAf,aAAqB;EAI9B,OAAK,eAELH,KAAA,CAAAE,SAA0B,EAAM;IAC9BY,QAAM,GAGN,eAAiBhB,IAAA,OACZ;MAGH2B,wBAAM;MAGNC,EAAA,oBAAW;MAQjBV,IACE;MAEIW,OAAA,EAAAL,KAAA,KAAAJ,KAAA,cAAAK,SAAA,GAAAC,UAAA;IAAC,mBAAA1B,IAAA;MACC2B,wBAAA,EAAwB;MACxBC,EAAA;MAAyBE,uBACf;QAAAC,MACR;AAAqB;AACD,iCACAlB,UAAU;AAAA;AAC7B,oCAAAY,SAAA,QAAAC,UAAA;AAAA;MAEC;IAAA;EAEuD;AAE3D;AAAA,SACFH,SAED,EAAAT,cACH,EAEJR,eAAA,EAEOE,aAAS,EACdC,kBAAA,EACAE,cAAA,IAAAD,aAAA,EACAH,eAAA,EACFK,cAIG,IAAAP,aAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vxrn/color-scheme",
3
- "version": "1.13.1",
3
+ "version": "1.13.2",
4
4
  "sideEffects": false,
5
5
  "exports": {
6
6
  "./package.json": "./package.json",
@@ -30,7 +30,7 @@
30
30
  "watch": "tamagui-build --watch"
31
31
  },
32
32
  "dependencies": {
33
- "@vxrn/use-isomorphic-layout-effect": "1.13.1"
33
+ "@vxrn/use-isomorphic-layout-effect": "1.13.2"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@tamagui/build": "2.0.0-rc.32",
package/src/index.tsx CHANGED
@@ -1,6 +1,6 @@
1
1
  import { useIsomorphicLayoutEffect } from '@vxrn/use-isomorphic-layout-effect'
2
2
  import type { Scheme } from './systemScheme'
3
- import { useUserScheme } from './userScheme'
3
+ import { setUserScheme, useUserScheme } from './userScheme'
4
4
 
5
5
  // re-export types
6
6
  export type { Scheme } from './systemScheme'
@@ -20,24 +20,44 @@ const storageKey = 'vxrn-scheme'
20
20
  export function SchemeProvider({
21
21
  children,
22
22
  getClassName = (name) => `t_${name}`,
23
+ defaultScheme,
23
24
  }: {
24
25
  children: any
25
26
  getClassName?: (name: Scheme) => string
27
+ /** Force a default scheme when no user preference is stored. Without this, falls back to system preference. */
28
+ defaultScheme?: Scheme
26
29
  }) {
27
30
  const { value } = useUserScheme()
28
31
 
29
32
  if (process.env.TAMAGUI_TARGET !== 'native') {
33
+ // when defaultScheme is set and no stored preference, apply it on mount
34
+ useIsomorphicLayoutEffect(() => {
35
+ if (defaultScheme && typeof localStorage !== 'undefined') {
36
+ if (!localStorage.getItem(storageKey)) {
37
+ setUserScheme(defaultScheme)
38
+ }
39
+ }
40
+ }, [])
41
+
30
42
  useIsomorphicLayoutEffect(() => {
31
43
  const toAdd = getClassName(value)
44
+ const toRemove = getClassName(value === 'light' ? 'dark' : 'light')
32
45
  const { classList } = document.documentElement
46
+ classList.remove(toRemove)
33
47
  if (!classList.contains(toAdd)) {
34
- const toRemove = value === 'light' ? 'dark' : 'light'
35
- classList.remove(getClassName(toRemove))
36
48
  classList.add(toAdd)
37
49
  }
38
50
  }, [value])
39
51
  }
40
52
 
53
+ const fallback = defaultScheme
54
+ ? `'${defaultScheme}' === 'dark'`
55
+ : `window.matchMedia('(prefers-color-scheme: dark)').matches`
56
+
57
+ const seedStorage = defaultScheme
58
+ ? `if(!e){localStorage.setItem('${storageKey}','${defaultScheme}')}`
59
+ : ''
60
+
41
61
  return (
42
62
  <>
43
63
  {process.env.TAMAGUI_TARGET === 'native' ? null : (
@@ -48,8 +68,9 @@ export function SchemeProvider({
48
68
  d.remove('${getClassName('light')}')
49
69
  d.remove('${getClassName('dark')}')
50
70
  let e = localStorage.getItem('${storageKey}')
71
+ ${seedStorage}
51
72
  let t = 'system' === e || !e
52
- ? window.matchMedia('(prefers-color-scheme: dark)').matches
73
+ ? ${fallback}
53
74
  : e === 'dark'
54
75
  t ? d.add('${getClassName('dark')}') : d.add('${getClassName('light')}')
55
76
  `,
package/types/index.d.ts CHANGED
@@ -3,9 +3,11 @@ export type { Scheme } from './systemScheme';
3
3
  export type { SchemeSetting, UserScheme } from './userScheme';
4
4
  export { getSystemScheme, useSystemScheme } from './systemScheme';
5
5
  export { getUserScheme, onUserSchemeChange, setUserScheme, useUserScheme, } from './userScheme';
6
- export declare function SchemeProvider({ children, getClassName, }: {
6
+ export declare function SchemeProvider({ children, getClassName, defaultScheme, }: {
7
7
  children: any;
8
8
  getClassName?: (name: Scheme) => string;
9
+ /** Force a default scheme when no user preference is stored. Without this, falls back to system preference. */
10
+ defaultScheme?: Scheme;
9
11
  }): import("react/jsx-runtime").JSX.Element;
10
12
  export declare function MetaTheme({ color, darkColor, lightColor, }: {
11
13
  color?: string;
@@ -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;AAI5C,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,GACrC,EAAE;IACD,QAAQ,EAAE,GAAG,CAAA;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACxC,2CAoCA;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,2CAyBA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAI5C,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,GACd,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;CACvB,2CAsDA;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,2CAyBA"}