@vxrn/color-scheme 1.2.28 → 1.2.29
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/index.cjs +34 -58
- package/dist/cjs/index.js +27 -56
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/index.native.js +23 -52
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/systemScheme.cjs +40 -0
- package/dist/cjs/systemScheme.js +34 -0
- package/dist/cjs/systemScheme.js.map +6 -0
- package/dist/cjs/systemScheme.native.js +48 -0
- package/dist/cjs/systemScheme.native.js.map +1 -0
- package/dist/cjs/userScheme.cjs +95 -0
- package/dist/cjs/userScheme.js +80 -0
- package/dist/cjs/userScheme.js.map +6 -0
- package/dist/cjs/userScheme.native.js +109 -0
- package/dist/cjs/userScheme.native.js.map +1 -0
- package/dist/esm/index.js +29 -62
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/index.mjs +28 -52
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +18 -47
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/systemScheme.js +19 -0
- package/dist/esm/systemScheme.js.map +6 -0
- package/dist/esm/systemScheme.mjs +16 -0
- package/dist/esm/systemScheme.mjs.map +1 -0
- package/dist/esm/systemScheme.native.js +21 -0
- package/dist/esm/systemScheme.native.js.map +1 -0
- package/dist/esm/userScheme.js +67 -0
- package/dist/esm/userScheme.js.map +6 -0
- package/dist/esm/userScheme.mjs +68 -0
- package/dist/esm/userScheme.mjs.map +1 -0
- package/dist/esm/userScheme.native.js +80 -0
- package/dist/esm/userScheme.native.js.map +1 -0
- package/package.json +2 -3
- package/src/index.tsx +28 -85
- package/src/systemScheme.native.ts +21 -0
- package/src/systemScheme.ts +26 -0
- package/src/userScheme.ts +149 -0
- package/types/index.d.ts +9 -15
- package/types/index.d.ts.map +1 -1
- package/types/systemScheme.d.ts +4 -0
- package/types/systemScheme.d.ts.map +1 -0
- package/types/systemScheme.native.d.ts +4 -0
- package/types/systemScheme.native.d.ts.map +1 -0
- package/types/userScheme.d.ts +20 -0
- package/types/userScheme.d.ts.map +1 -0
package/dist/cjs/index.cjs
CHANGED
|
@@ -22,91 +22,67 @@ var index_exports = {};
|
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
MetaTheme: () => MetaTheme,
|
|
24
24
|
SchemeProvider: () => SchemeProvider,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
getSystemScheme: () => import_systemScheme.getSystemScheme,
|
|
26
|
+
getUserScheme: () => import_userScheme2.getUserScheme,
|
|
27
|
+
onUserSchemeChange: () => import_userScheme2.onUserSchemeChange,
|
|
28
|
+
setUserScheme: () => import_userScheme2.setUserScheme,
|
|
29
|
+
useSystemScheme: () => import_systemScheme.useSystemScheme,
|
|
30
|
+
useUserScheme: () => import_userScheme2.useUserScheme
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(index_exports);
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"),
|
|
34
|
+
import_userScheme = require("./userScheme.cjs"),
|
|
35
|
+
import_systemScheme = require("./systemScheme.cjs"),
|
|
36
|
+
import_userScheme2 = require("./userScheme.cjs"),
|
|
37
37
|
import_jsx_runtime = require("react/jsx-runtime");
|
|
38
|
-
const storageKey = "vxrn-scheme"
|
|
39
|
-
clearColorSchemeSetting = () => {
|
|
40
|
-
setSchemeSetting("system");
|
|
41
|
-
},
|
|
42
|
-
getSetting = () => typeof localStorage < "u" && localStorage.getItem(storageKey) || "system",
|
|
43
|
-
SchemeContext = (0, import_react.createContext)({
|
|
44
|
-
setting: "system",
|
|
45
|
-
scheme: "light"
|
|
46
|
-
}),
|
|
47
|
-
useColorScheme = () => {
|
|
48
|
-
const [state] = (0, import_universal_color_scheme.useColorScheme)();
|
|
49
|
-
return [state, setSchemeSetting];
|
|
50
|
-
};
|
|
51
|
-
function useSchemeSetting() {
|
|
52
|
-
return [(0, import_react.useContext)(SchemeContext), setSchemeSetting];
|
|
53
|
-
}
|
|
54
|
-
function setSchemeSetting(next) {
|
|
55
|
-
typeof localStorage < "u" && localStorage.setItem(storageKey, next), (0, import_universal_color_scheme.setColorScheme)(next);
|
|
56
|
-
}
|
|
38
|
+
const storageKey = "vxrn-scheme";
|
|
57
39
|
function SchemeProvider({
|
|
58
40
|
children,
|
|
59
|
-
// defaults to tamagui-compatible
|
|
60
41
|
getClassName = name => `t_${name}`
|
|
61
42
|
}) {
|
|
62
|
-
const
|
|
63
|
-
|
|
43
|
+
const {
|
|
44
|
+
value
|
|
45
|
+
} = (0, import_userScheme.useUserScheme)();
|
|
64
46
|
return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
|
|
65
|
-
|
|
66
|
-
const toAdd = getClassName(colorScheme),
|
|
47
|
+
const toAdd = getClassName(value),
|
|
67
48
|
{
|
|
68
49
|
classList
|
|
69
50
|
} = document.documentElement;
|
|
70
51
|
if (!classList.contains(toAdd)) {
|
|
71
|
-
const toRemove =
|
|
52
|
+
const toRemove = value === "light" ? "dark" : "light";
|
|
72
53
|
classList.remove(getClassName(toRemove)), classList.add(toAdd);
|
|
73
54
|
}
|
|
74
|
-
}, [
|
|
55
|
+
}, [value]), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
75
56
|
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("script", {
|
|
76
57
|
dangerouslySetInnerHTML: {
|
|
77
58
|
__html: `let d = document.documentElement.classList
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
`
|
|
59
|
+
d.remove('${getClassName("light")}')
|
|
60
|
+
d.remove('${getClassName("dark")}')
|
|
61
|
+
let e = localStorage.getItem('${storageKey}')
|
|
62
|
+
let t = 'system' === e || !e
|
|
63
|
+
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
64
|
+
: e === 'dark'
|
|
65
|
+
t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
|
|
66
|
+
`
|
|
87
67
|
}
|
|
88
|
-
}),
|
|
89
|
-
value: (0, import_react.useMemo)(() => ({
|
|
90
|
-
scheme: colorScheme,
|
|
91
|
-
setting: colorSchemeSetting
|
|
92
|
-
}), [colorScheme, colorSchemeSetting]),
|
|
93
|
-
children
|
|
94
|
-
})]
|
|
68
|
+
}), children]
|
|
95
69
|
});
|
|
96
70
|
}
|
|
97
|
-
|
|
71
|
+
function MetaTheme({
|
|
98
72
|
color,
|
|
99
73
|
darkColor,
|
|
100
74
|
lightColor
|
|
101
|
-
})
|
|
102
|
-
const
|
|
75
|
+
}) {
|
|
76
|
+
const {
|
|
77
|
+
value
|
|
78
|
+
} = (0, import_userScheme.useUserScheme)();
|
|
103
79
|
return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
104
80
|
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("meta", {
|
|
105
81
|
itemProp: "__deopt",
|
|
106
82
|
suppressHydrationWarning: !0,
|
|
107
83
|
id: "vxrn-theme-color",
|
|
108
84
|
name: "theme-color",
|
|
109
|
-
content: color ?? (
|
|
85
|
+
content: color ?? (value === "dark" ? darkColor : lightColor)
|
|
110
86
|
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)("script", {
|
|
111
87
|
id: "meta-theme-hydrate",
|
|
112
88
|
dangerouslySetInnerHTML: {
|
|
@@ -115,8 +91,8 @@ let dc = document.getElementById('vxrn-theme-color')
|
|
|
115
91
|
let e1 = localStorage.getItem('${storageKey}')
|
|
116
92
|
let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
|
|
117
93
|
dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
|
|
118
|
-
|
|
94
|
+
`
|
|
119
95
|
}
|
|
120
96
|
})]
|
|
121
97
|
});
|
|
122
|
-
}
|
|
98
|
+
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -16,82 +16,53 @@ var index_exports = {};
|
|
|
16
16
|
__export(index_exports, {
|
|
17
17
|
MetaTheme: () => MetaTheme,
|
|
18
18
|
SchemeProvider: () => SchemeProvider,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
getSystemScheme: () => import_systemScheme.getSystemScheme,
|
|
20
|
+
getUserScheme: () => import_userScheme2.getUserScheme,
|
|
21
|
+
onUserSchemeChange: () => import_userScheme2.onUserSchemeChange,
|
|
22
|
+
setUserScheme: () => import_userScheme2.setUserScheme,
|
|
23
|
+
useSystemScheme: () => import_systemScheme.useSystemScheme,
|
|
24
|
+
useUserScheme: () => import_userScheme2.useUserScheme
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(index_exports);
|
|
27
|
-
var
|
|
28
|
-
const storageKey = "vxrn-scheme"
|
|
29
|
-
setSchemeSetting("system");
|
|
30
|
-
}, getSetting = () => typeof localStorage < "u" && localStorage.getItem(storageKey) || "system", SchemeContext = (0, import_react.createContext)({
|
|
31
|
-
setting: "system",
|
|
32
|
-
scheme: "light"
|
|
33
|
-
}), useColorScheme = () => {
|
|
34
|
-
const [state] = (0, import_universal_color_scheme.useColorScheme)();
|
|
35
|
-
return [state, setSchemeSetting];
|
|
36
|
-
};
|
|
37
|
-
function useSchemeSetting() {
|
|
38
|
-
return [(0, import_react.useContext)(SchemeContext), setSchemeSetting];
|
|
39
|
-
}
|
|
40
|
-
function setSchemeSetting(next) {
|
|
41
|
-
typeof localStorage < "u" && localStorage.setItem(storageKey, next), (0, import_universal_color_scheme.setColorScheme)(next);
|
|
42
|
-
}
|
|
27
|
+
var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"), import_userScheme = require("./userScheme"), import_systemScheme = require("./systemScheme"), import_userScheme2 = require("./userScheme"), import_jsx_runtime = require("react/jsx-runtime");
|
|
28
|
+
const storageKey = "vxrn-scheme";
|
|
43
29
|
function SchemeProvider({
|
|
44
30
|
children,
|
|
45
|
-
// defaults to tamagui-compatible
|
|
46
31
|
getClassName = (name) => `t_${name}`
|
|
47
32
|
}) {
|
|
48
|
-
const
|
|
33
|
+
const { value } = (0, import_userScheme.useUserScheme)();
|
|
49
34
|
return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
|
|
50
|
-
(
|
|
51
|
-
const toAdd = getClassName(colorScheme), { classList } = document.documentElement;
|
|
35
|
+
const toAdd = getClassName(value), { classList } = document.documentElement;
|
|
52
36
|
if (!classList.contains(toAdd)) {
|
|
53
|
-
const toRemove =
|
|
37
|
+
const toRemove = value === "light" ? "dark" : "light";
|
|
54
38
|
classList.remove(getClassName(toRemove)), classList.add(toAdd);
|
|
55
39
|
}
|
|
56
|
-
}, [
|
|
40
|
+
}, [value]), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
57
41
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
58
42
|
"script",
|
|
59
43
|
{
|
|
60
44
|
dangerouslySetInnerHTML: {
|
|
61
45
|
__html: `let d = document.documentElement.classList
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
`
|
|
46
|
+
d.remove('${getClassName("light")}')
|
|
47
|
+
d.remove('${getClassName("dark")}')
|
|
48
|
+
let e = localStorage.getItem('${storageKey}')
|
|
49
|
+
let t = 'system' === e || !e
|
|
50
|
+
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
51
|
+
: e === 'dark'
|
|
52
|
+
t ? d.add('${getClassName("dark")}') : d.add('${getClassName("light")}')
|
|
53
|
+
`
|
|
71
54
|
}
|
|
72
55
|
}
|
|
73
56
|
),
|
|
74
|
-
|
|
75
|
-
SchemeContext.Provider,
|
|
76
|
-
{
|
|
77
|
-
value: (0, import_react.useMemo)(
|
|
78
|
-
() => ({
|
|
79
|
-
scheme: colorScheme,
|
|
80
|
-
setting: colorSchemeSetting
|
|
81
|
-
}),
|
|
82
|
-
[colorScheme, colorSchemeSetting]
|
|
83
|
-
),
|
|
84
|
-
children
|
|
85
|
-
}
|
|
86
|
-
)
|
|
57
|
+
children
|
|
87
58
|
] });
|
|
88
59
|
}
|
|
89
|
-
|
|
60
|
+
function MetaTheme({
|
|
90
61
|
color,
|
|
91
62
|
darkColor,
|
|
92
63
|
lightColor
|
|
93
|
-
})
|
|
94
|
-
const
|
|
64
|
+
}) {
|
|
65
|
+
const { value } = (0, import_userScheme.useUserScheme)();
|
|
95
66
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
96
67
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
97
68
|
"meta",
|
|
@@ -100,7 +71,7 @@ const MetaTheme = ({
|
|
|
100
71
|
suppressHydrationWarning: !0,
|
|
101
72
|
id: "vxrn-theme-color",
|
|
102
73
|
name: "theme-color",
|
|
103
|
-
content: color ?? (
|
|
74
|
+
content: color ?? (value === "dark" ? darkColor : lightColor)
|
|
104
75
|
}
|
|
105
76
|
),
|
|
106
77
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -113,10 +84,10 @@ let dc = document.getElementById('vxrn-theme-color')
|
|
|
113
84
|
let e1 = localStorage.getItem('${storageKey}')
|
|
114
85
|
let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
|
|
115
86
|
dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
|
|
116
|
-
|
|
87
|
+
`
|
|
117
88
|
}
|
|
118
89
|
}
|
|
119
90
|
)
|
|
120
91
|
] });
|
|
121
|
-
}
|
|
92
|
+
}
|
|
122
93
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
5
|
-
"names": ["
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAA0C,+CAE1C,oBAA8B,yBAO9B,sBAAiD,2BACjDA,qBAAgF,yBA0B5E;AAxBJ,MAAM,aAAa;AAEZ,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA,eAAe,CAAC,SAAS,KAAK,IAAI;AACpC,GAGG;AACD,QAAM,EAAE,MAAM,QAAI,iCAAc;AAG9B,4EAA0B,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,4EAEI;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,QAAI,iCAAc;AAEhC,SACE,4EACE;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": ["import_userScheme"]
|
|
6
6
|
}
|
package/dist/cjs/index.native.js
CHANGED
|
@@ -24,80 +24,51 @@ var index_exports = {};
|
|
|
24
24
|
__export(index_exports, {
|
|
25
25
|
MetaTheme: () => MetaTheme,
|
|
26
26
|
SchemeProvider: () => SchemeProvider,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
getSystemScheme: () => import_systemScheme.getSystemScheme,
|
|
28
|
+
getUserScheme: () => import_userScheme2.getUserScheme,
|
|
29
|
+
onUserSchemeChange: () => import_userScheme2.onUserSchemeChange,
|
|
30
|
+
setUserScheme: () => import_userScheme2.setUserScheme,
|
|
31
|
+
useSystemScheme: () => import_systemScheme.useSystemScheme,
|
|
32
|
+
useUserScheme: () => import_userScheme2.useUserScheme
|
|
33
33
|
});
|
|
34
34
|
module.exports = __toCommonJS(index_exports);
|
|
35
35
|
var import_jsx_runtime = require("react/jsx-runtime"),
|
|
36
|
-
import_universal_color_scheme = require("@vxrn/universal-color-scheme"),
|
|
37
36
|
import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
setSchemeSetting("system");
|
|
43
|
-
};
|
|
44
|
-
var SchemeContext = /* @__PURE__ */(0, import_react.createContext)({
|
|
45
|
-
setting: "system",
|
|
46
|
-
scheme: "light"
|
|
47
|
-
}),
|
|
48
|
-
useColorScheme = function () {
|
|
49
|
-
var [state] = (0, import_universal_color_scheme.useColorScheme)();
|
|
50
|
-
return [state, setSchemeSetting];
|
|
51
|
-
};
|
|
52
|
-
function useSchemeSetting() {
|
|
53
|
-
var values = (0, import_react.useContext)(SchemeContext);
|
|
54
|
-
return [values, setSchemeSetting];
|
|
55
|
-
}
|
|
56
|
-
function setSchemeSetting(next) {
|
|
57
|
-
typeof localStorage < "u" && localStorage.setItem(storageKey, next), (0, import_universal_color_scheme.setColorScheme)(next);
|
|
58
|
-
}
|
|
37
|
+
import_userScheme = require("./userScheme.native.js"),
|
|
38
|
+
import_systemScheme = require("./systemScheme.native.js"),
|
|
39
|
+
import_userScheme2 = require("./userScheme.native.js"),
|
|
40
|
+
storageKey = "vxrn-scheme";
|
|
59
41
|
function SchemeProvider(param) {
|
|
60
42
|
var {
|
|
61
43
|
children,
|
|
62
|
-
// defaults to tamagui-compatible
|
|
63
44
|
getClassName = function (name) {
|
|
64
45
|
return `t_${name}`;
|
|
65
46
|
}
|
|
66
47
|
} = param,
|
|
67
|
-
|
|
68
|
-
|
|
48
|
+
{
|
|
49
|
+
value
|
|
50
|
+
} = (0, import_userScheme.useUserScheme)();
|
|
69
51
|
return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
70
|
-
children: [null,
|
|
71
|
-
value: (0, import_react.useMemo)(function () {
|
|
72
|
-
return {
|
|
73
|
-
scheme: colorScheme,
|
|
74
|
-
setting: colorSchemeSetting
|
|
75
|
-
};
|
|
76
|
-
}, [colorScheme, colorSchemeSetting]),
|
|
77
|
-
children
|
|
78
|
-
})]
|
|
52
|
+
children: [null, children]
|
|
79
53
|
});
|
|
80
54
|
}
|
|
81
|
-
|
|
55
|
+
function MetaTheme(param) {
|
|
82
56
|
var {
|
|
83
57
|
color,
|
|
84
58
|
darkColor,
|
|
85
59
|
lightColor
|
|
86
60
|
} = param,
|
|
87
|
-
|
|
61
|
+
{
|
|
62
|
+
value
|
|
63
|
+
} = (0, import_userScheme.useUserScheme)();
|
|
88
64
|
return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
89
|
-
children: [/*
|
|
90
|
-
/* maybe bug in safari or react */
|
|
91
|
-
/* @__PURE__ */(0, import_jsx_runtime.jsx)("meta", {
|
|
65
|
+
children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)("meta", {
|
|
92
66
|
itemProp: "__deopt",
|
|
93
|
-
// because the script below runs before render it actually ruins our nice ssr logic here
|
|
94
|
-
// instead we just avoid the warning its a single tag
|
|
95
67
|
suppressHydrationWarning: !0,
|
|
96
68
|
id: "vxrn-theme-color",
|
|
97
69
|
name: "theme-color",
|
|
98
|
-
content: color ?? (
|
|
99
|
-
}), /*
|
|
100
|
-
/* @__PURE__ */(0, import_jsx_runtime.jsx)("script", {
|
|
70
|
+
content: color ?? (value === "dark" ? darkColor : lightColor)
|
|
71
|
+
}), /* @__PURE__ */(0, import_jsx_runtime.jsx)("script", {
|
|
101
72
|
id: "meta-theme-hydrate",
|
|
102
73
|
dangerouslySetInnerHTML: {
|
|
103
74
|
__html: `
|
|
@@ -105,9 +76,9 @@ let dc = document.getElementById('vxrn-theme-color')
|
|
|
105
76
|
let e1 = localStorage.getItem('${storageKey}')
|
|
106
77
|
let isD = 'system' === e1 || !e1 ? window.matchMedia('(prefers-color-scheme: dark)').matches : e1 === 'dark'
|
|
107
78
|
dc.setAttribute('content', isD ? '${darkColor}' : '${lightColor}')
|
|
108
|
-
|
|
79
|
+
`
|
|
109
80
|
}
|
|
110
81
|
})]
|
|
111
82
|
});
|
|
112
|
-
}
|
|
83
|
+
}
|
|
113
84
|
//# sourceMappingURL=index.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","index_exports","__export","MetaTheme","SchemeProvider","
|
|
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","jsxs","Fragment","color","darkColor","lightColor","jsx","itemProp","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;AAY1C,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;MAClB;IAGG,IAAAH,KAAA;IAAA;MAAApB;IAAA,QAAAkB,iBAAA,CAAAN,aAAA;EACD,OAAM,eAAY,IAAAG,kBAAA,CAAAS,IAAA,EAAAT,kBAAc,CAAAU,QAAA;IAG9BJ,QAAA,GACE,IAAM,EAENA,QAAK;EAEH;AACmB;AACrB,SACElB,SAIJA,CAAAiB,KAAA;EAEI;MAAAM,KAAA;MAAAC,SAAA;MAAAC;IAAA,IAAAR,KAAA;IAAA;MAAApB;IAAA,QAAAkB,iBAAA,CAAAN,aAAA;EAAA,OAAC,mBAAAG,kBAAA,CAAAS,IAAA,EAAAT,kBAAA,CAAAU,QAAA;IAAAJ,QAAA,kBACC,IAAAN,kBAAyB,CAAAc,GAAA;MAAAC,QACvB,EAAQ;MAAAC,wBACY,EAAC;MAAAC,EAAA,EACrB,kBAAa;MAAOT,IAAA;MACUU,OAAA,EAAAP,KAAA,KAAA1B,KAAA,cAAA2B,SAAA,GAAAC,UAAA;IAAA,uBAAAb,kBAAA,CAAAc,GAAA;MAAAG,EAAA,sBAIV;MAAqCE,uBAAA;QAE3DC,MAAA;AAAA;AAAA,iCACFhB,UAAA;AAAA;AAED,oCACHQ,SAAA,QAAAC,UAAA;AAEJ;MAEO;IACL;EAEA;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
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) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: !0
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
__copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), mod);
|
|
21
|
+
var systemScheme_exports = {};
|
|
22
|
+
__export(systemScheme_exports, {
|
|
23
|
+
getSystemScheme: () => getSystemScheme,
|
|
24
|
+
useSystemScheme: () => useSystemScheme
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(systemScheme_exports);
|
|
27
|
+
var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"),
|
|
28
|
+
import_react = require("react");
|
|
29
|
+
const media = typeof window < "u" && window.matchMedia ? window.matchMedia("(prefers-color-scheme: dark)") : null;
|
|
30
|
+
function getSystemScheme() {
|
|
31
|
+
return media?.matches ? "dark" : "light";
|
|
32
|
+
}
|
|
33
|
+
function useSystemScheme() {
|
|
34
|
+
const [scheme, setScheme] = (0, import_react.useState)("light");
|
|
35
|
+
return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
|
|
36
|
+
setScheme(getSystemScheme());
|
|
37
|
+
const onChange = () => setScheme(getSystemScheme());
|
|
38
|
+
return media?.addEventListener("change", onChange), () => media?.removeEventListener("change", onChange);
|
|
39
|
+
}, []), scheme;
|
|
40
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
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 systemScheme_exports = {};
|
|
16
|
+
__export(systemScheme_exports, {
|
|
17
|
+
getSystemScheme: () => getSystemScheme,
|
|
18
|
+
useSystemScheme: () => useSystemScheme
|
|
19
|
+
});
|
|
20
|
+
module.exports = __toCommonJS(systemScheme_exports);
|
|
21
|
+
var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"), import_react = require("react");
|
|
22
|
+
const media = typeof window < "u" && window.matchMedia ? window.matchMedia("(prefers-color-scheme: dark)") : null;
|
|
23
|
+
function getSystemScheme() {
|
|
24
|
+
return media?.matches ? "dark" : "light";
|
|
25
|
+
}
|
|
26
|
+
function useSystemScheme() {
|
|
27
|
+
const [scheme, setScheme] = (0, import_react.useState)("light");
|
|
28
|
+
return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
|
|
29
|
+
setScheme(getSystemScheme());
|
|
30
|
+
const onChange = () => setScheme(getSystemScheme());
|
|
31
|
+
return media?.addEventListener("change", onChange), () => media?.removeEventListener("change", onChange);
|
|
32
|
+
}, []), scheme;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=systemScheme.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/systemScheme.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAA0C,+CAC1C,eAAyB;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,QAAI,uBAAiB,OAAO;AAEpD,4EAA0B,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
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
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 systemScheme_native_exports = {};
|
|
24
|
+
__export(systemScheme_native_exports, {
|
|
25
|
+
getSystemScheme: () => getSystemScheme,
|
|
26
|
+
useSystemScheme: () => useSystemScheme
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(systemScheme_native_exports);
|
|
29
|
+
var import_react = require("react"),
|
|
30
|
+
import_react_native = require("react-native");
|
|
31
|
+
function getSystemScheme() {
|
|
32
|
+
return import_react_native.Appearance.getColorScheme() || "light";
|
|
33
|
+
}
|
|
34
|
+
function useSystemScheme() {
|
|
35
|
+
var [scheme, setScheme] = (0, import_react.useState)(getSystemScheme);
|
|
36
|
+
return (0, import_react.useEffect)(function () {
|
|
37
|
+
var subscription = import_react_native.Appearance.addChangeListener(function (param) {
|
|
38
|
+
var {
|
|
39
|
+
colorScheme
|
|
40
|
+
} = param;
|
|
41
|
+
setScheme(colorScheme || "light");
|
|
42
|
+
});
|
|
43
|
+
return function () {
|
|
44
|
+
return subscription.remove();
|
|
45
|
+
};
|
|
46
|
+
}, []), scheme;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=systemScheme.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["systemScheme_native_exports","__export","getSystemScheme","useSystemScheme","module","exports","__toCommonJS","import_react","require","import_react_native","Appearance","getColorScheme","scheme","setScheme","useState","useEffect","subscription","addChangeListener","param","colorScheme","remove"],"sources":["../../src/systemScheme.native.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,2BAAA;AAAAC,QAAA,CAAAD,2BAAA;EAAAE,eAAA,EAAAA,CAAA,KAAAA,eAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAN,2BAAA;AAAA,IAAAO,YAAA,GAAoCC,OAAA;EACpCC,mBAAA,GAA2BD,OAAA;AACpB,SAASN,gBAAA,EAAkB;EAC9B,OAAOO,mBAAA,CAAAC,UAAA,CAAWC,cAAA,CAAe,KAAK;AAC1C;AACO,SAASR,gBAAA,EAAkB;EAC9B,IAAI,CAACS,MAAA,EAAQC,SAAS,QAAIN,YAAA,CAAAO,QAAA,EAASZ,eAAe;EAClD,WAAAK,YAAA,CAAAQ,SAAA,EAAU,YAAW;IACjB,IAAIC,YAAA,GAAeP,mBAAA,CAAAC,UAAA,CAAWO,iBAAA,CAAkB,UAASC,KAAA,EAAO;MAC5D,IAAI;QAAEC;MAAY,IAAID,KAAA;MACtBL,SAAA,CAAUM,WAAA,IAAe,OAAO;IACpC,CAAC;IACD,OAAO,YAAW;MACd,OAAOH,YAAA,CAAaI,MAAA,CAAO;IAC/B;EACJ,GAAG,EAAE,GACER,MAAA;AACX","ignoreList":[]}
|
|
@@ -0,0 +1,95 @@
|
|
|
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) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: !0
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
__copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), mod);
|
|
21
|
+
var userScheme_exports = {};
|
|
22
|
+
__export(userScheme_exports, {
|
|
23
|
+
getUserScheme: () => getUserScheme,
|
|
24
|
+
onUserSchemeChange: () => onUserSchemeChange,
|
|
25
|
+
setUserScheme: () => setUserScheme,
|
|
26
|
+
useUserScheme: () => useUserScheme
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(userScheme_exports);
|
|
29
|
+
var import_use_isomorphic_layout_effect = require("@vxrn/use-isomorphic-layout-effect"),
|
|
30
|
+
import_react = require("react"),
|
|
31
|
+
import_react_native = require("react-native-web"),
|
|
32
|
+
import_systemScheme = require("./systemScheme.cjs");
|
|
33
|
+
const listeners = /* @__PURE__ */new Set(),
|
|
34
|
+
storageKey = "vxrn-scheme";
|
|
35
|
+
let currentSetting = "system",
|
|
36
|
+
currentValue = "light",
|
|
37
|
+
isWebListening = !1;
|
|
38
|
+
function startWebListener() {
|
|
39
|
+
if (isWebListening) return;
|
|
40
|
+
isWebListening = !0;
|
|
41
|
+
const matcher = typeof window < "u" ? window.matchMedia?.("(prefers-color-scheme: dark)") : null,
|
|
42
|
+
onSystemChange = () => {
|
|
43
|
+
currentSetting === "system" && updateValueFromSystem();
|
|
44
|
+
};
|
|
45
|
+
onSystemChange(), matcher?.addEventListener?.("change", onSystemChange);
|
|
46
|
+
}
|
|
47
|
+
function resolveValue(setting) {
|
|
48
|
+
return setting === "system" ? (0, import_systemScheme.getSystemScheme)() : setting;
|
|
49
|
+
}
|
|
50
|
+
function updateValueFromSystem() {
|
|
51
|
+
const value = resolveValue("system");
|
|
52
|
+
value !== currentValue && (currentValue = value, listeners.forEach(l => {
|
|
53
|
+
l(currentSetting, currentValue);
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
function updateScheme(setting) {
|
|
57
|
+
const value = setting === "system" ? resolveValue("system") : setting;
|
|
58
|
+
(value !== currentValue || currentSetting !== setting) && (currentSetting = setting, currentValue = value, listeners.forEach(l => {
|
|
59
|
+
l(currentSetting, currentValue);
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
function setUserScheme(setting) {
|
|
63
|
+
typeof localStorage < "u" && localStorage.setItem(storageKey, setting), updateScheme(setting);
|
|
64
|
+
}
|
|
65
|
+
function getUserScheme() {
|
|
66
|
+
return {
|
|
67
|
+
setting: currentSetting,
|
|
68
|
+
value: currentValue
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function onUserSchemeChange(listener) {
|
|
72
|
+
return listeners.add(listener), listener(currentSetting, currentValue), () => {
|
|
73
|
+
listeners.delete(listener);
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function useUserScheme() {
|
|
77
|
+
const [state, setState] = (0, import_react.useState)(() => getUserScheme());
|
|
78
|
+
return (0, import_use_isomorphic_layout_effect.useIsomorphicLayoutEffect)(() => {
|
|
79
|
+
if (typeof localStorage < "u") {
|
|
80
|
+
const stored = localStorage.getItem(storageKey);
|
|
81
|
+
stored && updateScheme(stored);
|
|
82
|
+
}
|
|
83
|
+
const dispose = onUserSchemeChange((setting, value) => {
|
|
84
|
+
setState({
|
|
85
|
+
setting,
|
|
86
|
+
value
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
return startWebListener(), dispose;
|
|
90
|
+
}, []), (0, import_react.useMemo)(() => ({
|
|
91
|
+
setting: state.setting,
|
|
92
|
+
value: state.value,
|
|
93
|
+
set: setUserScheme
|
|
94
|
+
}), [state.setting, state.value]);
|
|
95
|
+
}
|