@stackable-labs/embeddables 1.66.1 → 1.66.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.js
CHANGED
|
@@ -5,7 +5,7 @@ import * as Cn from "react-dom";
|
|
|
5
5
|
import fs from "react-dom";
|
|
6
6
|
const Qc = () => {
|
|
7
7
|
try {
|
|
8
|
-
return "
|
|
8
|
+
return "458bb472-143d-4e12-bf00-358554e89a52";
|
|
9
9
|
} catch {
|
|
10
10
|
return "dev";
|
|
11
11
|
}
|
|
@@ -12499,22 +12499,23 @@ const Db = ({ ...e }) => {
|
|
|
12499
12499
|
}), !0), []);
|
|
12500
12500
|
ce(() => {
|
|
12501
12501
|
var H, V;
|
|
12502
|
-
|
|
12503
|
-
|
|
12504
|
-
return;
|
|
12505
|
-
}
|
|
12506
|
-
const S = setInterval(() => {
|
|
12507
|
-
k() && (w("ready"), clearInterval(S));
|
|
12508
|
-
}, 100), A = setTimeout(() => {
|
|
12509
|
-
clearInterval(S), w((W) => W === "ready" ? W : (console.warn("Zendesk widget failed to load after 10 seconds"), "error"));
|
|
12510
|
-
}, 1e4), D = document.querySelector('script[src*="zdassets.com/ekr/snippet"]'), O = (V = (H = D == null ? void 0 : D.src) == null ? void 0 : H.match(/key=([a-f0-9-]+)/)) == null ? void 0 : V[1];
|
|
12511
|
-
return O && fetch(`https://ekr.zdassets.com/compose/${O}`).then((W) => W.text()).then((W) => {
|
|
12502
|
+
const S = document.querySelector('script[src*="zdassets.com/ekr/snippet"]'), A = (V = (H = S == null ? void 0 : S.src) == null ? void 0 : H.match(/key=([a-f0-9-]+)/)) == null ? void 0 : V[1];
|
|
12503
|
+
if (A && fetch(`https://ekr.zdassets.com/compose/${A}`).then((W) => W.text()).then((W) => {
|
|
12512
12504
|
var _;
|
|
12513
12505
|
const Q = (_ = W.match(/appId['"]?\s*:\s*['"]([a-f0-9]+)['"]/)) == null ? void 0 : _[1];
|
|
12514
12506
|
Q && lo({ appId: Q });
|
|
12515
12507
|
}).catch(() => {
|
|
12516
|
-
}), ()
|
|
12517
|
-
|
|
12508
|
+
}), k()) {
|
|
12509
|
+
w("ready");
|
|
12510
|
+
return;
|
|
12511
|
+
}
|
|
12512
|
+
const D = setInterval(() => {
|
|
12513
|
+
k() && (w("ready"), clearInterval(D));
|
|
12514
|
+
}, 100), O = setTimeout(() => {
|
|
12515
|
+
clearInterval(D), w((W) => W === "ready" ? W : (console.warn("Zendesk widget failed to load after 10 seconds"), "error"));
|
|
12516
|
+
}, 1e4);
|
|
12517
|
+
return () => {
|
|
12518
|
+
clearInterval(D), clearTimeout(O);
|
|
12518
12519
|
};
|
|
12519
12520
|
}, [k]);
|
|
12520
12521
|
const N = Re((S) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(d,be){typeof exports=="object"&&typeof module<"u"?be(require("react/jsx-runtime"),require("react-dom/client"),require("react"),require("react-dom")):typeof define=="function"&&define.amd?define(["react/jsx-runtime","react-dom/client","react","react-dom"],be):(d=typeof globalThis<"u"?globalThis:d||self,be(d.jsxRuntime,d.ReactDOM,d.React,d.ReactDOM))})(this,(function(d,be,x,Ho){"use strict";var db=Object.defineProperty;var ub=(d,be,x)=>be in d?db(d,be,{enumerable:!0,configurable:!0,writable:!0,value:x}):d[be]=x;var on=(d,be,x)=>ub(d,typeof be!="symbol"?be+"":be,x);function rn(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const p=rn(x),Ut=rn(Ho),Ml='/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--color-red-100:oklch(93.6% .032 17.717);--color-red-800:oklch(44.4% .177 26.899);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-800:oklch(47.3% .137 46.201);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-800:oklch(43.2% .095 166.913);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-800:oklch(42.4% .199 265.638);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-800:oklch(43.8% .218 303.724);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-800:oklch(45.9% .187 3.815);--color-gray-800:oklch(27.8% .033 256.848);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-geist-sans,ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);--default-mono-font-family:var(--font-geist-mono,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:rotateX(0);--tw-rotate-y:rotateY(0);--tw-rotate-z:rotateZ(0);--tw-skew-x:skewX(0);--tw-skew-y:skewY(0);--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-colored:0 0 #0000;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*,:before,:after{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}:host{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.right-8{right:calc(var(--spacing) * 8)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-24{bottom:calc(var(--spacing) * 24)}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-1000{z-index:1000}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.-mt-2\\.5{margin-top:calc(var(--spacing) * -2.5)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.-ml-2\\.5{margin-left:calc(var(--spacing) * -2.5)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-\\[700px\\]{height:700px}.h-auto{height:auto}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.w-0\\.5{width:calc(var(--spacing) * .5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-48{width:calc(var(--spacing) * 48)}.w-\\[900px\\]{width:900px}.w-full{width:100%}.max-w-\\[200px\\]{max-width:200px}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.origin-bottom-right{transform-origin:100% 100%}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-115{--tw-scale-x:115%;--tw-scale-y:115%;--tw-scale-z:115%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-border{border-color:var(--border)}.border-transparent{border-color:#0000}.border-zinc-200{border-color:#e4e4e4}.bg-amber-100{background-color:var(--color-amber-100)}.bg-background{background-color:var(--background)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-foreground\\/35{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\\/35{background-color:color-mix(in oklab,var(--foreground) 35%,transparent)}}.bg-foreground\\/70{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\\/70{background-color:color-mix(in oklab,var(--foreground) 70%,transparent)}}.bg-gray-100{background-color:#f3f4f6}.bg-muted{background-color:var(--muted)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-transparent{background-color:#0000}.bg-white{background-color:#fff}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.\\!text-muted-foreground{color:var(--muted-foreground)!important}.text-amber-800{color:var(--color-amber-800)}.text-blue-800{color:var(--color-blue-800)}.text-destructive{color:var(--destructive)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground,.text-foreground\\/70{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\\/70{color:color-mix(in oklab,var(--foreground) 70%,transparent)}}.text-foreground\\/75{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\\/75{color:color-mix(in oklab,var(--foreground) 75%,transparent)}}.text-gray-800{color:var(--color-gray-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-pink-800{color:var(--color-pink-800)}.text-purple-800{color:var(--color-purple-800)}.text-red-800{color:var(--color-red-800)}.text-zinc-300{color:#d4d4d4}.text-zinc-500{color:#727272}.opacity-0{opacity:0}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_0_1px_rgba\\(255\\,255\\,255\\,0\\.16\\)\\,0_0_0_1px_rgba\\(0\\,0\\,0\\,0\\.22\\)\\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffff29), 0 0 0 1px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-background{--tw-ring-color:var(--background)}.ring-zinc-200{--tw-ring-color:oklch(92% 0 0)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.running{animation-play-state:running}@media(hover:hover){.group-hover\\/resize\\:bg-foreground\\/55:is(:where(.group\\/resize):hover *){background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.group-hover\\/resize\\:bg-foreground\\/55:is(:where(.group\\/resize):hover *){background-color:color-mix(in oklab,var(--foreground) 55%,transparent)}}.group-hover\\/resize\\:opacity-100:is(:where(.group\\/resize):hover *){opacity:1}.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:cursor-pointer:hover{cursor:pointer}.hover\\:bg-accent\\/70:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-accent\\/70:hover{background-color:color-mix(in oklab,var(--accent) 70%,transparent)}}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:text-zinc-900:hover{color:#181818}.hover\\:opacity-100:hover{opacity:1}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-ring\\/40:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\\:ring-ring\\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.dark\\:border-zinc-300:is(.dark *){border-color:#d4d4d4}.dark\\:bg-background:is(.dark *){background-color:var(--background)}.dark\\:bg-white:is(.dark *){background-color:#fff}.dark\\:ring-zinc-300:is(.dark *){--tw-ring-color:oklch(87.1% 0 0)}@media(hover:hover){.dark\\:group-hover\\/resize\\:bg-white:is(.dark *):is(:where(.group\\/resize):hover *){background-color:#fff}}.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-90[data-state=open]>svg{rotate:90deg}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:host{--radius:.625rem;--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08)}:host([theme=dark]),:host(.dark){--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439)}@keyframes sparkle-swipe-in{0%{opacity:0;color:#facc15;filter:drop-shadow(-8px 8px #a855f700)}28%{opacity:1;color:#d8b4fe;filter:drop-shadow(-2px 2px 8px #a855f7cc)}55%{color:#a855f7;filter:drop-shadow(3px -3px 10px #a855f7f2)}to{opacity:1;color:#facc15;filter:drop-shadow(0 0 #a855f700)}}@keyframes sparkle-twinkle{0%,to{opacity:.82;filter:drop-shadow(0 0 #facc1500)}50%{opacity:1;filter:drop-shadow(0 0 7px #facc1580)}}.sparkle-icon{color:#facc15;vertical-align:middle;transform-origin:50%;will-change:transform,filter,color,opacity;line-height:1;animation:1.15s cubic-bezier(.22,1,.36,1) sparkle-swipe-in,2.1s ease-in-out 1.15s infinite sparkle-twinkle;display:inline-block;transform:rotate(10deg)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}',Ol=()=>{try{return"f290d16b-0cc5-41a4-89d7-8375c22a7ea8"}catch{return"dev"}},tt=new Map,Ll=async(e,t)=>{const o=tt.get(e.id);if(o)return o;if(!e.bundleUrl)return console.warn(`[SandboxManager] Extension ${e.id} is missing bundleUrl — skipping sandbox creation`),null;const r=document.createElement("iframe");if(r.setAttribute("sandbox","allow-scripts allow-same-origin"),r.style.display="none",r.style.width="0",r.style.height="0",r.style.border="none",e.bundleUrl.startsWith("http")&&!e.bundleUrl.endsWith(".js")){const i=new URL(e.bundleUrl);i.searchParams.set("__extensionId",e.id),r.src=i.toString(),console.warn(`[SandboxManager] Creating dev sandbox for ${e.id}, injecting __extensionId via query param, url: ${i.toString()}`)}else{let i="";try{const u=Ol();i=await(await fetch(`${e.bundleUrl}?_b=${u}`)).text()}catch(u){console.error(`[SandboxManager] Failed to fetch bundle for ${e.id}:`,u)}const l=`<!DOCTYPE html>
|
|
1
|
+
(function(d,be){typeof exports=="object"&&typeof module<"u"?be(require("react/jsx-runtime"),require("react-dom/client"),require("react"),require("react-dom")):typeof define=="function"&&define.amd?define(["react/jsx-runtime","react-dom/client","react","react-dom"],be):(d=typeof globalThis<"u"?globalThis:d||self,be(d.jsxRuntime,d.ReactDOM,d.React,d.ReactDOM))})(this,(function(d,be,x,Ho){"use strict";var db=Object.defineProperty;var ub=(d,be,x)=>be in d?db(d,be,{enumerable:!0,configurable:!0,writable:!0,value:x}):d[be]=x;var on=(d,be,x)=>ub(d,typeof be!="symbol"?be+"":be,x);function rn(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const r=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,r.get?r:{enumerable:!0,get:()=>e[o]})}}return t.default=e,Object.freeze(t)}const p=rn(x),Ut=rn(Ho),Ml='/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--color-red-100:oklch(93.6% .032 17.717);--color-red-800:oklch(44.4% .177 26.899);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-800:oklch(47.3% .137 46.201);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-800:oklch(43.2% .095 166.913);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-800:oklch(42.4% .199 265.638);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-800:oklch(43.8% .218 303.724);--color-pink-100:oklch(94.8% .028 342.258);--color-pink-800:oklch(45.9% .187 3.815);--color-gray-800:oklch(27.8% .033 256.848);--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-geist-sans,ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);--default-mono-font-family:var(--font-geist-mono,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:rotateX(0);--tw-rotate-y:rotateY(0);--tw-rotate-z:rotateZ(0);--tw-skew-x:skewX(0);--tw-skew-y:skewY(0);--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-colored:0 0 #0000;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*,:before,:after{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}:host{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.right-8{right:calc(var(--spacing) * 8)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-24{bottom:calc(var(--spacing) * 24)}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-1000{z-index:1000}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.-mt-2\\.5{margin-top:calc(var(--spacing) * -2.5)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-4{margin-right:calc(var(--spacing) * 4)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.-ml-2\\.5{margin-left:calc(var(--spacing) * -2.5)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-0\\.5{height:calc(var(--spacing) * .5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-\\[700px\\]{height:700px}.h-auto{height:auto}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.w-0\\.5{width:calc(var(--spacing) * .5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-6{width:calc(var(--spacing) * 6)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-48{width:calc(var(--spacing) * 48)}.w-\\[900px\\]{width:900px}.w-full{width:100%}.max-w-\\[200px\\]{max-width:200px}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.origin-bottom-right{transform-origin:100% 100%}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-115{--tw-scale-x:115%;--tw-scale-y:115%;--tw-scale-z:115%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-border{border-color:var(--border)}.border-transparent{border-color:#0000}.border-zinc-200{border-color:#e4e4e4}.bg-amber-100{background-color:var(--color-amber-100)}.bg-background{background-color:var(--background)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-foreground\\/35{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\\/35{background-color:color-mix(in oklab,var(--foreground) 35%,transparent)}}.bg-foreground\\/70{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\\/70{background-color:color-mix(in oklab,var(--foreground) 70%,transparent)}}.bg-gray-100{background-color:#f3f4f6}.bg-muted{background-color:var(--muted)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-transparent{background-color:#0000}.bg-white{background-color:#fff}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.text-center{text-align:center}.text-left{text-align:left}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.\\!text-muted-foreground{color:var(--muted-foreground)!important}.text-amber-800{color:var(--color-amber-800)}.text-blue-800{color:var(--color-blue-800)}.text-destructive{color:var(--destructive)}.text-emerald-800{color:var(--color-emerald-800)}.text-foreground,.text-foreground\\/70{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\\/70{color:color-mix(in oklab,var(--foreground) 70%,transparent)}}.text-foreground\\/75{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\\/75{color:color-mix(in oklab,var(--foreground) 75%,transparent)}}.text-gray-800{color:var(--color-gray-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-pink-800{color:var(--color-pink-800)}.text-purple-800{color:var(--color-purple-800)}.text-red-800{color:var(--color-red-800)}.text-zinc-300{color:#d4d4d4}.text-zinc-500{color:#727272}.opacity-0{opacity:0}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_0_1px_rgba\\(255\\,255\\,255\\,0\\.16\\)\\,0_0_0_1px_rgba\\(0\\,0\\,0\\,0\\.22\\)\\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#ffffff29), 0 0 0 1px var(--tw-shadow-color,#00000038);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-background{--tw-ring-color:var(--background)}.ring-zinc-200{--tw-ring-color:oklch(92% 0 0)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.running{animation-play-state:running}@media(hover:hover){.group-hover\\/resize\\:bg-foreground\\/55:is(:where(.group\\/resize):hover *){background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.group-hover\\/resize\\:bg-foreground\\/55:is(:where(.group\\/resize):hover *){background-color:color-mix(in oklab,var(--foreground) 55%,transparent)}}.group-hover\\/resize\\:opacity-100:is(:where(.group\\/resize):hover *){opacity:1}.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:cursor-pointer:hover{cursor:pointer}.hover\\:bg-accent\\/70:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-accent\\/70:hover{background-color:color-mix(in oklab,var(--accent) 70%,transparent)}}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:text-zinc-900:hover{color:#181818}.hover\\:opacity-100:hover{opacity:1}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-ring\\/40:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\\:ring-ring\\/40:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.dark\\:border-zinc-300:is(.dark *){border-color:#d4d4d4}.dark\\:bg-background:is(.dark *){background-color:var(--background)}.dark\\:bg-white:is(.dark *){background-color:#fff}.dark\\:ring-zinc-300:is(.dark *){--tw-ring-color:oklch(87.1% 0 0)}@media(hover:hover){.dark\\:group-hover\\/resize\\:bg-white:is(.dark *):is(:where(.group\\/resize):hover *){background-color:#fff}}.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-90[data-state=open]>svg{rotate:90deg}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:host{--radius:.625rem;--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08)}:host([theme=dark]),:host(.dark){--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439)}@keyframes sparkle-swipe-in{0%{opacity:0;color:#facc15;filter:drop-shadow(-8px 8px #a855f700)}28%{opacity:1;color:#d8b4fe;filter:drop-shadow(-2px 2px 8px #a855f7cc)}55%{color:#a855f7;filter:drop-shadow(3px -3px 10px #a855f7f2)}to{opacity:1;color:#facc15;filter:drop-shadow(0 0 #a855f700)}}@keyframes sparkle-twinkle{0%,to{opacity:.82;filter:drop-shadow(0 0 #facc1500)}50%{opacity:1;filter:drop-shadow(0 0 7px #facc1580)}}.sparkle-icon{color:#facc15;vertical-align:middle;transform-origin:50%;will-change:transform,filter,color,opacity;line-height:1;animation:1.15s cubic-bezier(.22,1,.36,1) sparkle-swipe-in,2.1s ease-in-out 1.15s infinite sparkle-twinkle;display:inline-block;transform:rotate(10deg)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}',Ol=()=>{try{return"dea5e0b9-b9d0-46d4-b344-1dc47d530e87"}catch{return"dev"}},tt=new Map,Ll=async(e,t)=>{const o=tt.get(e.id);if(o)return o;if(!e.bundleUrl)return console.warn(`[SandboxManager] Extension ${e.id} is missing bundleUrl — skipping sandbox creation`),null;const r=document.createElement("iframe");if(r.setAttribute("sandbox","allow-scripts allow-same-origin"),r.style.display="none",r.style.width="0",r.style.height="0",r.style.border="none",e.bundleUrl.startsWith("http")&&!e.bundleUrl.endsWith(".js")){const i=new URL(e.bundleUrl);i.searchParams.set("__extensionId",e.id),r.src=i.toString(),console.warn(`[SandboxManager] Creating dev sandbox for ${e.id}, injecting __extensionId via query param, url: ${i.toString()}`)}else{let i="";try{const u=Ol();i=await(await fetch(`${e.bundleUrl}?_b=${u}`)).text()}catch(u){console.error(`[SandboxManager] Failed to fetch bundle for ${e.id}:`,u)}const l=`<!DOCTYPE html>
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
@@ -289,4 +289,4 @@ Defaulting to \`null\`.`}var sh=Fs,ih=Hs,Or="Radio",[lh,js]=me(Or),[ch,dh]=lh(Or
|
|
|
289
289
|
85% { transform: rotate(175deg); }
|
|
290
290
|
100% { transform: rotate(180deg); }
|
|
291
291
|
}
|
|
292
|
-
`,document.head.appendChild(e)},Sv=e=>{const t=e.some(r=>r.mode==="staging"),o=e.some(r=>r.mode==="dev");return t&&o?"Dev + Staging":t?"Staging Mode":"Dev Mode"},Cv=e=>e.mode==="staging"?"STAGING":"DEV",Ev=({className:e="",extensions:t=[],tokenErrors:o=new Map})=>{const[r,n]=x.useState([]),[a,s]=x.useState(!1),[i,l]=x.useState(!1),[u,f]=x.useState(!1),c=x.useRef(null),h=o.size>0;if(x.useEffect(()=>{kv()},[]),x.useEffect(()=>{if(!h)return;const b=()=>{f(!0),setTimeout(()=>f(!1),600)};b();const m=setInterval(b,4e3);return()=>clearInterval(m)},[h]),x.useEffect(()=>{if(typeof window>"u")return;const b=()=>{const v=hn(window.location.search);n(v)};b();const m=()=>b();return window.addEventListener("popstate",m),()=>window.removeEventListener("popstate",m)},[]),r.length===0)return null;const g=b=>{if(b.stopPropagation(),typeof window>"u")return;const m=new URL(window.location.href);m.searchParams.delete("_stackable_dev"),m.searchParams.delete("_stackable_staging"),window.location.href=m.toString()};return d.jsxs("div",{className:e,style:{position:"fixed",bottom:"16px",left:"50%",transform:i||u?"translate(-50%, -2px)":"translate(-50%, 0)",zIndex:2147483647,fontFamily:"system-ui, -apple-system, sans-serif",transition:"transform 0.15s ease",display:"flex",flexDirection:"column",alignItems:"center"},onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[a&&d.jsx("div",{style:{backgroundColor:"#fff",border:"1px solid #e5e7eb",borderBottom:`1px solid ${h?"#dc2626":"#eab308"}`,borderRadius:"8px 8px 0 0",boxShadow:"0 -4px 16px -4px rgba(0,0,0,0.12), 0 -2px 6px -4px rgba(0,0,0,0.08)",padding:"8px 0",width:"420px",maxWidth:"90vw"},children:r.map((b,m)=>{var v;return d.jsxs("div",{style:{padding:"8px 12px",borderBottom:m<r.length-1?"1px solid #f3f4f6":"none"},children:[d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[d.jsx("span",{style:{fontSize:"10px",fontWeight:700,color:b.mode==="staging"?"#7c3aed":"#b45309",backgroundColor:b.mode==="staging"?"#ede9fe":"#fef3c7",padding:"1px 5px",borderRadius:"3px",letterSpacing:"0.05em",fontFamily:"ui-monospace, SFMono-Regular, monospace"},children:Cv(b)}),d.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"#111",fontFamily:"ui-monospace, SFMono-Regular, monospace",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:((v=t.find(w=>w.id===b.extensionId))==null?void 0:v.manifest.name)||b.extensionId})]}),d.jsxs("div",{style:{fontSize:"11px",color:"#6b7280",fontFamily:"ui-monospace, SFMono-Regular, monospace",marginTop:"2px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:b.bundleUrl,children:["→ ",b.bundleUrl]}),o.get(b.extensionId)&&d.jsxs("div",{style:{fontSize:"11px",color:"#dc2626",fontFamily:"ui-monospace, SFMono-Regular, monospace",marginTop:"3px"},children:["⚠ ",o.get(b.extensionId)]})]},b.extensionId)})}),d.jsxs("div",{onClick:()=>s(!a),style:{display:"flex",alignItems:"center",gap:"8px",backgroundColor:h?"#dc2626":"#eab308",color:h?"#fff":"#000",padding:"8px 12px",borderRadius:a?"0 0 8px 8px":"8px",boxShadow:i?"0 12px 24px -4px rgba(0,0,0,0.18), 0 6px 10px -4px rgba(0,0,0,0.12)":"0 8px 16px -4px rgba(0,0,0,0.12), 0 4px 6px -4px rgba(0,0,0,0.08)",fontSize:"14px",fontWeight:500,cursor:"pointer",userSelect:"none",transition:"box-shadow 0.15s ease, border-radius 0.1s ease"},children:[d.jsx("span",{ref:c,style:{display:"inline-flex",animation:i&&!a||u?"stackable-icon-wiggle 0.55s cubic-bezier(0.36, 0.07, 0.19, 0.97) both":"none"},children:d.jsx(xv,{className:"w-6 h-6"})}),d.jsx("span",{children:Sv(r)}),d.jsxs("span",{style:{fontSize:"12px",opacity:.75},children:["(",r.length," extension",r.length>1?"s":"",")"]}),d.jsx("button",{onClick:g,style:{marginLeft:"4px",backgroundColor:"rgba(0, 0, 0, 0.15)",border:"none",borderRadius:"4px",cursor:"pointer",padding:"2px 8px",fontSize:"12px",fontWeight:500,color:"inherit",fontFamily:"inherit",transition:"background-color 0.1s ease"},onMouseOver:b=>{b.currentTarget.style.backgroundColor="rgba(0, 0, 0, 0.25)"},onMouseOut:b=>{b.currentTarget.style.backgroundColor="rgba(0, 0, 0, 0.15)"},children:"Clear"})]})]})},Nv=800,Wt=(e,t)=>e?`${e.replace(/\/$/,"")}${t}`:t,Tv=async(e,t,o,r)=>{const n=new Map,a=new Map;return await Promise.all(e.filter(s=>s.manifest.permissions.includes("data:fetch")).map(async s=>{const i=r.find(h=>h.extensionId===s.id),l=i==null?void 0:i.token,u=i==null?void 0:i.mode,f=Wt(t,"/proxy-token"),c=await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:o,extensionId:s.id,...u&&{mode:u},...l&&{devSessionToken:l}})});if(c.ok){const{token:h,encryptionKey:g}=await c.json();n.set(s.id,{token:h,encryptionKey:g})}else{let h=`Proxy token failed (${c.status})`;u&&!l?h="Session token missing — re-run CLI":u&&(h="Session expired or invalid — re-run CLI"),a.set(s.id,h),console.warn(`[embeddables] Failed to obtain proxy token for extension ${s.id} (${c.status}) — ${h}`)}})),{tokens:n,errors:a}},_v=e=>typeof e=="object"&&e!==null&&e.encrypted===!0&&Array.isArray(e.data),Pv=({instanceId:e,queryApiBase:t,apiBase:o,appId:r,children:n,customerId:a,customerEmail:s,customerName:i})=>{const[l,u]=x.useState([]),[f,c]=x.useState([]),[h,g]=x.useState(new Map),[b,m]=x.useState(new Map),[v,w]=x.useState(!1),[y,k]=x.useState({authenticated:!1,user:null}),[E,_]=x.useState(void 0),P=x.useRef(null),T=x.useRef(new Set),S=x.useMemo(()=>l.filter(N=>N.manifest.permissions.includes("extend:identity")).map(N=>N.id),[l]);x.useEffect(()=>{(async()=>{const A=e;try{if(!A){console.warn("[ExtensionSetup] No instanceId provided; loading no extensions"),u([]),w(!0);return}if(!o||!r){console.warn("[ExtensionSetup] apiBase and appId are required to load extensions"),u([]),w(!0);return}const C=await fetch(Wt(o,`/instances/${r}/${A}`));if(!C.ok){console.warn(`[ExtensionSetup] Instance not found or failed to load: ${A}`),u([]),w(!0);return}const z=await C.json(),H=hn(typeof window<"u"?window.location.search:""),O=await Cc(z,H),{tokens:G,errors:j}=await Tv(O,o,r,H);u(O),c(H),g(new Map(G)),m(j)}catch(C){console.error("Failed to load extensions:",C)}finally{w(!0)}})()},[e,r,o]),x.useEffect(()=>{if(!o||!r||l.length===0)return;const A=setInterval(async()=>{const C=[];await Promise.all(l.filter(z=>z.manifest.permissions.includes("data:fetch")).map(async z=>{const H=f.find(F=>F.extensionId===z.id),O=H==null?void 0:H.token,G=H==null?void 0:H.mode,j=Wt(o,"/proxy-token"),Q=await fetch(j,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:r,extensionId:z.id,...G&&{mode:G},...O&&{devSessionToken:O}})});if(Q.ok){const{token:F,encryptionKey:q}=await Q.json();C.push([z.id,{token:F,encryptionKey:q}])}else console.warn(`[embeddables] Proxy token refresh failed for extension ${z.id} (${Q.status}) — using stale token`)})),C.length>0&&g(z=>{const H=new Map(z);for(const[O,G]of C)H.set(O,G);return H})},3300*1e3);return()=>clearInterval(A)},[l,f,o,r]),x.useEffect(()=>{if(h.size===0)return;const N=A=>{const C=A.data;if((C==null?void 0:C.type)!=="extension-ready")return;const z=C.extensionId,H=l.find(j=>j.id===z);if(!(H!=null&&H.bundleUrl))return;const O=f.find(j=>j.extensionId===z);if(xc(H.bundleUrl)&&(O==null?void 0:O.mode)!=="staging")return;const G=h.get(z);G&&Fe(z,{type:"extension-encryption-key",encryptionKey:G.encryptionKey})};return window.addEventListener("message",N),()=>window.removeEventListener("message",N)},[l,f,h]);const I=x.useCallback((N,A)=>{const C=Pt();for(const[z,H]of C){if(!H.manifest.permissions.includes("events:identity"))continue;const O=H.manifest.events??[];!O.includes("identity")&&!O.includes(N)||Fe(z,{type:"extension-event",eventType:N,payload:{type:N,state:A,timestamp:new Date().toISOString()}})}},[]),D=x.useCallback(N=>{const A=Pt();for(const[C,z]of A){if(!z.manifest.permissions.includes("events:messaging"))continue;const H=z.manifest.events??[];!H.includes("messaging")&&!H.includes("postback")&&!H.includes(`postback:${N.actionName}`)||Fe(C,{type:"extension-event",eventType:"messaging:postback",payload:N})}},[]),L=x.useCallback(async N=>{const A=Pt(),C=[];for(const[H,O]of A){if(!O.manifest.permissions.includes("extend:identity"))continue;const G=new Promise(j=>{const Q=`enrich_${H}_${Date.now()}`,F=q=>{const Z=q.data;(Z==null?void 0:Z.type)!=="extend-identity-response"||Z.id!==Q||(window.removeEventListener("message",F),Z.additionalClaims?j(Z.additionalClaims):j({}))};window.addEventListener("message",F),setTimeout(()=>{window.removeEventListener("message",F),j({})},5e3),Fe(H,{type:"extend-identity-request",id:Q,claims:N})});C.push(G)}if(C.length===0)return{};const z=await Promise.all(C);return Object.assign({},...z)},[]),V=x.useCallback(async N=>{if(!o||!r||!e)return console.warn("[embeddables] signIdentity skipped — missing:",{apiBase:!!o,appId:!!r,instanceId:!!e}),null;const A=Wt(o,`/instances/${r}/${e}/identity`);console.log("[embeddables] Calling identity sign:",{url:A,claims:Object.keys(N)});try{const C=await fetch(A,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(N)});if(!C.ok)return console.warn(`[embeddables] Identity sign failed (${C.status})`),null;const{token:z}=await C.json();return z}catch(C){return console.warn("[embeddables] Identity sign request failed:",C),null}},[o,r,e]),W=x.useCallback(N=>{const A=window.zE;A&&A("messenger","loginUser",async C=>{C(N)})},[]),U=x.useCallback(()=>{const N=window.zE;N&&N("messenger","logoutUser")},[]),J=x.useCallback(N=>{console.log("[embeddables] Running sign lifecycle for user:",N.id);const{email:A,name:C}=N,z={external_id:String(N.id)};(async()=>{const H=await L({...z,email:A,name:C});console.log("[embeddables] Enriched claims:",H);const O=await V({...z,...H,email:A,name:C});console.log("[embeddables] Sign result:",{hasToken:!!O}),O&&W(O)})()},[L,V,W]),M=x.useCallback(N=>{if(S.length>0&&T.current.size<S.length){console.log(`[embeddables] Deferring sign lifecycle — waiting for extend:identity extensions: ${T.current.size}/${S.length} ready`),P.current=N;return}console.log("[embeddables] No extend:identity extensions (or all ready) — signing immediately"),J(N)},[S,J]);x.useEffect(()=>{if(!v){console.log("[embeddables] Identity effect skipped — extensions not loaded yet");return}if(console.log("[embeddables] Identity effect running",{initialized:v,customerId:!!a,extendExtensions:S.length}),a){console.log("[embeddables] Identity from props:",{customerId:a,customerEmail:s,customerName:i});const N={authenticated:!0,user:{id:String(a),email:s,name:i,provider:"shopify"}};k(A=>{var C,z;return A.authenticated&&((C=A.user)==null?void 0:C.id)===((z=N.user)==null?void 0:z.id)?A:(console.log("[embeddables] Identity state changed (props), starting sign lifecycle"),M(N.user),I("identity.login",N),N)})}else{if(a===void 0)return;k(N=>N.authenticated?(console.log("[embeddables] Customer props cleared, logging out"),U(),I("identity.logout",{authenticated:!1,user:null}),{authenticated:!1,user:null}):N)}},[v,a,s,i,S,M,I,U]),x.useEffect(()=>{if(!v||a!==void 0)return;const N=()=>{const C=document.getElementById("stackable-identity");if(C)try{const z=JSON.parse(C.textContent??"{}"),H={authenticated:!0,user:{id:String(z.customerId??""),email:z.customerEmail,name:z.customerName,provider:"shopify"}};k(O=>{var G,j;return O.authenticated&&((G=O.user)==null?void 0:G.id)===((j=H.user)==null?void 0:j.id)?O:(console.log("[embeddables] Identity state changed (DOM), starting sign lifecycle"),M(H.user),I("identity.login",H),H)})}catch{console.warn("[embeddables] Failed to parse #stackable-identity JSON")}else k(z=>z.authenticated?(U(),I("identity.logout",{authenticated:!1,user:null}),{authenticated:!1,user:null}):z)};N();const A=new MutationObserver(N);return A.observe(document.head,{childList:!0,subtree:!0}),A.observe(document.body,{childList:!0,subtree:!0}),()=>A.disconnect()},[v,a,M,I,U]),x.useEffect(()=>{if(!y.authenticated)return;const N=A=>{const C=A.data;if((C==null?void 0:C.type)!=="extension-ready")return;const z=C.extensionId,H=l.find(G=>G.id===z);if(!(H!=null&&H.manifest.permissions.includes("events:identity")))return;const O=H.manifest.events??[];!O.includes("identity")&&!O.includes("identity.login")||Fe(z,{type:"extension-event",eventType:"identity.login",payload:{type:"identity.login",state:y,timestamp:new Date().toISOString()}})};return window.addEventListener("message",N),()=>window.removeEventListener("message",N)},[y,l]),x.useEffect(()=>{if(S.length===0)return;const N=C=>{const z=C.data;if((z==null?void 0:z.type)!=="extension-ready")return;const H=z.extensionId;if(S.includes(H)&&(T.current.add(H),console.log(`[embeddables] extend:identity extension ready: ${H} (${T.current.size}/${S.length})`),T.current.size>=S.length&&P.current)){console.log("[embeddables] All extend:identity extensions ready, running deferred sign lifecycle");const O=P.current;P.current=null,J(O)}};window.addEventListener("message",N);const A=setTimeout(()=>{if(P.current){console.warn(`[embeddables] extend:identity timeout (5s) — signing with ${T.current.size}/${S.length} extensions ready`);const C=P.current;P.current=null,J(C)}},5e3);return()=>{window.removeEventListener("message",N),clearTimeout(A)}},[S,J]),x.useEffect(()=>{const N=A=>{const{detail:C}=A;C!=null&&C.actionName&&D({type:"postback",actionName:C.actionName,conversationId:C.conversationId??"",timestamp:new Date().toISOString()})};return window.addEventListener("stackable:messaging:postback",N),()=>window.removeEventListener("stackable:messaging:postback",N)},[D]),x.useEffect(()=>{if(!v)return;const N={customerId:a??"",customerEmail:s??"",customerName:i??"",identity:y,messaging:E},A=Pt();for(const[C,z]of A)z.manifest.permissions.includes("context:read")&&Fe(C,{type:"context-push",context:N})},[v,a,s,i,y,E]),x.useEffect(()=>{const N=A=>{const{detail:C}=A;C&&_(z=>({...z,...C}))};return window.addEventListener("stackable:messaging:context",N),()=>window.removeEventListener("stackable:messaging:context",N)},[]);const R=x.useMemo(()=>({"data.query":async N=>yl(N,t),"data.fetch":async(N,A)=>{const C=h.get(N);if(!C)return{status:0,ok:!1,data:{error:"data.fetch: proxy token unavailable — ensure the extension has data:fetch permission and allowedDomains configured"}};const z=_v(A)?A:{url:A.url,method:A.method??"GET",headers:A.headers??{},body:A.body??null},H=Wt(o,"/proxy"),O=await fetch(H,{method:"POST",headers:{"Content-Type":"application/json","X-Extension-Id":N,"X-Application-Id":r??"",Authorization:`Bearer ${C.token}`},body:JSON.stringify(z)}),G=await O.json();return{status:G.status??O.status,ok:G.ok??O.ok,data:G.data}},"actions.toast":async(N,A)=>{const C={...A.description&&{description:A.description},...A.duration&&{duration:A.duration},...A.position&&{position:A.position},...A.dismissible!=null&&{dismissible:A.dismissible},...A.closeButton!=null&&{closeButton:A.closeButton}};if(A.fetch){const z=O=>new Promise(G=>setTimeout(G,O)),H=Promise.all([R["data.fetch"](N,A.fetch),z(Nv)]).then(([O])=>O);pt.promise(H,{loading:A.loading??A.message,success:A.success??A.message,error:A.error??"Something went wrong",...C});return}switch(A.type){case"success":{pt.success(A.message,C);break}case"error":{pt.error(A.message,C);break}case"warning":{pt.warning(A.message,C);break}case"info":{pt.info(A.message,C);break}default:pt(A.message,C)}},"actions.invoke":async N=>(window.dispatchEvent(new CustomEvent(`stackable:action:${N.action}`,{detail:N})),{success:!0}),"context.read":async()=>({customerId:a??"",customerEmail:s??"",customerName:i??"",identity:y,messaging:E})}),[o,r,t,a,s,i,h,y,E]);return v?d.jsxs(d.Fragment,{children:[d.jsx(Wl,{extensions:l,capabilityHandlers:R,components:yv(),children:n}),d.jsx(Ev,{extensions:l,tokenErrors:b})]}):null};var Av=(e,t,o,r,n,a,s,i)=>{let l=document.documentElement,u=["light","dark"];function f(g){(Array.isArray(e)?e:[e]).forEach(b=>{let m=b==="class",v=m&&a?n.map(w=>a[w]||w):n;m?(l.classList.remove(...v),l.classList.add(a&&a[g]?a[g]:g)):l.setAttribute(b,g)}),c(g)}function c(g){i&&u.includes(g)&&(l.style.colorScheme=g)}function h(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(r)f(r);else try{let g=localStorage.getItem(t)||o,b=s&&g==="system"?h():g;f(b)}catch{}},Iv=p.createContext(void 0),Mv={setTheme:e=>{},themes:[]},Ov=()=>{var e;return(e=p.useContext(Iv))!=null?e:Mv};p.memo(({forcedTheme:e,storageKey:t,attribute:o,enableSystem:r,enableColorScheme:n,defaultTheme:a,value:s,themes:i,nonce:l,scriptProps:u})=>{let f=JSON.stringify([o,t,a,e,i,s,r,n]).slice(1,-1);return p.createElement("script",{...u,suppressHydrationWarning:!0,nonce:typeof window>"u"?l:"",dangerouslySetInnerHTML:{__html:`(${Av.toString()})(${f})`}})});const Lv=({...e})=>{const{theme:t="system"}=Ov();return d.jsx(yc,{theme:t,className:"toaster group",icons:{success:d.jsx(yn,{className:"size-4"}),info:d.jsx(Gt,{className:"size-4"}),warning:d.jsx(Kc,{className:"size-4"}),error:d.jsx(Rc,{className:"size-4"}),loading:d.jsx(Uo,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},...e})},zv={dark:"dark",light:"widget-theme-light"},Dv={dark:"dark",light:"light"},$v=({children:e,theme:t="inherit"})=>d.jsxs("div",{"data-id":"widget-body",className:zv[t],style:{position:"relative",transform:"translateZ(0)"},children:[d.jsx("div",{className:"h-[700px] w-[900px] overflow-hidden rounded-md ring ring-zinc-200 dark:ring-zinc-300",children:d.jsx("div",{className:"flex h-full w-full flex-col overflow-hidden rounded-md bg-muted dark:bg-background text-foreground",children:e})}),d.jsx(Lv,{position:"bottom-center",theme:Dv[t]??"system",toastOptions:{descriptionClassName:"!text-muted-foreground"}})]}),Fv={airplay:Ac,"message-circle":kn,"message-square":Ro,headphones:Uc,"help-circle":xn,bot:Oc,sparkles:Sn,zap:Jc},Bv=({className:e})=>d.jsx("svg",{className:Y(e,"scale-125"),viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:d.jsx("path",{d:"M10,18 L6,22 L6,18 L10,18 Z M17,6 C19.7614237,6 22,8.23857625 22,11 C22,13.7614237 19.7614237,16 17,16 L7,16 C4.23857625,16 2,13.7614237 2,11 C2,8.23857625 4.23857625,6 7,6 Z",transform:"translate(12, 14) scale(-1, 1) translate(-12, -14)"})}),Hv=({className:e})=>d.jsxs("svg",{className:e,viewBox:"0 0 190 190",fill:"currentColor","aria-hidden":"true",children:[d.jsxs("g",{id:"sl-half-right",children:[d.jsx("g",{transform:"translate(-160.365,27.97)",children:d.jsx("path",{d:"M344.73,67.03C344.73,30.01 314.72,0 277.7,0C240.68,0 210.67,30.01 210.67,67.03L255.36,67.03C255.36,54.69 265.36,44.69 277.7,44.69C290.04,44.69 300.05,54.69 300.05,67.03L344.73,67.03Z"})}),d.jsx("g",{transform:"translate(-160.365,27.97)",children:d.jsx("path",{d:"M300.04,67.03C300.04,54.69 290.05,44.69 277.7,44.69C265.35,44.69 255.36,54.69 255.36,67.03L300.04,67.03Z",opacity:"0.3"})})]}),d.jsxs("g",{id:"sl-half-left",children:[d.jsx("g",{transform:"translate(-160.365,27.97)",children:d.jsx("path",{d:"M166,67.03C166,104.05 196.01,134.06 233.03,134.06C270.05,134.06 300.06,104.05 300.06,67.03L255.37,67.03C255.37,79.37 245.37,89.37 233.03,89.37C220.69,89.37 210.69,79.37 210.69,67.03L166,67.03Z"})}),d.jsx("g",{transform:"translate(-160.365,27.97)",children:d.jsx("path",{d:"M210.68,67.03C210.68,79.37 220.68,89.37 233.03,89.37C245.38,89.37 255.37,79.37 255.37,67.03L210.68,67.03Z",opacity:"0.3"})})]})]}),kl=400,Vv=kl*.35,Wv=({icon:e,isOpen:t,onClick:o})=>{const r=Fv[e]??Bv,[n,a]=x.useState("idle"),s=x.useRef(t);x.useEffect(()=>{if(s.current===t)return;s.current=t,a("interstitial");const l=setTimeout(()=>a("idle"),Vv);return()=>clearTimeout(l)},[t]);const i=()=>n==="interstitial"?d.jsx(Hv,{}):t?d.jsx(Hc,{}):d.jsx(r,{});return d.jsx("div",{className:"fixed bottom-8 right-8 z-50",children:d.jsx(hl,{size:"icon",className:Y("h-12 w-12 rounded-full cursor-pointer transition-transform duration-300",t?"scale-115":"scale-100 hover:scale-105"),onClick:o,children:d.jsx("span",{className:Y("flex items-center justify-center transition-transform",t&&"rotate-180"),style:{transitionDuration:`${kl}ms`},children:i()})})})},Uv=({children:e,icon:t,theme:o})=>{const[r,n]=x.useState(!1),[a,s]=x.useState(!0),[i,l]=x.useState(!1),u=x.useCallback(()=>{n(f=>!f)},[]);return x.useEffect(()=>{r&&!i&&l(!0)},[r,i]),x.useEffect(()=>{const f=()=>n(m=>!m),c=()=>n(!0),h=()=>n(!1),g=()=>s(!0),b=()=>{n(!1),s(!1)};return window.addEventListener("stackable:action:toggle",f),window.addEventListener("stackable:action:open",c),window.addEventListener("stackable:action:close",h),window.addEventListener("stackable:action:show",g),window.addEventListener("stackable:action:hide",b),()=>{window.removeEventListener("stackable:action:open",c),window.removeEventListener("stackable:action:close",h),window.removeEventListener("stackable:action:toggle",f),window.removeEventListener("stackable:action:show",g),window.removeEventListener("stackable:action:hide",b)}},[]),d.jsxs(d.Fragment,{children:[a&&d.jsx(Wv,{isOpen:r,icon:t,onClick:u}),i&&d.jsx("div",{"data-id":"widget-container",className:Y("overflow-hidden fixed bottom-24 right-8 z-1000 rounded-md shadow-xl transition-all duration-200 ease-out origin-bottom-right",r?"opacity-100 scale-100 translate-y-0 pointer-events-auto":"opacity-0 scale-95 translate-y-2 pointer-events-none"),children:d.jsx($v,{theme:o,children:e})})]})},jv=({href:e,children:t})=>d.jsx("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-zinc-500 opacity-80 transition-colors hover:text-zinc-900 hover:opacity-100",children:t}),Rv=(e,t)=>{const[o,r]=x.useState(null),[n,a]=x.useState(!1),[s,i]=x.useState(null);return x.useEffect(()=>{if(!e){r(null);return}(async()=>{a(!0),i(null);try{const u=await yl({action:"getCustomer",customerId:e},t);r(u)}catch(u){i(u)}finally{a(!1)}})()},[e,t]),{customer:o,loading:n,error:s}},Gv=({customerId:e,customerEmail:t,queryApiBase:o,children:r})=>{var l,u;const{customer:n,loading:a,error:s}=Rv(e,o);if(a)return d.jsx(Mt,{className:"border-none shadow-none bg-transparent",children:d.jsx(Ot,{className:"flex items-center justify-center p-6",children:d.jsx(Uo,{className:"h-6 w-6 animate-spin text-muted-foreground"})})});if(s||!n){const f=t?t.split("@")[0]:e?`Customer ${e.slice(-4)}`:"Customer",c=f.split(/[\s._-]+/).map(h=>h[0]).join("").slice(0,2).toUpperCase();return d.jsx(Mt,{className:"border-none px-0 py-0 mb-4 shadow-none bg-transparent",children:d.jsxs(Ot,{className:"p-4 pb-0 pt-2",children:[d.jsxs("div",{className:"flex flex-col items-center",children:[d.jsxs(Yr,{className:"h-16 w-16 mb-2 ring-2 ring-background shadow-sm",children:[d.jsx(Xr,{src:`https://ui-avatars.com/api/?name=${encodeURIComponent(f)}&background=7c3aed&color=fff&size=128`,alt:f}),d.jsx(Kr,{className:"text-lg",children:c})]}),d.jsxs("div",{className:"text-center w-full space-y-1",children:[d.jsxs("div",{children:[d.jsx("p",{className:"text-xs text-foreground/70 font-medium tracking-wide",children:"Welcome,"}),d.jsx("h2",{className:"text-lg font-bold text-foreground leading-tight",children:f})]}),t&&d.jsx("div",{className:"pt-2 flex flex-col items-center gap-1",children:d.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-xs font-semibold text-foreground/75",children:[d.jsx(jo,{className:"h-3 w-3","aria-hidden":"true"}),d.jsx("span",{className:"truncate max-w-[200px]",children:t})]})}),d.jsx("div",{className:"py-1 rounded-lg flex justify-center gap-1",children:r})]})]}),d.jsx("p",{className:"pt-2 text-center text-xs text-muted-foreground",children:"Using fallback profile (customer API returned no data)"})]})})}const i=`${((l=n.first_name)==null?void 0:l[0])||""}${((u=n.last_name)==null?void 0:u[0])||""}`;return d.jsx(Mt,{className:"border-none px-0 py-0 mb-4 shadow-none bg-transparent",children:d.jsx(Ot,{className:"p-4 pb-0 pt-2",children:d.jsxs("div",{className:"flex flex-col items-center",children:[d.jsxs(Yr,{className:"h-16 w-16 mb-2 ring-2 ring-background shadow-sm",children:[d.jsx(Xr,{src:`https://ui-avatars.com/api/?name=${encodeURIComponent(n.name)}&background=7c3aed&color=fff&size=128`,alt:n.name}),d.jsx(Kr,{className:"text-lg",children:i})]}),d.jsxs("div",{className:"text-center w-full space-y-1",children:[d.jsxs("div",{children:[d.jsx("p",{className:"text-xs text-foreground/70 font-medium tracking-wide",children:"Welcome,"}),d.jsx("h2",{className:"text-lg font-bold text-foreground leading-tight",children:n.name})]}),d.jsx("div",{className:"pt-2 flex flex-col items-center gap-1",children:d.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-xs font-semibold text-foreground/75",children:[d.jsx(jo,{className:"h-3 w-3","aria-hidden":"true"}),d.jsx("span",{className:"truncate max-w-[200px]",children:n.email})]})}),d.jsx("div",{className:"py-1 rounded-lg flex justify-center gap-1",children:r})]})]})})})},Sl=(e,t)=>{x.useEffect(()=>{const o=t.current;if(!o)return;let r=document.getElementById(e);r||(r=document.createElement("div"),r.id=e,r.style.cssText="position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;",document.body.appendChild(r));const n=new MutationObserver(()=>{for(;r.firstChild;)o.appendChild(document.adoptNode(r.firstChild))});return n.observe(r,{childList:!0,subtree:!0}),()=>{n.disconnect(),r==null||r.remove()}},[e,t])},qv=({customization:e})=>{const t=x.useRef(null);return Sl("widget_conversations",t),x.useEffect(()=>{!window.zE||!t.current||e&&window.zE("messenger:set","customization",{conversationList:e})},[e]),d.jsx("div",{ref:t,className:"h-full overflow-hidden"})},Yv=({customization:e})=>{const t=x.useRef(null);return Sl("widget_messages",t),x.useEffect(()=>{!window.zE||!t.current||e&&window.zE("messenger:set","customization",{messageLog:e})},[e]),d.jsx("div",{ref:t,className:"h-full overflow-hidden"})},Zr=e=>{window.dispatchEvent(new CustomEvent("stackable:messaging:context",{detail:e}))},Jr=25,Qr=75,Xv=({header:e,buttons:t,queryApiBase:o,customerId:r="",customerEmail:n="",primaryPercent:a=50})=>{const s=Math.max(Jr,Math.min(Qr,a)),{extensions:i}=cn(),l=x.useMemo(()=>i.some(S=>S.enabled&&(S.manifest.targets.includes("slot.header")||S.manifest.targets.includes("slot.content"))),[i]),[u,f]=x.useState(!1),[c,h]=x.useState(!1),[g,b]=x.useState("extensions"),[m,v]=x.useState(s),[w,y]=x.useState("loading"),k=x.useRef(null),E=x.useCallback(()=>!window.zE||!document.getElementById("widget_conversations")||!document.getElementById("widget_messages")?!1:(window.zE("messenger","render",{mode:"embedded",messageLog:{targetElement:"#widget_messages"},conversationList:{targetElement:"#widget_conversations"}}),window.zE("messenger:set","customization",{common:{hideHeader:!1},messageLog:{hideHeader:!0},conversationList:{hideHeader:!0,hideNewConversationButton:!0}}),!0),[]);x.useEffect(()=>{var V,W;if(E()){y("ready");return}const S=setInterval(()=>{E()&&(y("ready"),clearInterval(S))},100),I=setTimeout(()=>{clearInterval(S),y(U=>U==="ready"?U:(console.warn("Zendesk widget failed to load after 10 seconds"),"error"))},1e4),D=document.querySelector('script[src*="zdassets.com/ekr/snippet"]'),L=(W=(V=D==null?void 0:D.src)==null?void 0:V.match(/key=([a-f0-9-]+)/))==null?void 0:W[1];return L&&fetch(`https://ekr.zdassets.com/compose/${L}`).then(U=>U.text()).then(U=>{var M;const J=(M=U.match(/appId['"]?\s*:\s*['"]([a-f0-9]+)['"]/))==null?void 0:M[1];J&&Zr({appId:J})}).catch(()=>{}),()=>{clearInterval(S),clearTimeout(I)}},[E]);const _=x.useCallback(S=>{const{detail:I}=S;!window.zE||!(I!=null&&I.payload)||window.zE("messenger:ui","newConversation",I.payload)},[]);x.useEffect(()=>(window.addEventListener("stackable:action:newConversation",_),()=>{window.removeEventListener("stackable:action:newConversation",_)}),[_]),x.useEffect(()=>{if(w!=="ready"||!window.zE)return;const S=window.zE("messenger:on","conversationStarted",L=>{var W,U;const V=(U=(W=L==null?void 0:L.payload)==null?void 0:W.conversation)==null?void 0:U.id;V&&Zr({conversationId:V})}),I=window.zE("messenger:on","messagesShown",L=>{var W,U;const V=(U=(W=L==null?void 0:L.payload)==null?void 0:W.conversation)==null?void 0:U.id;V&&Zr({conversationId:V})}),D=window.zE("messenger:on","postbackButtonClicked",L=>{var W;const V=L==null?void 0:L.payload;V!=null&&V.actionName&&window.dispatchEvent(new CustomEvent("stackable:messaging:postback",{detail:{actionName:V.actionName,conversationId:((W=V.conversation)==null?void 0:W.id)??""}}))});return()=>{typeof S=="function"&&S(),typeof I=="function"&&I(),typeof D=="function"&&D()}},[w]),x.useEffect(()=>{if(!u)return;const S=D=>{if(!k.current)return;const L=k.current.getBoundingClientRect();if((c?L.width:L.height)===0)return;const W=c?(D.clientX-L.left)/L.width*100:(D.clientY-L.top)/L.height*100,U=Math.max(Jr,Math.min(Qr,W));v(U)},I=()=>{f(!1),document.body.style.cursor="",document.body.style.userSelect=""};return document.body.style.cursor=c?"col-resize":"row-resize",document.body.style.userSelect="none",window.addEventListener("mousemove",S),window.addEventListener("mouseup",I),window.addEventListener("blur",I),()=>{window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",I),window.removeEventListener("blur",I),document.body.style.cursor="",document.body.style.userSelect=""}},[u,c]),x.useEffect(()=>{if(!k.current)return;const S=k.current,I=()=>{const L=getComputedStyle(S).flexDirection==="row";h(L)};I();const D=new ResizeObserver(I);return D.observe(S),()=>{D.disconnect()}},[]);const P=x.useCallback(S=>{if(S.detail===2){v(s);return}S.preventDefault(),f(!0)},[s]),T={customerId:r,customerEmail:n};return d.jsxs("div",{"data-component":"zendesk-wrapper",className:"flex-1 flex flex-col z-10 overflow-hidden",style:{containerType:"inline-size"},children:[d.jsx("style",{children:'@container (min-width: 42rem) { [data-component="zendesk-wrapper"] > [data-id="panel-layout"] { flex-direction: row; } }'}),d.jsxs("div",{ref:k,"data-id":"panel-layout",className:"relative flex-1 overflow-hidden flex flex-col",children:[l&&d.jsxs("div",{"data-id":"primary-panel",className:"min-h-0 min-w-0 flex-none overflow-hidden flex flex-col",style:{flexBasis:`${m}%`},children:[d.jsxs("div",{className:"flex items-center justify-between px-4 py-3",children:[d.jsx("h2",{className:"font-semibold text-sm text-foreground",children:g==="extensions"?"My Profile":"My Conversations"}),d.jsxs("div",{className:"flex items-center gap-1",children:[e&&d.jsx("div",{className:"flex mr-1 gap-1",children:e}),d.jsxs("div",{className:"flex rounded-lg bg-muted p-1",children:[t,d.jsx("button",{onClick:()=>b("extensions"),className:Y("rounded-md border border-transparent p-1.5 transition-colors hover:cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",g==="extensions"?"border-border bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),title:"My Profile",children:d.jsx(Cn,{className:"h-4 w-4"})}),d.jsx("button",{onClick:()=>b("conversations"),className:Y("rounded-md border border-transparent p-1.5 transition-colors hover:cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",g==="conversations"?"border-border bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),title:"Conversations",children:d.jsx(Ro,{className:"h-4 w-4"})})]})]})]}),d.jsxs("div",{className:"flex-1 overflow-y-auto p-4 relative",children:[d.jsxs("div",{className:Y("flex flex-col gap-2",g==="conversations"&&"hidden"),children:[d.jsx(Gv,{customerId:r,customerEmail:n,queryApiBase:o,children:d.jsx(jt,{target:"slot.header",context:T,className:"flex-none"})}),d.jsx(jt,{target:"slot.content",context:T,className:"flex flex-col gap-2"})]}),d.jsx("div",{className:Y("h-full rounded-xl border border-zinc-200 bg-white p-2 shadow-sm dark:border-zinc-300",g==="extensions"&&"hidden"),children:w==="error"?d.jsx("div",{className:"flex h-full items-center justify-center p-6 text-center text-sm text-muted-foreground",children:d.jsx("p",{children:"Error loading conversations."})}):d.jsx(qv,{})})]})]}),d.jsxs("div",{"data-id":"secondary-panel",className:"min-h-0 min-w-0 flex-none flex flex-col bg-white",style:{flexBasis:l?`${100-m}%`:"100%"},children:[d.jsx("div",{className:"flex-1 overflow-hidden",children:w==="error"?d.jsx("div",{className:"flex h-full items-center justify-center p-6 text-center text-sm text-muted-foreground",children:d.jsx("p",{children:"Zendesk Messenger could not be loaded. Check that a valid Snippet Key is configured."})}):d.jsx(Yv,{})}),d.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-1 py-1 mr-4 text-xs text-zinc-500",children:[d.jsx(jt,{target:"slot.footer",context:T,className:"flex items-center gap-1",fallback:d.jsxs(d.Fragment,{children:[d.jsx("div",{children:"powered by"}),d.jsx(jv,{href:"https://zendesk.com",children:"Zendesk"})]})}),d.jsx(jt,{target:"slot.footer-links",context:T,className:"flex items-center gap-1",separator:d.jsx("span",{className:"text-zinc-300",children:"/"}),render:({children:S,index:I})=>d.jsxs(d.Fragment,{children:[I===0&&d.jsx("span",{className:"text-zinc-300",children:"+"}),S]})})]})]}),l&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:Y("group/resize absolute z-20 flex items-center justify-center",c?"top-0 bottom-0 w-3 -ml-2.5 cursor-col-resize":"w-full h-3 -mt-2.5 cursor-row-resize"),style:c?{left:`${m}%`}:{top:`${m}%`},onMouseDown:P,role:"separator","aria-label":"Resize panels","aria-orientation":c?"vertical":"horizontal","aria-valuemin":Jr,"aria-valuemax":Qr,"aria-valuenow":Math.round(m),children:d.jsx("div",{className:Y("rounded-full bg-foreground/35 dark:bg-white shadow-[0_0_0_1px_rgba(255,255,255,0.16),0_0_0_1px_rgba(0,0,0,0.22)] transition-all",c?"h-20 w-0.5":"h-0.5 w-20",u?"bg-foreground/70 dark:bg-white opacity-100":"opacity-70 group-hover/resize:bg-foreground/55 dark:group-hover/resize:bg-white group-hover/resize:opacity-100")})}),u&&d.jsx("div",{className:Y("absolute inset-0 z-40",c?"cursor-col-resize":"cursor-row-resize"),onMouseUp:()=>f(!1)})]})]})]})},Kv="ze-snippet",Cl=e=>`https://static.zdassets.com/ekr/snippet.js?key=${encodeURIComponent(e)}`,Zv=(e,t={})=>{if(typeof window>"u"||typeof document>"u"||!e)return Promise.resolve();const{autorender:o=!1,scriptId:r=Kv}=t;window.zEMessenger={autorender:o};const n=document.getElementById(r);if(n){if(n.getAttribute("src")===Cl(e))return Promise.resolve();n.remove()}return new Promise((a,s)=>{const i=document.createElement("script");i.id=r,i.src=Cl(e),i.async=!0,i.onload=()=>a(),i.onerror=()=>s(new Error("Failed to load Zendesk snippet")),document.head.appendChild(i)})},Jv=({queryApiBase:e,apiBase:t,appId:o,theme:r,icon:n,instanceId:a,customerId:s,customerEmail:i,customerName:l,snippetKey:u})=>{const f=r==="dark"||r==="light"?r:"inherit";return x.useEffect(()=>{u&&Zv(u).catch(c=>{console.error("[StackableWidget] Failed to load Zendesk snippet:",c)})},[u]),d.jsx(Pv,{instanceId:a,queryApiBase:e,apiBase:t,appId:o,customerId:s,customerEmail:i,customerName:l,children:d.jsx(Uv,{theme:f,icon:n,children:d.jsx(Xv,{queryApiBase:e,customerId:s,customerEmail:i,primaryPercent:40})})})};class Qv extends HTMLElement{constructor(){super();on(this,"mountNode");on(this,"root");const o=this.attachShadow({mode:"open"}),r=document.createElement("style");r.textContent=Ml,o.appendChild(r),this.mountNode=document.createElement("div"),o.appendChild(this.mountNode)}static get observedAttributes(){return["query-api-base","api-base","app-id","instance-id","theme","icon","customer-id","customer-email","customer-name","snippet-key"]}connectedCallback(){this.root=be.createRoot(this.mountNode),this.renderWidget()}disconnectedCallback(){var o;(o=this.root)==null||o.unmount(),this.root=void 0}attributeChangedCallback(){this.renderWidget()}renderWidget(){if(!this.root)return;const o=this.getAttribute("theme")??"";this.mountNode.classList.toggle("dark",o==="dark"),this.root.render(d.jsx(Jv,{theme:o,icon:this.getAttribute("icon")??void 0,queryApiBase:this.getAttribute("query-api-base")??"",apiBase:this.getAttribute("api-base")??void 0,appId:this.getAttribute("app-id")??"",instanceId:this.getAttribute("instance-id")??"",customerId:this.getAttribute("customer-id")??void 0,customerEmail:this.getAttribute("customer-email")??void 0,customerName:this.getAttribute("customer-name")??void 0,snippetKey:this.getAttribute("snippet-key")??""}))}}customElements.get("stackable-widget")||customElements.define("stackable-widget",Qv)}));
|
|
292
|
+
`,document.head.appendChild(e)},Sv=e=>{const t=e.some(r=>r.mode==="staging"),o=e.some(r=>r.mode==="dev");return t&&o?"Dev + Staging":t?"Staging Mode":"Dev Mode"},Cv=e=>e.mode==="staging"?"STAGING":"DEV",Ev=({className:e="",extensions:t=[],tokenErrors:o=new Map})=>{const[r,n]=x.useState([]),[a,s]=x.useState(!1),[i,l]=x.useState(!1),[u,f]=x.useState(!1),c=x.useRef(null),h=o.size>0;if(x.useEffect(()=>{kv()},[]),x.useEffect(()=>{if(!h)return;const b=()=>{f(!0),setTimeout(()=>f(!1),600)};b();const m=setInterval(b,4e3);return()=>clearInterval(m)},[h]),x.useEffect(()=>{if(typeof window>"u")return;const b=()=>{const v=hn(window.location.search);n(v)};b();const m=()=>b();return window.addEventListener("popstate",m),()=>window.removeEventListener("popstate",m)},[]),r.length===0)return null;const g=b=>{if(b.stopPropagation(),typeof window>"u")return;const m=new URL(window.location.href);m.searchParams.delete("_stackable_dev"),m.searchParams.delete("_stackable_staging"),window.location.href=m.toString()};return d.jsxs("div",{className:e,style:{position:"fixed",bottom:"16px",left:"50%",transform:i||u?"translate(-50%, -2px)":"translate(-50%, 0)",zIndex:2147483647,fontFamily:"system-ui, -apple-system, sans-serif",transition:"transform 0.15s ease",display:"flex",flexDirection:"column",alignItems:"center"},onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[a&&d.jsx("div",{style:{backgroundColor:"#fff",border:"1px solid #e5e7eb",borderBottom:`1px solid ${h?"#dc2626":"#eab308"}`,borderRadius:"8px 8px 0 0",boxShadow:"0 -4px 16px -4px rgba(0,0,0,0.12), 0 -2px 6px -4px rgba(0,0,0,0.08)",padding:"8px 0",width:"420px",maxWidth:"90vw"},children:r.map((b,m)=>{var v;return d.jsxs("div",{style:{padding:"8px 12px",borderBottom:m<r.length-1?"1px solid #f3f4f6":"none"},children:[d.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[d.jsx("span",{style:{fontSize:"10px",fontWeight:700,color:b.mode==="staging"?"#7c3aed":"#b45309",backgroundColor:b.mode==="staging"?"#ede9fe":"#fef3c7",padding:"1px 5px",borderRadius:"3px",letterSpacing:"0.05em",fontFamily:"ui-monospace, SFMono-Regular, monospace"},children:Cv(b)}),d.jsx("span",{style:{fontSize:"12px",fontWeight:600,color:"#111",fontFamily:"ui-monospace, SFMono-Regular, monospace",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:((v=t.find(w=>w.id===b.extensionId))==null?void 0:v.manifest.name)||b.extensionId})]}),d.jsxs("div",{style:{fontSize:"11px",color:"#6b7280",fontFamily:"ui-monospace, SFMono-Regular, monospace",marginTop:"2px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:b.bundleUrl,children:["→ ",b.bundleUrl]}),o.get(b.extensionId)&&d.jsxs("div",{style:{fontSize:"11px",color:"#dc2626",fontFamily:"ui-monospace, SFMono-Regular, monospace",marginTop:"3px"},children:["⚠ ",o.get(b.extensionId)]})]},b.extensionId)})}),d.jsxs("div",{onClick:()=>s(!a),style:{display:"flex",alignItems:"center",gap:"8px",backgroundColor:h?"#dc2626":"#eab308",color:h?"#fff":"#000",padding:"8px 12px",borderRadius:a?"0 0 8px 8px":"8px",boxShadow:i?"0 12px 24px -4px rgba(0,0,0,0.18), 0 6px 10px -4px rgba(0,0,0,0.12)":"0 8px 16px -4px rgba(0,0,0,0.12), 0 4px 6px -4px rgba(0,0,0,0.08)",fontSize:"14px",fontWeight:500,cursor:"pointer",userSelect:"none",transition:"box-shadow 0.15s ease, border-radius 0.1s ease"},children:[d.jsx("span",{ref:c,style:{display:"inline-flex",animation:i&&!a||u?"stackable-icon-wiggle 0.55s cubic-bezier(0.36, 0.07, 0.19, 0.97) both":"none"},children:d.jsx(xv,{className:"w-6 h-6"})}),d.jsx("span",{children:Sv(r)}),d.jsxs("span",{style:{fontSize:"12px",opacity:.75},children:["(",r.length," extension",r.length>1?"s":"",")"]}),d.jsx("button",{onClick:g,style:{marginLeft:"4px",backgroundColor:"rgba(0, 0, 0, 0.15)",border:"none",borderRadius:"4px",cursor:"pointer",padding:"2px 8px",fontSize:"12px",fontWeight:500,color:"inherit",fontFamily:"inherit",transition:"background-color 0.1s ease"},onMouseOver:b=>{b.currentTarget.style.backgroundColor="rgba(0, 0, 0, 0.25)"},onMouseOut:b=>{b.currentTarget.style.backgroundColor="rgba(0, 0, 0, 0.15)"},children:"Clear"})]})]})},Nv=800,Wt=(e,t)=>e?`${e.replace(/\/$/,"")}${t}`:t,Tv=async(e,t,o,r)=>{const n=new Map,a=new Map;return await Promise.all(e.filter(s=>s.manifest.permissions.includes("data:fetch")).map(async s=>{const i=r.find(h=>h.extensionId===s.id),l=i==null?void 0:i.token,u=i==null?void 0:i.mode,f=Wt(t,"/proxy-token"),c=await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:o,extensionId:s.id,...u&&{mode:u},...l&&{devSessionToken:l}})});if(c.ok){const{token:h,encryptionKey:g}=await c.json();n.set(s.id,{token:h,encryptionKey:g})}else{let h=`Proxy token failed (${c.status})`;u&&!l?h="Session token missing — re-run CLI":u&&(h="Session expired or invalid — re-run CLI"),a.set(s.id,h),console.warn(`[embeddables] Failed to obtain proxy token for extension ${s.id} (${c.status}) — ${h}`)}})),{tokens:n,errors:a}},_v=e=>typeof e=="object"&&e!==null&&e.encrypted===!0&&Array.isArray(e.data),Pv=({instanceId:e,queryApiBase:t,apiBase:o,appId:r,children:n,customerId:a,customerEmail:s,customerName:i})=>{const[l,u]=x.useState([]),[f,c]=x.useState([]),[h,g]=x.useState(new Map),[b,m]=x.useState(new Map),[v,w]=x.useState(!1),[y,k]=x.useState({authenticated:!1,user:null}),[E,_]=x.useState(void 0),P=x.useRef(null),T=x.useRef(new Set),S=x.useMemo(()=>l.filter(N=>N.manifest.permissions.includes("extend:identity")).map(N=>N.id),[l]);x.useEffect(()=>{(async()=>{const A=e;try{if(!A){console.warn("[ExtensionSetup] No instanceId provided; loading no extensions"),u([]),w(!0);return}if(!o||!r){console.warn("[ExtensionSetup] apiBase and appId are required to load extensions"),u([]),w(!0);return}const C=await fetch(Wt(o,`/instances/${r}/${A}`));if(!C.ok){console.warn(`[ExtensionSetup] Instance not found or failed to load: ${A}`),u([]),w(!0);return}const z=await C.json(),H=hn(typeof window<"u"?window.location.search:""),O=await Cc(z,H),{tokens:G,errors:j}=await Tv(O,o,r,H);u(O),c(H),g(new Map(G)),m(j)}catch(C){console.error("Failed to load extensions:",C)}finally{w(!0)}})()},[e,r,o]),x.useEffect(()=>{if(!o||!r||l.length===0)return;const A=setInterval(async()=>{const C=[];await Promise.all(l.filter(z=>z.manifest.permissions.includes("data:fetch")).map(async z=>{const H=f.find(F=>F.extensionId===z.id),O=H==null?void 0:H.token,G=H==null?void 0:H.mode,j=Wt(o,"/proxy-token"),Q=await fetch(j,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({appId:r,extensionId:z.id,...G&&{mode:G},...O&&{devSessionToken:O}})});if(Q.ok){const{token:F,encryptionKey:q}=await Q.json();C.push([z.id,{token:F,encryptionKey:q}])}else console.warn(`[embeddables] Proxy token refresh failed for extension ${z.id} (${Q.status}) — using stale token`)})),C.length>0&&g(z=>{const H=new Map(z);for(const[O,G]of C)H.set(O,G);return H})},3300*1e3);return()=>clearInterval(A)},[l,f,o,r]),x.useEffect(()=>{if(h.size===0)return;const N=A=>{const C=A.data;if((C==null?void 0:C.type)!=="extension-ready")return;const z=C.extensionId,H=l.find(j=>j.id===z);if(!(H!=null&&H.bundleUrl))return;const O=f.find(j=>j.extensionId===z);if(xc(H.bundleUrl)&&(O==null?void 0:O.mode)!=="staging")return;const G=h.get(z);G&&Fe(z,{type:"extension-encryption-key",encryptionKey:G.encryptionKey})};return window.addEventListener("message",N),()=>window.removeEventListener("message",N)},[l,f,h]);const I=x.useCallback((N,A)=>{const C=Pt();for(const[z,H]of C){if(!H.manifest.permissions.includes("events:identity"))continue;const O=H.manifest.events??[];!O.includes("identity")&&!O.includes(N)||Fe(z,{type:"extension-event",eventType:N,payload:{type:N,state:A,timestamp:new Date().toISOString()}})}},[]),D=x.useCallback(N=>{const A=Pt();for(const[C,z]of A){if(!z.manifest.permissions.includes("events:messaging"))continue;const H=z.manifest.events??[];!H.includes("messaging")&&!H.includes("postback")&&!H.includes(`postback:${N.actionName}`)||Fe(C,{type:"extension-event",eventType:"messaging:postback",payload:N})}},[]),L=x.useCallback(async N=>{const A=Pt(),C=[];for(const[H,O]of A){if(!O.manifest.permissions.includes("extend:identity"))continue;const G=new Promise(j=>{const Q=`enrich_${H}_${Date.now()}`,F=q=>{const Z=q.data;(Z==null?void 0:Z.type)!=="extend-identity-response"||Z.id!==Q||(window.removeEventListener("message",F),Z.additionalClaims?j(Z.additionalClaims):j({}))};window.addEventListener("message",F),setTimeout(()=>{window.removeEventListener("message",F),j({})},5e3),Fe(H,{type:"extend-identity-request",id:Q,claims:N})});C.push(G)}if(C.length===0)return{};const z=await Promise.all(C);return Object.assign({},...z)},[]),V=x.useCallback(async N=>{if(!o||!r||!e)return console.warn("[embeddables] signIdentity skipped — missing:",{apiBase:!!o,appId:!!r,instanceId:!!e}),null;const A=Wt(o,`/instances/${r}/${e}/identity`);console.log("[embeddables] Calling identity sign:",{url:A,claims:Object.keys(N)});try{const C=await fetch(A,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(N)});if(!C.ok)return console.warn(`[embeddables] Identity sign failed (${C.status})`),null;const{token:z}=await C.json();return z}catch(C){return console.warn("[embeddables] Identity sign request failed:",C),null}},[o,r,e]),W=x.useCallback(N=>{const A=window.zE;A&&A("messenger","loginUser",async C=>{C(N)})},[]),U=x.useCallback(()=>{const N=window.zE;N&&N("messenger","logoutUser")},[]),J=x.useCallback(N=>{console.log("[embeddables] Running sign lifecycle for user:",N.id);const{email:A,name:C}=N,z={external_id:String(N.id)};(async()=>{const H=await L({...z,email:A,name:C});console.log("[embeddables] Enriched claims:",H);const O=await V({...z,...H,email:A,name:C});console.log("[embeddables] Sign result:",{hasToken:!!O}),O&&W(O)})()},[L,V,W]),M=x.useCallback(N=>{if(S.length>0&&T.current.size<S.length){console.log(`[embeddables] Deferring sign lifecycle — waiting for extend:identity extensions: ${T.current.size}/${S.length} ready`),P.current=N;return}console.log("[embeddables] No extend:identity extensions (or all ready) — signing immediately"),J(N)},[S,J]);x.useEffect(()=>{if(!v){console.log("[embeddables] Identity effect skipped — extensions not loaded yet");return}if(console.log("[embeddables] Identity effect running",{initialized:v,customerId:!!a,extendExtensions:S.length}),a){console.log("[embeddables] Identity from props:",{customerId:a,customerEmail:s,customerName:i});const N={authenticated:!0,user:{id:String(a),email:s,name:i,provider:"shopify"}};k(A=>{var C,z;return A.authenticated&&((C=A.user)==null?void 0:C.id)===((z=N.user)==null?void 0:z.id)?A:(console.log("[embeddables] Identity state changed (props), starting sign lifecycle"),M(N.user),I("identity.login",N),N)})}else{if(a===void 0)return;k(N=>N.authenticated?(console.log("[embeddables] Customer props cleared, logging out"),U(),I("identity.logout",{authenticated:!1,user:null}),{authenticated:!1,user:null}):N)}},[v,a,s,i,S,M,I,U]),x.useEffect(()=>{if(!v||a!==void 0)return;const N=()=>{const C=document.getElementById("stackable-identity");if(C)try{const z=JSON.parse(C.textContent??"{}"),H={authenticated:!0,user:{id:String(z.customerId??""),email:z.customerEmail,name:z.customerName,provider:"shopify"}};k(O=>{var G,j;return O.authenticated&&((G=O.user)==null?void 0:G.id)===((j=H.user)==null?void 0:j.id)?O:(console.log("[embeddables] Identity state changed (DOM), starting sign lifecycle"),M(H.user),I("identity.login",H),H)})}catch{console.warn("[embeddables] Failed to parse #stackable-identity JSON")}else k(z=>z.authenticated?(U(),I("identity.logout",{authenticated:!1,user:null}),{authenticated:!1,user:null}):z)};N();const A=new MutationObserver(N);return A.observe(document.head,{childList:!0,subtree:!0}),A.observe(document.body,{childList:!0,subtree:!0}),()=>A.disconnect()},[v,a,M,I,U]),x.useEffect(()=>{if(!y.authenticated)return;const N=A=>{const C=A.data;if((C==null?void 0:C.type)!=="extension-ready")return;const z=C.extensionId,H=l.find(G=>G.id===z);if(!(H!=null&&H.manifest.permissions.includes("events:identity")))return;const O=H.manifest.events??[];!O.includes("identity")&&!O.includes("identity.login")||Fe(z,{type:"extension-event",eventType:"identity.login",payload:{type:"identity.login",state:y,timestamp:new Date().toISOString()}})};return window.addEventListener("message",N),()=>window.removeEventListener("message",N)},[y,l]),x.useEffect(()=>{if(S.length===0)return;const N=C=>{const z=C.data;if((z==null?void 0:z.type)!=="extension-ready")return;const H=z.extensionId;if(S.includes(H)&&(T.current.add(H),console.log(`[embeddables] extend:identity extension ready: ${H} (${T.current.size}/${S.length})`),T.current.size>=S.length&&P.current)){console.log("[embeddables] All extend:identity extensions ready, running deferred sign lifecycle");const O=P.current;P.current=null,J(O)}};window.addEventListener("message",N);const A=setTimeout(()=>{if(P.current){console.warn(`[embeddables] extend:identity timeout (5s) — signing with ${T.current.size}/${S.length} extensions ready`);const C=P.current;P.current=null,J(C)}},5e3);return()=>{window.removeEventListener("message",N),clearTimeout(A)}},[S,J]),x.useEffect(()=>{const N=A=>{const{detail:C}=A;C!=null&&C.actionName&&D({type:"postback",actionName:C.actionName,conversationId:C.conversationId??"",timestamp:new Date().toISOString()})};return window.addEventListener("stackable:messaging:postback",N),()=>window.removeEventListener("stackable:messaging:postback",N)},[D]),x.useEffect(()=>{if(!v)return;const N={customerId:a??"",customerEmail:s??"",customerName:i??"",identity:y,messaging:E},A=Pt();for(const[C,z]of A)z.manifest.permissions.includes("context:read")&&Fe(C,{type:"context-push",context:N})},[v,a,s,i,y,E]),x.useEffect(()=>{const N=A=>{const{detail:C}=A;C&&_(z=>({...z,...C}))};return window.addEventListener("stackable:messaging:context",N),()=>window.removeEventListener("stackable:messaging:context",N)},[]);const R=x.useMemo(()=>({"data.query":async N=>yl(N,t),"data.fetch":async(N,A)=>{const C=h.get(N);if(!C)return{status:0,ok:!1,data:{error:"data.fetch: proxy token unavailable — ensure the extension has data:fetch permission and allowedDomains configured"}};const z=_v(A)?A:{url:A.url,method:A.method??"GET",headers:A.headers??{},body:A.body??null},H=Wt(o,"/proxy"),O=await fetch(H,{method:"POST",headers:{"Content-Type":"application/json","X-Extension-Id":N,"X-Application-Id":r??"",Authorization:`Bearer ${C.token}`},body:JSON.stringify(z)}),G=await O.json();return{status:G.status??O.status,ok:G.ok??O.ok,data:G.data}},"actions.toast":async(N,A)=>{const C={...A.description&&{description:A.description},...A.duration&&{duration:A.duration},...A.position&&{position:A.position},...A.dismissible!=null&&{dismissible:A.dismissible},...A.closeButton!=null&&{closeButton:A.closeButton}};if(A.fetch){const z=O=>new Promise(G=>setTimeout(G,O)),H=Promise.all([R["data.fetch"](N,A.fetch),z(Nv)]).then(([O])=>O);pt.promise(H,{loading:A.loading??A.message,success:A.success??A.message,error:A.error??"Something went wrong",...C});return}switch(A.type){case"success":{pt.success(A.message,C);break}case"error":{pt.error(A.message,C);break}case"warning":{pt.warning(A.message,C);break}case"info":{pt.info(A.message,C);break}default:pt(A.message,C)}},"actions.invoke":async N=>(window.dispatchEvent(new CustomEvent(`stackable:action:${N.action}`,{detail:N})),{success:!0}),"context.read":async()=>({customerId:a??"",customerEmail:s??"",customerName:i??"",identity:y,messaging:E})}),[o,r,t,a,s,i,h,y,E]);return v?d.jsxs(d.Fragment,{children:[d.jsx(Wl,{extensions:l,capabilityHandlers:R,components:yv(),children:n}),d.jsx(Ev,{extensions:l,tokenErrors:b})]}):null};var Av=(e,t,o,r,n,a,s,i)=>{let l=document.documentElement,u=["light","dark"];function f(g){(Array.isArray(e)?e:[e]).forEach(b=>{let m=b==="class",v=m&&a?n.map(w=>a[w]||w):n;m?(l.classList.remove(...v),l.classList.add(a&&a[g]?a[g]:g)):l.setAttribute(b,g)}),c(g)}function c(g){i&&u.includes(g)&&(l.style.colorScheme=g)}function h(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(r)f(r);else try{let g=localStorage.getItem(t)||o,b=s&&g==="system"?h():g;f(b)}catch{}},Iv=p.createContext(void 0),Mv={setTheme:e=>{},themes:[]},Ov=()=>{var e;return(e=p.useContext(Iv))!=null?e:Mv};p.memo(({forcedTheme:e,storageKey:t,attribute:o,enableSystem:r,enableColorScheme:n,defaultTheme:a,value:s,themes:i,nonce:l,scriptProps:u})=>{let f=JSON.stringify([o,t,a,e,i,s,r,n]).slice(1,-1);return p.createElement("script",{...u,suppressHydrationWarning:!0,nonce:typeof window>"u"?l:"",dangerouslySetInnerHTML:{__html:`(${Av.toString()})(${f})`}})});const Lv=({...e})=>{const{theme:t="system"}=Ov();return d.jsx(yc,{theme:t,className:"toaster group",icons:{success:d.jsx(yn,{className:"size-4"}),info:d.jsx(Gt,{className:"size-4"}),warning:d.jsx(Kc,{className:"size-4"}),error:d.jsx(Rc,{className:"size-4"}),loading:d.jsx(Uo,{className:"size-4 animate-spin"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"},...e})},zv={dark:"dark",light:"widget-theme-light"},Dv={dark:"dark",light:"light"},$v=({children:e,theme:t="inherit"})=>d.jsxs("div",{"data-id":"widget-body",className:zv[t],style:{position:"relative",transform:"translateZ(0)"},children:[d.jsx("div",{className:"h-[700px] w-[900px] overflow-hidden rounded-md ring ring-zinc-200 dark:ring-zinc-300",children:d.jsx("div",{className:"flex h-full w-full flex-col overflow-hidden rounded-md bg-muted dark:bg-background text-foreground",children:e})}),d.jsx(Lv,{position:"bottom-center",theme:Dv[t]??"system",toastOptions:{descriptionClassName:"!text-muted-foreground"}})]}),Fv={airplay:Ac,"message-circle":kn,"message-square":Ro,headphones:Uc,"help-circle":xn,bot:Oc,sparkles:Sn,zap:Jc},Bv=({className:e})=>d.jsx("svg",{className:Y(e,"scale-125"),viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:d.jsx("path",{d:"M10,18 L6,22 L6,18 L10,18 Z M17,6 C19.7614237,6 22,8.23857625 22,11 C22,13.7614237 19.7614237,16 17,16 L7,16 C4.23857625,16 2,13.7614237 2,11 C2,8.23857625 4.23857625,6 7,6 Z",transform:"translate(12, 14) scale(-1, 1) translate(-12, -14)"})}),Hv=({className:e})=>d.jsxs("svg",{className:e,viewBox:"0 0 190 190",fill:"currentColor","aria-hidden":"true",children:[d.jsxs("g",{id:"sl-half-right",children:[d.jsx("g",{transform:"translate(-160.365,27.97)",children:d.jsx("path",{d:"M344.73,67.03C344.73,30.01 314.72,0 277.7,0C240.68,0 210.67,30.01 210.67,67.03L255.36,67.03C255.36,54.69 265.36,44.69 277.7,44.69C290.04,44.69 300.05,54.69 300.05,67.03L344.73,67.03Z"})}),d.jsx("g",{transform:"translate(-160.365,27.97)",children:d.jsx("path",{d:"M300.04,67.03C300.04,54.69 290.05,44.69 277.7,44.69C265.35,44.69 255.36,54.69 255.36,67.03L300.04,67.03Z",opacity:"0.3"})})]}),d.jsxs("g",{id:"sl-half-left",children:[d.jsx("g",{transform:"translate(-160.365,27.97)",children:d.jsx("path",{d:"M166,67.03C166,104.05 196.01,134.06 233.03,134.06C270.05,134.06 300.06,104.05 300.06,67.03L255.37,67.03C255.37,79.37 245.37,89.37 233.03,89.37C220.69,89.37 210.69,79.37 210.69,67.03L166,67.03Z"})}),d.jsx("g",{transform:"translate(-160.365,27.97)",children:d.jsx("path",{d:"M210.68,67.03C210.68,79.37 220.68,89.37 233.03,89.37C245.38,89.37 255.37,79.37 255.37,67.03L210.68,67.03Z",opacity:"0.3"})})]})]}),kl=400,Vv=kl*.35,Wv=({icon:e,isOpen:t,onClick:o})=>{const r=Fv[e]??Bv,[n,a]=x.useState("idle"),s=x.useRef(t);x.useEffect(()=>{if(s.current===t)return;s.current=t,a("interstitial");const l=setTimeout(()=>a("idle"),Vv);return()=>clearTimeout(l)},[t]);const i=()=>n==="interstitial"?d.jsx(Hv,{}):t?d.jsx(Hc,{}):d.jsx(r,{});return d.jsx("div",{className:"fixed bottom-8 right-8 z-50",children:d.jsx(hl,{size:"icon",className:Y("h-12 w-12 rounded-full cursor-pointer transition-transform duration-300",t?"scale-115":"scale-100 hover:scale-105"),onClick:o,children:d.jsx("span",{className:Y("flex items-center justify-center transition-transform",t&&"rotate-180"),style:{transitionDuration:`${kl}ms`},children:i()})})})},Uv=({children:e,icon:t,theme:o})=>{const[r,n]=x.useState(!1),[a,s]=x.useState(!0),[i,l]=x.useState(!1),u=x.useCallback(()=>{n(f=>!f)},[]);return x.useEffect(()=>{r&&!i&&l(!0)},[r,i]),x.useEffect(()=>{const f=()=>n(m=>!m),c=()=>n(!0),h=()=>n(!1),g=()=>s(!0),b=()=>{n(!1),s(!1)};return window.addEventListener("stackable:action:toggle",f),window.addEventListener("stackable:action:open",c),window.addEventListener("stackable:action:close",h),window.addEventListener("stackable:action:show",g),window.addEventListener("stackable:action:hide",b),()=>{window.removeEventListener("stackable:action:open",c),window.removeEventListener("stackable:action:close",h),window.removeEventListener("stackable:action:toggle",f),window.removeEventListener("stackable:action:show",g),window.removeEventListener("stackable:action:hide",b)}},[]),d.jsxs(d.Fragment,{children:[a&&d.jsx(Wv,{isOpen:r,icon:t,onClick:u}),i&&d.jsx("div",{"data-id":"widget-container",className:Y("overflow-hidden fixed bottom-24 right-8 z-1000 rounded-md shadow-xl transition-all duration-200 ease-out origin-bottom-right",r?"opacity-100 scale-100 translate-y-0 pointer-events-auto":"opacity-0 scale-95 translate-y-2 pointer-events-none"),children:d.jsx($v,{theme:o,children:e})})]})},jv=({href:e,children:t})=>d.jsx("a",{href:e,target:"_blank",rel:"noopener noreferrer",className:"text-zinc-500 opacity-80 transition-colors hover:text-zinc-900 hover:opacity-100",children:t}),Rv=(e,t)=>{const[o,r]=x.useState(null),[n,a]=x.useState(!1),[s,i]=x.useState(null);return x.useEffect(()=>{if(!e){r(null);return}(async()=>{a(!0),i(null);try{const u=await yl({action:"getCustomer",customerId:e},t);r(u)}catch(u){i(u)}finally{a(!1)}})()},[e,t]),{customer:o,loading:n,error:s}},Gv=({customerId:e,customerEmail:t,queryApiBase:o,children:r})=>{var l,u;const{customer:n,loading:a,error:s}=Rv(e,o);if(a)return d.jsx(Mt,{className:"border-none shadow-none bg-transparent",children:d.jsx(Ot,{className:"flex items-center justify-center p-6",children:d.jsx(Uo,{className:"h-6 w-6 animate-spin text-muted-foreground"})})});if(s||!n){const f=t?t.split("@")[0]:e?`Customer ${e.slice(-4)}`:"Customer",c=f.split(/[\s._-]+/).map(h=>h[0]).join("").slice(0,2).toUpperCase();return d.jsx(Mt,{className:"border-none px-0 py-0 mb-4 shadow-none bg-transparent",children:d.jsxs(Ot,{className:"p-4 pb-0 pt-2",children:[d.jsxs("div",{className:"flex flex-col items-center",children:[d.jsxs(Yr,{className:"h-16 w-16 mb-2 ring-2 ring-background shadow-sm",children:[d.jsx(Xr,{src:`https://ui-avatars.com/api/?name=${encodeURIComponent(f)}&background=7c3aed&color=fff&size=128`,alt:f}),d.jsx(Kr,{className:"text-lg",children:c})]}),d.jsxs("div",{className:"text-center w-full space-y-1",children:[d.jsxs("div",{children:[d.jsx("p",{className:"text-xs text-foreground/70 font-medium tracking-wide",children:"Welcome,"}),d.jsx("h2",{className:"text-lg font-bold text-foreground leading-tight",children:f})]}),t&&d.jsx("div",{className:"pt-2 flex flex-col items-center gap-1",children:d.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-xs font-semibold text-foreground/75",children:[d.jsx(jo,{className:"h-3 w-3","aria-hidden":"true"}),d.jsx("span",{className:"truncate max-w-[200px]",children:t})]})}),d.jsx("div",{className:"py-1 rounded-lg flex justify-center gap-1",children:r})]})]}),d.jsx("p",{className:"pt-2 text-center text-xs text-muted-foreground",children:"Using fallback profile (customer API returned no data)"})]})})}const i=`${((l=n.first_name)==null?void 0:l[0])||""}${((u=n.last_name)==null?void 0:u[0])||""}`;return d.jsx(Mt,{className:"border-none px-0 py-0 mb-4 shadow-none bg-transparent",children:d.jsx(Ot,{className:"p-4 pb-0 pt-2",children:d.jsxs("div",{className:"flex flex-col items-center",children:[d.jsxs(Yr,{className:"h-16 w-16 mb-2 ring-2 ring-background shadow-sm",children:[d.jsx(Xr,{src:`https://ui-avatars.com/api/?name=${encodeURIComponent(n.name)}&background=7c3aed&color=fff&size=128`,alt:n.name}),d.jsx(Kr,{className:"text-lg",children:i})]}),d.jsxs("div",{className:"text-center w-full space-y-1",children:[d.jsxs("div",{children:[d.jsx("p",{className:"text-xs text-foreground/70 font-medium tracking-wide",children:"Welcome,"}),d.jsx("h2",{className:"text-lg font-bold text-foreground leading-tight",children:n.name})]}),d.jsx("div",{className:"pt-2 flex flex-col items-center gap-1",children:d.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-xs font-semibold text-foreground/75",children:[d.jsx(jo,{className:"h-3 w-3","aria-hidden":"true"}),d.jsx("span",{className:"truncate max-w-[200px]",children:n.email})]})}),d.jsx("div",{className:"py-1 rounded-lg flex justify-center gap-1",children:r})]})]})})})},Sl=(e,t)=>{x.useEffect(()=>{const o=t.current;if(!o)return;let r=document.getElementById(e);r||(r=document.createElement("div"),r.id=e,r.style.cssText="position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;",document.body.appendChild(r));const n=new MutationObserver(()=>{for(;r.firstChild;)o.appendChild(document.adoptNode(r.firstChild))});return n.observe(r,{childList:!0,subtree:!0}),()=>{n.disconnect(),r==null||r.remove()}},[e,t])},qv=({customization:e})=>{const t=x.useRef(null);return Sl("widget_conversations",t),x.useEffect(()=>{!window.zE||!t.current||e&&window.zE("messenger:set","customization",{conversationList:e})},[e]),d.jsx("div",{ref:t,className:"h-full overflow-hidden"})},Yv=({customization:e})=>{const t=x.useRef(null);return Sl("widget_messages",t),x.useEffect(()=>{!window.zE||!t.current||e&&window.zE("messenger:set","customization",{messageLog:e})},[e]),d.jsx("div",{ref:t,className:"h-full overflow-hidden"})},Zr=e=>{window.dispatchEvent(new CustomEvent("stackable:messaging:context",{detail:e}))},Jr=25,Qr=75,Xv=({header:e,buttons:t,queryApiBase:o,customerId:r="",customerEmail:n="",primaryPercent:a=50})=>{const s=Math.max(Jr,Math.min(Qr,a)),{extensions:i}=cn(),l=x.useMemo(()=>i.some(S=>S.enabled&&(S.manifest.targets.includes("slot.header")||S.manifest.targets.includes("slot.content"))),[i]),[u,f]=x.useState(!1),[c,h]=x.useState(!1),[g,b]=x.useState("extensions"),[m,v]=x.useState(s),[w,y]=x.useState("loading"),k=x.useRef(null),E=x.useCallback(()=>!window.zE||!document.getElementById("widget_conversations")||!document.getElementById("widget_messages")?!1:(window.zE("messenger","render",{mode:"embedded",messageLog:{targetElement:"#widget_messages"},conversationList:{targetElement:"#widget_conversations"}}),window.zE("messenger:set","customization",{common:{hideHeader:!1},messageLog:{hideHeader:!0},conversationList:{hideHeader:!0,hideNewConversationButton:!0}}),!0),[]);x.useEffect(()=>{var V,W;const S=document.querySelector('script[src*="zdassets.com/ekr/snippet"]'),I=(W=(V=S==null?void 0:S.src)==null?void 0:V.match(/key=([a-f0-9-]+)/))==null?void 0:W[1];if(I&&fetch(`https://ekr.zdassets.com/compose/${I}`).then(U=>U.text()).then(U=>{var M;const J=(M=U.match(/appId['"]?\s*:\s*['"]([a-f0-9]+)['"]/))==null?void 0:M[1];J&&Zr({appId:J})}).catch(()=>{}),E()){y("ready");return}const D=setInterval(()=>{E()&&(y("ready"),clearInterval(D))},100),L=setTimeout(()=>{clearInterval(D),y(U=>U==="ready"?U:(console.warn("Zendesk widget failed to load after 10 seconds"),"error"))},1e4);return()=>{clearInterval(D),clearTimeout(L)}},[E]);const _=x.useCallback(S=>{const{detail:I}=S;!window.zE||!(I!=null&&I.payload)||window.zE("messenger:ui","newConversation",I.payload)},[]);x.useEffect(()=>(window.addEventListener("stackable:action:newConversation",_),()=>{window.removeEventListener("stackable:action:newConversation",_)}),[_]),x.useEffect(()=>{if(w!=="ready"||!window.zE)return;const S=window.zE("messenger:on","conversationStarted",L=>{var W,U;const V=(U=(W=L==null?void 0:L.payload)==null?void 0:W.conversation)==null?void 0:U.id;V&&Zr({conversationId:V})}),I=window.zE("messenger:on","messagesShown",L=>{var W,U;const V=(U=(W=L==null?void 0:L.payload)==null?void 0:W.conversation)==null?void 0:U.id;V&&Zr({conversationId:V})}),D=window.zE("messenger:on","postbackButtonClicked",L=>{var W;const V=L==null?void 0:L.payload;V!=null&&V.actionName&&window.dispatchEvent(new CustomEvent("stackable:messaging:postback",{detail:{actionName:V.actionName,conversationId:((W=V.conversation)==null?void 0:W.id)??""}}))});return()=>{typeof S=="function"&&S(),typeof I=="function"&&I(),typeof D=="function"&&D()}},[w]),x.useEffect(()=>{if(!u)return;const S=D=>{if(!k.current)return;const L=k.current.getBoundingClientRect();if((c?L.width:L.height)===0)return;const W=c?(D.clientX-L.left)/L.width*100:(D.clientY-L.top)/L.height*100,U=Math.max(Jr,Math.min(Qr,W));v(U)},I=()=>{f(!1),document.body.style.cursor="",document.body.style.userSelect=""};return document.body.style.cursor=c?"col-resize":"row-resize",document.body.style.userSelect="none",window.addEventListener("mousemove",S),window.addEventListener("mouseup",I),window.addEventListener("blur",I),()=>{window.removeEventListener("mousemove",S),window.removeEventListener("mouseup",I),window.removeEventListener("blur",I),document.body.style.cursor="",document.body.style.userSelect=""}},[u,c]),x.useEffect(()=>{if(!k.current)return;const S=k.current,I=()=>{const L=getComputedStyle(S).flexDirection==="row";h(L)};I();const D=new ResizeObserver(I);return D.observe(S),()=>{D.disconnect()}},[]);const P=x.useCallback(S=>{if(S.detail===2){v(s);return}S.preventDefault(),f(!0)},[s]),T={customerId:r,customerEmail:n};return d.jsxs("div",{"data-component":"zendesk-wrapper",className:"flex-1 flex flex-col z-10 overflow-hidden",style:{containerType:"inline-size"},children:[d.jsx("style",{children:'@container (min-width: 42rem) { [data-component="zendesk-wrapper"] > [data-id="panel-layout"] { flex-direction: row; } }'}),d.jsxs("div",{ref:k,"data-id":"panel-layout",className:"relative flex-1 overflow-hidden flex flex-col",children:[l&&d.jsxs("div",{"data-id":"primary-panel",className:"min-h-0 min-w-0 flex-none overflow-hidden flex flex-col",style:{flexBasis:`${m}%`},children:[d.jsxs("div",{className:"flex items-center justify-between px-4 py-3",children:[d.jsx("h2",{className:"font-semibold text-sm text-foreground",children:g==="extensions"?"My Profile":"My Conversations"}),d.jsxs("div",{className:"flex items-center gap-1",children:[e&&d.jsx("div",{className:"flex mr-1 gap-1",children:e}),d.jsxs("div",{className:"flex rounded-lg bg-muted p-1",children:[t,d.jsx("button",{onClick:()=>b("extensions"),className:Y("rounded-md border border-transparent p-1.5 transition-colors hover:cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",g==="extensions"?"border-border bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),title:"My Profile",children:d.jsx(Cn,{className:"h-4 w-4"})}),d.jsx("button",{onClick:()=>b("conversations"),className:Y("rounded-md border border-transparent p-1.5 transition-colors hover:cursor-pointer focus:outline-none focus-visible:ring-2 focus-visible:ring-ring/40",g==="conversations"?"border-border bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),title:"Conversations",children:d.jsx(Ro,{className:"h-4 w-4"})})]})]})]}),d.jsxs("div",{className:"flex-1 overflow-y-auto p-4 relative",children:[d.jsxs("div",{className:Y("flex flex-col gap-2",g==="conversations"&&"hidden"),children:[d.jsx(Gv,{customerId:r,customerEmail:n,queryApiBase:o,children:d.jsx(jt,{target:"slot.header",context:T,className:"flex-none"})}),d.jsx(jt,{target:"slot.content",context:T,className:"flex flex-col gap-2"})]}),d.jsx("div",{className:Y("h-full rounded-xl border border-zinc-200 bg-white p-2 shadow-sm dark:border-zinc-300",g==="extensions"&&"hidden"),children:w==="error"?d.jsx("div",{className:"flex h-full items-center justify-center p-6 text-center text-sm text-muted-foreground",children:d.jsx("p",{children:"Error loading conversations."})}):d.jsx(qv,{})})]})]}),d.jsxs("div",{"data-id":"secondary-panel",className:"min-h-0 min-w-0 flex-none flex flex-col bg-white",style:{flexBasis:l?`${100-m}%`:"100%"},children:[d.jsx("div",{className:"flex-1 overflow-hidden",children:w==="error"?d.jsx("div",{className:"flex h-full items-center justify-center p-6 text-center text-sm text-muted-foreground",children:d.jsx("p",{children:"Zendesk Messenger could not be loaded. Check that a valid Snippet Key is configured."})}):d.jsx(Yv,{})}),d.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-1 py-1 mr-4 text-xs text-zinc-500",children:[d.jsx(jt,{target:"slot.footer",context:T,className:"flex items-center gap-1",fallback:d.jsxs(d.Fragment,{children:[d.jsx("div",{children:"powered by"}),d.jsx(jv,{href:"https://zendesk.com",children:"Zendesk"})]})}),d.jsx(jt,{target:"slot.footer-links",context:T,className:"flex items-center gap-1",separator:d.jsx("span",{className:"text-zinc-300",children:"/"}),render:({children:S,index:I})=>d.jsxs(d.Fragment,{children:[I===0&&d.jsx("span",{className:"text-zinc-300",children:"+"}),S]})})]})]}),l&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:Y("group/resize absolute z-20 flex items-center justify-center",c?"top-0 bottom-0 w-3 -ml-2.5 cursor-col-resize":"w-full h-3 -mt-2.5 cursor-row-resize"),style:c?{left:`${m}%`}:{top:`${m}%`},onMouseDown:P,role:"separator","aria-label":"Resize panels","aria-orientation":c?"vertical":"horizontal","aria-valuemin":Jr,"aria-valuemax":Qr,"aria-valuenow":Math.round(m),children:d.jsx("div",{className:Y("rounded-full bg-foreground/35 dark:bg-white shadow-[0_0_0_1px_rgba(255,255,255,0.16),0_0_0_1px_rgba(0,0,0,0.22)] transition-all",c?"h-20 w-0.5":"h-0.5 w-20",u?"bg-foreground/70 dark:bg-white opacity-100":"opacity-70 group-hover/resize:bg-foreground/55 dark:group-hover/resize:bg-white group-hover/resize:opacity-100")})}),u&&d.jsx("div",{className:Y("absolute inset-0 z-40",c?"cursor-col-resize":"cursor-row-resize"),onMouseUp:()=>f(!1)})]})]})]})},Kv="ze-snippet",Cl=e=>`https://static.zdassets.com/ekr/snippet.js?key=${encodeURIComponent(e)}`,Zv=(e,t={})=>{if(typeof window>"u"||typeof document>"u"||!e)return Promise.resolve();const{autorender:o=!1,scriptId:r=Kv}=t;window.zEMessenger={autorender:o};const n=document.getElementById(r);if(n){if(n.getAttribute("src")===Cl(e))return Promise.resolve();n.remove()}return new Promise((a,s)=>{const i=document.createElement("script");i.id=r,i.src=Cl(e),i.async=!0,i.onload=()=>a(),i.onerror=()=>s(new Error("Failed to load Zendesk snippet")),document.head.appendChild(i)})},Jv=({queryApiBase:e,apiBase:t,appId:o,theme:r,icon:n,instanceId:a,customerId:s,customerEmail:i,customerName:l,snippetKey:u})=>{const f=r==="dark"||r==="light"?r:"inherit";return x.useEffect(()=>{u&&Zv(u).catch(c=>{console.error("[StackableWidget] Failed to load Zendesk snippet:",c)})},[u]),d.jsx(Pv,{instanceId:a,queryApiBase:e,apiBase:t,appId:o,customerId:s,customerEmail:i,customerName:l,children:d.jsx(Uv,{theme:f,icon:n,children:d.jsx(Xv,{queryApiBase:e,customerId:s,customerEmail:i,primaryPercent:40})})})};class Qv extends HTMLElement{constructor(){super();on(this,"mountNode");on(this,"root");const o=this.attachShadow({mode:"open"}),r=document.createElement("style");r.textContent=Ml,o.appendChild(r),this.mountNode=document.createElement("div"),o.appendChild(this.mountNode)}static get observedAttributes(){return["query-api-base","api-base","app-id","instance-id","theme","icon","customer-id","customer-email","customer-name","snippet-key"]}connectedCallback(){this.root=be.createRoot(this.mountNode),this.renderWidget()}disconnectedCallback(){var o;(o=this.root)==null||o.unmount(),this.root=void 0}attributeChangedCallback(){this.renderWidget()}renderWidget(){if(!this.root)return;const o=this.getAttribute("theme")??"";this.mountNode.classList.toggle("dark",o==="dark"),this.root.render(d.jsx(Jv,{theme:o,icon:this.getAttribute("icon")??void 0,queryApiBase:this.getAttribute("query-api-base")??"",apiBase:this.getAttribute("api-base")??void 0,appId:this.getAttribute("app-id")??"",instanceId:this.getAttribute("instance-id")??"",customerId:this.getAttribute("customer-id")??void 0,customerEmail:this.getAttribute("customer-email")??void 0,customerName:this.getAttribute("customer-name")??void 0,snippetKey:this.getAttribute("snippet-key")??""}))}}customElements.get("stackable-widget")||customElements.define("stackable-widget",Qv)}));
|