@konstructio/ui
Version:
A set of reusable and customizable React components built for konstruct.io
89 lines (88 loc) • 2.58 kB
JavaScript
import { jsx as v } from "react/jsx-runtime";
import { useState as h, useEffect as g } from "react";
import { isClient as l } from "../utils/index.js";
import { ThemeContext as C } from "./theme.context.js";
/*! js-cookie v3.0.5 | MIT */
function p(n) {
for (var o = 1; o < arguments.length; o++) {
var t = arguments[o];
for (var f in t)
n[f] = t[f];
}
return n;
}
var a = {
read: function(n) {
return n[0] === '"' && (n = n.slice(1, -1)), n.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
},
write: function(n) {
return encodeURIComponent(n).replace(
/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
decodeURIComponent
);
}
};
function s(n, o) {
function t(e, u, r) {
if (!(typeof document > "u")) {
r = p({}, o, r), typeof r.expires == "number" && (r.expires = new Date(Date.now() + r.expires * 864e5)), r.expires && (r.expires = r.expires.toUTCString()), e = encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
var i = "";
for (var c in r)
r[c] && (i += "; " + c, r[c] !== !0 && (i += "=" + r[c].split(";")[0]));
return document.cookie = e + "=" + n.write(u, e) + i;
}
}
function f(e) {
if (!(typeof document > "u" || arguments.length && !e)) {
for (var u = document.cookie ? document.cookie.split("; ") : [], r = {}, i = 0; i < u.length; i++) {
var c = u[i].split("="), m = c.slice(1).join("=");
try {
var d = decodeURIComponent(c[0]);
if (r[d] = n.read(m, d), e === d)
break;
} catch {
}
}
return e ? r[e] : r;
}
}
return Object.create(
{
set: t,
get: f,
remove: function(e, u) {
t(
e,
"",
p({}, u, {
expires: -1
})
);
},
withAttributes: function(e) {
return s(this.converter, p({}, this.attributes, e));
},
withConverter: function(e) {
return s(p({}, this.converter, e), this.attributes);
}
},
{
attributes: { value: Object.freeze(o) },
converter: { value: Object.freeze(n) }
}
);
}
var x = s(a, { path: "/" });
const R = ({
children: n,
theme: o
}) => {
const [t, f] = h(() => o || (l ? x.get("konstruct-theme") : "kubefirst"));
return g(() => {
var e;
(e = document.querySelector("body")) == null || e.setAttribute("data-theme", t);
}, [t]), /* @__PURE__ */ v(C.Provider, { value: { theme: t, setTheme: f }, children: n });
};
export {
R as ThemeProvider
};