UNPKG

@konstructio/ui

Version:

A set of reusable and customizable React components built for konstruct.io

89 lines (88 loc) 2.58 kB
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 };