@pagelines/sdk 1.0.356 → 1.0.358

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.
@@ -55,6 +55,11 @@ export declare class AgentChatController extends SettingsObject<AgentChatControl
55
55
  endConversation(): Promise<void>;
56
56
  sendChatMessage(message: string, attachments?: ChatAttachment[]): Promise<void>;
57
57
  private buildHistory;
58
+ /** Seed the controller with previously-loaded messages (e.g. from a server thread). */
59
+ loadMessages(args: {
60
+ conversationId: string;
61
+ messages: ChatMessage[];
62
+ }): void;
58
63
  destroy(): Promise<void>;
59
64
  }
60
65
  export {};
package/dist/agent.js CHANGED
@@ -1,11 +1,11 @@
1
1
  var A = Object.defineProperty;
2
2
  var c = (e, r) => A(e, "name", { value: r, configurable: !0 });
3
- import { _ as C, a as M } from "./AgentProvider.vue_vue_type_script_setup_true_lang-D_Ftn3vK.js";
4
- import { A as K } from "./AgentProvider.vue_vue_type_script_setup_true_lang-D_Ftn3vK.js";
3
+ import { _ as C, a as M } from "./AgentProvider.vue_vue_type_script_setup_true_lang-DKRtWknA.js";
4
+ import { A as K } from "./AgentProvider.vue_vue_type_script_setup_true_lang-DKRtWknA.js";
5
5
  import { defineComponent as x, openBlock as l, createBlock as g, withCtx as b, createElementVNode as o, createVNode as $, ref as h, watch as z, nextTick as E, createElementBlock as f, normalizeClass as p, normalizeStyle as N, createCommentVNode as u } from "vue";
6
6
  import { _ as B } from "./FModal.vue_vue_type_script_setup_true_lang-DI6cyWhd.js";
7
- import { _ } from "./AgentWrap.vue_vue_type_script_setup_true_lang-CnOmMDjt.js";
8
- import { A as Q, A as R, a as X } from "./AgentWrap.vue_vue_type_script_setup_true_lang-CnOmMDjt.js";
7
+ import { _ } from "./AgentWrap.vue_vue_type_script_setup_true_lang-CZiiYRYE.js";
8
+ import { A as Q, A as R, a as X } from "./AgentWrap.vue_vue_type_script_setup_true_lang-CZiiYRYE.js";
9
9
  import { Agent as Z } from "@pagelines/core";
10
10
  const T = { class: "relative w-full h-[80vh] md:h-[600px]" }, F = /* @__PURE__ */ x({
11
11
  name: "AgentModal",
@@ -5,7 +5,7 @@ var v = (r, t, e) => q(r, typeof t != "symbol" ? t + "" : t, e);
5
5
  import { P as O } from "./sdkClient-6j3pmwVP.js";
6
6
  import { createApp as M, ref as p, computed as u, unref as b, watch as B, onUnmounted as R, defineComponent as W, shallowRef as H, openBlock as C, createBlock as S, withCtx as F, createElementBlock as T, normalizeClass as y, createElementVNode as s, normalizeStyle as N, toDisplayString as P, withModifiers as D, createCommentVNode as j } from "vue";
7
7
  import { createLogger as U } from "@pagelines/core";
8
- import { _ as G, g as Z, a as K, A as J } from "./AgentWrap.vue_vue_type_script_setup_true_lang-CnOmMDjt.js";
8
+ import { _ as G, g as Z, a as K, A as J } from "./AgentWrap.vue_vue_type_script_setup_true_lang-CZiiYRYE.js";
9
9
  const Q = `@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-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--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-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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"DM Mono", "SF Mono", SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-4xl:56rem;--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);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--blur-sm:8px;--blur-lg:16px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-theme-50:var(--theme-50,#f3f4f6);--color-theme-100:var(--theme-100,#e5e7eb);--color-theme-200:var(--theme-200,#d1d5db);--color-theme-300:var(--theme-300,#9ca3af);--color-theme-400:var(--theme-400,#6b7280);--color-theme-500:var(--theme-500,#4b5563);--color-theme-600:var(--theme-600,#374151);--color-theme-800:var(--theme-800,#111827);--color-theme-900:var(--theme-900,#0c0a13);--color-theme-950:var(--theme-950,#030712);--color-primary-300:var(--primary-300,#60a5fa);--color-primary-400:var(--primary-400,#3b82f6);--color-primary-500:var(--primary-500,#2563eb);--color-primary-600:var(--primary-600,#1d4ed8)}}@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;-o-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}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::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}}@layer components;@layer utilities{.\\@container\\/agent{container:agent/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)}.-top-1\\.5{top:calc(var(--spacing) * -1.5)}.top-0\\.5{top:calc(var(--spacing) * .5)}.top-1{top:calc(var(--spacing) * 1)}.top-1\\.5{top:calc(var(--spacing) * 1.5)}.top-1\\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-\\[5\\%\\]{top:5%}.-right-1\\.5{right:calc(var(--spacing) * -1.5)}.-right-16{right:calc(var(--spacing) * -16)}.right-0\\.5{right:calc(var(--spacing) * .5)}.right-1{right:calc(var(--spacing) * 1)}.right-1\\.5{right:calc(var(--spacing) * 1.5)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.right-\\[5\\%\\]{right:5%}.bottom-0\\.5{bottom:calc(var(--spacing) * .5)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-6{bottom:calc(var(--spacing) * 6)}.-left-16{left:calc(var(--spacing) * -16)}.left-1\\/2{left:50%}.left-4{left:calc(var(--spacing) * 4)}.left-6{left:calc(var(--spacing) * 6)}.left-\\[13px\\]{left:13px}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\\[999999\\]{z-index:999999}.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-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-6{margin-top:calc(var(--spacing) * 6)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.i-heroicons-calendar{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-heroicons-chat-bubble-left-right{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193q-.51.041-1.02.072v3.091l-3-3q-2.031 0-4.02-.163a2.1 2.1 0 0 1-.825-.242m9.345-8.334a2 2 0 0 0-.476-.095a48.6 48.6 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.5 48.5 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402c-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235q.865.113 1.74.194V21l4.155-4.155'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-heroicons-cloud-arrow-down{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M12 9.75v6.75m0 0l-3-3m3 3l3-3m-8.25 6a4.5 4.5 0 0 1-1.41-8.775a5.25 5.25 0 0 1 10.233-2.33a3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-heroicons-envelope{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-heroicons-phone{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.04 12.04 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-heroicons-question-mark-circle{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M9.879 7.519c1.172-1.025 3.071-1.025 4.243 0c1.171 1.025 1.171 2.687 0 3.712q-.308.268-.67.442c-.746.361-1.452.999-1.452 1.827v.75M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9 5.25h.008v.008H12z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-heroicons-sparkles{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09m8.445-7.188L18 9.75l-.259-1.035a3.38 3.38 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.38 3.38 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.38 3.38 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.38 3.38 0 0 0-2.456 2.456m-1.365 11.852L16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183l.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394l-1.183.394a2.25 2.25 0 0 0-1.423 1.423'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-simple-icons-facebook{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978c.401 0 .955.042 1.468.103a9 9 0 0 1 1.141.195v3.325a9 9 0 0 0-.653-.036a27 27 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.7 1.7 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103l-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-simple-icons-instagram{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.9 5.9 0 0 0-2.124 1.388a5.9 5.9 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076s-.069 1.688-.063 4.947s.021 3.667.083 4.947c.061 1.277.264 2.149.563 2.911c.308.789.72 1.457 1.388 2.123a5.9 5.9 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552c1.278.056 1.689.069 4.947.063s3.668-.021 4.947-.082c1.28-.06 2.147-.265 2.91-.563a5.9 5.9 0 0 0 2.123-1.388a5.9 5.9 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912c.056-1.28.07-1.69.063-4.948c-.006-3.258-.02-3.667-.081-4.947c-.06-1.28-.264-2.148-.564-2.911a5.9 5.9 0 0 0-1.387-2.123a5.9 5.9 0 0 0-2.128-1.38c-.764-.294-1.636-.496-2.914-.55C15.647.009 15.236-.006 11.977 0S8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.7 3.7 0 0 1-1.382-.895a3.7 3.7 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228c-.06-1.264-.072-1.644-.08-4.848c-.006-3.204.006-3.583.061-4.848c.05-1.169.246-1.805.408-2.228c.216-.561.477-.96.895-1.382a3.7 3.7 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417c1.265-.06 1.644-.072 4.848-.08c3.203-.006 3.583.006 4.85.062c1.168.05 1.804.244 2.227.408c.56.216.96.475 1.382.895s.681.817.9 1.378c.165.422.362 1.056.417 2.227c.06 1.265.074 1.645.08 4.848c.005 3.203-.006 3.583-.061 4.848c-.051 1.17-.245 1.805-.408 2.23c-.216.56-.477.96-.896 1.38a3.7 3.7 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418c-1.266.06-1.645.072-4.85.079s-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442a1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024a6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16A4 4 0 0 1 8 12.008'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-simple-icons-linkedin{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037c-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85c3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065a2.064 2.064 0 1 1 2.063 2.065m1.782 13.019H3.555V9h3.564zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-simple-icons-threads{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12.186 24h-.007c-3.581-.024-6.334-1.205-8.184-3.509C2.35 18.44 1.5 15.586 1.472 12.01v-.017c.03-3.579.879-6.43 2.525-8.482C5.845 1.205 8.6.024 12.18 0h.014c2.746.02 5.043.725 6.826 2.098c1.677 1.29 2.858 3.13 3.509 5.467l-2.04.569c-1.104-3.96-3.898-5.984-8.304-6.015c-2.91.022-5.11.936-6.54 2.717C4.307 6.504 3.616 8.914 3.589 12c.027 3.086.718 5.496 2.057 7.164c1.43 1.783 3.631 2.698 6.54 2.717c2.623-.02 4.358-.631 5.8-2.045c1.647-1.613 1.618-3.593 1.09-4.798c-.31-.71-.873-1.3-1.634-1.75c-.192 1.352-.622 2.446-1.284 3.272c-.886 1.102-2.14 1.704-3.73 1.79c-1.202.065-2.361-.218-3.259-.801c-1.063-.689-1.685-1.74-1.752-2.964c-.065-1.19.408-2.285 1.33-3.082c.88-.76 2.119-1.207 3.583-1.291a14 14 0 0 1 3.02.142c-.126-.742-.375-1.332-.75-1.757c-.513-.586-1.308-.883-2.359-.89h-.029c-.844 0-1.992.232-2.721 1.32l-1.757-1.18c.98-1.454 2.568-2.256 4.478-2.256h.044c3.194.02 5.097 1.975 5.287 5.388q.163.07.321.142c1.49.7 2.58 1.761 3.154 3.07c.797 1.82.871 4.79-1.548 7.158c-1.85 1.81-4.094 2.628-7.277 2.65Zm1.003-11.69q-.362 0-.739.021c-1.836.103-2.98.946-2.916 2.143c.067 1.256 1.452 1.839 2.784 1.767c1.224-.065 2.818-.543 3.086-3.71a10.5 10.5 0 0 0-2.215-.221'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-simple-icons-tiktok{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12.525.02c1.31-.02 2.61-.01 3.91-.02c.08 1.53.63 3.09 1.75 4.17c1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97c-.57-.26-1.1-.59-1.62-.93c-.01 2.92.01 5.84-.02 8.75c-.08 1.4-.54 2.79-1.35 3.94c-1.31 1.92-3.58 3.17-5.91 3.21c-1.43.08-2.86-.31-4.08-1.03c-2.02-1.19-3.44-3.37-3.65-5.71c-.02-.5-.03-1-.01-1.49c.18-1.9 1.12-3.72 2.58-4.96c1.66-1.44 3.98-2.13 6.15-1.72c.02 1.48-.04 2.96-.04 4.44c-.99-.32-2.15-.23-3.02.37c-.63.41-1.11 1.04-1.36 1.75c-.21.51-.15 1.07-.14 1.61c.24 1.64 1.82 3.02 3.5 2.87c1.12-.01 2.19-.66 2.77-1.61c.19-.33.4-.67.41-1.06c.1-1.79.06-3.57.07-5.36c.01-4.03-.01-8.05.02-12.07'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-simple-icons-x{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14.234 10.162L22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299l-.929-1.329L3.076 1.56h3.182l5.965 8.532l.929 1.329l7.754 11.09h-3.182z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-svg-spinners-3-dots-fade{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Ccircle cx='4' cy='12' r='3' fill='black'%3E%3Canimate id='SVG7x14Dcom' fill='freeze' attributeName='opacity' begin='0;SVGqSjG0dUp.end-0.25s' dur='0.75s' values='1;.2'/%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='3' fill='black' opacity='.4'%3E%3Canimate fill='freeze' attributeName='opacity' begin='SVG7x14Dcom.begin+0.15s' dur='0.75s' values='1;.2'/%3E%3C/circle%3E%3Ccircle cx='20' cy='12' r='3' fill='black' opacity='.3'%3E%3Canimate id='SVGqSjG0dUp' fill='freeze' attributeName='opacity' begin='SVG7x14Dcom.begin+0.3s' dur='0.75s' values='1;.2'/%3E%3C/circle%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-svg-spinners-90-ring-with-bg{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z' opacity='.25'/%3E%3Cpath fill='black' d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%3E%3CanimateTransform attributeName='transform' dur='0.75s' repeatCount='indefinite' type='rotate' values='0 12 12;360 12 12'/%3E%3C/path%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-svg-spinners-ring-resize{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg stroke='black'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-linecap='round' stroke-width='3'%3E%3Canimate attributeName='stroke-dasharray' calcMode='spline' dur='1.5s' keySplines='0.42,0,0.58,1;0.42,0,0.58,1;0.42,0,0.58,1' keyTimes='0;0.475;0.95;1' repeatCount='indefinite' values='0 150;42 150;42 150;42 150'/%3E%3Canimate attributeName='stroke-dashoffset' calcMode='spline' dur='1.5s' keySplines='0.42,0,0.58,1;0.42,0,0.58,1;0.42,0,0.58,1' keyTimes='0;0.475;0.95;1' repeatCount='indefinite' values='0;-16;-59;-59'/%3E%3C/circle%3E%3CanimateTransform attributeName='transform' dur='2s' repeatCount='indefinite' type='rotate' values='0 12 12;360 12 12'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-alert-circle{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m9-4v4m0 4h.01'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-arrow-up{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 5v14m6-8l-6-6m-6 6l6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-brand-github{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2c2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2a4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6c-.6.6-.6 1.2-.5 2V21'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-brand-youtube{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2 8a4 4 0 0 1 4-4h12a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4z'/%3E%3Cpath d='m10 9l5 3l-5 3z'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-calendar{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2zm12-4v4M8 3v4m-4 4h16m-9 4h1m0 0v3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-chevron-down{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9l6 6l6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-file{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M14 3v4a1 1 0 0 0 1 1h4'/%3E%3Cpath d='M17 21H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7l5 5v11a2 2 0 0 1-2 2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-globe{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M7 9a4 4 0 1 0 8 0a4 4 0 0 0-8 0'/%3E%3Cpath d='M5.75 15A8.015 8.015 0 1 0 15 2m-4 15v4m-4 0h8'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-lock{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M5 13a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2z'/%3E%3Cpath d='M11 16a1 1 0 1 0 2 0a1 1 0 0 0-2 0m-3-5V7a4 4 0 1 1 8 0v4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-logout{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M14 8V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2v-2'/%3E%3Cpath d='M9 12h12l-3-3m0 6l3-3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-mail{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M3 7a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3Cpath d='m3 7l9 6l9-6'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-menu{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h16M4 16h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-message-circle{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m3 20l1.3-3.9C1.976 12.663 2.874 8.228 6.4 5.726c3.526-2.501 8.59-2.296 11.845.48c3.255 2.777 3.695 7.266 1.029 10.501S11.659 20.922 7.7 19z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-paperclip{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m15 7l-6.5 6.5a1.5 1.5 0 0 0 3 3L18 10a3 3 0 0 0-6-6l-6.5 6.5a4.5 4.5 0 0 0 9 9L21 13'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-phone{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 4h4l2 5l-2.5 1.5a11 11 0 0 0 5 5L15 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-share{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 12a3 3 0 1 0 6 0a3 3 0 1 0-6 0m12-6a3 3 0 1 0 6 0a3 3 0 1 0-6 0m0 12a3 3 0 1 0 6 0a3 3 0 1 0-6 0m-6.3-7.3l6.6-3.4m-6.6 6l6.6 3.4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-sparkles{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2-2a2 2 0 0 1-2-2a2 2 0 0 1-2 2m0-12a2 2 0 0 1 2 2a2 2 0 0 1 2-2a2 2 0 0 1-2-2a2 2 0 0 1-2 2M9 18a6 6 0 0 1 6-6a6 6 0 0 1-6-6a6 6 0 0 1-6 6a6 6 0 0 1 6 6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-tool{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 10h3V7L6.5 3.5a6 6 0 0 1 8 8l6 6a2 2 0 0 1-3 3l-6-6a6 6 0 0 1-8-8z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-user{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-user-circle{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 1 0-18 0'/%3E%3Cpath d='M9 10a3 3 0 1 0 6 0a3 3 0 1 0-6 0m-2.832 8.849A4 4 0 0 1 10 16h4a4 4 0 0 1 3.834 2.855'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-user-square-rounded{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12 13a3 3 0 1 0 0-6a3 3 0 0 0 0 6'/%3E%3Cpath d='M12 3c7.2 0 9 1.8 9 9s-1.8 9-9 9s-9-1.8-9-9s1.8-9 9-9'/%3E%3Cpath d='M6 20.05V20a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v.05'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-users{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 7a4 4 0 1 0 8 0a4 4 0 1 0-8 0M3 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2m1-17.87a4 4 0 0 1 0 7.75M21 21v-2a4 4 0 0 0-3-3.85'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-world{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m.6-3h16.8M3.6 15h16.8'/%3E%3Cpath d='M11.5 3a17 17 0 0 0 0 18m1-18a17 17 0 0 1 0 18'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.i-tabler-x{width:1em;height:1em;-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.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)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-20{width:calc(var(--spacing) * 20);height:calc(var(--spacing) * 20)}.size-28{width:calc(var(--spacing) * 28);height:calc(var(--spacing) * 28)}.size-full{width:100%;height:100%}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-\\[28px\\]{height:28px}.h-\\[60px\\]{height:60px}.h-\\[80px\\]{height:80px}.h-\\[80vh\\]{height:80vh}.h-\\[600px\\]{height:600px}.h-\\[min\\(600px\\,calc\\(100vh-4rem\\)\\)\\]{height:min(600px,100vh - 4rem)}.h-full{height:100%}.h-px{height:1px}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-\\[calc\\(100vh-48px\\)\\]{max-height:calc(100vh - 48px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-96{width:calc(var(--spacing) * 96)}.w-\\[3px\\]{width:3px}.w-\\[28px\\]{width:28px}.w-\\[60px\\]{width:60px}.w-\\[80\\%\\]{width:80%}.w-\\[80px\\]{width:80px}.w-\\[min\\(400px\\,calc\\(100vw-2rem\\)\\)\\]{width:min(400px,100vw - 2rem)}.w-full{width:100%}.max-w-4xl{max-width:var(--container-4xl)}.max-w-20{max-width:calc(var(--spacing) * 20)}.max-w-\\[75\\%\\]{max-width:75%}.max-w-\\[85\\%\\]{max-width:85%}.max-w-\\[240px\\]{max-width:240px}.max-w-\\[255px\\]{max-width:255px}.max-w-\\[300px\\]{max-width:300px}.max-w-\\[320px\\]{max-width:320px}.max-w-\\[calc\\(100vw-48px\\)\\]{max-width:calc(100vw - 48px)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow-0{flex-grow:0}.basis-0{flex-basis:calc(var(--spacing) * 0)}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-4{--tw-translate-x:calc(var(--spacing) * -4);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-\\[30px\\]{--tw-translate-x: -30px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-\\[30px\\]{--tw-translate-y: -30px ;translate:var(--tw-translate-x) var(--tw-translate-y)}.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)}.translate-y-\\[30px\\]{--tw-translate-y:30px;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.-rotate-45{rotate:-45deg}.rotate-0{rotate:none}.rotate-45{rotate:45deg}.transform-gpu{transform:translateZ(0) var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.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-7{gap:calc(var(--spacing) * 7)}: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(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\\[5px\\]{border-radius:5px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-green-400{border-color:var(--color-green-400)}.border-primary-400{border-color:var(--color-primary-400)}.border-primary-500\\/40{border-color:var(--color-primary-500)}@supports (color:color-mix(in lab,red,red)){.border-primary-500\\/40{border-color:color-mix(in oklab,var(--color-primary-500) 40%,transparent)}}.border-red-400{border-color:var(--color-red-400)}.border-theme-100{border-color:var(--color-theme-100)}.border-theme-200{border-color:var(--color-theme-200)}.border-white{border-color:var(--color-white)}.border-white\\/0{border-color:#0000}@supports (color:color-mix(in lab,red,red)){.border-white\\/0{border-color:color-mix(in oklab,var(--color-white) 0%,transparent)}}.border-white\\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.border-white\\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\\/20{border-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.bg-black\\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-black\\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-emerald-400\\/40{background-color:#00d29466}@supports (color:color-mix(in lab,red,red)){.bg-emerald-400\\/40{background-color:color-mix(in oklab,var(--color-emerald-400) 40%,transparent)}}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-primary-500,.bg-primary-500\\/20{background-color:var(--color-primary-500)}@supports (color:color-mix(in lab,red,red)){.bg-primary-500\\/20{background-color:color-mix(in oklab,var(--color-primary-500) 20%,transparent)}}.bg-primary-600{background-color:var(--color-primary-600)}.bg-red-500\\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-600{background-color:var(--color-red-600)}.bg-theme-50{background-color:var(--color-theme-50)}.bg-theme-100{background-color:var(--color-theme-100)}.bg-theme-200{background-color:var(--color-theme-200)}.bg-theme-400{background-color:var(--color-theme-400)}.bg-theme-600{background-color:var(--color-theme-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\\/5{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.bg-white\\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\\/15{background-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-black\\/70{--tw-gradient-from:#000000b3}@supports (color:color-mix(in lab,red,red)){.from-black\\/70{--tw-gradient-from:color-mix(in oklab, var(--color-black) 70%, transparent)}}.from-black\\/70{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-black\\/80{--tw-gradient-from:#000c}@supports (color:color-mix(in lab,red,red)){.from-black\\/80{--tw-gradient-from:color-mix(in oklab, var(--color-black) 80%, transparent)}}.from-black\\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-black\\/90{--tw-gradient-from:#000000e6}@supports (color:color-mix(in lab,red,red)){.from-black\\/90{--tw-gradient-from:color-mix(in oklab, var(--color-black) 90%, transparent)}}.from-black\\/90{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-theme-800{--tw-gradient-from:var(--color-theme-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-black\\/10{--tw-gradient-via:#0000001a}@supports (color:color-mix(in lab,red,red)){.via-black\\/10{--tw-gradient-via:color-mix(in oklab, var(--color-black) 10%, transparent)}}.via-black\\/10{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\\/50{--tw-gradient-via:#00000080}@supports (color:color-mix(in lab,red,red)){.via-black\\/50{--tw-gradient-via:color-mix(in oklab, var(--color-black) 50%, transparent)}}.via-black\\/50{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\\/60{--tw-gradient-via:#0009}@supports (color:color-mix(in lab,red,red)){.via-black\\/60{--tw-gradient-via:color-mix(in oklab, var(--color-black) 60%, transparent)}}.via-black\\/60{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\\/90{--tw-gradient-via:#000000e6}@supports (color:color-mix(in lab,red,red)){.via-black\\/90{--tw-gradient-via:color-mix(in oklab, var(--color-black) 90%, transparent)}}.via-black\\/90{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-black\\/40{--tw-gradient-to:#0006}@supports (color:color-mix(in lab,red,red)){.to-black\\/40{--tw-gradient-to:color-mix(in oklab, var(--color-black) 40%, transparent)}}.to-black\\/40{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-black\\/80{--tw-gradient-to:#000c}@supports (color:color-mix(in lab,red,red)){.to-black\\/80{--tw-gradient-to:color-mix(in oklab, var(--color-black) 80%, transparent)}}.to-black\\/80{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-black\\/100{--tw-gradient-to:var(--color-black);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-theme-950{--tw-gradient-to:var(--color-theme-950);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.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)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-9{padding-inline:calc(var(--spacing) * 9)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.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-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-\\[1\\.6\\]{--tw-leading:1.6;line-height:1.6}.leading-\\[1\\.55\\]{--tw-leading:1.55;line-height:1.55}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.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-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-words{overflow-wrap:break-word}.text-green-500{color:var(--color-green-500)}.text-primary-300{color:var(--color-primary-300)}.text-primary-400{color:var(--color-primary-400)}.text-red-400{color:var(--color-red-400)}.text-theme-300{color:var(--color-theme-300)}.text-theme-400{color:var(--color-theme-400)}.text-theme-600{color:var(--color-theme-600)}.text-theme-800{color:var(--color-theme-800)}.text-theme-900{color:var(--color-theme-900)}.text-white{color:var(--color-white)}.text-white\\/20{color:#fff3}@supports (color:color-mix(in lab,red,red)){.text-white\\/20{color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.text-white\\/30{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.text-white\\/30{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.text-white\\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\\/40{color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.text-white\\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\\/50{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.text-white\\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\\/60{color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.text-white\\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.text-white\\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.text-white\\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\\/90{color:color-mix(in oklab,var(--color-white) 90%,transparent)}}.text-white\\/95{color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.text-white\\/95{color:color-mix(in oklab,var(--color-white) 95%,transparent)}}.placeholder-theme-400::-moz-placeholder{color:var(--color-theme-400)}.placeholder-theme-400::placeholder{color:var(--color-theme-400)}.placeholder-theme-500::-moz-placeholder{color:var(--color-theme-500)}.placeholder-theme-500::placeholder{color:var(--color-theme-500)}.placeholder-white\\/50::-moz-placeholder{color:#ffffff80}.placeholder-white\\/50::placeholder{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.placeholder-white\\/50::-moz-placeholder{color:color-mix(in oklab,var(--color-white) 50%,transparent)}.placeholder-white\\/50::placeholder{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.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-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);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_8px_32px_-4px_rgba\\(0\\,0\\,0\\,0\\.15\\)\\]{--tw-shadow:0 8px 32px -4px var(--tw-shadow-color,#00000026);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_24px_80px_-12px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\,0_8px_24px_-8px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\]{--tw-shadow:0 24px 80px -12px var(--tw-shadow-color,#0003), 0 8px 24px -8px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px 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-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-theme-900{--tw-ring-color:var(--color-theme-900)}.ring-white{--tw-ring-color:var(--color-white)}.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,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.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,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-opacity{transition-property:opacity;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-250{--tw-duration:.25s;transition-duration:.25s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-1000{--tw-duration:1s;transition-duration:1s}.duration-\\[400ms\\]{--tw-duration:.4s;transition-duration:.4s}.ease-\\[cubic-bezier\\(0\\.25\\,1\\,0\\.33\\,1\\)\\]{--tw-ease:cubic-bezier(.25,1,.33,1);transition-timing-function:cubic-bezier(.25,1,.33,1)}.ease-\\[cubic-bezier\\(0\\.52\\,0\\.01\\,0\\.16\\,1\\)\\]{--tw-ease:cubic-bezier(.52,.01,.16,1);transition-timing-function:cubic-bezier(.52,.01,.16,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-transform{will-change:transform}.\\[-ms-overflow-style\\:none\\]{-ms-overflow-style:none}.\\[scrollbar-width\\:none\\]{scrollbar-width:none}@media(hover:hover){.group-hover\\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\\:text-white:is(:where(.group):hover *){color:var(--color-white)}.group-hover\\:opacity-40:is(:where(.group):hover *){opacity:.4}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.focus-within\\:border-theme-300:focus-within{border-color:var(--color-theme-300)}.focus-within\\:border-white\\/40:focus-within{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.focus-within\\:border-white\\/40:focus-within{border-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}@media(hover:hover){.hover\\:translate-y-\\[-1px\\]:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.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\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:rotate-90:hover{rotate:90deg}.hover\\:border-green-300:hover{border-color:var(--color-green-300)}.hover\\:border-primary-300:hover{border-color:var(--color-primary-300)}.hover\\:border-red-300:hover{border-color:var(--color-red-300)}.hover\\:border-white\\/10:hover{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\\:border-white\\/10:hover{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\\:border-white\\/40:hover{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.hover\\:border-white\\/40:hover{border-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.hover\\:bg-green-500:hover{background-color:var(--color-green-500)}.hover\\:bg-primary-500:hover{background-color:var(--color-primary-500)}.hover\\:bg-primary-600:hover{background-color:var(--color-primary-600)}.hover\\:bg-red-500:hover{background-color:var(--color-red-500)}.hover\\:bg-theme-50:hover{background-color:var(--color-theme-50)}.hover\\:bg-theme-200:hover{background-color:var(--color-theme-200)}.hover\\:bg-white\\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-white\\/5:hover{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.hover\\:bg-white\\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-white\\/10:hover{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.hover\\:bg-white\\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-white\\/20:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\\:text-theme-400:hover{color:var(--color-theme-400)}.hover\\:text-theme-600:hover{color:var(--color-theme-600)}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:text-white\\/70:hover{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.hover\\:text-white\\/70:hover{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.hover\\:text-white\\/80:hover{color:#fffc}@supports (color:color-mix(in lab,red,red)){.hover\\:text-white\\/80:hover{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.hover\\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.active\\:-translate-y-0\\.5:active{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:scale-\\[1\\.06\\]:active{scale:1.06}.active\\:opacity-80:active{opacity:.8}.active\\:duration-100:active{--tw-duration:.1s;transition-duration:.1s}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\\:top-6{top:calc(var(--spacing) * 6)}.sm\\:right-6{right:calc(var(--spacing) * 6)}.sm\\:bottom-6{bottom:calc(var(--spacing) * 6)}.sm\\:left-6{left:calc(var(--spacing) * 6)}.sm\\:size-16{width:calc(var(--spacing) * 16);height:calc(var(--spacing) * 16)}.sm\\:h-24{height:calc(var(--spacing) * 24)}.sm\\:w-24{width:calc(var(--spacing) * 24)}.sm\\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media(min-width:48rem){.md\\:h-\\[600px\\]{height:600px}}@container agent (min-width:480px){.\\@\\[480px\\]\\/agent\\:px-6{padding-inline:calc(var(--spacing) * 6)}}.\\[\\&\\:\\:-webkit-scrollbar\\]\\:hidden::-webkit-scrollbar{display:none}}.chat-msg-prose :first-child{margin-top:0}.chat-msg-prose :last-child{margin-bottom:0}.chat-msg-prose strong{font-weight:600}.chat-msg-prose em{font-style:italic}.chat-msg-prose a{color:inherit;text-underline-offset:2px;opacity:.85;text-decoration:underline}.chat-msg-prose a:hover{opacity:1}.chat-msg-prose p{margin:.4em 0;line-height:1.55}.chat-msg-prose h1{margin:.8em 0 .4em;font-size:1.25em;font-weight:700;line-height:1.3}.chat-msg-prose h2{margin:.7em 0 .35em;font-size:1.15em;font-weight:700;line-height:1.3}.chat-msg-prose h3{margin:.6em 0 .3em;font-size:1.05em;font-weight:600;line-height:1.35}.chat-msg-prose h4,.chat-msg-prose h5,.chat-msg-prose h6{margin:.5em 0 .25em;font-size:1em;font-weight:600;line-height:1.4}.chat-msg-prose ul,.chat-msg-prose ol{margin:.3em 0 .5em;padding-left:1.4em;line-height:1.55}.chat-msg-prose ul{list-style-type:disc}.chat-msg-prose ol{list-style-type:decimal}.chat-msg-prose li{margin-bottom:.15em}.chat-msg-prose li p{margin:0}.chat-msg-prose li::marker{color:currentColor;opacity:.4}.chat-msg-prose pre{background:#0000000d;border-radius:.5rem;margin:.5em 0;padding:.6em .75em;font-family:SF Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.82em;line-height:1.5;overflow-x:auto}.chat-msg-prose pre code{font-size:inherit;background:0 0;padding:0;font-family:inherit}.chat-msg-prose :not(pre)>code{background:#0000000f;border-radius:.25rem;padding:.15em .4em;font-family:SF Mono,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85em}.chat-msg-prose blockquote{opacity:.75;border-left:2.5px solid;margin:.5em 0;padding:.35em 0 .35em .75em}.chat-msg-prose blockquote p{margin:.15em 0}.chat-msg-prose table{border-collapse:collapse;width:100%;margin:.5em 0;font-size:.9em}.chat-msg-prose th{text-align:left;border-bottom:1.5px solid #0003;padding:.35em .6em;font-weight:600}.chat-msg-prose td{border-bottom:1px solid #00000014;padding:.35em .6em}.chat-msg-prose tr:last-child td{border-bottom:none}.chat-msg-prose hr{border:none;border-top:1px solid #0000001f;margin:.75em 0}.chat-msg-prose img{border-radius:.5rem;max-width:100%;height:auto;margin:.4em 0}.chat-msg-prose p+p{margin-top:.4em}.chat-msg-prose p+ul,.chat-msg-prose p+ol{margin-top:.2em}.chat-msg-prose ul+p,.chat-msg-prose ol+p,.chat-msg-prose pre+p,.chat-msg-prose p+pre{margin-top:.4em}.chat-msg-prose h1+p,.chat-msg-prose h2+p,.chat-msg-prose h3+p{margin-top:.15em}@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-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@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-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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}`, m = U("PLWidget"), w = class w {
10
10
  constructor(t) {
11
11
  v(this, "app", null);
@@ -72,7 +72,7 @@ const Q = `@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-
72
72
  async mountMode(t) {
73
73
  const { mode: e } = this.config;
74
74
  if (e === "inline") {
75
- const { default: a } = await import("./AgentWidgetInline-BRfRYhMT.js");
75
+ const { default: a } = await import("./AgentWidgetInline-BuW3tR6N.js");
76
76
  this.app = M(a, {
77
77
  sdk: this.sdk,
78
78
  handle: this.config.handle,
@@ -119,7 +119,7 @@ const Q = `@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-
119
119
  chatController: this.config.chatController
120
120
  }), this.widgetInstance = this.app.mount(t);
121
121
  } else if (e === "modal") {
122
- const { default: a } = await import("./AgentWidgetModal-DZLVuspg.js");
122
+ const { default: a } = await import("./AgentWidgetModal-Bx9XzVTw.js");
123
123
  this.app = M(a, {
124
124
  sdk: this.sdk,
125
125
  handle: this.config.handle,
@@ -376,4 +376,4 @@ export {
376
376
  bt as a,
377
377
  X as u
378
378
  };
379
- //# sourceMappingURL=index-CV0s99kQ.js.map
379
+ //# sourceMappingURL=index-CN6PhEbU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-CV0s99kQ.js","sources":["../widget/PLWidget.ts","../widget/composables/usePLWidget.ts","../widget/composables/useWidgetState.ts","../widget/ui/AgentWidgetPopup.vue"],"sourcesContent":["import type { App, ComponentPublicInstance } from 'vue'\nimport type { AgentConfig } from '@pagelines/core'\nimport type { AgentChatController } from '../agent/AgentController'\nimport { PageLinesSDK } from '../sdkClient'\nimport sdkCSS from '../agent/ui/styles.css?inline'\nimport { createApp } from 'vue'\nimport { createLogger } from '@pagelines/core'\n\nexport type WidgetMode = 'inline' | 'button' | 'popup' | 'modal'\nexport type ButtonIconPreset = 'phone' | 'calendar' | 'question' | 'message' | 'sparkles'\n\nexport interface WidgetConfig {\n el?: HTMLElement // Optional for modal/button modes (creates and appends to body for modal)\n mode: WidgetMode\n handle?: string\n agent?: AgentConfig\n context?: string\n firstMessage?: string\n buttonText?: string // Custom button text with template vars: {name}, {title}, {handle}, {orgName}\n buttonIcon?: ButtonIconPreset // Icon preset: phone | calendar | question | message | sparkles\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' // Popup mode only\n chatOnly?: boolean // Skip full agent interface, show chat directly (for embedded chatbots)\n chatController?: AgentChatController // Optional external chat controller\n apiBase?: string\n onClose?: () => void // Callback when widget is closed (modal/popup/button modes)\n}\n\nexport interface WidgetUpdate {\n agent?: AgentConfig\n context?: string\n firstMessage?: string\n buttonText?: string\n buttonIcon?: ButtonIconPreset\n}\n\ntype WidgetInstance = {\n toggle?: () => void\n open?: () => void\n close?: () => void\n update?: (config: WidgetUpdate) => void\n} & ComponentPublicInstance\n\nconst logger = createLogger('PLWidget')\n\nexport class PLWidget {\n private app: App | null = null\n private shadowRoot: ShadowRoot | null = null\n private widgetInstance: WidgetInstance | null = null\n private config: WidgetConfig\n private sdk: PageLinesSDK\n private container: HTMLElement | null = null\n private static modalInstances = new Map<string, PLWidget>()\n\n /**\n * Auto-collect page context from the current document.\n * Returns a concise summary string the agent can use to understand\n * where the visitor is on the site.\n */\n static collectPageContext(): string {\n if (typeof window === 'undefined' || typeof document === 'undefined')\n return ''\n\n const parts: string[] = []\n\n const url = window.location.href\n if (url)\n parts.push(`Page URL: ${url}`)\n\n const title = document.title\n if (title)\n parts.push(`Page title: ${title}`)\n\n const metaDesc = document.querySelector('meta[name=\"description\"]')?.getAttribute('content')\n if (metaDesc)\n parts.push(`Page description: ${metaDesc}`)\n\n const ogTitle = document.querySelector('meta[property=\"og:title\"]')?.getAttribute('content')\n if (ogTitle && ogTitle !== title)\n parts.push(`OG title: ${ogTitle}`)\n\n const referrer = document.referrer\n if (referrer)\n parts.push(`Referrer: ${referrer}`)\n\n const path = window.location.pathname\n if (path && path !== '/')\n parts.push(`Path: ${path}`)\n\n return parts.join('\\n')\n }\n\n constructor(config: WidgetConfig) {\n // Auto-collect page context and merge with any manual context\n const autoContext = PLWidget.collectPageContext()\n const manualContext = config.context || ''\n const mergedContext = [autoContext, manualContext].filter(Boolean).join('\\n\\n')\n\n this.config = {\n ...config,\n context: mergedContext || undefined,\n }\n\n // Validate required config\n if (!config.mode)\n throw new Error('PLWidget: mode is required')\n if (!config.handle && !config.agent)\n throw new Error('PLWidget: either handle or agent is required')\n\n // For non-modal/button modes, el is required\n if (config.mode !== 'modal' && config.mode !== 'button' && !config.el)\n throw new Error(`PLWidget: el (HTMLElement) is required for ${config.mode} mode`)\n\n // For modal mode, handle singleton pattern\n if (config.mode === 'modal') {\n const instanceKey = config.handle || config.agent?.agentId || 'default'\n const existing = PLWidget.modalInstances.get(instanceKey)\n if (existing) {\n logger.warn(`Destroying existing modal widget for: ${instanceKey}`)\n existing.destroy()\n }\n PLWidget.modalInstances.set(instanceKey, this)\n }\n\n // Create SDK instance (singleton)\n const isDev = typeof window !== 'undefined'\n ? window.location.hostname === 'localhost' || window.location.hostname.includes('127.0.0.1')\n : false\n\n this.sdk = PageLinesSDK.getInstance({\n isDev,\n ...(config.apiBase && { apiBase: config.apiBase }),\n })\n\n logger.info(`Initializing ${config.mode} mode for @${config.handle || config.agent?.handle} (isDev: ${isDev})`)\n\n this.init()\n }\n\n private async init() {\n // Button mode doesn't need shadow DOM - just set up click handler\n if (this.config.mode === 'button') {\n await this.mountMode(this.config.el!)\n return\n }\n\n // For modal mode, create container and append to body\n if (this.config.mode === 'modal') {\n this.container = document.createElement('div')\n this.container.id = `pagelines-modal-${this.config.handle || this.config.agent?.agentId || 'widget'}`\n // Position container to cover viewport for proper modal centering\n this.container.style.cssText = 'position: fixed; inset: 0; z-index: 9999;'\n document.body.appendChild(this.container)\n\n // Create shadow root in modal container\n this.shadowRoot = this.container.attachShadow({ mode: 'open' })\n }\n else {\n // For other modes, use provided element\n this.shadowRoot = this.config.el!.attachShadow({ mode: 'open' })\n }\n\n // Inject SDK CSS into shadow DOM\n const styleElement = document.createElement('style')\n styleElement.textContent = sdkCSS\n this.shadowRoot.appendChild(styleElement)\n\n // Create mount point\n const mountPoint = document.createElement('div')\n mountPoint.id = 'pagelines-widget-root'\n mountPoint.style.cssText = 'width: 100%; height: 100%;'\n this.shadowRoot.appendChild(mountPoint)\n\n // Import and mount mode-specific component\n await this.mountMode(mountPoint)\n }\n\n private async mountMode(mountPoint: HTMLElement) {\n const { mode } = this.config\n\n if (mode === 'inline') {\n const { default: AgentWidgetInline } = await import('./ui/AgentWidgetInline.vue')\n\n this.app = createApp(AgentWidgetInline, {\n sdk: this.sdk,\n handle: this.config.handle,\n agent: this.config.agent,\n context: this.config.context,\n firstMessage: this.config.firstMessage,\n buttonText: this.config.buttonText,\n buttonIcon: this.config.buttonIcon,\n chatOnly: this.config.chatOnly,\n })\n\n this.widgetInstance = this.app.mount(mountPoint) as WidgetInstance\n }\n else if (mode === 'button') {\n // Button mode - element is the button itself, no Vue component\n // Just set up click handler to open modal\n if (!this.config.el)\n throw new Error('PLWidget: el is required for button mode')\n\n const buttonEl = this.config.el\n buttonEl.style.cursor = 'pointer'\n\n const handleClick = () => {\n // Create modal widget on click\n new PLWidget({\n mode: 'modal',\n handle: this.config.handle,\n agent: this.config.agent,\n context: this.config.context,\n firstMessage: this.config.firstMessage,\n buttonText: this.config.buttonText,\n buttonIcon: this.config.buttonIcon,\n chatOnly: this.config.chatOnly,\n onClose: this.config.onClose,\n })\n }\n\n buttonEl.addEventListener('click', handleClick)\n\n // Store cleanup function\n this.destroy = () => {\n buttonEl.removeEventListener('click', handleClick)\n logger.info(`Button mode widget destroyed for handle: ${this.config.handle}`)\n }\n }\n else if (mode === 'popup') {\n const { default: AgentWidgetPopup } = await import('./ui/AgentWidgetPopup.vue')\n\n this.app = createApp(AgentWidgetPopup, {\n sdk: this.sdk,\n handle: this.config.handle,\n agent: this.config.agent,\n context: this.config.context,\n firstMessage: this.config.firstMessage,\n buttonText: this.config.buttonText,\n buttonIcon: this.config.buttonIcon,\n position: this.config.position || 'bottom-right',\n chatOnly: this.config.chatOnly,\n chatController: this.config.chatController,\n })\n\n this.widgetInstance = this.app.mount(mountPoint) as WidgetInstance\n }\n else if (mode === 'modal') {\n const { default: AgentWidgetModal } = await import('./ui/AgentWidgetModal.vue')\n\n this.app = createApp(AgentWidgetModal, {\n sdk: this.sdk,\n handle: this.config.handle,\n agent: this.config.agent,\n context: this.config.context,\n firstMessage: this.config.firstMessage,\n buttonText: this.config.buttonText,\n buttonIcon: this.config.buttonIcon,\n chatOnly: this.config.chatOnly,\n onClose: () => {\n // Call user's onClose callback if provided\n if (this.config.onClose) {\n this.config.onClose()\n }\n // Auto-destroy modal when closed\n this.destroy()\n },\n })\n\n this.widgetInstance = this.app.mount(mountPoint) as WidgetInstance\n }\n else {\n throw new Error(`PLWidget: unsupported mode \"${mode}\"`)\n }\n }\n\n /**\n * Update widget with new configuration without re-mounting\n */\n update(updates: WidgetUpdate) {\n if (this.widgetInstance?.update) {\n this.widgetInstance.update(updates)\n logger.info(`Widget updated: ${Object.keys(updates).join(', ')}`)\n }\n else {\n logger.warn('Widget instance does not support update()')\n }\n }\n\n /**\n * Toggle widget visibility (popup mode only)\n */\n toggle() {\n if (this.widgetInstance?.toggle) {\n this.widgetInstance.toggle()\n }\n else {\n logger.warn('Widget mode does not support toggle()')\n }\n }\n\n /**\n * Open widget (popup mode only)\n */\n open() {\n if (this.widgetInstance?.open) {\n this.widgetInstance.open()\n }\n else {\n logger.warn('Widget mode does not support open()')\n }\n }\n\n /**\n * Close widget (popup mode only)\n */\n close() {\n if (this.widgetInstance?.close) {\n this.widgetInstance.close()\n }\n else {\n logger.warn('Widget mode does not support close()')\n }\n }\n\n /**\n * Destroy widget and cleanup\n */\n destroy() {\n if (this.app) {\n this.app.unmount()\n this.app = null\n }\n\n if (this.shadowRoot) {\n this.shadowRoot.innerHTML = ''\n this.shadowRoot = null\n }\n\n // For modal mode, remove container from body and remove from singleton map\n if (this.config.mode === 'modal') {\n if (this.container) {\n this.container.remove()\n this.container = null\n }\n\n const instanceKey = this.config.handle || this.config.agent?.agentId || 'default'\n PLWidget.modalInstances.delete(instanceKey)\n }\n\n this.widgetInstance = null\n\n logger.info(`Widget destroyed for handle: ${this.config.handle || this.config.agent?.handle}`)\n }\n}\n","import type { MaybeRef } from 'vue'\nimport type { AgentConfig } from '@pagelines/core'\nimport type { WidgetConfig, WidgetUpdate } from '../PLWidget'\nimport { computed, onUnmounted, ref, unref, watch } from 'vue'\nimport { PLWidget } from '../PLWidget'\n\nexport interface UsePLWidgetConfig {\n mode: WidgetConfig['mode']\n handle?: MaybeRef<string | undefined>\n agent?: MaybeRef<AgentConfig | null | undefined>\n context?: MaybeRef<string | undefined>\n firstMessage?: MaybeRef<string | undefined>\n apiBase?: string\n onClose?: () => void\n}\n\n/**\n * Composable for managing PLWidget lifecycle with automatic initialization,\n * reactive updates, and cleanup.\n *\n * Benefits:\n * - Eliminates manual DOM timing coordination (watch + nextTick)\n * - Automatic cleanup on unmount\n * - Reactive prop updates via widget.update()\n * - Prevents double initialization\n * - Clear loading/error states\n *\n * @example\n * ```vue\n * <script setup>\n * const agentRef = ref<Agent | null>(null)\n * const { containerRef, loading, error } = usePLWidget({\n * mode: 'inline',\n * agent: agentRef,\n * context: 'welcome'\n * })\n * </script>\n *\n * <template>\n * <div ref=\"containerRef\" class=\"w-full h-full\" />\n * </template>\n * ```\n */\nexport function usePLWidget(config: UsePLWidgetConfig) {\n const containerRef = ref<HTMLElement | null>(null)\n const widget = ref<InstanceType<typeof PLWidget> | null>(null)\n const loading = ref(true)\n const error = ref<string | null>(null)\n\n // Track if widget has been initialized to prevent double-init\n const initialized = ref(false)\n\n // Computed values for reactive tracking\n const currentHandle = computed(() => unref(config.handle))\n const currentAgent = computed(() => unref(config.agent))\n const currentContext = computed(() => unref(config.context))\n const currentFirstMessage = computed(() => unref(config.firstMessage))\n\n // Check if we have required data for initialization\n const hasRequiredData = computed(() => {\n if (config.mode === 'modal') {\n // Modal doesn't need container\n return !!(currentHandle.value || currentAgent.value)\n }\n // Inline/popup need container + (handle or agent)\n return !!(containerRef.value && (currentHandle.value || currentAgent.value))\n })\n\n // Initialize widget when container and data are ready\n watch([containerRef, currentAgent, currentHandle], async () => {\n // Skip if already initialized or missing required data\n if (initialized.value || !hasRequiredData.value) {\n return\n }\n\n loading.value = true\n error.value = null\n\n try {\n // Wait for next tick to ensure DOM is fully rendered\n await new Promise(resolve => setTimeout(resolve, 0))\n\n const widgetConfig: WidgetConfig = {\n mode: config.mode,\n handle: currentHandle.value,\n agent: currentAgent.value || undefined,\n context: currentContext.value,\n firstMessage: currentFirstMessage.value,\n apiBase: config.apiBase,\n onClose: config.onClose,\n }\n\n // Add container element for non-modal modes\n if (config.mode !== 'modal') {\n widgetConfig.el = containerRef.value!\n }\n\n widget.value = new PLWidget(widgetConfig)\n initialized.value = true\n } catch (err) {\n error.value = err instanceof Error ? err.message : 'Failed to initialize widget'\n console.error('[usePLWidget] Initialization error:', err)\n } finally {\n loading.value = false\n }\n }, { immediate: true })\n\n // Watch for prop changes and update widget reactively\n watch([currentAgent, currentContext, currentFirstMessage], () => {\n if (!widget.value || !initialized.value) {\n return\n }\n\n const updates: WidgetUpdate = {}\n if (currentAgent.value !== undefined) {\n updates.agent = currentAgent.value || undefined\n }\n if (currentContext.value !== undefined) {\n updates.context = currentContext.value\n }\n if (currentFirstMessage.value !== undefined) {\n updates.firstMessage = currentFirstMessage.value\n }\n\n if (Object.keys(updates).length > 0) {\n widget.value.update(updates)\n }\n })\n\n // Cleanup on unmount\n onUnmounted(() => {\n if (widget.value) {\n widget.value.destroy()\n widget.value = null\n }\n initialized.value = false\n })\n\n return {\n containerRef,\n widget,\n loading,\n error,\n }\n}\n","import type { AgentConfig } from '../../agent/schema'\nimport type { ButtonIconPreset, WidgetUpdate } from '../PLWidget'\nimport { ref } from 'vue'\n\nexport function useWidgetState(props: {\n agent?: AgentConfig\n context?: string\n firstMessage?: string\n buttonText?: string\n buttonIcon?: ButtonIconPreset\n}) {\n const currentAgent = ref<AgentConfig | undefined>(props.agent)\n const currentContext = ref<string | undefined>(props.context)\n const currentFirstMessage = ref<string | undefined>(props.firstMessage)\n const currentButtonText = ref<string | undefined>(props.buttonText)\n const currentButtonIcon = ref<ButtonIconPreset | undefined>(props.buttonIcon)\n\n function update(updates: WidgetUpdate) {\n if (updates.agent !== undefined)\n currentAgent.value = updates.agent\n if (updates.context !== undefined)\n currentContext.value = updates.context\n if (updates.firstMessage !== undefined)\n currentFirstMessage.value = updates.firstMessage\n if (updates.buttonText !== undefined)\n currentButtonText.value = updates.buttonText\n if (updates.buttonIcon !== undefined)\n currentButtonIcon.value = updates.buttonIcon\n }\n\n return { currentAgent, currentContext, currentFirstMessage, currentButtonText, currentButtonIcon, update }\n}\n","<script setup lang=\"ts\">\nimport type { AgentChatController } from '../../agent/AgentController'\nimport type { PageLinesSDK } from '../../sdkClient'\nimport type { AgentConfig } from '../../agent/schema'\nimport type { Agent } from '../../agent/schema'\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { getAgentAvatarUrl } from '../../agent/utils'\nimport { AgentChatController as Controller } from '../../agent/AgentController'\nimport AgentWrap from '../../agent/ui/AgentWrap.vue'\nimport ElAgentChat from '../../agent/ui/ElAgentChat.vue'\nimport { useWidgetState } from '../composables/useWidgetState'\n\nconst props = defineProps<{\n sdk?: PageLinesSDK\n handle?: string\n agent?: AgentConfig\n context?: string\n firstMessage?: string\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n chatController?: AgentChatController\n}>()\n\nconst isOpen = ref(false)\nconst hasOpened = ref(false)\nconst internalController = shallowRef<AgentChatController>()\n\nconst { currentAgent, currentContext, currentFirstMessage, update } = useWidgetState(props)\n\nconst positionClasses = computed(() => {\n const map = {\n 'bottom-left': 'bottom-4 left-4 sm:bottom-6 sm:left-6',\n 'top-right': 'top-4 right-4 sm:top-6 sm:right-6',\n 'top-left': 'top-4 left-4 sm:top-6 sm:left-6',\n 'bottom-right': 'bottom-4 right-4 sm:bottom-6 sm:right-6',\n }\n return map[props.position || 'bottom-right']\n})\n\nconst transformOrigin = computed(() => {\n const map = {\n 'bottom-left': 'bottom left',\n 'top-right': 'top right',\n 'top-left': 'top left',\n 'bottom-right': 'bottom right',\n }\n return map[props.position || 'bottom-right']\n})\n\nfunction initController(agent: Agent, sdk: PageLinesSDK) {\n if (props.chatController || internalController.value) return\n\n internalController.value = new Controller({\n sdk,\n agent: agent.toConfig(),\n context: currentContext.value,\n firstMessage: currentFirstMessage.value,\n })\n}\n\n// Lazy connection: start conversation on first open\nwatch(isOpen, (open) => {\n if (open && !hasOpened.value) {\n hasOpened.value = true\n const ctrl = props.chatController || internalController.value\n if (ctrl) {\n void ctrl.startTextConversation()\n }\n }\n})\n\nfunction toggle() {\n isOpen.value = !isOpen.value\n}\n\nfunction open() {\n isOpen.value = true\n}\n\nfunction close() {\n isOpen.value = false\n}\n\ndefineExpose({ toggle, open, close, update })\n</script>\n\n<template>\n <AgentWrap\n v-slot=\"{ agent, sdk: resolvedSdk }\"\n :sdk=\"sdk\"\n :handle=\"handle\"\n :agent=\"currentAgent\"\n :context=\"currentContext\"\n :first-message=\"currentFirstMessage\"\n >\n <div\n v-if=\"agent\"\n :ref=\"() => initController(agent, resolvedSdk)\"\n class=\"fixed z-[999999] pointer-events-auto\"\n :class=\"positionClasses\"\n >\n <!-- Widget container: animates size/radius/shadow -->\n <div\n class=\"widget-container transform-gpu overflow-hidden\"\n :class=\"isOpen\n ? 'w-[min(400px,calc(100vw-2rem))] h-[min(600px,calc(100vh-4rem))] shadow-[0_24px_80px_-12px_rgba(0,0,0,0.2),0_8px_24px_-8px_rgba(0,0,0,0.08)]'\n : 'w-16 h-16 shadow-[0_8px_32px_-4px_rgba(0,0,0,0.15)] cursor-pointer'\"\n :style=\"{ 'border-radius': isOpen ? '16px' : '32px', 'transform-origin': transformOrigin }\"\n @click=\"!isOpen ? toggle() : undefined\"\n >\n <!-- Bubble (cross-fade: always in DOM) -->\n <div\n class=\"absolute inset-0 transition-opacity duration-200\"\n :class=\"isOpen ? 'opacity-0 pointer-events-none' : 'opacity-100'\"\n >\n <div class=\"relative h-full w-full rounded-full overflow-hidden\">\n <img\n :src=\"getAgentAvatarUrl(agent.toConfig())\"\n :alt=\"`${agent.name.value} agent`\"\n class=\"h-full w-full object-cover pointer-events-none\"\n width=\"64\"\n height=\"64\"\n />\n <div class=\"absolute inset-0 pointer-events-none bg-gradient-to-br from-transparent via-black/10 to-black/40 opacity-60\" />\n </div>\n </div>\n\n <!-- Panel (cross-fade: always in DOM) -->\n <div\n class=\"absolute inset-0 flex flex-col bg-white transition-opacity duration-250\"\n :class=\"isOpen ? 'opacity-100' : 'opacity-0 pointer-events-none'\"\n >\n <!-- Header -->\n <div class=\"flex items-center shrink-0 border-b border-theme-100 px-4 py-3\">\n <div class=\"flex items-center gap-3 flex-1 min-w-0\">\n <img\n :src=\"agent.avatarUrl.value\"\n :alt=\"agent.name.value\"\n class=\"size-8 rounded-full object-cover shrink-0\"\n />\n <div class=\"min-w-0\">\n <div class=\"text-sm font-medium text-theme-900 truncate\">{{ agent.displayName.value }}</div>\n <div class=\"text-[11px]\" :class=\"agent.desiredStatus.value === 'active' ? 'text-green-500' : 'text-theme-400'\">\n {{ agent.desiredStatus.value === 'active' ? 'Online' : 'Offline' }}\n </div>\n </div>\n </div>\n <button\n class=\"cursor-pointer flex items-center justify-center p-2 -mr-1 rounded-xl text-theme-400 hover:text-theme-600 hover:bg-theme-50 transition-colors\"\n @click.stop=\"close\"\n >\n <i class=\"size-5 i-tabler-x\" />\n </button>\n </div>\n\n <!-- Chat -->\n <div class=\"flex-1 overflow-hidden\">\n <ElAgentChat\n v-if=\"hasOpened\"\n :chat-controller=\"chatController || internalController\"\n :agent=\"agent\"\n variant=\"light\"\n scale=\"md\"\n setup-hint=\"\"\n empty-state-message=\"Send a message to get started\"\n />\n </div>\n\n <!-- Footer -->\n <div class=\"shrink-0 flex items-center justify-center border-t border-theme-100 py-1.5\">\n <a\n href=\"https://www.pagelines.com\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"text-[10px] text-theme-300 hover:text-theme-400 transition-colors\"\n >\n AI Agent&trade; by PageLines\n </a>\n </div>\n </div>\n </div>\n\n <!-- Online indicator (outside overflow-hidden so ping isn't clipped) -->\n <div\n v-if=\"agent.desiredStatus.value === 'active'\"\n class=\"absolute top-[5%] right-[5%] transition-opacity duration-200 pointer-events-none\"\n :class=\"isOpen ? 'opacity-0' : 'opacity-100'\"\n >\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 5s;\" />\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n </AgentWrap>\n</template>\n\n<style scoped>\n.widget-container {\n transition: width 0.4s cubic-bezier(0.32, 0.72, 0, 1),\n height 0.4s cubic-bezier(0.32, 0.72, 0, 1),\n border-radius 0.4s cubic-bezier(0.32, 0.72, 0, 1),\n box-shadow 0.4s cubic-bezier(0.32, 0.72, 0, 1);\n}\n</style>\n"],"names":["logger","createLogger","_PLWidget","config","__publicField","autoContext","manualContext","mergedContext","instanceKey","existing","isDev","PageLinesSDK","parts","url","title","metaDesc","ogTitle","referrer","path","styleElement","sdkCSS","mountPoint","mode","AgentWidgetInline","createApp","buttonEl","handleClick","__name","AgentWidgetPopup","AgentWidgetPopup$1","AgentWidgetModal","updates","PLWidget","usePLWidget","containerRef","ref","widget","loading","error","initialized","currentHandle","computed","unref","currentAgent","currentContext","currentFirstMessage","hasRequiredData","watch","resolve","widgetConfig","err","onUnmounted","useWidgetState","props","currentButtonText","currentButtonIcon","update","__props","isOpen","hasOpened","internalController","shallowRef","positionClasses","transformOrigin","initController","agent","sdk","Controller","open","ctrl","toggle","close","__expose","_createBlock","AgentWrap","_unref","resolvedSdk","_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_cache","$event","_hoisted_1","getAgentAvatarUrl","_hoisted_3","_hoisted_4","_hoisted_6","_hoisted_7","_toDisplayString","_hoisted_8","ElAgentChat"],"mappings":"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"}
1
+ {"version":3,"file":"index-CN6PhEbU.js","sources":["../widget/PLWidget.ts","../widget/composables/usePLWidget.ts","../widget/composables/useWidgetState.ts","../widget/ui/AgentWidgetPopup.vue"],"sourcesContent":["import type { App, ComponentPublicInstance } from 'vue'\nimport type { AgentConfig } from '@pagelines/core'\nimport type { AgentChatController } from '../agent/AgentController'\nimport { PageLinesSDK } from '../sdkClient'\nimport sdkCSS from '../agent/ui/styles.css?inline'\nimport { createApp } from 'vue'\nimport { createLogger } from '@pagelines/core'\n\nexport type WidgetMode = 'inline' | 'button' | 'popup' | 'modal'\nexport type ButtonIconPreset = 'phone' | 'calendar' | 'question' | 'message' | 'sparkles'\n\nexport interface WidgetConfig {\n el?: HTMLElement // Optional for modal/button modes (creates and appends to body for modal)\n mode: WidgetMode\n handle?: string\n agent?: AgentConfig\n context?: string\n firstMessage?: string\n buttonText?: string // Custom button text with template vars: {name}, {title}, {handle}, {orgName}\n buttonIcon?: ButtonIconPreset // Icon preset: phone | calendar | question | message | sparkles\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' // Popup mode only\n chatOnly?: boolean // Skip full agent interface, show chat directly (for embedded chatbots)\n chatController?: AgentChatController // Optional external chat controller\n apiBase?: string\n onClose?: () => void // Callback when widget is closed (modal/popup/button modes)\n}\n\nexport interface WidgetUpdate {\n agent?: AgentConfig\n context?: string\n firstMessage?: string\n buttonText?: string\n buttonIcon?: ButtonIconPreset\n}\n\ntype WidgetInstance = {\n toggle?: () => void\n open?: () => void\n close?: () => void\n update?: (config: WidgetUpdate) => void\n} & ComponentPublicInstance\n\nconst logger = createLogger('PLWidget')\n\nexport class PLWidget {\n private app: App | null = null\n private shadowRoot: ShadowRoot | null = null\n private widgetInstance: WidgetInstance | null = null\n private config: WidgetConfig\n private sdk: PageLinesSDK\n private container: HTMLElement | null = null\n private static modalInstances = new Map<string, PLWidget>()\n\n /**\n * Auto-collect page context from the current document.\n * Returns a concise summary string the agent can use to understand\n * where the visitor is on the site.\n */\n static collectPageContext(): string {\n if (typeof window === 'undefined' || typeof document === 'undefined')\n return ''\n\n const parts: string[] = []\n\n const url = window.location.href\n if (url)\n parts.push(`Page URL: ${url}`)\n\n const title = document.title\n if (title)\n parts.push(`Page title: ${title}`)\n\n const metaDesc = document.querySelector('meta[name=\"description\"]')?.getAttribute('content')\n if (metaDesc)\n parts.push(`Page description: ${metaDesc}`)\n\n const ogTitle = document.querySelector('meta[property=\"og:title\"]')?.getAttribute('content')\n if (ogTitle && ogTitle !== title)\n parts.push(`OG title: ${ogTitle}`)\n\n const referrer = document.referrer\n if (referrer)\n parts.push(`Referrer: ${referrer}`)\n\n const path = window.location.pathname\n if (path && path !== '/')\n parts.push(`Path: ${path}`)\n\n return parts.join('\\n')\n }\n\n constructor(config: WidgetConfig) {\n // Auto-collect page context and merge with any manual context\n const autoContext = PLWidget.collectPageContext()\n const manualContext = config.context || ''\n const mergedContext = [autoContext, manualContext].filter(Boolean).join('\\n\\n')\n\n this.config = {\n ...config,\n context: mergedContext || undefined,\n }\n\n // Validate required config\n if (!config.mode)\n throw new Error('PLWidget: mode is required')\n if (!config.handle && !config.agent)\n throw new Error('PLWidget: either handle or agent is required')\n\n // For non-modal/button modes, el is required\n if (config.mode !== 'modal' && config.mode !== 'button' && !config.el)\n throw new Error(`PLWidget: el (HTMLElement) is required for ${config.mode} mode`)\n\n // For modal mode, handle singleton pattern\n if (config.mode === 'modal') {\n const instanceKey = config.handle || config.agent?.agentId || 'default'\n const existing = PLWidget.modalInstances.get(instanceKey)\n if (existing) {\n logger.warn(`Destroying existing modal widget for: ${instanceKey}`)\n existing.destroy()\n }\n PLWidget.modalInstances.set(instanceKey, this)\n }\n\n // Create SDK instance (singleton)\n const isDev = typeof window !== 'undefined'\n ? window.location.hostname === 'localhost' || window.location.hostname.includes('127.0.0.1')\n : false\n\n this.sdk = PageLinesSDK.getInstance({\n isDev,\n ...(config.apiBase && { apiBase: config.apiBase }),\n })\n\n logger.info(`Initializing ${config.mode} mode for @${config.handle || config.agent?.handle} (isDev: ${isDev})`)\n\n this.init()\n }\n\n private async init() {\n // Button mode doesn't need shadow DOM - just set up click handler\n if (this.config.mode === 'button') {\n await this.mountMode(this.config.el!)\n return\n }\n\n // For modal mode, create container and append to body\n if (this.config.mode === 'modal') {\n this.container = document.createElement('div')\n this.container.id = `pagelines-modal-${this.config.handle || this.config.agent?.agentId || 'widget'}`\n // Position container to cover viewport for proper modal centering\n this.container.style.cssText = 'position: fixed; inset: 0; z-index: 9999;'\n document.body.appendChild(this.container)\n\n // Create shadow root in modal container\n this.shadowRoot = this.container.attachShadow({ mode: 'open' })\n }\n else {\n // For other modes, use provided element\n this.shadowRoot = this.config.el!.attachShadow({ mode: 'open' })\n }\n\n // Inject SDK CSS into shadow DOM\n const styleElement = document.createElement('style')\n styleElement.textContent = sdkCSS\n this.shadowRoot.appendChild(styleElement)\n\n // Create mount point\n const mountPoint = document.createElement('div')\n mountPoint.id = 'pagelines-widget-root'\n mountPoint.style.cssText = 'width: 100%; height: 100%;'\n this.shadowRoot.appendChild(mountPoint)\n\n // Import and mount mode-specific component\n await this.mountMode(mountPoint)\n }\n\n private async mountMode(mountPoint: HTMLElement) {\n const { mode } = this.config\n\n if (mode === 'inline') {\n const { default: AgentWidgetInline } = await import('./ui/AgentWidgetInline.vue')\n\n this.app = createApp(AgentWidgetInline, {\n sdk: this.sdk,\n handle: this.config.handle,\n agent: this.config.agent,\n context: this.config.context,\n firstMessage: this.config.firstMessage,\n buttonText: this.config.buttonText,\n buttonIcon: this.config.buttonIcon,\n chatOnly: this.config.chatOnly,\n })\n\n this.widgetInstance = this.app.mount(mountPoint) as WidgetInstance\n }\n else if (mode === 'button') {\n // Button mode - element is the button itself, no Vue component\n // Just set up click handler to open modal\n if (!this.config.el)\n throw new Error('PLWidget: el is required for button mode')\n\n const buttonEl = this.config.el\n buttonEl.style.cursor = 'pointer'\n\n const handleClick = () => {\n // Create modal widget on click\n new PLWidget({\n mode: 'modal',\n handle: this.config.handle,\n agent: this.config.agent,\n context: this.config.context,\n firstMessage: this.config.firstMessage,\n buttonText: this.config.buttonText,\n buttonIcon: this.config.buttonIcon,\n chatOnly: this.config.chatOnly,\n onClose: this.config.onClose,\n })\n }\n\n buttonEl.addEventListener('click', handleClick)\n\n // Store cleanup function\n this.destroy = () => {\n buttonEl.removeEventListener('click', handleClick)\n logger.info(`Button mode widget destroyed for handle: ${this.config.handle}`)\n }\n }\n else if (mode === 'popup') {\n const { default: AgentWidgetPopup } = await import('./ui/AgentWidgetPopup.vue')\n\n this.app = createApp(AgentWidgetPopup, {\n sdk: this.sdk,\n handle: this.config.handle,\n agent: this.config.agent,\n context: this.config.context,\n firstMessage: this.config.firstMessage,\n buttonText: this.config.buttonText,\n buttonIcon: this.config.buttonIcon,\n position: this.config.position || 'bottom-right',\n chatOnly: this.config.chatOnly,\n chatController: this.config.chatController,\n })\n\n this.widgetInstance = this.app.mount(mountPoint) as WidgetInstance\n }\n else if (mode === 'modal') {\n const { default: AgentWidgetModal } = await import('./ui/AgentWidgetModal.vue')\n\n this.app = createApp(AgentWidgetModal, {\n sdk: this.sdk,\n handle: this.config.handle,\n agent: this.config.agent,\n context: this.config.context,\n firstMessage: this.config.firstMessage,\n buttonText: this.config.buttonText,\n buttonIcon: this.config.buttonIcon,\n chatOnly: this.config.chatOnly,\n onClose: () => {\n // Call user's onClose callback if provided\n if (this.config.onClose) {\n this.config.onClose()\n }\n // Auto-destroy modal when closed\n this.destroy()\n },\n })\n\n this.widgetInstance = this.app.mount(mountPoint) as WidgetInstance\n }\n else {\n throw new Error(`PLWidget: unsupported mode \"${mode}\"`)\n }\n }\n\n /**\n * Update widget with new configuration without re-mounting\n */\n update(updates: WidgetUpdate) {\n if (this.widgetInstance?.update) {\n this.widgetInstance.update(updates)\n logger.info(`Widget updated: ${Object.keys(updates).join(', ')}`)\n }\n else {\n logger.warn('Widget instance does not support update()')\n }\n }\n\n /**\n * Toggle widget visibility (popup mode only)\n */\n toggle() {\n if (this.widgetInstance?.toggle) {\n this.widgetInstance.toggle()\n }\n else {\n logger.warn('Widget mode does not support toggle()')\n }\n }\n\n /**\n * Open widget (popup mode only)\n */\n open() {\n if (this.widgetInstance?.open) {\n this.widgetInstance.open()\n }\n else {\n logger.warn('Widget mode does not support open()')\n }\n }\n\n /**\n * Close widget (popup mode only)\n */\n close() {\n if (this.widgetInstance?.close) {\n this.widgetInstance.close()\n }\n else {\n logger.warn('Widget mode does not support close()')\n }\n }\n\n /**\n * Destroy widget and cleanup\n */\n destroy() {\n if (this.app) {\n this.app.unmount()\n this.app = null\n }\n\n if (this.shadowRoot) {\n this.shadowRoot.innerHTML = ''\n this.shadowRoot = null\n }\n\n // For modal mode, remove container from body and remove from singleton map\n if (this.config.mode === 'modal') {\n if (this.container) {\n this.container.remove()\n this.container = null\n }\n\n const instanceKey = this.config.handle || this.config.agent?.agentId || 'default'\n PLWidget.modalInstances.delete(instanceKey)\n }\n\n this.widgetInstance = null\n\n logger.info(`Widget destroyed for handle: ${this.config.handle || this.config.agent?.handle}`)\n }\n}\n","import type { MaybeRef } from 'vue'\nimport type { AgentConfig } from '@pagelines/core'\nimport type { WidgetConfig, WidgetUpdate } from '../PLWidget'\nimport { computed, onUnmounted, ref, unref, watch } from 'vue'\nimport { PLWidget } from '../PLWidget'\n\nexport interface UsePLWidgetConfig {\n mode: WidgetConfig['mode']\n handle?: MaybeRef<string | undefined>\n agent?: MaybeRef<AgentConfig | null | undefined>\n context?: MaybeRef<string | undefined>\n firstMessage?: MaybeRef<string | undefined>\n apiBase?: string\n onClose?: () => void\n}\n\n/**\n * Composable for managing PLWidget lifecycle with automatic initialization,\n * reactive updates, and cleanup.\n *\n * Benefits:\n * - Eliminates manual DOM timing coordination (watch + nextTick)\n * - Automatic cleanup on unmount\n * - Reactive prop updates via widget.update()\n * - Prevents double initialization\n * - Clear loading/error states\n *\n * @example\n * ```vue\n * <script setup>\n * const agentRef = ref<Agent | null>(null)\n * const { containerRef, loading, error } = usePLWidget({\n * mode: 'inline',\n * agent: agentRef,\n * context: 'welcome'\n * })\n * </script>\n *\n * <template>\n * <div ref=\"containerRef\" class=\"w-full h-full\" />\n * </template>\n * ```\n */\nexport function usePLWidget(config: UsePLWidgetConfig) {\n const containerRef = ref<HTMLElement | null>(null)\n const widget = ref<InstanceType<typeof PLWidget> | null>(null)\n const loading = ref(true)\n const error = ref<string | null>(null)\n\n // Track if widget has been initialized to prevent double-init\n const initialized = ref(false)\n\n // Computed values for reactive tracking\n const currentHandle = computed(() => unref(config.handle))\n const currentAgent = computed(() => unref(config.agent))\n const currentContext = computed(() => unref(config.context))\n const currentFirstMessage = computed(() => unref(config.firstMessage))\n\n // Check if we have required data for initialization\n const hasRequiredData = computed(() => {\n if (config.mode === 'modal') {\n // Modal doesn't need container\n return !!(currentHandle.value || currentAgent.value)\n }\n // Inline/popup need container + (handle or agent)\n return !!(containerRef.value && (currentHandle.value || currentAgent.value))\n })\n\n // Initialize widget when container and data are ready\n watch([containerRef, currentAgent, currentHandle], async () => {\n // Skip if already initialized or missing required data\n if (initialized.value || !hasRequiredData.value) {\n return\n }\n\n loading.value = true\n error.value = null\n\n try {\n // Wait for next tick to ensure DOM is fully rendered\n await new Promise(resolve => setTimeout(resolve, 0))\n\n const widgetConfig: WidgetConfig = {\n mode: config.mode,\n handle: currentHandle.value,\n agent: currentAgent.value || undefined,\n context: currentContext.value,\n firstMessage: currentFirstMessage.value,\n apiBase: config.apiBase,\n onClose: config.onClose,\n }\n\n // Add container element for non-modal modes\n if (config.mode !== 'modal') {\n widgetConfig.el = containerRef.value!\n }\n\n widget.value = new PLWidget(widgetConfig)\n initialized.value = true\n } catch (err) {\n error.value = err instanceof Error ? err.message : 'Failed to initialize widget'\n console.error('[usePLWidget] Initialization error:', err)\n } finally {\n loading.value = false\n }\n }, { immediate: true })\n\n // Watch for prop changes and update widget reactively\n watch([currentAgent, currentContext, currentFirstMessage], () => {\n if (!widget.value || !initialized.value) {\n return\n }\n\n const updates: WidgetUpdate = {}\n if (currentAgent.value !== undefined) {\n updates.agent = currentAgent.value || undefined\n }\n if (currentContext.value !== undefined) {\n updates.context = currentContext.value\n }\n if (currentFirstMessage.value !== undefined) {\n updates.firstMessage = currentFirstMessage.value\n }\n\n if (Object.keys(updates).length > 0) {\n widget.value.update(updates)\n }\n })\n\n // Cleanup on unmount\n onUnmounted(() => {\n if (widget.value) {\n widget.value.destroy()\n widget.value = null\n }\n initialized.value = false\n })\n\n return {\n containerRef,\n widget,\n loading,\n error,\n }\n}\n","import type { AgentConfig } from '../../agent/schema'\nimport type { ButtonIconPreset, WidgetUpdate } from '../PLWidget'\nimport { ref } from 'vue'\n\nexport function useWidgetState(props: {\n agent?: AgentConfig\n context?: string\n firstMessage?: string\n buttonText?: string\n buttonIcon?: ButtonIconPreset\n}) {\n const currentAgent = ref<AgentConfig | undefined>(props.agent)\n const currentContext = ref<string | undefined>(props.context)\n const currentFirstMessage = ref<string | undefined>(props.firstMessage)\n const currentButtonText = ref<string | undefined>(props.buttonText)\n const currentButtonIcon = ref<ButtonIconPreset | undefined>(props.buttonIcon)\n\n function update(updates: WidgetUpdate) {\n if (updates.agent !== undefined)\n currentAgent.value = updates.agent\n if (updates.context !== undefined)\n currentContext.value = updates.context\n if (updates.firstMessage !== undefined)\n currentFirstMessage.value = updates.firstMessage\n if (updates.buttonText !== undefined)\n currentButtonText.value = updates.buttonText\n if (updates.buttonIcon !== undefined)\n currentButtonIcon.value = updates.buttonIcon\n }\n\n return { currentAgent, currentContext, currentFirstMessage, currentButtonText, currentButtonIcon, update }\n}\n","<script setup lang=\"ts\">\nimport type { AgentChatController } from '../../agent/AgentController'\nimport type { PageLinesSDK } from '../../sdkClient'\nimport type { AgentConfig } from '../../agent/schema'\nimport type { Agent } from '../../agent/schema'\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { getAgentAvatarUrl } from '../../agent/utils'\nimport { AgentChatController as Controller } from '../../agent/AgentController'\nimport AgentWrap from '../../agent/ui/AgentWrap.vue'\nimport ElAgentChat from '../../agent/ui/ElAgentChat.vue'\nimport { useWidgetState } from '../composables/useWidgetState'\n\nconst props = defineProps<{\n sdk?: PageLinesSDK\n handle?: string\n agent?: AgentConfig\n context?: string\n firstMessage?: string\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n chatController?: AgentChatController\n}>()\n\nconst isOpen = ref(false)\nconst hasOpened = ref(false)\nconst internalController = shallowRef<AgentChatController>()\n\nconst { currentAgent, currentContext, currentFirstMessage, update } = useWidgetState(props)\n\nconst positionClasses = computed(() => {\n const map = {\n 'bottom-left': 'bottom-4 left-4 sm:bottom-6 sm:left-6',\n 'top-right': 'top-4 right-4 sm:top-6 sm:right-6',\n 'top-left': 'top-4 left-4 sm:top-6 sm:left-6',\n 'bottom-right': 'bottom-4 right-4 sm:bottom-6 sm:right-6',\n }\n return map[props.position || 'bottom-right']\n})\n\nconst transformOrigin = computed(() => {\n const map = {\n 'bottom-left': 'bottom left',\n 'top-right': 'top right',\n 'top-left': 'top left',\n 'bottom-right': 'bottom right',\n }\n return map[props.position || 'bottom-right']\n})\n\nfunction initController(agent: Agent, sdk: PageLinesSDK) {\n if (props.chatController || internalController.value) return\n\n internalController.value = new Controller({\n sdk,\n agent: agent.toConfig(),\n context: currentContext.value,\n firstMessage: currentFirstMessage.value,\n })\n}\n\n// Lazy connection: start conversation on first open\nwatch(isOpen, (open) => {\n if (open && !hasOpened.value) {\n hasOpened.value = true\n const ctrl = props.chatController || internalController.value\n if (ctrl) {\n void ctrl.startTextConversation()\n }\n }\n})\n\nfunction toggle() {\n isOpen.value = !isOpen.value\n}\n\nfunction open() {\n isOpen.value = true\n}\n\nfunction close() {\n isOpen.value = false\n}\n\ndefineExpose({ toggle, open, close, update })\n</script>\n\n<template>\n <AgentWrap\n v-slot=\"{ agent, sdk: resolvedSdk }\"\n :sdk=\"sdk\"\n :handle=\"handle\"\n :agent=\"currentAgent\"\n :context=\"currentContext\"\n :first-message=\"currentFirstMessage\"\n >\n <div\n v-if=\"agent\"\n :ref=\"() => initController(agent, resolvedSdk)\"\n class=\"fixed z-[999999] pointer-events-auto\"\n :class=\"positionClasses\"\n >\n <!-- Widget container: animates size/radius/shadow -->\n <div\n class=\"widget-container transform-gpu overflow-hidden\"\n :class=\"isOpen\n ? 'w-[min(400px,calc(100vw-2rem))] h-[min(600px,calc(100vh-4rem))] shadow-[0_24px_80px_-12px_rgba(0,0,0,0.2),0_8px_24px_-8px_rgba(0,0,0,0.08)]'\n : 'w-16 h-16 shadow-[0_8px_32px_-4px_rgba(0,0,0,0.15)] cursor-pointer'\"\n :style=\"{ 'border-radius': isOpen ? '16px' : '32px', 'transform-origin': transformOrigin }\"\n @click=\"!isOpen ? toggle() : undefined\"\n >\n <!-- Bubble (cross-fade: always in DOM) -->\n <div\n class=\"absolute inset-0 transition-opacity duration-200\"\n :class=\"isOpen ? 'opacity-0 pointer-events-none' : 'opacity-100'\"\n >\n <div class=\"relative h-full w-full rounded-full overflow-hidden\">\n <img\n :src=\"getAgentAvatarUrl(agent.toConfig())\"\n :alt=\"`${agent.name.value} agent`\"\n class=\"h-full w-full object-cover pointer-events-none\"\n width=\"64\"\n height=\"64\"\n />\n <div class=\"absolute inset-0 pointer-events-none bg-gradient-to-br from-transparent via-black/10 to-black/40 opacity-60\" />\n </div>\n </div>\n\n <!-- Panel (cross-fade: always in DOM) -->\n <div\n class=\"absolute inset-0 flex flex-col bg-white transition-opacity duration-250\"\n :class=\"isOpen ? 'opacity-100' : 'opacity-0 pointer-events-none'\"\n >\n <!-- Header -->\n <div class=\"flex items-center shrink-0 border-b border-theme-100 px-4 py-3\">\n <div class=\"flex items-center gap-3 flex-1 min-w-0\">\n <img\n :src=\"agent.avatarUrl.value\"\n :alt=\"agent.name.value\"\n class=\"size-8 rounded-full object-cover shrink-0\"\n />\n <div class=\"min-w-0\">\n <div class=\"text-sm font-medium text-theme-900 truncate\">{{ agent.displayName.value }}</div>\n <div class=\"text-[11px]\" :class=\"agent.desiredStatus.value === 'active' ? 'text-green-500' : 'text-theme-400'\">\n {{ agent.desiredStatus.value === 'active' ? 'Online' : 'Offline' }}\n </div>\n </div>\n </div>\n <button\n class=\"cursor-pointer flex items-center justify-center p-2 -mr-1 rounded-xl text-theme-400 hover:text-theme-600 hover:bg-theme-50 transition-colors\"\n @click.stop=\"close\"\n >\n <i class=\"size-5 i-tabler-x\" />\n </button>\n </div>\n\n <!-- Chat -->\n <div class=\"flex-1 overflow-hidden\">\n <ElAgentChat\n v-if=\"hasOpened\"\n :chat-controller=\"chatController || internalController\"\n :agent=\"agent\"\n variant=\"light\"\n scale=\"md\"\n setup-hint=\"\"\n empty-state-message=\"Send a message to get started\"\n />\n </div>\n\n <!-- Footer -->\n <div class=\"shrink-0 flex items-center justify-center border-t border-theme-100 py-1.5\">\n <a\n href=\"https://www.pagelines.com\"\n target=\"_blank\"\n rel=\"noopener\"\n class=\"text-[10px] text-theme-300 hover:text-theme-400 transition-colors\"\n >\n AI Agent&trade; by PageLines\n </a>\n </div>\n </div>\n </div>\n\n <!-- Online indicator (outside overflow-hidden so ping isn't clipped) -->\n <div\n v-if=\"agent.desiredStatus.value === 'active'\"\n class=\"absolute top-[5%] right-[5%] transition-opacity duration-200 pointer-events-none\"\n :class=\"isOpen ? 'opacity-0' : 'opacity-100'\"\n >\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white absolute animate-ping\" style=\"animation-duration: 5s;\" />\n <div class=\"size-3 bg-green-500 rounded-full ring-2 ring-white\" />\n </div>\n </div>\n </AgentWrap>\n</template>\n\n<style scoped>\n.widget-container {\n transition: width 0.4s cubic-bezier(0.32, 0.72, 0, 1),\n height 0.4s cubic-bezier(0.32, 0.72, 0, 1),\n border-radius 0.4s cubic-bezier(0.32, 0.72, 0, 1),\n box-shadow 0.4s cubic-bezier(0.32, 0.72, 0, 1);\n}\n</style>\n"],"names":["logger","createLogger","_PLWidget","config","__publicField","autoContext","manualContext","mergedContext","instanceKey","existing","isDev","PageLinesSDK","parts","url","title","metaDesc","ogTitle","referrer","path","styleElement","sdkCSS","mountPoint","mode","AgentWidgetInline","createApp","buttonEl","handleClick","__name","AgentWidgetPopup","AgentWidgetPopup$1","AgentWidgetModal","updates","PLWidget","usePLWidget","containerRef","ref","widget","loading","error","initialized","currentHandle","computed","unref","currentAgent","currentContext","currentFirstMessage","hasRequiredData","watch","resolve","widgetConfig","err","onUnmounted","useWidgetState","props","currentButtonText","currentButtonIcon","update","__props","isOpen","hasOpened","internalController","shallowRef","positionClasses","transformOrigin","initController","agent","sdk","Controller","open","ctrl","toggle","close","__expose","_createBlock","AgentWrap","_unref","resolvedSdk","_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_cache","$event","_hoisted_1","getAgentAvatarUrl","_hoisted_3","_hoisted_4","_hoisted_6","_hoisted_7","_toDisplayString","_hoisted_8","ElAgentChat"],"mappings":"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"}
package/dist/widget.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as a, P as g, a as s } from "./index-CV0s99kQ.js";
1
+ import { A as a, P as g, a as s } from "./index-CN6PhEbU.js";
2
2
  export {
3
3
  a as AgentWidgetPopup,
4
4
  g as PLWidget,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagelines/sdk",
3
- "version": "1.0.356",
3
+ "version": "1.0.358",
4
4
  "description": "PageLines SDK for agent management, auth, and billing",
5
5
  "type": "module",
6
6
  "main": "./dist/sdk.js",