109 lines
4.4 KiB
JavaScript
109 lines
4.4 KiB
JavaScript
"use client";
|
|
import {
|
|
require_react
|
|
} from "./chunk-YHPANKLD.js";
|
|
import {
|
|
__toESM
|
|
} from "./chunk-PR4QN5HX.js";
|
|
|
|
// node_modules/next-themes/dist/index.mjs
|
|
var t = __toESM(require_react(), 1);
|
|
var M = (e, i, s, u, m, a, l, h) => {
|
|
let d = document.documentElement, w = ["light", "dark"];
|
|
function p(n) {
|
|
(Array.isArray(e) ? e : [e]).forEach((y) => {
|
|
let k = y === "class", S = k && a ? m.map((f) => a[f] || f) : m;
|
|
k ? (d.classList.remove(...S), d.classList.add(a && a[n] ? a[n] : n)) : d.setAttribute(y, n);
|
|
}), R(n);
|
|
}
|
|
function R(n) {
|
|
h && w.includes(n) && (d.style.colorScheme = n);
|
|
}
|
|
function c() {
|
|
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
}
|
|
if (u) p(u);
|
|
else try {
|
|
let n = localStorage.getItem(i) || s, y = l && n === "system" ? c() : n;
|
|
p(y);
|
|
} catch (n) {
|
|
}
|
|
};
|
|
var b = ["light", "dark"];
|
|
var I = "(prefers-color-scheme: dark)";
|
|
var O = typeof window == "undefined";
|
|
var x = t.createContext(void 0);
|
|
var U = { setTheme: (e) => {
|
|
}, themes: [] };
|
|
var z = () => {
|
|
var e;
|
|
return (e = t.useContext(x)) != null ? e : U;
|
|
};
|
|
var J = (e) => t.useContext(x) ? t.createElement(t.Fragment, null, e.children) : t.createElement(V, { ...e });
|
|
var N = ["light", "dark"];
|
|
var V = ({ forcedTheme: e, disableTransitionOnChange: i = false, enableSystem: s = true, enableColorScheme: u = true, storageKey: m = "theme", themes: a = N, defaultTheme: l = s ? "system" : "light", attribute: h = "data-theme", value: d, children: w, nonce: p, scriptProps: R }) => {
|
|
let [c, n] = t.useState(() => H(m, l)), [T, y] = t.useState(() => c === "system" ? E() : c), k = d ? Object.values(d) : a, S = t.useCallback((o) => {
|
|
let r = o;
|
|
if (!r) return;
|
|
o === "system" && s && (r = E());
|
|
let v = d ? d[r] : r, C = i ? W(p) : null, P = document.documentElement, L = (g) => {
|
|
g === "class" ? (P.classList.remove(...k), v && P.classList.add(v)) : g.startsWith("data-") && (v ? P.setAttribute(g, v) : P.removeAttribute(g));
|
|
};
|
|
if (Array.isArray(h) ? h.forEach(L) : L(h), u) {
|
|
let g = b.includes(l) ? l : null, D = b.includes(r) ? r : g;
|
|
P.style.colorScheme = D;
|
|
}
|
|
C == null || C();
|
|
}, [p]), f = t.useCallback((o) => {
|
|
let r = typeof o == "function" ? o(c) : o;
|
|
n(r);
|
|
try {
|
|
localStorage.setItem(m, r);
|
|
} catch (v) {
|
|
}
|
|
}, [c]), A = t.useCallback((o) => {
|
|
let r = E(o);
|
|
y(r), c === "system" && s && !e && S("system");
|
|
}, [c, e]);
|
|
t.useEffect(() => {
|
|
let o = window.matchMedia(I);
|
|
return o.addListener(A), A(o), () => o.removeListener(A);
|
|
}, [A]), t.useEffect(() => {
|
|
let o = (r) => {
|
|
r.key === m && (r.newValue ? n(r.newValue) : f(l));
|
|
};
|
|
return window.addEventListener("storage", o), () => window.removeEventListener("storage", o);
|
|
}, [f]), t.useEffect(() => {
|
|
S(e != null ? e : c);
|
|
}, [e, c]);
|
|
let Q = t.useMemo(() => ({ theme: c, setTheme: f, forcedTheme: e, resolvedTheme: c === "system" ? T : c, themes: s ? [...a, "system"] : a, systemTheme: s ? T : void 0 }), [c, f, e, T, s, a]);
|
|
return t.createElement(x.Provider, { value: Q }, t.createElement(_, { forcedTheme: e, storageKey: m, attribute: h, enableSystem: s, enableColorScheme: u, defaultTheme: l, value: d, themes: a, nonce: p, scriptProps: R }), w);
|
|
};
|
|
var _ = t.memo(({ forcedTheme: e, storageKey: i, attribute: s, enableSystem: u, enableColorScheme: m, defaultTheme: a, value: l, themes: h, nonce: d, scriptProps: w }) => {
|
|
let p = JSON.stringify([s, i, a, e, h, l, u, m]).slice(1, -1);
|
|
return t.createElement("script", { ...w, suppressHydrationWarning: true, nonce: typeof window == "undefined" ? d : "", dangerouslySetInnerHTML: { __html: `(${M.toString()})(${p})` } });
|
|
});
|
|
var H = (e, i) => {
|
|
if (O) return;
|
|
let s;
|
|
try {
|
|
s = localStorage.getItem(e) || void 0;
|
|
} catch (u) {
|
|
}
|
|
return s || i;
|
|
};
|
|
var W = (e) => {
|
|
let i = document.createElement("style");
|
|
return e && i.setAttribute("nonce", e), i.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")), document.head.appendChild(i), () => {
|
|
window.getComputedStyle(document.body), setTimeout(() => {
|
|
document.head.removeChild(i);
|
|
}, 1);
|
|
};
|
|
};
|
|
var E = (e) => (e || (e = window.matchMedia(I)), e.matches ? "dark" : "light");
|
|
export {
|
|
J as ThemeProvider,
|
|
z as useTheme
|
|
};
|
|
//# sourceMappingURL=next-themes.js.map
|