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