@cuadra-ai/uikit 0.1.17 → 0.1.18
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.
|
@@ -36,5 +36,5 @@ ${n.system}`:r.system=n.system),n.tools)for(const[s,a]of Object.entries(n.tools)
|
|
|
36
36
|
@keyframes rotate {
|
|
37
37
|
100% { transform: rotate(1turn); }
|
|
38
38
|
}
|
|
39
|
-
`,Bi=({children:e,className:t="",paddingX:r="px-0",paddingY:n="py-0",borderSizePx:i=4,style:s,contentStyle:a,rotating:o=!1})=>p.jsxs(p.Fragment,{children:[p.jsx("style",{children:Sx}),p.jsxs("div",{className:`cuadra-relative cuadra-bg-background md:cuadra-rounded-xl cuadra-overflow-hidden ${t}`,style:m({padding:i},s),children:[p.jsx("div",{className:"cuadra-absolute md:cuadra-rounded-xl",style:o?{left:"-100%",top:"-100%",width:"300%",height:"300%",backgroundImage:"conic-gradient(#F4633A, #FF7A4D, #FF8C5C, #F4633A, #FF7A4D, #FF8C5C)",backgroundRepeat:"no-repeat",backgroundSize:"cover",backgroundPosition:"center",animation:"rotate 4s linear infinite"}:{backgroundImage:"linear-gradient(to right, #F4633A, #FF7A4D, #FF8C5C, #F4633A)",backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",top:"0",left:"0",width:"100%",height:"100%"}}),p.jsx("div",{className:`cuadra-relative cuadra-bg-background cuadra-h-full cuadra-z-10 cuadra-flex cuadra-flex-col cuadra-overflow-hidden ${r} ${n}`,style:m({borderRadius:"calc(0.75rem - 4px)"},a),children:e})]})]}),kx=({className:e="",theme:t="system"})=>{const r=()=>{if(typeof window=="undefined")return"light";if(t==="system"){const a=localStorage.getItem("theme");return a||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")}return t},[n,i]=y.useState(r);y.useEffect(()=>{t!=="system"&&i(t)},[t]),y.useEffect(()=>{const a=document.documentElement;a.classList.remove("light","dark"),a.classList.add(n),t==="system"&&localStorage.setItem("theme",n)},[n,t]);const s=()=>{t==="system"&&i(a=>a==="light"?"dark":"light")};return p.jsx("button",{type:"button","aria-label":"Toggle theme",onClick:s,disabled:t!=="system",className:`cuadra-flex cuadra-items-center cuadra-justify-center cuadra-h-8 cuadra-w-8 cuadra-rounded-full cuadra-bg-muted hover:cuadra-bg-muted/80 cuadra-transition-colors disabled:cuadra-opacity-50 disabled:cuadra-cursor-not-allowed ${e}`,children:p.jsx(mu,{className:`cuadra-h-4 cuadra-w-4 cuadra-transition-colors ${n==="dark"?"cuadra-text-primary":"cuadra-text-gray-400"}`})})},Wl=({currentModel:e,models:t,modelsLoading:r,modelsError:n,onModelChange:i,hideModelSelector:s=!1,showThemeToggle:a=!0,theme:o="system",onMobileMenuClick:l,showMobileMenuButton:u=!1})=>{const[d,c]=y.useState(!1),f=y.useRef(null);y.useEffect(()=>{const g=S=>{f.current&&!f.current.contains(S.target)&&c(!1)};return d&&document.addEventListener("mousedown",g),()=>{document.removeEventListener("mousedown",g)}},[d]);const h=t.find(g=>g.id===e);return p.jsxs("div",{className:"cuadra-h-16 cuadra-px-4 cuadra-border-b cuadra-border-border cuadra-flex cuadra-items-center cuadra-justify-between cuadra-bg-background",children:[p.jsxs("div",{className:"cuadra-flex cuadra-items-center cuadra-gap-2",children:[u&&p.jsx("button",{type:"button",onClick:l,className:"cuadra-flex cuadra-items-center cuadra-justify-center cuadra-h-8 cuadra-w-8 cuadra-rounded-full cuadra-bg-muted hover:cuadra-bg-muted/80 cuadra-transition-colors disabled:cuadra-opacity-50 disabled:cuadra-cursor-not-allowed md:cuadra-hidden","aria-label":"Toggle thread list",children:p.jsx(bu,{className:"cuadra-h-4 cuadra-w-4 cuadra-text-foreground"})}),a&&p.jsx("div",{className:"cuadra-flex cuadra-items-center cuadra-gap-2",children:p.jsx(kx,{theme:o})})]}),p.jsxs("div",{className:"cuadra-flex cuadra-items-center cuadra-gap-2 md:cuadra-ml-0 cuadra-ml-auto",children:[!s&&p.jsx("label",{className:"cuadra-hidden md:cuadra-inline cuadra-text-sm cuadra-text-muted-foreground cuadra-font-brand",children:"Model"}),s?null:r?p.jsx("div",{className:"cuadra-w-48 cuadra-rounded-md cuadra-border cuadra-border-border cuadra-px-3 cuadra-py-2 cuadra-bg-muted",children:p.jsx("span",{className:"cuadra-text-muted-foreground cuadra-text-sm cuadra-font-brand",children:"Loading..."})}):n?p.jsx("div",{className:"cuadra-w-48 cuadra-rounded-md cuadra-border cuadra-border-destructive cuadra-px-3 cuadra-py-2 cuadra-bg-destructive/10",children:p.jsx("span",{className:"cuadra-text-destructive cuadra-text-sm cuadra-font-brand",children:"Failed to load models"})}):p.jsxs("div",{ref:f,className:"cuadra-relative cuadra-w-48",children:[p.jsxs("button",{type:"button",onClick:()=>c(!d),disabled:r||t.length===0||!!n,className:"cuadra-flex cuadra-h-10 cuadra-w-full cuadra-items-center cuadra-justify-between cuadra-rounded-md cuadra-border cuadra-border-input cuadra-bg-background cuadra-px-3 cuadra-py-2 cuadra-text-sm placeholder:cuadra-text-muted-foreground focus:cuadra-outline-none disabled:cuadra-cursor-not-allowed disabled:cuadra-opacity-50 cuadra-font-brand",children:[p.jsx("span",{className:h?"cuadra-text-foreground":"cuadra-text-muted-foreground",children:(h==null?void 0:h.name)||"Select model"}),p.jsx(pu,{className:"cuadra-ml-2 cuadra-h-4 cuadra-w-4 cuadra-opacity-50"})]}),d&&t.length>0&&p.jsx("div",{className:"cuadra-absolute cuadra-z-50 cuadra-mt-1 cuadra-w-full cuadra-min-w-[8rem] cuadra-overflow-hidden cuadra-rounded-md glass-popover cuadra-text-popover-foreground cuadra-animate-in fade-in-80 cuadra-border cuadra-border-border cuadra-bg-popover cuadra-shadow-md",children:p.jsx("div",{className:"cuadra-p-1",children:t.map(g=>p.jsxs("button",{type:"button",onClick:()=>{i(g.id),c(!1)},className:`cuadra-relative cuadra-flex cuadra-w-full cuadra-cursor-pointer cuadra-select-none cuadra-items-center cuadra-rounded-sm cuadra-py-1.5 cuadra-pl-8 cuadra-pr-2 cuadra-text-sm cuadra-outline-none focus:cuadra-bg-secondary focus:cuadra-text-secondary-foreground font-brand cuadra-transition-colors ${e===g.id?"cuadra-bg-secondary cuadra-text-secondary-foreground":"hover:cuadra-bg-secondary/50"}`,children:[e===g.id&&p.jsx("span",{className:"cuadra-absolute cuadra-left-2 cuadra-flex cuadra-h-3.5 cuadra-w-3.5 cuadra-items-center cuadra-justify-center",children:p.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 16 16",children:p.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M6.47 10.03a.75.75 0 0 1-1.06-1.06l2-2a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06L8 9.06l-1.53 1.53Z",clipRule:"evenodd"})})}),p.jsx("span",{children:g.name})]},g.id))})})]})]})]})},_x=y.createContext(void 0),zi=({children:e,value:t})=>p.jsx(_x.Provider,{value:t,children:e});function Tx(){y.useEffect(()=>{if(document.querySelector("style[data-cuadra-uikit]"))return;const t=document.createElement("div");t.className="cuadra-flex",document.body.appendChild(t);const r=window.getComputedStyle(t).display==="flex";if(document.body.removeChild(t),r)return;const n=document.createElement("link");n.setAttribute("data-cuadra-uikit","true"),n.rel="stylesheet",n.type="text/css";const i=["/node_modules/@cuadra-ai/uikit/dist/uikit.css",new URL("../dist/uikit.css",typeof document=="undefined"&&typeof location=="undefined"?require("url").pathToFileURL(__filename).href:typeof document=="undefined"?location.href:Se&&Se.tagName.toUpperCase()==="SCRIPT"&&Se.src||new URL("cuadra-uikit.umd.js",document.baseURI).href).href];let s=!1;for(const a of i)if(n.href=a,n.onload=()=>{s=!0},n.onerror=()=>{},document.head.appendChild(n),s)break},[])}const Jl=({config:e})=>{Tx();const{baseUrl:t,proxyUrl:r,sessionToken:n,mode:i="multiChat",modelMode:s="fixed",modelId:a,onModelChange:o,ephemeral:l=!1,systemPrompt:u,initialThreadId:d,welcomeTitle:c,welcomeSubtitle:f,extraTopPadding:h,suggestions:g,inputPlaceholder:S,showThemeToggle:w=!0,theme:b="system",onError:C,onChatCreated:_,onUserMessage:F,onThreadIdUpdate:B}=e,[I,z]=y.useState(!1),j=r||t||"",$=!!r,k=y.useMemo(()=>new ja(j,n||void 0,$),[j,n,$]),[N,M]=y.useState(null),[V,R]=y.useState(!1),[D,Q]=y.useState(null),[se,ge]=y.useState(!1);y.useEffect(()=>{i==="multiChat"&&ge(!0)},[i]);const fe=y.useCallback(()=>P(null,null,function*(){if(s==="selector"){R(!0),Q(null);try{const Z=yield k.listModels();M(Z)}catch(Z){Q(Z instanceof Error?Z:new Error("Failed to load models"))}finally{R(!1)}}}),[k,s]);y.useEffect(()=>{s==="selector"&&fe()},[s,fe]),y.useEffect(()=>(typeof window!="undefined"&&(window.__cuadraUIKitRefetchModels=fe),()=>{typeof window!="undefined"&&delete window.__cuadraUIKitRefetchModels}),[fe]);const[x,ye]=y.useState(s==="fixed"&&a||null),Ie=y.useRef(x),v=y.useCallback(Z=>{const je=Ie.current;ye(Z),Ie.current=Z,o==null||o(Z),je!==null&&je!==Z&&i==="multiChat"&&setTimeout(()=>{var bt,nn;const pe=window.__cuadraThreadListRuntime;if((bt=pe==null?void 0:pe.threads)!=null&&bt.switchToNewThread)try{pe.threads.switchToNewThread()}catch(sn){}else if((nn=pe==null?void 0:pe.threads)!=null&&nn.createThread)try{pe.threads.createThread()}catch(sn){}else if(pe!=null&&pe.switchToNewThread)try{pe.switchToNewThread()}catch(sn){}},100)},[o,i]);y.useEffect(()=>{if(s==="selector"&&(N!=null&&N.items)&&N.items.length>0&&!x){const Z=N.items[0];if(Z!=null&&Z.id){const je=Z.id;ye(je),o==null||o(je)}}},[s,N==null?void 0:N.items,x,o]);const ve=s==="fixed"?!!a:!!x,Re=y.useMemo(()=>((N==null?void 0:N.items)||[]).filter(Z=>(Z==null?void 0:Z.id)&&(Z==null?void 0:Z.displayName)).map(Z=>({id:Z.id,name:Z.displayName})),[N]),le=y.useMemo(()=>({currentModelId:x||"",models:Re,modelsLoading:V,modelsError:D,onModelChange:v,refetchModels:fe}),[x,Re,V,D,v,fe]);return s==="selector"&&V||i==="multiChat"&&se?p.jsx(zi,{value:le,children:p.jsx(Bi,{className:"cuadra-h-full",paddingX:"cuadra-px-0",paddingY:"cuadra-py-0",children:p.jsx("div",{className:"cuadra-flex cuadra-items-center cuadra-justify-center cuadra-h-full",children:p.jsx($i,{className:"cuadra-h-6 cuadra-w-6 cuadra-animate-spin cuadra-text-muted-foreground"})})})}):s==="selector"&&!ve&&D?p.jsx(zi,{value:le,children:p.jsx(Bi,{className:"cuadra-h-full",paddingX:"cuadra-px-0",paddingY:"cuadra-py-0",children:p.jsx("div",{className:"cuadra-flex cuadra-items-center cuadra-justify-center cuadra-h-full",children:p.jsx("div",{className:"cuadra-flex cuadra-flex-col cuadra-items-center cuadra-gap-2",children:p.jsx("p",{className:"cuadra-text-sm cuadra-text-destructive font-brand",children:"Failed to load models"})})})})}):p.jsx("div",{className:"cuadra-uikit cuadra-h-full cuadra-w-full",style:{height:"100%",width:"100%"},children:p.jsx(zi,{value:le,children:p.jsx(Pf,{baseUrl:$?j:t||j,sessionToken:n,isProxyMode:$,mode:i,modelMode:s,modelId:x||a||void 0,onModelChange:v,ephemeral:l,systemPrompt:u,initialThreadId:d,onError:C,onChatCreated:_,onUserMessage:F,onThreadIdUpdate:B,onChatsLoaded:()=>{i==="multiChat"&&ge(!1)},children:p.jsx(Bi,{paddingX:"cuadra-px-0",paddingY:"cuadra-py-0",className:`cuadra-h-full ${e.containerClass||""}`,borderSizePx:4,style:{height:"100%"},children:p.jsx("div",{className:"cuadra-h-full cuadra-flex cuadra-relative",style:{height:"100%"},children:i==="multiChat"?p.jsxs(p.Fragment,{children:[I&&typeof document!="undefined"&&Oe.createPortal(p.jsx("div",{className:"cuadra-fixed cuadra-inset-0 cuadra-bg-black/50 cuadra-z-40 md:cuadra-hidden",onClick:()=>z(!1)}),document.body),typeof document!="undefined"&&p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"cuadra-hidden md:cuadra-block !cuadra-border-r cuadra-border-border cuadra-flex cuadra-flex-col cuadra-bg-background cuadra-transition-all cuadra-duration-300 cuadra-ease-in-out cuadra-h-full cuadra-w-80 cuadra-relative",style:{borderRightWidth:"1px",height:"100%"},children:p.jsx(Vl,{onThreadSelect:()=>z(!1)})}),I&&Oe.createPortal(p.jsx("div",{className:"cuadra-block md:cuadra-hidden !cuadra-border-r cuadra-border-border cuadra-flex cuadra-flex-col cuadra-bg-background cuadra-transition-all cuadra-duration-300 cuadra-ease-in-out cuadra-h-screen cuadra-w-80 cuadra-fixed cuadra-z-50 cuadra-top-0 cuadra-left-0 cuadra-translate-x-0",style:{borderRightWidth:"1px"},children:p.jsx(Vl,{onThreadSelect:()=>z(!1)})}),document.body)]}),p.jsxs("div",{className:"cuadra-flex-1 cuadra-flex cuadra-flex-col",children:[s==="selector"&&p.jsx(Wl,{currentModel:x||"",models:Re,modelsLoading:V,modelsError:D,onModelChange:v,showThemeToggle:w,theme:b,onMobileMenuClick:()=>z(!I),showMobileMenuButton:i==="multiChat"}),p.jsx("div",{className:"cuadra-flex-1 cuadra-relative cuadra-min-h-0 cuadra-space-y-4 cuadra-p-4",children:p.jsx(ql,{welcomeTitle:c,welcomeSubtitle:f,extraTopPadding:h,suggestions:g,inputPlaceholder:S})})]})]}):p.jsxs("div",{className:"cuadra-flex-1 cuadra-flex cuadra-flex-col",children:[s==="selector"&&p.jsx(Wl,{currentModel:x||"",models:Re,modelsLoading:V,modelsError:D,onModelChange:v,showThemeToggle:w,theme:b}),p.jsx("div",{className:"cuadra-flex-1 cuadra-relative cuadra-min-h-0 cuadra-space-y-4 cuadra-p-4",children:p.jsx(ql,{welcomeTitle:c,welcomeSubtitle:f,extraTopPadding:h,suggestions:g})})]})})})})})})};class rn{constructor(){T(this,"config",null);T(this,"root",null);T(this,"container",null);T(this,"instances",new Map)}init(t){if(!t.baseUrl&&!t.proxyUrl)throw new Error("Either baseUrl or proxyUrl is required");if(t.modelMode==="fixed"&&t.modelId!==void 0&&(!t.modelId||t.modelId.trim()===""))throw new Error("modelId cannot be empty when explicitly provided. Omit modelId to let backend resolve it.");const r=t.containerId||"cuadra-chat";let n=document.getElementById(r);n||(n=document.createElement("div"),n.id=r,document.body.appendChild(n)),t.containerClass&&n.classList.add(...t.containerClass.split(" ")),this.config=E(m({},t),{containerId:r}),this.container=n,this.root=ae.createRoot(n),this.root.render(y.createElement(Gl,{config:this.config})),this.instances.set(r,this)}destroy(t){var i;const r=t||((i=this.config)==null?void 0:i.containerId);if(!r)return;const n=this.instances.get(r);n!=null&&n.root&&(n.root.unmount(),n.root=null),n!=null&&n.container&&n.container.parentNode&&n.container.parentNode.removeChild(n.container),this.instances.delete(r)}updateConfig(t,r){var a;const n=r||((a=this.config)==null?void 0:a.containerId);if(!n)return;const i=this.instances.get(n);if(!(i!=null&&i.config))return;const s=m(m({},i.config),t);i.config=s,i.root&&i.container&&i.root.render(y.createElement(Gl,{config:s}))}getInstance(t){var n;const r=t||((n=this.config)==null?void 0:n.containerId);return r&&this.instances.get(r)||null}static parseConfigFromAttributes(t,r){const n={};return t.dataset.baseUrl&&(n.baseUrl=t.dataset.baseUrl),t.dataset.proxyUrl&&(n.proxyUrl=t.dataset.proxyUrl),t.dataset.sessionToken&&(n.sessionToken=t.dataset.sessionToken),t.dataset.containerId&&(n.containerId=t.dataset.containerId),t.dataset.containerClass&&(n.containerClass=t.dataset.containerClass),t.dataset.mode&&(n.mode=t.dataset.mode),t.dataset.modelMode&&(n.modelMode=t.dataset.modelMode),t.dataset.modelId&&(n.modelId=t.dataset.modelId),t.dataset.ephemeral&&(n.ephemeral=t.dataset.ephemeral==="true"),t.dataset.systemPrompt&&(n.systemPrompt=t.dataset.systemPrompt),r&&(r.dataset.baseUrl&&(n.baseUrl=r.dataset.baseUrl),r.dataset.proxyUrl&&(n.proxyUrl=r.dataset.proxyUrl),r.dataset.sessionToken&&(n.sessionToken=r.dataset.sessionToken),r.dataset.mode&&(n.mode=r.dataset.mode),r.dataset.modelMode&&(n.modelMode=r.dataset.modelMode),r.dataset.modelId&&(n.modelId=r.dataset.modelId)),n}}const Gl=({config:e})=>p.jsx(Jl,{config:e});let Ce=null;typeof window!="undefined"&&(Ce=new rn);const Yl={init:e=>(Ce||(Ce=new rn),Ce.init(e)),destroy:e=>Ce==null?void 0:Ce.destroy(e),updateConfig:(e,t)=>Ce==null?void 0:Ce.updateConfig(e,t),getInstance:e=>Ce==null?void 0:Ce.getInstance(e),refetchModels:()=>{if(typeof window!="undefined"){const e=window.__cuadraUIKitRefetchModels;e&&e()}},version:"0.1.0"};if(typeof window!="undefined"){window.CuadraUIKit=Yl;const e=()=>{const t=document.querySelectorAll('script[src*="cuadra-uikit"]'),r=Array.from(t).find(n=>(n.getAttribute("src")||"").includes("cuadra-uikit.umd.js"));r&&r.dataset.autoInit!=="false"&&Cx(r)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):setTimeout(e,0)}function Cx(e){if(!e||!Ce)return;const t=rn.parseConfigFromAttributes(e),r=t.containerId||"cuadra-chat",n=document.getElementById(r);if(n){const i=rn.parseConfigFromAttributes(e,n);Object.assign(t,i)}(t.baseUrl||t.proxyUrl)&&Ce.init(t)}U.WidgetContent=Jl,U.default=Yl,Object.defineProperties(U,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
39
|
+
`,Bi=({children:e,className:t="",paddingX:r="px-0",paddingY:n="py-0",borderSizePx:i=4,style:s,contentStyle:a,rotating:o=!1})=>p.jsxs(p.Fragment,{children:[p.jsx("style",{children:Sx}),p.jsxs("div",{className:`cuadra-relative cuadra-bg-background md:cuadra-rounded-xl cuadra-overflow-hidden ${t}`,style:m({padding:i},s),children:[p.jsx("div",{className:"cuadra-absolute md:cuadra-rounded-xl",style:o?{left:"-100%",top:"-100%",width:"300%",height:"300%",backgroundImage:"conic-gradient(#F4633A, #FF7A4D, #FF8C5C, #F4633A, #FF7A4D, #FF8C5C)",backgroundRepeat:"no-repeat",backgroundSize:"cover",backgroundPosition:"center",animation:"rotate 4s linear infinite"}:{backgroundImage:"linear-gradient(to right, #F4633A, #FF7A4D, #FF8C5C, #F4633A)",backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat",top:"0",left:"0",width:"100%",height:"100%"}}),p.jsx("div",{className:`cuadra-relative cuadra-bg-background cuadra-h-full cuadra-z-10 cuadra-flex cuadra-flex-col cuadra-overflow-hidden ${r} ${n}`,style:m({borderRadius:"calc(0.75rem - 4px)"},a),children:e})]})]}),kx=({className:e="",theme:t="system"})=>{const r=()=>{if(typeof window=="undefined")return"light";if(t==="system"){const a=localStorage.getItem("theme");return a||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")}return t},[n,i]=y.useState(r);y.useEffect(()=>{t!=="system"&&i(t)},[t]),y.useEffect(()=>{const a=document.documentElement;a.classList.remove("light","dark"),a.classList.add(n),t==="system"&&localStorage.setItem("theme",n)},[n,t]);const s=()=>{t==="system"&&i(a=>a==="light"?"dark":"light")};return p.jsx("button",{type:"button","aria-label":"Toggle theme",onClick:s,disabled:t!=="system",className:`cuadra-flex cuadra-items-center cuadra-justify-center cuadra-h-8 cuadra-w-8 cuadra-rounded-full cuadra-bg-muted hover:cuadra-bg-muted/80 cuadra-transition-colors disabled:cuadra-opacity-50 disabled:cuadra-cursor-not-allowed ${e}`,children:p.jsx(mu,{className:`cuadra-h-4 cuadra-w-4 cuadra-transition-colors ${n==="dark"?"cuadra-text-primary":"cuadra-text-gray-400"}`})})},Wl=({currentModel:e,models:t,modelsLoading:r,modelsError:n,onModelChange:i,hideModelSelector:s=!1,showThemeToggle:a=!0,theme:o="system",onMobileMenuClick:l,showMobileMenuButton:u=!1})=>{const[d,c]=y.useState(!1),f=y.useRef(null);y.useEffect(()=>{const g=S=>{f.current&&!f.current.contains(S.target)&&c(!1)};return d&&document.addEventListener("mousedown",g),()=>{document.removeEventListener("mousedown",g)}},[d]);const h=t.find(g=>g.id===e);return p.jsxs("div",{className:"cuadra-h-16 cuadra-px-4 cuadra-border-b cuadra-border-border cuadra-flex cuadra-items-center cuadra-justify-between cuadra-bg-background",children:[p.jsxs("div",{className:"cuadra-flex cuadra-items-center cuadra-gap-2",children:[u&&p.jsx("button",{type:"button",onClick:l,className:"cuadra-flex cuadra-items-center cuadra-justify-center cuadra-h-8 cuadra-w-8 cuadra-rounded-full cuadra-bg-muted hover:cuadra-bg-muted/80 cuadra-transition-colors disabled:cuadra-opacity-50 disabled:cuadra-cursor-not-allowed md:cuadra-hidden","aria-label":"Toggle thread list",children:p.jsx(bu,{className:"cuadra-h-4 cuadra-w-4 cuadra-text-foreground"})}),a&&p.jsx("div",{className:"cuadra-flex cuadra-items-center cuadra-gap-2",children:p.jsx(kx,{theme:o})})]}),p.jsxs("div",{className:"cuadra-flex cuadra-items-center cuadra-gap-2 md:cuadra-ml-0 cuadra-ml-auto",children:[!s&&p.jsx("label",{className:"cuadra-hidden md:cuadra-inline cuadra-text-sm cuadra-text-muted-foreground cuadra-font-brand",children:"Model"}),s?null:r?p.jsx("div",{className:"cuadra-w-48 cuadra-rounded-md cuadra-border cuadra-border-border cuadra-px-3 cuadra-py-2 cuadra-bg-muted",children:p.jsx("span",{className:"cuadra-text-muted-foreground cuadra-text-sm cuadra-font-brand",children:"Loading..."})}):n?p.jsx("div",{className:"cuadra-w-48 cuadra-rounded-md cuadra-border cuadra-border-destructive cuadra-px-3 cuadra-py-2 cuadra-bg-destructive/10",children:p.jsx("span",{className:"cuadra-text-destructive cuadra-text-sm cuadra-font-brand",children:"Failed to load models"})}):p.jsxs("div",{ref:f,className:"cuadra-relative cuadra-w-48",children:[p.jsxs("button",{type:"button",onClick:()=>c(!d),disabled:r||t.length===0||!!n,className:"cuadra-flex cuadra-h-10 cuadra-w-full cuadra-items-center cuadra-justify-between cuadra-rounded-md cuadra-border cuadra-border-input cuadra-bg-background cuadra-px-3 cuadra-py-2 cuadra-text-sm placeholder:cuadra-text-muted-foreground focus:cuadra-outline-none disabled:cuadra-cursor-not-allowed disabled:cuadra-opacity-50 cuadra-font-brand",children:[p.jsx("span",{className:h?"cuadra-text-foreground":"cuadra-text-muted-foreground",children:(h==null?void 0:h.name)||"Select model"}),p.jsx(pu,{className:"cuadra-ml-2 cuadra-h-4 cuadra-w-4 cuadra-opacity-50"})]}),d&&t.length>0&&p.jsx("div",{className:"cuadra-absolute cuadra-z-50 cuadra-mt-1 cuadra-w-full cuadra-min-w-[8rem] cuadra-overflow-hidden cuadra-rounded-md glass-popover cuadra-text-popover-foreground cuadra-animate-in fade-in-80 cuadra-border cuadra-border-border cuadra-bg-popover cuadra-shadow-md",children:p.jsx("div",{className:"cuadra-p-1",children:t.map(g=>p.jsxs("button",{type:"button",onClick:()=>{i(g.id),c(!1)},className:`cuadra-relative cuadra-flex cuadra-w-full cuadra-cursor-pointer cuadra-select-none cuadra-items-center cuadra-rounded-sm cuadra-py-1.5 cuadra-pl-8 cuadra-pr-2 cuadra-text-sm cuadra-outline-none focus:cuadra-bg-secondary focus:cuadra-text-secondary-foreground font-brand cuadra-transition-colors ${e===g.id?"cuadra-bg-secondary cuadra-text-secondary-foreground":"hover:cuadra-bg-secondary/50"}`,children:[e===g.id&&p.jsx("span",{className:"cuadra-absolute cuadra-left-2 cuadra-flex cuadra-h-3.5 cuadra-w-3.5 cuadra-items-center cuadra-justify-center",children:p.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",fill:"none",viewBox:"0 0 16 16",children:p.jsx("path",{fill:"currentColor",fillRule:"evenodd",d:"M6.47 10.03a.75.75 0 0 1-1.06-1.06l2-2a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06L8 9.06l-1.53 1.53Z",clipRule:"evenodd"})})}),p.jsx("span",{children:g.name})]},g.id))})})]})]})]})},_x=y.createContext(void 0),zi=({children:e,value:t})=>p.jsx(_x.Provider,{value:t,children:e});function Tx(){y.useEffect(()=>{if(document.querySelector("style[data-cuadra-uikit]"))return;const t=document.createElement("div");t.className="cuadra-flex",document.body.appendChild(t);const r=window.getComputedStyle(t).display==="flex";if(document.body.removeChild(t),r)return;const n=document.createElement("link");n.setAttribute("data-cuadra-uikit","true"),n.rel="stylesheet",n.type="text/css";const i=["/node_modules/@cuadra-ai/uikit/dist/uikit.css",new URL("../dist/uikit.css",typeof document=="undefined"&&typeof location=="undefined"?require("url").pathToFileURL(__filename).href:typeof document=="undefined"?location.href:Se&&Se.tagName.toUpperCase()==="SCRIPT"&&Se.src||new URL("cuadra-uikit.umd.js",document.baseURI).href).href];let s=!1;for(const a of i)if(n.href=a,n.onload=()=>{s=!0},n.onerror=()=>{},document.head.appendChild(n),s)break},[])}const Jl=({config:e})=>{Tx();const{baseUrl:t,proxyUrl:r,sessionToken:n,mode:i="multiChat",modelMode:s="fixed",modelId:a,onModelChange:o,ephemeral:l=!1,systemPrompt:u,initialThreadId:d,welcomeTitle:c,welcomeSubtitle:f,extraTopPadding:h,suggestions:g,inputPlaceholder:S,showThemeToggle:w=!0,theme:b="system",onError:C,onChatCreated:_,onUserMessage:F,onThreadIdUpdate:B}=e,[I,z]=y.useState(!1),j=r||t||"",$=!!r,k=y.useMemo(()=>new ja(j,n||void 0,$),[j,n,$]),[N,M]=y.useState(null),[V,R]=y.useState(!1),[D,Q]=y.useState(null),[se,ge]=y.useState(!1);y.useEffect(()=>{i==="multiChat"&&ge(!0)},[i]);const fe=y.useCallback(()=>P(null,null,function*(){if(s==="selector"){R(!0),Q(null);try{const Z=yield k.listModels();M(Z)}catch(Z){Q(Z instanceof Error?Z:new Error("Failed to load models"))}finally{R(!1)}}}),[k,s]);y.useEffect(()=>{s==="selector"&&fe()},[s,fe]),y.useEffect(()=>(typeof window!="undefined"&&(window.__cuadraUIKitRefetchModels=fe),()=>{typeof window!="undefined"&&delete window.__cuadraUIKitRefetchModels}),[fe]);const[x,ye]=y.useState(s==="fixed"&&a||null),Ie=y.useRef(x),v=y.useCallback(Z=>{const je=Ie.current;ye(Z),Ie.current=Z,o==null||o(Z),je!==null&&je!==Z&&i==="multiChat"&&setTimeout(()=>{var bt,nn;const pe=window.__cuadraThreadListRuntime;if((bt=pe==null?void 0:pe.threads)!=null&&bt.switchToNewThread)try{pe.threads.switchToNewThread()}catch(sn){}else if((nn=pe==null?void 0:pe.threads)!=null&&nn.createThread)try{pe.threads.createThread()}catch(sn){}else if(pe!=null&&pe.switchToNewThread)try{pe.switchToNewThread()}catch(sn){}},100)},[o,i]);y.useEffect(()=>{if(s==="selector"&&(N!=null&&N.items)&&N.items.length>0&&!x){const Z=N.items[0];if(Z!=null&&Z.id){const je=Z.id;ye(je),o==null||o(je)}}},[s,N==null?void 0:N.items,x,o]);const ve=s==="fixed"?!!a:!!x,Re=y.useMemo(()=>((N==null?void 0:N.items)||[]).filter(Z=>(Z==null?void 0:Z.id)&&(Z==null?void 0:Z.displayName)).map(Z=>({id:Z.id,name:Z.displayName})),[N]),le=y.useMemo(()=>({currentModelId:x||"",models:Re,modelsLoading:V,modelsError:D,onModelChange:v,refetchModels:fe}),[x,Re,V,D,v,fe]);return s==="selector"&&V||i==="multiChat"&&se?p.jsx(zi,{value:le,children:p.jsx(Bi,{className:"cuadra-h-full",paddingX:"cuadra-px-0",paddingY:"cuadra-py-0",children:p.jsx("div",{className:"cuadra-flex cuadra-items-center cuadra-justify-center cuadra-h-full",children:p.jsx($i,{className:"cuadra-h-6 cuadra-w-6 cuadra-animate-spin cuadra-text-muted-foreground"})})})}):s==="selector"&&!ve&&D?p.jsx(zi,{value:le,children:p.jsx(Bi,{className:"cuadra-h-full",paddingX:"cuadra-px-0",paddingY:"cuadra-py-0",children:p.jsx("div",{className:"cuadra-flex cuadra-items-center cuadra-justify-center cuadra-h-full",children:p.jsx("div",{className:"cuadra-flex cuadra-flex-col cuadra-items-center cuadra-gap-2",children:p.jsx("p",{className:"cuadra-text-sm cuadra-text-destructive font-brand",children:"Failed to load models"})})})})}):p.jsx("div",{className:"cuadra-uikit cuadra-h-full cuadra-w-full",style:{height:"100%",width:"100%"},children:p.jsx(zi,{value:le,children:p.jsx(Pf,{baseUrl:$?j:t||j,sessionToken:n,isProxyMode:$,mode:i,modelMode:s,modelId:x||a||void 0,onModelChange:v,ephemeral:l,systemPrompt:u,initialThreadId:d,onError:C,onChatCreated:_,onUserMessage:F,onThreadIdUpdate:B,onChatsLoaded:()=>{i==="multiChat"&&ge(!1)},children:p.jsx(Bi,{paddingX:"cuadra-px-0",paddingY:"cuadra-py-0",className:`cuadra-h-full ${e.containerClass||""}`,borderSizePx:4,style:{height:"100%"},children:p.jsx("div",{className:"cuadra-h-full cuadra-flex cuadra-relative",style:{height:"100%"},children:i==="multiChat"?p.jsxs(p.Fragment,{children:[I&&typeof document!="undefined"&&Oe.createPortal(p.jsx("div",{className:"cuadra-fixed cuadra-inset-0 cuadra-bg-black/50 cuadra-z-40 md:cuadra-hidden",onClick:()=>z(!1)}),document.body),typeof document!="undefined"&&p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"cuadra-hidden md:cuadra-block !cuadra-border-r cuadra-border-border cuadra-flex cuadra-flex-col cuadra-bg-background cuadra-transition-all cuadra-duration-300 cuadra-ease-in-out cuadra-h-full cuadra-w-80 cuadra-relative",style:{borderRightWidth:"1px",height:"100%"},children:p.jsx(Vl,{onThreadSelect:()=>z(!1)})}),I&&Oe.createPortal(p.jsx("div",{className:"cuadra-block md:cuadra-hidden !cuadra-border-r cuadra-border-border cuadra-flex cuadra-flex-col cuadra-bg-background cuadra-transition-all cuadra-duration-300 cuadra-ease-in-out cuadra-h-screen cuadra-w-80 cuadra-fixed cuadra-z-50 cuadra-top-0 cuadra-left-0 cuadra-translate-x-0",style:{borderRightWidth:"1px"},children:p.jsx(Vl,{onThreadSelect:()=>z(!1)})}),document.body)]}),p.jsxs("div",{className:"cuadra-flex-1 cuadra-flex cuadra-flex-col",children:[s==="selector"&&p.jsx(Wl,{currentModel:x||"",models:Re,modelsLoading:V,modelsError:D,onModelChange:v,showThemeToggle:w,theme:b,onMobileMenuClick:()=>z(!I),showMobileMenuButton:i==="multiChat"}),p.jsx("div",{className:"cuadra-flex-1 cuadra-relative cuadra-min-h-0 cuadra-space-y-4 cuadra-p-4",children:p.jsx(ql,{welcomeTitle:c,welcomeSubtitle:f,extraTopPadding:h,suggestions:g,inputPlaceholder:S})})]})]}):p.jsxs("div",{className:"cuadra-flex-1 cuadra-flex cuadra-flex-col",children:[s==="selector"&&p.jsx(Wl,{currentModel:x||"",models:Re,modelsLoading:V,modelsError:D,onModelChange:v,showThemeToggle:w,theme:b}),p.jsx("div",{className:"cuadra-flex-1 cuadra-relative cuadra-min-h-0 cuadra-space-y-4 cuadra-p-4",children:p.jsx(ql,{welcomeTitle:c,welcomeSubtitle:f,extraTopPadding:h,suggestions:g,inputPlaceholder:S})})]})})})})})})};class rn{constructor(){T(this,"config",null);T(this,"root",null);T(this,"container",null);T(this,"instances",new Map)}init(t){if(!t.baseUrl&&!t.proxyUrl)throw new Error("Either baseUrl or proxyUrl is required");if(t.modelMode==="fixed"&&t.modelId!==void 0&&(!t.modelId||t.modelId.trim()===""))throw new Error("modelId cannot be empty when explicitly provided. Omit modelId to let backend resolve it.");const r=t.containerId||"cuadra-chat";let n=document.getElementById(r);n||(n=document.createElement("div"),n.id=r,document.body.appendChild(n)),t.containerClass&&n.classList.add(...t.containerClass.split(" ")),this.config=E(m({},t),{containerId:r}),this.container=n,this.root=ae.createRoot(n),this.root.render(y.createElement(Gl,{config:this.config})),this.instances.set(r,this)}destroy(t){var i;const r=t||((i=this.config)==null?void 0:i.containerId);if(!r)return;const n=this.instances.get(r);n!=null&&n.root&&(n.root.unmount(),n.root=null),n!=null&&n.container&&n.container.parentNode&&n.container.parentNode.removeChild(n.container),this.instances.delete(r)}updateConfig(t,r){var a;const n=r||((a=this.config)==null?void 0:a.containerId);if(!n)return;const i=this.instances.get(n);if(!(i!=null&&i.config))return;const s=m(m({},i.config),t);i.config=s,i.root&&i.container&&i.root.render(y.createElement(Gl,{config:s}))}getInstance(t){var n;const r=t||((n=this.config)==null?void 0:n.containerId);return r&&this.instances.get(r)||null}static parseConfigFromAttributes(t,r){const n={};return t.dataset.baseUrl&&(n.baseUrl=t.dataset.baseUrl),t.dataset.proxyUrl&&(n.proxyUrl=t.dataset.proxyUrl),t.dataset.sessionToken&&(n.sessionToken=t.dataset.sessionToken),t.dataset.containerId&&(n.containerId=t.dataset.containerId),t.dataset.containerClass&&(n.containerClass=t.dataset.containerClass),t.dataset.mode&&(n.mode=t.dataset.mode),t.dataset.modelMode&&(n.modelMode=t.dataset.modelMode),t.dataset.modelId&&(n.modelId=t.dataset.modelId),t.dataset.ephemeral&&(n.ephemeral=t.dataset.ephemeral==="true"),t.dataset.systemPrompt&&(n.systemPrompt=t.dataset.systemPrompt),r&&(r.dataset.baseUrl&&(n.baseUrl=r.dataset.baseUrl),r.dataset.proxyUrl&&(n.proxyUrl=r.dataset.proxyUrl),r.dataset.sessionToken&&(n.sessionToken=r.dataset.sessionToken),r.dataset.mode&&(n.mode=r.dataset.mode),r.dataset.modelMode&&(n.modelMode=r.dataset.modelMode),r.dataset.modelId&&(n.modelId=r.dataset.modelId)),n}}const Gl=({config:e})=>p.jsx(Jl,{config:e});let Ce=null;typeof window!="undefined"&&(Ce=new rn);const Yl={init:e=>(Ce||(Ce=new rn),Ce.init(e)),destroy:e=>Ce==null?void 0:Ce.destroy(e),updateConfig:(e,t)=>Ce==null?void 0:Ce.updateConfig(e,t),getInstance:e=>Ce==null?void 0:Ce.getInstance(e),refetchModels:()=>{if(typeof window!="undefined"){const e=window.__cuadraUIKitRefetchModels;e&&e()}},version:"0.1.0"};if(typeof window!="undefined"){window.CuadraUIKit=Yl;const e=()=>{const t=document.querySelectorAll('script[src*="cuadra-uikit"]'),r=Array.from(t).find(n=>(n.getAttribute("src")||"").includes("cuadra-uikit.umd.js"));r&&r.dataset.autoInit!=="false"&&Cx(r)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):setTimeout(e,0)}function Cx(e){if(!e||!Ce)return;const t=rn.parseConfigFromAttributes(e),r=t.containerId||"cuadra-chat",n=document.getElementById(r);if(n){const i=rn.parseConfigFromAttributes(e,n);Object.assign(t,i)}(t.baseUrl||t.proxyUrl)&&Ce.init(t)}U.WidgetContent=Jl,U.default=Yl,Object.defineProperties(U,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
40
40
|
//# sourceMappingURL=cuadra-uikit.umd.js.map
|