UNPKG

ov25-ui

Version:

A UI configurator for OV25 product visualization

1,046 lines 1.02 MB
import * as w from "react"; import i, { forwardRef as jr, createElement as nl, isValidElement as us, useState as K, useRef as ge, useCallback as he, useLayoutEffect as Ht, useContext as $l, createContext as Ul, useMemo as Ae, useEffect as ae, useId as Yp } from "react"; import { createRoot as sv } from "react-dom/client"; import * as Xp from "react-dom"; import Kp, { createPortal as Xe } from "react-dom"; import { jsx as it, jsxs as sd, Fragment as ld } from "react/jsx-runtime"; const Qp = "bedAllowNone"; function Zp(t) { if (t.headboard && t.base && t.mattress) return; const e = []; return t.headboard && e.push("headboard"), t.base && e.push("base"), t.mattress && e.push("mattress"), e.length === 0 ? "none" : e.join(","); } const Jp = "REQUEST_TRANSITION_SNAPSHOT", lv = "TRANSITION_SNAPSHOT", cv = "TRANSITION_SNAPSHOT_ERROR", eh = 350, th = 500, oh = 160, rh = 500, hi = "cubic-bezier(0.4, 0, 0.2, 1)", nh = 220, gi = 280, dv = 240, ah = 2147483645, ih = 2147483647, sh = "ov25-configurator-background-color", uv = "--ov25-configurator-iframe-background-color", al = "#ffffff"; function lh(t) { const e = (r) => { const n = r.getElementById(t); if (n) return n; for (const a of Array.from(r.querySelectorAll("*"))) if (a.shadowRoot) { const s = e(a.shadowRoot); if (s) return s; } return null; }, o = (r) => { if (r.shadowRoot) { const n = e(r.shadowRoot); if (n) return n; } for (const n of Array.from(r.children)) { const a = o(n); if (a) return a; } return null; }; return o(document.documentElement); } function co(t) { const e = document.getElementById(t); if (e) return e; if (t === "ov25-configurator-variant-menu-container") { const a = document.getElementById("ov25-variants-shadow-container"); if (a != null && a.shadowRoot) { const s = a.shadowRoot.getElementById(t); if (s) return s; } } const o = document.getElementById("ov25-mobile-drawer-container"); if (o != null && o.shadowRoot) { const a = o.shadowRoot.getElementById(t); if (a) return a; } const r = document.getElementById("ov25-modal-portal-container"); if (r != null && r.shadowRoot) { const a = r.shadowRoot.getElementById(t); if (a) return a; } const n = document.querySelectorAll('div[class^="ov25-configurator-"]'); for (const a of Array.from(n)) if (a.shadowRoot) { const s = a.shadowRoot.getElementById(t); if (s) return s; const l = a.shadowRoot.querySelectorAll('div[class^="ov25-configurator-"]'); for (const d of Array.from(l)) if (d.shadowRoot) { const c = d.shadowRoot.getElementById(t); if (c) return c; } } return lh(t); } function jl() { if (typeof document > "u") return al; const t = co(sh); if (t) { const { backgroundColor: o } = getComputedStyle(t); if (o && o !== "rgba(0, 0, 0, 0)" && o !== "transparent") return o; } const e = getComputedStyle(document.documentElement).getPropertyValue(uv).trim(); return e || al; } function gn(t) { const e = t ? `ov25-configurator-iframe-${t}` : "ov25-configurator-iframe"; return co(e); } function vv(t, e) { const o = t ? `ov25-configurator-iframe-container-${t}` : "ov25-configurator-iframe-container", n = co(e ? "true-ov25-configurator-iframe-container" : o); if (!n) return null; const a = n.getBoundingClientRect(); return a.width < 1 || a.height < 1 ? null : { top: a.top, left: a.left, width: a.width, height: a.height }; } const ch = {}, dh = /* @__PURE__ */ new Set(["1", "true", "yes", "on"]), uh = "https://configurator.orbital.vision", cd = "3000", Ga = (t) => typeof t != "string" ? !1 : dh.has(t.trim().toLowerCase()), vh = () => { const t = ch; return Ga("") || Ga("") || Ga(t["ov25-configurator-dev"]) || Ga(""); }, fh = (t) => t.includes(":") && !t.startsWith("[") ? `[${t}]` : t, mh = () => { if (typeof window > "u") return `http://localhost:${cd}/configurator`; const t = window.location.hostname || "localhost"; return `http://${fh(t)}:${cd}/configurator`; }, fv = () => vh() ? mh() : uh, mv = "showAttachmentPoints"; function Xo(t) { var o, r; return ((r = (o = t == null ? void 0 : t.metadata) == null ? void 0 : o.bedSize) == null ? void 0 : r.trim()) || void 0; } function ph(t, e) { if (t.length <= 1) return [...t]; const o = [], r = []; for (const n of t) { const a = e(n); (typeof a == "string" && a.trim().toLowerCase() === "none" ? o : r).push(n); } return [...o, ...r]; } function hh(t) { var r; if (((r = t.name) == null ? void 0 : r.trim().toLowerCase()) === "none") return "none"; const o = Xo(t); return (o == null ? void 0 : o.trim().toLowerCase()) === "none" ? "none" : t.name ?? ""; } function gh(t) { return ph(t, (e) => hh(e)); } function bh(t, e, o) { if (!Array.isArray(t) || t.length === 0) return !1; const r = (...n) => { for (const a of n) { if (a == null) continue; const s = Number(a); if (!Number.isNaN(s)) return s; } return NaN; }; return t.some((n) => { if (!n || typeof n != "object") return !1; const a = n, s = a.product && typeof a.product == "object" ? a.product : void 0, l = a.model && typeof a.model == "object" ? a.model : void 0, d = r(a.productId, a.product_id, s == null ? void 0 : s.id), c = r(a.modelId, a.model_id, l == null ? void 0 : l.modelId); return d === Number(e) && c === Number(o); }); } function yh(t, e) { if (t === null || t.length !== e.length) return !1; for (let o = 0; o < t.length; o++) if (Number(t[o].productId) !== Number(e[o].productId)) return !1; return !0; } const Wl = (t) => gn(t), Ut = (t, e, o) => { const r = Wl(o); r != null && r.contentWindow && r.contentWindow.postMessage({ type: t, payload: JSON.stringify(e) }, "*"); }, pv = (t, e, o, r) => { Ut("VIEW_DIMENSIONS", { dimensions: !t, styles: r }, o), e((n) => !n); }, wh = (t, e, o, r) => { Ut("VIEW_MINI_DIMENSIONS", { miniDimensions: !t, styles: r }, o), e((n) => !n); }, hv = (t) => { Ut("REQUEST_SNAP2_SAVE", {}, t); }, Yn = (t, e) => { Ut("SELECT_MODULE", t, e); }, xh = (t) => { Ut("TOGGLE_SNAP2_SHOW_FLOOR", {}, t); }, Eh = (t, e) => { Ut("SNAP2_SWITCH_VIEW_GROUP", { groupId: t }, e); }, mr = (t) => { Ut("CLOSE_MODULE_SELECT_MENU", {}, t); }, Sh = 12e4; function kh(t) { return new Promise((e, o) => { const r = Wl(t); if (!(r != null && r.contentWindow)) { o(new Error("Configurator iframe not found")); return; } const n = r.contentWindow, a = `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`, s = window.setTimeout(() => { window.removeEventListener("message", l), o(new Error("Snap2 screenshot capture timed out")); }, Sh), l = (d) => { if (d.source !== n) return; const c = d.data; if (!(!c || typeof c.type != "string" || typeof c.payload != "string")) { if (c.type === "SNAP2_SCREENSHOTS_RESULT") { let u; try { u = JSON.parse(c.payload); } catch { return; } if (u.requestId !== a) return; window.clearTimeout(s), window.removeEventListener("message", l), e(Array.isArray(u.items) ? u.items : []); return; } if (c.type === "ERROR") { let u; try { u = JSON.parse(c.payload); } catch { return; } if (u.requestId !== a) return; window.clearTimeout(s), window.removeEventListener("message", l), o(new Error(u.message || "Screenshot capture failed")); } } }; window.addEventListener("message", l), Ut("SNAP2_CAPTURE_SCREENSHOTS", { requestId: a }, t); }); } const _h = (t) => { Ut("TOGGLE_ANIMATION", {}, t); }, Ch = (t) => { Ut("ENTER_AR", {}, t); }, gv = (t) => { const e = Wl(t), o = e == null ? void 0 : e.parentElement; o && (document.fullscreenElement ? document.exitFullscreen() : o.requestFullscreen().catch((r) => { console.error(`Error attempting to enable fullscreen: ${r.message}`); })); }, Th = (t, e) => t ? e === "open" || e === "loop" ? "Close" : "Open" : "", Nh = (t, e, o, r, n, a) => { const s = fv(); t || (t = ""), e || (e = ""); const l = e.startsWith("/") ? e.substring(1) : e, d = l.indexOf("?"), c = d >= 0 ? l.slice(0, d) : l, u = new URLSearchParams(d >= 0 ? l.slice(d + 1) : ""), f = window.location.search; if (new URLSearchParams(f).forEach((g, v) => { u.has(v) || u.set(v, g); }), o && u.set("configuration_uuid", o), r) { const g = r.startsWith("#") ? r.substring(1) : r; u.set("hexBgColor", g); } n != null && n !== "" && u.set(Qp, n), a === !1 && u.set(mv, "false"); const p = u.toString(), m = p ? `${c}?${p}` : c; return `${s}/${t}/${m}`; }, bi = 0.42, bv = 1 - bi, Ih = () => { const t = navigator.userAgent || navigator.vendor || window.opera; return /Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(t) ? /iPad|iPhone|iPod/.test(t) && !window.MSStream ? "ios" : "android" : /Win/i.test(t) ? "windows" : /Mac/i.test(t) ? "mac" : "unknown"; }; function Oh(t) { const e = t.trim(); return /^headboard\b/i.test(e) ? "headboard" : /^mattress\b/i.test(e) ? "mattress" : /^base\b/i.test(e) ? "base" : null; } function dd(t) { return t.trim().toLowerCase().replace(/\s+/g, " "); } function Mh(t, e) { return dd(t) === dd(e); } function Rh(t) { var o, r; return ((r = (o = t == null ? void 0 : t.metadata) == null ? void 0 : o.bedSize) == null ? void 0 : r.trim()) || void 0; } function Ah(t) { var n; const e = Oh(t.optionDisplayName); if (!e || !t.flags[e] || !t.currentBedSize || ((n = t.selection.name) == null ? void 0 : n.trim().toLowerCase()) === "none") return !0; const r = Rh(t.selection); return !r || r.trim().toLowerCase() === "none" ? !0 : Mh(r, t.currentBedSize); } /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Ph = (t) => t.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), Dh = (t) => t.replace( /^([A-Z])|[\s-_]+(\w)/g, (e, o, r) => r ? r.toUpperCase() : o.toLowerCase() ), ud = (t) => { const e = Dh(t); return e.charAt(0).toUpperCase() + e.slice(1); }, yv = (...t) => t.filter((e, o, r) => !!e && e.trim() !== "" && r.indexOf(e) === o).join(" ").trim(), Lh = (t) => { for (const e in t) if (e.startsWith("aria-") || e === "role" || e === "title") return !0; }; /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ var zh = { xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round" }; /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Bh = jr( ({ color: t = "currentColor", size: e = 24, strokeWidth: o = 2, absoluteStrokeWidth: r, className: n = "", children: a, iconNode: s, ...l }, d) => nl( "svg", { ref: d, ...zh, width: e, height: e, stroke: t, strokeWidth: r ? Number(o) * 24 / Number(e) : o, className: yv("lucide", n), ...!a && !Lh(l) && { "aria-hidden": "true" }, ...l }, [ ...s.map(([c, u]) => nl(c, u)), ...Array.isArray(a) ? a : [a] ] ) ); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const ze = (t, e) => { const o = jr( ({ className: r, ...n }, a) => nl(Bh, { ref: a, iconNode: e, className: yv( `lucide-${Ph(ud(t))}`, `lucide-${t}`, r ), ...n }) ); return o.displayName = ud(t), o; }; /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Fh = [ ["path", { d: "M19 9V6a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v3", key: "irtipd" }], [ "path", { d: "M3 16a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v1.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V11a2 2 0 0 0-4 0z", key: "1qyhux" } ], ["path", { d: "M5 18v2", key: "ppbyun" }], ["path", { d: "M19 18v2", key: "gy7782" }] ], Wr = ze("armchair", Fh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Vh = [ ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }], ["path", { d: "M19 12H5", key: "x3x0zl" }] ], $h = ze("arrow-left", Vh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Uh = [ ["path", { d: "M5 12h14", key: "1ays0h" }], ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }] ], jh = ze("arrow-right", Uh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Wh = [ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], ["path", { d: "m4.9 4.9 14.2 14.2", key: "1m5liu" }] ], Hh = ze("ban", Wh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Gh = [ [ "path", { d: "M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z", key: "1tc9qg" } ], ["circle", { cx: "12", cy: "13", r: "3", key: "1vg3eu" }] ], il = ze("camera", Gh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const qh = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]], pr = ze("chevron-down", qh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Yh = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]], sl = ze("chevron-left", Yh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Xh = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]], ra = ze("chevron-right", Xh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Kh = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]], na = ze("chevron-up", Kh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Qh = [ ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }], ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }] ], wv = ze("chevrons-right", Qh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Zh = [ ["polyline", { points: "15 10 20 15 15 20", key: "1q7qjw" }], ["path", { d: "M4 4v7a4 4 0 0 0 4 4h12", key: "z08zvw" }] ], xv = ze("corner-down-right", Zh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Jh = [ ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }], ["polyline", { points: "7 10 12 15 17 10", key: "2ggqvy" }], ["line", { x1: "12", x2: "12", y1: "15", y2: "3", key: "1vk2je" }] ], Ev = ze("download", Jh); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const eg = [ ["path", { d: "m15 15 6 6", key: "1s409w" }], ["path", { d: "m15 9 6-6", key: "ko1vev" }], ["path", { d: "M21 16.2V21h-4.8", key: "1hrera" }], ["path", { d: "M21 7.8V3h-4.8", key: "ul1q53" }], ["path", { d: "M3 16.2V21h4.8", key: "1x04uo" }], ["path", { d: "m3 21 6-6", key: "wwnumi" }], ["path", { d: "M3 7.8V3h4.8", key: "1ijppm" }], ["path", { d: "M9 9 3 3", key: "v551iv" }] ], tg = ze("expand", eg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const og = [ ["path", { d: "m15 18-.722-3.25", key: "1j64jw" }], ["path", { d: "M2 8a10.645 10.645 0 0 0 20 0", key: "1e7gxb" }], ["path", { d: "m20 15-1.726-2.05", key: "1cnuld" }], ["path", { d: "m4 15 1.726-2.05", key: "1dsqqd" }], ["path", { d: "m9 18 .722-3.25", key: "ypw2yx" }] ], rg = ze("eye-closed", og); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const ng = [ [ "path", { d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0", key: "1nclc0" } ], ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }] ], ag = ze("eye", ng); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const ig = [ [ "path", { d: "M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z", key: "sc7q7i" } ] ], sg = ze("funnel", ig); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const lg = [ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }], ["path", { d: "M3 9h18", key: "1pudct" }], ["path", { d: "M3 15h18", key: "5xshup" }], ["path", { d: "M9 3v18", key: "fh3hqa" }], ["path", { d: "M15 3v18", key: "14nvp0" }] ], cg = ze("grid-3x3", lg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const dg = [ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }], ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }], ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }] ], ug = ze("image", dg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const vg = [ ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }], ["path", { d: "M12 16v-4", key: "1dtifu" }], ["path", { d: "M12 8h.01", key: "e9boi3" }] ], fg = ze("info", vg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const mg = [ [ "path", { d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z", key: "zw3jo" } ], [ "path", { d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12", key: "1wduqc" } ], [ "path", { d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17", key: "kqbvx6" } ] ], yi = ze("layers", mg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const pg = [ [ "path", { d: "M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5", key: "1gvzjb" } ], ["path", { d: "M9 18h6", key: "x1upvd" }], ["path", { d: "M10 22h4", key: "ceow96" }] ], hg = ze("lightbulb", pg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const gg = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]], Sv = ze("loader-circle", gg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const bg = [ ["polyline", { points: "15 3 21 3 21 9", key: "mznyad" }], ["polyline", { points: "9 21 3 21 3 15", key: "1avn1i" }], ["line", { x1: "21", x2: "14", y1: "3", y2: "10", key: "ota7mn" }], ["line", { x1: "3", x2: "10", y1: "21", y2: "14", key: "1atl0r" }] ], yg = ze("maximize-2", bg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const wg = [["path", { d: "M5 12h14", key: "1ays0h" }]], xg = ze("minus", wg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Eg = [ [ "path", { d: "M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z", key: "edeuup" } ] ], Sg = ze("mouse-pointer-2", Eg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const kg = [ ["path", { d: "M12 2v20", key: "t6zp3m" }], ["path", { d: "m15 19-3 3-3-3", key: "11eu04" }], ["path", { d: "m19 9 3 3-3 3", key: "1mg7y2" }], ["path", { d: "M2 12h20", key: "9i4pu4" }], ["path", { d: "m5 9-3 3 3 3", key: "j64kie" }], ["path", { d: "m9 5 3-3 3 3", key: "l8vdw6" }] ], _g = ze("move", kg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Cg = [ ["rect", { x: "16", y: "16", width: "6", height: "6", rx: "1", key: "4q2zg0" }], ["rect", { x: "2", y: "16", width: "6", height: "6", rx: "1", key: "8cvhb9" }], ["rect", { x: "9", y: "2", width: "6", height: "6", rx: "1", key: "1egb70" }], ["path", { d: "M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3", key: "1jsf9p" }], ["path", { d: "M12 12V8", key: "2874zd" }] ], Tg = ze("network", Cg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Ng = [ [ "path", { d: "M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z", key: "e79jfc" } ], ["circle", { cx: "13.5", cy: "6.5", r: ".5", fill: "currentColor", key: "1okk4w" }], ["circle", { cx: "17.5", cy: "10.5", r: ".5", fill: "currentColor", key: "f64h9f" }], ["circle", { cx: "6.5", cy: "12.5", r: ".5", fill: "currentColor", key: "qy21gx" }], ["circle", { cx: "8.5", cy: "7.5", r: ".5", fill: "currentColor", key: "fotxhn" }] ], kv = ze("palette", Ng); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Ig = [ ["path", { d: "M5 12h14", key: "1ays0h" }], ["path", { d: "M12 5v14", key: "s699le" }] ], Pi = ze("plus", Ig); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Og = [ ["path", { d: "M18 7c0-5.333-8-5.333-8 0", key: "1prm2n" }], ["path", { d: "M10 7v14", key: "18tmcs" }], ["path", { d: "M6 21h12", key: "4dkmi1" }], ["path", { d: "M6 13h10", key: "ybwr4a" }] ], Mg = ze("pound-sterling", Og); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Rg = [ [ "path", { d: "M16.466 7.5C15.643 4.237 13.952 2 12 2 9.239 2 7 6.477 7 12s2.239 10 5 10c.342 0 .677-.069 1-.2", key: "10n0gc" } ], ["path", { d: "m15.194 13.707 3.814 1.86-1.86 3.814", key: "16shm9" }], [ "path", { d: "M19 15.57c-1.804.885-4.274 1.43-7 1.43-5.523 0-10-2.239-10-5s4.477-5 10-5c4.838 0 8.873 1.718 9.8 4", key: "1lxi77" } ] ], Ag = ze("rotate-3d", Rg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Pg = [ [ "path", { d: "M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z", key: "icamh8" } ], ["path", { d: "m14.5 12.5 2-2", key: "inckbg" }], ["path", { d: "m11.5 9.5 2-2", key: "fmmyf7" }], ["path", { d: "m8.5 6.5 2-2", key: "vc6u1g" }], ["path", { d: "m17.5 15.5 2-2", key: "wo5hmg" }] ], _v = ze("ruler", Pg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Dg = [ ["path", { d: "M3 7V5a2 2 0 0 1 2-2h2", key: "aa7l1z" }], ["path", { d: "M17 3h2a2 2 0 0 1 2 2v2", key: "4qcy5o" }], ["path", { d: "M21 17v2a2 2 0 0 1-2 2h-2", key: "6vwrx8" }], ["path", { d: "M7 21H5a2 2 0 0 1-2-2v-2", key: "ioqczr" }], ["path", { d: "M7 12h10", key: "b7w52i" }] ], Lg = ze("scan-line", Dg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const zg = [ ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], ["path", { d: "m21 21-4.3-4.3", key: "1qie3q" }] ], Bg = ze("search", zg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Fg = [ ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }], ["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }], ["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }], ["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }], ["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }] ], Vg = ze("share-2", Fg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const $g = [ ["path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8", key: "1b2hhj" }], ["polyline", { points: "16 6 12 2 8 6", key: "m901s6" }], ["line", { x1: "12", x2: "12", y1: "2", y2: "15", key: "1p0rca" }] ], Ug = ze("share", $g); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const jg = [ ["circle", { cx: "8", cy: "21", r: "1", key: "jimo8o" }], ["circle", { cx: "19", cy: "21", r: "1", key: "13723u" }], [ "path", { d: "M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12", key: "9zh506" } ] ], vd = ze("shopping-cart", jg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Wg = [ ["line", { x1: "21", x2: "14", y1: "4", y2: "4", key: "obuewd" }], ["line", { x1: "10", x2: "3", y1: "4", y2: "4", key: "1q6298" }], ["line", { x1: "21", x2: "12", y1: "12", y2: "12", key: "1iu8h1" }], ["line", { x1: "8", x2: "3", y1: "12", y2: "12", key: "ntss68" }], ["line", { x1: "21", x2: "16", y1: "20", y2: "20", key: "14d8ph" }], ["line", { x1: "12", x2: "3", y1: "20", y2: "20", key: "m0wm8r" }], ["line", { x1: "14", x2: "14", y1: "2", y2: "6", key: "14e1ph" }], ["line", { x1: "8", x2: "8", y1: "10", y2: "14", key: "1i6ji0" }], ["line", { x1: "16", x2: "16", y1: "18", y2: "22", key: "1lctlv" }] ], Cv = ze("sliders-horizontal", Wg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Hg = [ ["path", { d: "M20 9V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3", key: "1dgpiv" }], [ "path", { d: "M2 16a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v1.5a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5V11a2 2 0 0 0-4 0z", key: "xacw8m" } ], ["path", { d: "M4 18v2", key: "jwo5n2" }], ["path", { d: "M20 18v2", key: "1ar1qi" }], ["path", { d: "M12 4v9", key: "oqhhn3" }] ], Hl = ze("sofa", Hg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Gg = [ [ "path", { d: "M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z", key: "4pj2yx" } ], ["path", { d: "M20 3v4", key: "1olli1" }], ["path", { d: "M22 5h-4", key: "1gvqau" }], ["path", { d: "M4 17v2", key: "vumght" }], ["path", { d: "M5 18H3", key: "zchphs" }] ], Gl = ze("sparkles", Gg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const qg = [ [ "path", { d: "M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18", key: "gugj83" } ] ], Yg = ze("table-2", qg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Xg = [ ["path", { d: "M14 10h2", key: "1lstlu" }], ["path", { d: "M15 22v-8", key: "1fwwgm" }], ["path", { d: "M15 2v4", key: "1044rn" }], ["path", { d: "M2 10h2", key: "1r8dkt" }], ["path", { d: "M20 10h2", key: "1ug425" }], ["path", { d: "M3 19h18", key: "awlh7x" }], ["path", { d: "M3 22v-6a2 2 135 0 1 2-2h14a2 2 45 0 1 2 2v6", key: "ibqhof" }], ["path", { d: "M3 2v2a2 2 45 0 0 2 2h14a2 2 135 0 0 2-2V2", key: "1uenja" }], ["path", { d: "M8 10h2", key: "66od0" }], ["path", { d: "M9 22v-8", key: "fmnu31" }], ["path", { d: "M9 2v4", key: "j1yeou" }] ], Kg = ze("table-rows-split", Xg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Qg = [ ["path", { d: "M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2", key: "wrbu53" }], ["path", { d: "M15 18H9", key: "1lyqi6" }], [ "path", { d: "M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14", key: "lysw3i" } ], ["circle", { cx: "17", cy: "18", r: "2", key: "332jqn" }], ["circle", { cx: "7", cy: "18", r: "2", key: "19iecd" }] ], Zg = ze("truck", Qg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const Jg = [ ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }], ["polyline", { points: "17 8 12 3 7 8", key: "t8dd8p" }], ["line", { x1: "12", x2: "12", y1: "3", y2: "15", key: "widbto" }] ], e0 = ze("upload", Jg); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const t0 = [ ["path", { d: "M18 6 6 18", key: "1bl5f8" }], ["path", { d: "m6 6 12 12", key: "d8bk6v" }] ], bn = ze("x", t0); /** * @license lucide-react v0.503.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ const o0 = [ ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }], ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65", key: "13gj7c" }], ["line", { x1: "11", x2: "11", y1: "8", y2: "14", key: "1vmskp" }], ["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }] ], r0 = ze("zoom-in", o0); var n0 = (t) => { switch (t) { case "success": return s0; case "info": return c0; case "warning": return l0; case "error": return d0; default: return null; } }, a0 = Array(12).fill(0), i0 = ({ visible: t, className: e }) => i.createElement("div", { className: ["sonner-loading-wrapper", e].filter(Boolean).join(" "), "data-visible": t }, i.createElement("div", { className: "sonner-spinner" }, a0.map((o, r) => i.createElement("div", { className: "sonner-loading-bar", key: `spinner-bar-${r}` })))), s0 = i.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: "20", width: "20" }, i.createElement("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z", clipRule: "evenodd" })), l0 = i.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "currentColor", height: "20", width: "20" }, i.createElement("path", { fillRule: "evenodd", d: "M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" })), c0 = i.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: "20", width: "20" }, i.createElement("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z", clipRule: "evenodd" })), d0 = i.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", height: "20", width: "20" }, i.createElement("path", { fillRule: "evenodd", d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z", clipRule: "evenodd" })), u0 = i.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "12", height: "12", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }, i.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), i.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" })), v0 = () => { let [t, e] = i.useState(document.hidden); return i.useEffect(() => { let o = () => { e(document.hidden); }; return document.addEventListener("visibilitychange", o), () => window.removeEventListener("visibilitychange", o); }, []), t; }, ll = 1, f0 = class { constructor() { this.subscribe = (t) => (this.subscribers.push(t), () => { let e = this.subscribers.indexOf(t); this.subscribers.splice(e, 1); }), this.publish = (t) => { this.subscribers.forEach((e) => e(t)); }, this.addToast = (t) => { this.publish(t), this.toasts = [...this.toasts, t]; }, this.create = (t) => { var e; let { message: o, ...r } = t, n = typeof (t == null ? void 0 : t.id) == "number" || ((e = t.id) == null ? void 0 : e.length) > 0 ? t.id : ll++, a = this.toasts.find((l) => l.id === n), s = t.dismissible === void 0 ? !0 : t.dismissible; return this.dismissedToasts.has(n) && this.dismissedToasts.delete(n), a ? this.toasts = this.toasts.map((l) => l.id === n ? (this.publish({ ...l, ...t, id: n, title: o }), { ...l, ...t, id: n, dismissible: s, title: o }) : l) : this.addToast({ title: o, ...r, dismissible: s, id: n }), n; }, this.dismiss = (t) => (this.dismissedToasts.add(t), t || this.toasts.forEach((e) => { this.subscribers.forEach((o) => o({ id: e.id, dismiss: !0 })); }), this.subscribers.forEach((e) => e({ id: t, dismiss: !0 })), t), this.message = (t, e) => this.create({ ...e, message: t }), this.error = (t, e) => this.create({ ...e, message: t, type: "error" }), this.success = (t, e) => this.create({ ...e, type: "success", message: t }), this.info = (t, e) => this.create({ ...e, type: "info", message: t }), this.warning = (t, e) => this.create({ ...e, type: "warning", message: t }), this.loading = (t, e) => this.create({ ...e, type: "loading", message: t }), this.promise = (t, e) => { if (!e) return; let o; e.loading !== void 0 && (o = this.create({ ...e, promise: t, type: "loading", message: e.loading, description: typeof e.description != "function" ? e.description : void 0 })); let r = t instanceof Promise ? t : t(), n = o !== void 0, a, s = r.then(async (d) => { if (a = ["resolve", d], i.isValidElement(d)) n = !1, this.create({ id: o, type: "default", message: d }); else if (p0(d) && !d.ok) { n = !1; let c = typeof e.error == "function" ? await e.error(`HTTP error! status: ${d.status}`) : e.error, u = typeof e.description == "function" ? await e.description(`HTTP error! status: ${d.status}`) : e.description; this.create({ id: o, type: "error", message: c, description: u }); } else if (e.success !== void 0) { n = !1; let c = typeof e.success == "function" ? await e.success(d) : e.success, u = typeof e.description == "function" ? await e.description(d) : e.description; this.create({ id: o, type: "success", message: c, description: u }); } }).catch(async (d) => { if (a = ["reject", d], e.error !== void 0) { n = !1; let c = typeof e.error == "function" ? await e.error(d) : e.error, u = typeof e.description == "function" ? await e.description(d) : e.description; this.create({ id: o, type: "error", message: c, description: u }); } }).finally(() => { var d; n && (this.dismiss(o), o = void 0), (d = e.finally) == null || d.call(e); }), l = () => new Promise((d, c) => s.then(() => a[0] === "reject" ? c(a[1]) : d(a[1])).catch(c)); return typeof o != "string" && typeof o != "number" ? { unwrap: l } : Object.assign(o, { unwrap: l }); }, this.custom = (t, e) => { let o = (e == null ? void 0 : e.id) || ll++; return this.create({ jsx: t(o), id: o, ...e }), o; }, this.getActiveToasts = () => this.toasts.filter((t) => !this.dismissedToasts.has(t.id)), this.subscribers = [], this.toasts = [], this.dismissedToasts = /* @__PURE__ */ new Set(); } }, Zt = new f0(), m0 = (t, e) => { let o = (e == null ? void 0 : e.id) || ll++; return Zt.addToast({ title: t, ...e, id: o }), o; }, p0 = (t) => t && typeof t == "object" && "ok" in t && typeof t.ok == "boolean" && "status" in t && typeof t.status == "number", h0 = m0, g0 = () => Zt.toasts, b0 = () => Zt.getActiveToasts(), xo = Object.assign(h0, { success: Zt.success, info: Zt.info, warning: Zt.warning, error: Zt.error, custom: Zt.custom, message: Zt.message, promise: Zt.promise, dismiss: Zt.dismiss, loading: Zt.loading }, { getHistory: g0, getToasts: b0 }); function y0(t, { insertAt: e } = {}) { if (typeof document > "u") return; let o = document.head || document.getElementsByTagName("head")[0], r = document.createElement("style"); r.type = "text/css", e === "top" && o.firstChild ? o.insertBefore(r, o.firstChild) : o.appendChild(r), r.styleSheet ? r.styleSheet.cssText = t : r.appendChild(document.createTextNode(t)); } y0(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:c