UNPKG

@konstructio/ui

Version:

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

87 lines (86 loc) 2.52 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"; function p(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 a = { 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, u, e) { if (!(typeof document > "u")) { e = p({}, 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(u, n) + i; } } function f(n) { if (!(typeof document > "u" || arguments.length && !n)) { for (var u = document.cookie ? document.cookie.split("; ") : [], e = {}, i = 0; i < u.length; i++) { var c = u[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, u) { t( n, "", p({}, u, { expires: -1 }) ); }, withAttributes: function(n) { return s(this.converter, p({}, this.attributes, n)); }, withConverter: function(n) { return s(p({}, this.converter, n), this.attributes); } }, { attributes: { value: Object.freeze(o) }, converter: { value: Object.freeze(r) } } ); } var x = s(a, { path: "/" }); const R = ({ children: r, theme: o }) => { const [t, f] = h(() => o || (l ? x.get("konstruct-theme") : "kubefirst")); return g(() => { document.querySelector("body")?.setAttribute("data-theme", t); }, [t]), /* @__PURE__ */ v(C.Provider, { value: { theme: t, setTheme: f }, children: r }); }; export { R as ThemeProvider };