Files
IronSteelNon-ferrousMetallu…/node_modules/.vite/deps/next-themes.js

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