teodor-new-chat-ui 2.0.45 → 2.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +1 -1
- package/dist/index.umd.js +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -7499,7 +7499,7 @@ function Kn({
|
|
|
7499
7499
|
},
|
|
7500
7500
|
onKeyDown: zr,
|
|
7501
7501
|
placeholder: z ? "Edit your message..." : t,
|
|
7502
|
-
className: `resize-none min-h-[44px] max-h-[20rem] w-full ${z ? "border-blue-400 bg-blue-50" : ""} ${B ? "border-red-400" : ""} ${i.textarea || ""}`,
|
|
7502
|
+
className: `resize-none min-h-[44px] max-h-[20rem] w-full transition-colors ${z ? "border-blue-400 bg-blue-50 text-blue-900 dark:border-blue-500 dark:bg-blue-950/60 dark:text-blue-50" : ""} ${B ? "border-red-400" : ""} ${i.textarea || ""}`,
|
|
7503
7503
|
disabled: !1,
|
|
7504
7504
|
maxLength: $t,
|
|
7505
7505
|
rows: 1
|
package/dist/index.umd.js
CHANGED
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
`)},Ai=function(){var e=parseInt(document.body.getAttribute($t)||"0",10);return isFinite(e)?e:0},Ng=function(){l.useEffect(function(){return document.body.setAttribute($t,(Ai()+1).toString()),function(){var e=Ai()-1;e<=0?document.body.removeAttribute($t):document.body.setAttribute($t,e.toString())}},[])},Tg=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;Ng();var s=l.useMemo(function(){return Sg(o)},[o]);return l.createElement(Cg,{styles:Eg(s,!t,o,n?"":"!important")})},Fo=!1;if(typeof window<"u")try{var tr=Object.defineProperty({},"passive",{get:function(){return Fo=!0,!0}});window.addEventListener("test",tr,tr),window.removeEventListener("test",tr,tr)}catch{Fo=!1}var Bt=Fo?{passive:!1}:!1,Ag=function(e){return e.tagName==="TEXTAREA"},Ii=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!Ag(e)&&n[t]==="visible")},Ig=function(e){return Ii(e,"overflowY")},Pg=function(e){return Ii(e,"overflowX")},Pi=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=_i(e,r);if(o){var s=ki(e,r),a=s[1],c=s[2];if(a>c)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},_g=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},kg=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},_i=function(e,t){return e==="v"?Ig(t):Pg(t)},ki=function(e,t){return e==="v"?_g(t):kg(t)},Og=function(e,t){return e==="h"&&t==="rtl"?-1:1},Mg=function(e,t,n,r,o){var s=Og(e,window.getComputedStyle(t).direction),a=s*r,c=n.target,d=t.contains(c),f=!1,u=a>0,p=0,m=0;do{if(!c)break;var v=ki(e,c),g=v[0],h=v[1],b=v[2],w=h-b-s*g;(g||w)&&_i(e,c)&&(p+=w,m+=g);var y=c.parentNode;c=y&&y.nodeType===Node.DOCUMENT_FRAGMENT_NODE?y.host:y}while(!d&&c!==document.body||d&&(t.contains(c)||t===c));return(u&&Math.abs(p)<1||!u&&Math.abs(m)<1)&&(f=!0),f},nr=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Oi=function(e){return[e.deltaX,e.deltaY]},Mi=function(e){return e&&"current"in e?e.current:e},Dg=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Lg=function(e){return`
|
|
56
56
|
.block-interactivity-`.concat(e,` {pointer-events: none;}
|
|
57
57
|
.allow-interactivity-`).concat(e,` {pointer-events: all;}
|
|
58
|
-
`)},Fg=0,Ut=[];function $g(e){var t=l.useRef([]),n=l.useRef([0,0]),r=l.useRef(),o=l.useState(Fg++)[0],s=l.useState(Ti)[0],a=l.useRef(e);l.useEffect(function(){a.current=e},[e]),l.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var h=og([e.lockRef.current],(e.shards||[]).map(Mi),!0).filter(Boolean);return h.forEach(function(b){return b.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),h.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var c=l.useCallback(function(h,b){if("touches"in h&&h.touches.length===2||h.type==="wheel"&&h.ctrlKey)return!a.current.allowPinchZoom;var w=nr(h),y=n.current,x="deltaX"in h?h.deltaX:y[0]-w[0],C="deltaY"in h?h.deltaY:y[1]-w[1],E,k=h.target,T=Math.abs(x)>Math.abs(C)?"h":"v";if("touches"in h&&T==="h"&&k.type==="range")return!1;var F=Pi(T,k);if(!F)return!0;if(F?E=T:(E=T==="v"?"h":"v",F=Pi(T,k)),!F)return!1;if(!r.current&&"changedTouches"in h&&(x||C)&&(r.current=E),!E)return!0;var M=r.current||E;return Mg(M,b,h,M==="h"?x:C)},[]),d=l.useCallback(function(h){var b=h;if(!(!Ut.length||Ut[Ut.length-1]!==s)){var w="deltaY"in b?Oi(b):nr(b),y=t.current.filter(function(E){return E.name===b.type&&(E.target===b.target||b.target===E.shadowParent)&&Dg(E.delta,w)})[0];if(y&&y.should){b.cancelable&&b.preventDefault();return}if(!y){var x=(a.current.shards||[]).map(Mi).filter(Boolean).filter(function(E){return E.contains(b.target)}),C=x.length>0?c(b,x[0]):!a.current.noIsolation;C&&b.cancelable&&b.preventDefault()}}},[]),f=l.useCallback(function(h,b,w,y){var x={name:h,delta:b,target:w,should:y,shadowParent:Bg(w)};t.current.push(x),setTimeout(function(){t.current=t.current.filter(function(C){return C!==x})},1)},[]),u=l.useCallback(function(h){n.current=nr(h),r.current=void 0},[]),p=l.useCallback(function(h){f(h.type,Oi(h),h.target,c(h,e.lockRef.current))},[]),m=l.useCallback(function(h){f(h.type,nr(h),h.target,c(h,e.lockRef.current))},[]);l.useEffect(function(){return Ut.push(s),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:m}),document.addEventListener("wheel",d,Bt),document.addEventListener("touchmove",d,Bt),document.addEventListener("touchstart",u,Bt),function(){Ut=Ut.filter(function(h){return h!==s}),document.removeEventListener("wheel",d,Bt),document.removeEventListener("touchmove",d,Bt),document.removeEventListener("touchstart",u,Bt)}},[]);var v=e.removeScrollBar,g=e.inert;return l.createElement(l.Fragment,null,g?l.createElement(s,{styles:Lg(o)}):null,v?l.createElement(Tg,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Bg(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Ug=pg(Ni,$g);var rr=l.forwardRef(function(e,t){return l.createElement(er,tt({},e,{ref:t,sideCar:Ug}))});rr.classNames=er.classNames;var $o=["Enter"," "],Hg=["ArrowDown","PageUp","Home"],Di=["ArrowUp","PageDown","End"],zg=[...Hg,...Di],Wg={ltr:[...$o,"ArrowRight"],rtl:[...$o,"ArrowLeft"]},Vg={ltr:["ArrowLeft"],rtl:["ArrowRight"]},ln="Menu",[dn,jg,Rg]=so(ln),[yt,Li]=We(ln,[Rg,Lt,mi]),or=Lt(),Fi=mi(),[Kg,xt]=yt(ln),[Gg,un]=yt(ln),$i=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:o,onOpenChange:s,modal:a=!0}=e,c=or(t),[d,f]=l.useState(null),u=l.useRef(!1),p=Ee(s),m=$n(o);return l.useEffect(()=>{const v=()=>{u.current=!0,document.addEventListener("pointerdown",g,{capture:!0,once:!0}),document.addEventListener("pointermove",g,{capture:!0,once:!0})},g=()=>u.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",g,{capture:!0}),document.removeEventListener("pointermove",g,{capture:!0})}},[]),i.jsx(No,{...c,children:i.jsx(Kg,{scope:t,open:n,onOpenChange:p,content:d,onContentChange:f,children:i.jsx(Gg,{scope:t,onClose:l.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:u,dir:m,modal:a,children:r})})})};$i.displayName=ln;var qg="MenuAnchor",Bo=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=or(n);return i.jsx(To,{...o,...r,ref:t})});Bo.displayName=qg;var Uo="MenuPortal",[Xg,Bi]=yt(Uo,{forceMount:void 0}),Ui=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:o}=e,s=xt(Uo,t);return i.jsx(Xg,{scope:t,forceMount:n,children:i.jsx(ke,{present:n||s.open,children:i.jsx(Xn,{asChild:!0,container:o,children:r})})})};Ui.displayName=Uo;var Be="MenuContent",[Yg,Ho]=yt(Be),Hi=l.forwardRef((e,t)=>{const n=Bi(Be,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=xt(Be,e.__scopeMenu),a=un(Be,e.__scopeMenu);return i.jsx(dn.Provider,{scope:e.__scopeMenu,children:i.jsx(ke,{present:r||s.open,children:i.jsx(dn.Slot,{scope:e.__scopeMenu,children:a.modal?i.jsx(Jg,{...o,ref:t}):i.jsx(Zg,{...o,ref:t})})})})}),Jg=l.forwardRef((e,t)=>{const n=xt(Be,e.__scopeMenu),r=l.useRef(null),o=de(t,r);return l.useEffect(()=>{const s=r.current;if(s)return Oo(s)},[]),i.jsx(zo,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:U(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Zg=l.forwardRef((e,t)=>{const n=xt(Be,e.__scopeMenu);return i.jsx(zo,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Qg=De.createSlot("MenuContent.ScrollLock"),zo=l.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:a,disableOutsidePointerEvents:c,onEntryFocus:d,onEscapeKeyDown:f,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:m,onDismiss:v,disableOutsideScroll:g,...h}=e,b=xt(Be,n),w=un(Be,n),y=or(n),x=Fi(n),C=jg(n),[E,k]=l.useState(null),T=l.useRef(null),F=de(t,T,b.onContentChange),M=l.useRef(0),$=l.useRef(""),W=l.useRef(0),X=l.useRef(null),H=l.useRef("right"),O=l.useRef(0),Z=g?rr:l.Fragment,L=g?{as:Qg,allowPinchZoom:!0}:void 0,z=I=>{var R,ie;const Y=$.current+I,j=C().filter(ue=>!ue.disabled),J=document.activeElement,D=(R=j.find(ue=>ue.ref.current===J))==null?void 0:R.textValue,V=j.map(ue=>ue.textValue),be=um(V,Y,D),re=(ie=j.find(ue=>ue.textValue===be))==null?void 0:ie.ref.current;(function ue(ce){$.current=ce,window.clearTimeout(M.current),ce!==""&&(M.current=window.setTimeout(()=>ue(""),1e3))})(Y),re&&setTimeout(()=>re.focus())};l.useEffect(()=>()=>window.clearTimeout(M.current),[]),co();const P=l.useCallback(I=>{var j,J;return H.current===((j=X.current)==null?void 0:j.side)&&pm(I,(J=X.current)==null?void 0:J.area)},[]);return i.jsx(Yg,{scope:n,searchRef:$,onItemEnter:l.useCallback(I=>{P(I)&&I.preventDefault()},[P]),onItemLeave:l.useCallback(I=>{var Y;P(I)||((Y=T.current)==null||Y.focus(),k(null))},[P]),onTriggerLeave:l.useCallback(I=>{P(I)&&I.preventDefault()},[P]),pointerGraceTimerRef:W,onPointerGraceIntentChange:l.useCallback(I=>{X.current=I},[]),children:i.jsx(Z,{...L,children:i.jsx(Bn,{asChild:!0,trapped:o,onMountAutoFocus:U(s,I=>{var Y;I.preventDefault(),(Y=T.current)==null||Y.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:i.jsx(rn,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:f,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:m,onDismiss:v,children:i.jsx(Qh,{asChild:!0,...x,dir:w.dir,orientation:"vertical",loop:r,currentTabStopId:E,onCurrentTabStopIdChange:k,onEntryFocus:U(d,I=>{w.isUsingKeyboardRef.current||I.preventDefault()}),preventScrollOnEntryFocus:!0,children:i.jsx(Ao,{role:"menu","aria-orientation":"vertical","data-state":rc(b.open),"data-radix-menu-content":"",dir:w.dir,...y,...h,ref:F,style:{outline:"none",...h.style},onKeyDown:U(h.onKeyDown,I=>{const j=I.target.closest("[data-radix-menu-content]")===I.currentTarget,J=I.ctrlKey||I.altKey||I.metaKey,D=I.key.length===1;j&&(I.key==="Tab"&&I.preventDefault(),!J&&D&&z(I.key));const V=T.current;if(I.target!==V||!zg.includes(I.key))return;I.preventDefault();const re=C().filter(R=>!R.disabled).map(R=>R.ref.current);Di.includes(I.key)&&re.reverse(),lm(re)}),onBlur:U(e.onBlur,I=>{I.currentTarget.contains(I.target)||(window.clearTimeout(M.current),$.current="")}),onPointerMove:U(e.onPointerMove,pn(I=>{const Y=I.target,j=O.current!==I.clientX;if(I.currentTarget.contains(Y)&&j){const J=I.clientX>O.current?"right":"left";H.current=J,O.current=I.clientX}}))})})})})})})});Hi.displayName=Be;var em="MenuGroup",Wo=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(ee.div,{role:"group",...r,ref:t})});Wo.displayName=em;var tm="MenuLabel",zi=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(ee.div,{...r,ref:t})});zi.displayName=tm;var sr="MenuItem",Wi="menu.itemSelect",ar=l.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...o}=e,s=l.useRef(null),a=un(sr,e.__scopeMenu),c=Ho(sr,e.__scopeMenu),d=de(t,s),f=l.useRef(!1),u=()=>{const p=s.current;if(!n&&p){const m=new CustomEvent(Wi,{bubbles:!0,cancelable:!0});p.addEventListener(Wi,v=>r==null?void 0:r(v),{once:!0}),ba(p,m),m.defaultPrevented?f.current=!1:a.onClose()}};return i.jsx(Vi,{...o,ref:d,disabled:n,onClick:U(e.onClick,u),onPointerDown:p=>{var m;(m=e.onPointerDown)==null||m.call(e,p),f.current=!0},onPointerUp:U(e.onPointerUp,p=>{var m;f.current||(m=p.currentTarget)==null||m.click()}),onKeyDown:U(e.onKeyDown,p=>{const m=c.searchRef.current!=="";n||m&&p.key===" "||$o.includes(p.key)&&(p.currentTarget.click(),p.preventDefault())})})});ar.displayName=sr;var Vi=l.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:o,...s}=e,a=Ho(sr,n),c=Fi(n),d=l.useRef(null),f=de(t,d),[u,p]=l.useState(!1),[m,v]=l.useState("");return l.useEffect(()=>{const g=d.current;g&&v((g.textContent??"").trim())},[s.children]),i.jsx(dn.ItemSlot,{scope:n,disabled:r,textValue:o??m,children:i.jsx(eg,{asChild:!0,...c,focusable:!r,children:i.jsx(ee.div,{role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:f,onPointerMove:U(e.onPointerMove,pn(g=>{r?a.onItemLeave(g):(a.onItemEnter(g),g.defaultPrevented||g.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:U(e.onPointerLeave,pn(g=>a.onItemLeave(g))),onFocus:U(e.onFocus,()=>p(!0)),onBlur:U(e.onBlur,()=>p(!1))})})})}),nm="MenuCheckboxItem",ji=l.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...o}=e;return i.jsx(Xi,{scope:e.__scopeMenu,checked:n,children:i.jsx(ar,{role:"menuitemcheckbox","aria-checked":ir(n)?"mixed":n,...o,ref:t,"data-state":jo(n),onSelect:U(o.onSelect,()=>r==null?void 0:r(ir(n)?!0:!n),{checkForDefaultPrevented:!1})})})});ji.displayName=nm;var Ri="MenuRadioGroup",[rm,om]=yt(Ri,{value:void 0,onValueChange:()=>{}}),Ki=l.forwardRef((e,t)=>{const{value:n,onValueChange:r,...o}=e,s=Ee(r);return i.jsx(rm,{scope:e.__scopeMenu,value:n,onValueChange:s,children:i.jsx(Wo,{...o,ref:t})})});Ki.displayName=Ri;var Gi="MenuRadioItem",qi=l.forwardRef((e,t)=>{const{value:n,...r}=e,o=om(Gi,e.__scopeMenu),s=n===o.value;return i.jsx(Xi,{scope:e.__scopeMenu,checked:s,children:i.jsx(ar,{role:"menuitemradio","aria-checked":s,...r,ref:t,"data-state":jo(s),onSelect:U(r.onSelect,()=>{var a;return(a=o.onValueChange)==null?void 0:a.call(o,n)},{checkForDefaultPrevented:!1})})})});qi.displayName=Gi;var Vo="MenuItemIndicator",[Xi,sm]=yt(Vo,{checked:!1}),Yi=l.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...o}=e,s=sm(Vo,n);return i.jsx(ke,{present:r||ir(s.checked)||s.checked===!0,children:i.jsx(ee.span,{...o,ref:t,"data-state":jo(s.checked)})})});Yi.displayName=Vo;var am="MenuSeparator",Ji=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(ee.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});Ji.displayName=am;var im="MenuArrow",Zi=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=or(n);return i.jsx(Io,{...o,...r,ref:t})});Zi.displayName=im;var cm="MenuSub",[Jw,Qi]=yt(cm),fn="MenuSubTrigger",ec=l.forwardRef((e,t)=>{const n=xt(fn,e.__scopeMenu),r=un(fn,e.__scopeMenu),o=Qi(fn,e.__scopeMenu),s=Ho(fn,e.__scopeMenu),a=l.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:d}=s,f={__scopeMenu:e.__scopeMenu},u=l.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return l.useEffect(()=>u,[u]),l.useEffect(()=>{const p=c.current;return()=>{window.clearTimeout(p),d(null)}},[c,d]),i.jsx(Bo,{asChild:!0,...f,children:i.jsx(Vi,{id:o.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":o.contentId,"data-state":rc(n.open),...e,ref:eo(t,o.onTriggerChange),onClick:p=>{var m;(m=e.onClick)==null||m.call(e,p),!(e.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:U(e.onPointerMove,pn(p=>{s.onItemEnter(p),!p.defaultPrevented&&!e.disabled&&!n.open&&!a.current&&(s.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:U(e.onPointerLeave,pn(p=>{var v,g;u();const m=(v=n.content)==null?void 0:v.getBoundingClientRect();if(m){const h=(g=n.content)==null?void 0:g.dataset.side,b=h==="right",w=b?-5:5,y=m[b?"left":"right"],x=m[b?"right":"left"];s.onPointerGraceIntentChange({area:[{x:p.clientX+w,y:p.clientY},{x:y,y:m.top},{x,y:m.top},{x,y:m.bottom},{x:y,y:m.bottom}],side:h}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(p),p.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:U(e.onKeyDown,p=>{var v;const m=s.searchRef.current!=="";e.disabled||m&&p.key===" "||Wg[r.dir].includes(p.key)&&(n.onOpenChange(!0),(v=n.content)==null||v.focus(),p.preventDefault())})})})});ec.displayName=fn;var tc="MenuSubContent",nc=l.forwardRef((e,t)=>{const n=Bi(Be,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=xt(Be,e.__scopeMenu),a=un(Be,e.__scopeMenu),c=Qi(tc,e.__scopeMenu),d=l.useRef(null),f=de(t,d);return i.jsx(dn.Provider,{scope:e.__scopeMenu,children:i.jsx(ke,{present:r||s.open,children:i.jsx(dn.Slot,{scope:e.__scopeMenu,children:i.jsx(zo,{id:c.contentId,"aria-labelledby":c.triggerId,...o,ref:f,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:u=>{var p;a.isUsingKeyboardRef.current&&((p=d.current)==null||p.focus()),u.preventDefault()},onCloseAutoFocus:u=>u.preventDefault(),onFocusOutside:U(e.onFocusOutside,u=>{u.target!==c.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:U(e.onEscapeKeyDown,u=>{a.onClose(),u.preventDefault()}),onKeyDown:U(e.onKeyDown,u=>{var v;const p=u.currentTarget.contains(u.target),m=Vg[a.dir].includes(u.key);p&&m&&(s.onOpenChange(!1),(v=c.trigger)==null||v.focus(),u.preventDefault())})})})})})});nc.displayName=tc;function rc(e){return e?"open":"closed"}function ir(e){return e==="indeterminate"}function jo(e){return ir(e)?"indeterminate":e?"checked":"unchecked"}function lm(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function dm(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function um(e,t,n){const o=t.length>1&&Array.from(t).every(f=>f===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let a=dm(e,Math.max(s,0));o.length===1&&(a=a.filter(f=>f!==n));const d=a.find(f=>f.toLowerCase().startsWith(o.toLowerCase()));return d!==n?d:void 0}function fm(e,t){const{x:n,y:r}=e;let o=!1;for(let s=0,a=t.length-1;s<t.length;a=s++){const c=t[s],d=t[a],f=c.x,u=c.y,p=d.x,m=d.y;u>r!=m>r&&n<(p-f)*(r-u)/(m-u)+f&&(o=!o)}return o}function pm(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return fm(n,t)}function pn(e){return t=>t.pointerType==="mouse"?e(t):void 0}var hm=$i,gm=Bo,mm=Ui,bm=Hi,vm=Wo,wm=zi,ym=ar,xm=ji,Sm=Ki,Cm=qi,Em=Yi,Nm=Ji,Tm=Zi,Am=ec,Im=nc,cr="DropdownMenu",[Pm,Zw]=We(cr,[Li]),Ae=Li(),[_m,oc]=Pm(cr),sc=e=>{const{__scopeDropdownMenu:t,children:n,dir:r,open:o,defaultOpen:s,onOpenChange:a,modal:c=!0}=e,d=Ae(t),f=l.useRef(null),[u,p]=it({prop:o,defaultProp:s??!1,onChange:a,caller:cr});return i.jsx(_m,{scope:t,triggerId:Ve(),triggerRef:f,contentId:Ve(),open:u,onOpenChange:p,onOpenToggle:l.useCallback(()=>p(m=>!m),[p]),modal:c,children:i.jsx(hm,{...d,open:u,onOpenChange:p,dir:r,modal:c,children:n})})};sc.displayName=cr;var ac="DropdownMenuTrigger",ic=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:r=!1,...o}=e,s=oc(ac,n),a=Ae(n);return i.jsx(gm,{asChild:!0,...a,children:i.jsx(ee.button,{type:"button",id:s.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":s.open?s.contentId:void 0,"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:eo(t,s.triggerRef),onPointerDown:U(e.onPointerDown,c=>{!r&&c.button===0&&c.ctrlKey===!1&&(s.onOpenToggle(),s.open||c.preventDefault())}),onKeyDown:U(e.onKeyDown,c=>{r||(["Enter"," "].includes(c.key)&&s.onOpenToggle(),c.key==="ArrowDown"&&s.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(c.key)&&c.preventDefault())})})})});ic.displayName=ac;var km="DropdownMenuPortal",cc=e=>{const{__scopeDropdownMenu:t,...n}=e,r=Ae(t);return i.jsx(mm,{...r,...n})};cc.displayName=km;var lc="DropdownMenuContent",dc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=oc(lc,n),s=Ae(n),a=l.useRef(!1);return i.jsx(bm,{id:o.contentId,"aria-labelledby":o.triggerId,...s,...r,ref:t,onCloseAutoFocus:U(e.onCloseAutoFocus,c=>{var d;a.current||(d=o.triggerRef.current)==null||d.focus(),a.current=!1,c.preventDefault()}),onInteractOutside:U(e.onInteractOutside,c=>{const d=c.detail.originalEvent,f=d.button===0&&d.ctrlKey===!0,u=d.button===2||f;(!o.modal||u)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});dc.displayName=lc;var Om="DropdownMenuGroup",Mm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(vm,{...o,...r,ref:t})});Mm.displayName=Om;var Dm="DropdownMenuLabel",uc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(wm,{...o,...r,ref:t})});uc.displayName=Dm;var Lm="DropdownMenuItem",fc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(ym,{...o,...r,ref:t})});fc.displayName=Lm;var Fm="DropdownMenuCheckboxItem",pc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(xm,{...o,...r,ref:t})});pc.displayName=Fm;var $m="DropdownMenuRadioGroup",Bm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Sm,{...o,...r,ref:t})});Bm.displayName=$m;var Um="DropdownMenuRadioItem",hc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Cm,{...o,...r,ref:t})});hc.displayName=Um;var Hm="DropdownMenuItemIndicator",gc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Em,{...o,...r,ref:t})});gc.displayName=Hm;var zm="DropdownMenuSeparator",mc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Nm,{...o,...r,ref:t})});mc.displayName=zm;var Wm="DropdownMenuArrow",Vm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Tm,{...o,...r,ref:t})});Vm.displayName=Wm;var jm="DropdownMenuSubTrigger",bc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Am,{...o,...r,ref:t})});bc.displayName=jm;var Rm="DropdownMenuSubContent",vc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Im,{...o,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});vc.displayName=Rm;var Km=sc,Gm=ic,qm=cc,wc=dc,yc=uc,xc=fc,Sc=pc,Cc=hc,Ec=gc,Nc=mc,Tc=bc,Ac=vc;const Xm=Km,Ym=Gm,Jm=l.forwardRef(({className:e,inset:t,children:n,...r},o)=>i.jsxs(Tc,{ref:o,className:A("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",t&&"pl-8",e),...r,children:[n,i.jsx(G.ChevronRight,{className:"ml-auto h-4 w-4"})]}));Jm.displayName=Tc.displayName;const Zm=l.forwardRef(({className:e,...t},n)=>i.jsx(Ac,{ref:n,className:A("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t}));Zm.displayName=Ac.displayName;const Ic=l.forwardRef(({className:e,sideOffset:t=4,...n},r)=>i.jsx(qm,{children:i.jsx(wc,{ref:r,sideOffset:t,className:A("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n})}));Ic.displayName=wc.displayName;const Pc=l.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(xc,{ref:r,className:A("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t&&"pl-8",e),...n}));Pc.displayName=xc.displayName;const Qm=l.forwardRef(({className:e,children:t,checked:n,...r},o)=>i.jsxs(Sc,{ref:o,className:A("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...r,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(Ec,{children:i.jsx(G.Check,{className:"h-4 w-4"})})}),t]}));Qm.displayName=Sc.displayName;const eb=l.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(Cc,{ref:r,className:A("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(Ec,{children:i.jsx(G.Circle,{className:"h-2 w-2 fill-current"})})}),t]}));eb.displayName=Cc.displayName;const tb=l.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(yc,{ref:r,className:A("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...n}));tb.displayName=yc.displayName;const nb=l.forwardRef(({className:e,...t},n)=>i.jsx(Nc,{ref:n,className:A("-mx-1 my-1 h-px bg-muted",e),...t}));nb.displayName=Nc.displayName;function hn({className:e="",placeholder:t="Type your message...",autoFocus:n=!0,maxHeight:r=void 0,streamingDebounceMs:o=40,enableFileUpload:s=!0,enableMessageEditing:a=!0,customStyles:c={},onMessageSent:d,onError:f}){const{currentThreadId:u,messages:p,isStreaming:m,streamingAssistantId:v,error:g,send:h,stop:b,lastCheckpointId:w,lastBranchEvent:y,listCheckpoints:x,navigateToCheckpoint:C,returnToLatest:E,hasMoreHistory:k,isLoadingHistory:T,loadOlderMessages:F}=Qr(),[M,$]=N.useState(""),[W,X]=N.useState(null),[H,O]=N.useState(null),[Z,L]=N.useState([]),[z,P]=N.useState(!1),[I,Y]=N.useState([]),[j,J]=N.useState(null),[D,V]=N.useState({}),be=N.useRef(null),re=N.useRef(null),R=N.useRef(null),ie=N.useRef(null),ue=N.useRef(!1),ce=N.useRef(!0),he=N.useRef(0),fe=N.useRef(null),[K,q]=N.useState("desktop");N.useEffect(()=>{const _=()=>{const B=window.innerWidth;q(B<640?"phone":B<1024?"tablet":"desktop")};return _(),window.addEventListener("resize",_),()=>window.removeEventListener("resize",_)},[]),N.useEffect(()=>{V({}),fe.current=null},[u]);const we=N.useCallback(async()=>{if(!k||T)return;const _=ie.current;if(!_)return;const B=_.scrollHeight,oe=_.scrollTop;ue.current=!0;try{await F()}catch(Q){console.warn("loadOlderMessages failed",Q)}finally{requestAnimationFrame(()=>{const Q=ie.current;if(!Q){ue.current=!1;return}const le=Q.scrollHeight;Q.scrollTop=oe+(le-B);const ve=le-Q.scrollTop-Q.clientHeight;ce.current=ve<=32,ue.current=!1})}},[k,T,F]);N.useEffect(()=>{const _=ie.current;if(!_)return;const B=()=>{_.scrollTop<=80&&we();const le=_.scrollHeight-_.scrollTop-_.clientHeight;ce.current=le<=80};return _.addEventListener("scroll",B),()=>_.removeEventListener("scroll",B)},[we]),N.useEffect(()=>{p.length<he.current&&(ce.current=!0),he.current=p.length},[p.length]),N.useEffect(()=>{const _=ie.current;_&&(ue.current||ce.current&&(_.scrollTop=_.scrollHeight,ce.current=!0))},[p]),N.useEffect(()=>{var _;n&&((_=re.current)==null||_.focus())},[n]),N.useEffect(()=>{g&&!z&&(f==null||f(g))},[g,z,f]),N.useEffect(()=>{let _=!0;if(!u){Y([]),J(null);return}return x(u).then(B=>{var le;if(!_)return;const oe=B.checkpoints||[];Y(oe);const Q=((le=oe.slice().sort((ve,Se)=>new Date(Se.createdAt).getTime()-new Date(ve.createdAt).getTime())[0])==null?void 0:le.checkpointId)||null;J(ve=>ve??Q)}).catch(()=>{}),()=>{_=!1}},[u,x]),N.useEffect(()=>{w&&J(w)},[w]);const te=_=>{if(_.length>_t)return`Message too long (${_.length}/${_t} characters)`;try{return ip(_),null}catch(B){return(B==null?void 0:B.message)||"Invalid message"}},ye=_=>{const B=_.content||[],oe=B.filter(Q=>Q.type==="text").map(Q=>Q.text).join("");if(oe)return oe;try{return JSON.stringify(B,null,2)}catch{return String(B)}},ae=N.useMemo(()=>{const _=new Map;for(const B of I)B!=null&&B.checkpointId&&_.set(B.checkpointId,B);return _},[I]);N.useEffect(()=>{if(!y)return;const _=[y.editedMessageId??"",y.parentCheckpointId??"",y.checkpointId??""].join("::");if(fe.current===_)return;fe.current=_;const B=y.editedMessageId;B&&V(oe=>{const Q=oe[B]??[],le=new Map;for(const Te of Q){const $e=Te.checkpointId??"__root__";le.set($e,Te)}const ve=(Te,$e,Kt)=>{if(Te===void 0)return;const yn=Te??"__root__",ht=le.get(yn);le.set(yn,{checkpointId:Te,parentCheckpointId:$e??(ht==null?void 0:ht.parentCheckpointId)??null,branchLabel:Kt??(ht==null?void 0:ht.branchLabel)??null})};if(y.parentCheckpointId){const Te=ae.get(y.parentCheckpointId),$e=le.get(y.parentCheckpointId),Kt=($e==null?void 0:$e.branchLabel)??(Te==null?void 0:Te.preview)??"Original";ve(y.parentCheckpointId,null,Kt)}ve(y.checkpointId??null,y.parentCheckpointId??null,y.branchLabel??null);const Se=Array.from(le.values()),Mr=y.parentCheckpointId??null;return Se.sort((Te,$e)=>{if(Te.checkpointId===Mr)return-1;if($e.checkpointId===Mr)return 1;const Kt=Te.checkpointId?ae.get(Te.checkpointId):void 0,yn=$e.checkpointId?ae.get($e.checkpointId):void 0,ht=Kt?new Date(Kt.createdAt).getTime():Number.MAX_SAFE_INTEGER,Aw=yn?new Date(yn.createdAt).getTime():Number.MAX_SAFE_INTEGER;return ht-Aw}),{...oe,[B]:Se}})},[y,ae]);const ge=_=>{const B=p[_],oe=B==null?void 0:B.id;if(!oe)return[];const Q=D[oe];return Q!=null&&Q.length?Q.map((le,ve)=>{const Se=le.checkpointId?ae.get(le.checkpointId):void 0,Mr=Se?new Date(Se.createdAt).getTime():void 0,Te=le.checkpointId?le.checkpointId===j:!j,$e=ve===0?"Original":`Branch ${ve}`;return{checkpoint_id:le.checkpointId,checkpoint_ns:Se==null?void 0:Se.checkpointNs,message_count:(Se==null?void 0:Se.messagesLen)??0,last_message_preview:(Se==null?void 0:Se.preview)??void 0,ts:Mr,isCurrent:Te,label:le.branchLabel??(Se==null?void 0:Se.preview)??$e}}):[]},Ie=_=>{var ve;if(_===void 0)return{canGoBack:!1,canGoForward:!1,currentIndex:0,totalBranches:0,currentLabel:null};const B=ge(_);if(B.length<=1)return{canGoBack:!1,canGoForward:!1,currentIndex:0,totalBranches:B.length,currentLabel:((ve=B[0])==null?void 0:ve.label)??null};const oe=B.findIndex(Se=>Se.isCurrent),Q=oe>=0?oe:0,le=B[Q]??null;return{canGoBack:Q>0,canGoForward:Q<B.length-1,currentIndex:Q,totalBranches:B.length,currentLabel:(le==null?void 0:le.label)??null}},rt=async()=>{const _=M.trim();if(!_&&Z.length===0)return;const B=te(_);if(B){O(B);return}try{const oe=window.__editingCheckpointId||j||void 0;await h(_,{checkpointId:oe,payloadExtras:W?{edit:!0,originalMessageId:W}:void 0,attachments:Z}),d==null||d(_),$(""),O(null),L([]),delete window.__editingCheckpointId,X(null),re.current&&(re.current.style.height="auto")}catch(oe){const Q=(oe==null?void 0:oe.message)||"Failed to send message";O(Q),f==null||f(Q)}},Vt=(_,B)=>{a&&(X(_),$(B),O(null),setTimeout(()=>{re.current&&(re.current.focus(),re.current.style.height="auto",re.current.style.height=re.current.scrollHeight+"px")},0))},gs=async(_,B)=>{const oe=p.find(le=>le.id===_);if(!oe){O("Message not found");return}const Q=ye(oe);X(_),$(Q),window.__editingCheckpointId=B,setTimeout(()=>{var le;return(le=re.current)==null?void 0:le.focus()},0)},jt=()=>{X(null),$(""),O(null),delete window.__editingCheckpointId,re.current&&(re.current.style.height="auto")},ms=_=>{_.key==="Enter"&&!_.shiftKey?(_.preventDefault(),rt()):_.key==="Escape"&&W&&(_.preventDefault(),jt())},kr=_=>{const B=Array.from(_.target.files||[]);L(oe=>[...oe,...B])},bs=_=>L(B=>B.filter((oe,Q)=>_!==Q)),Rt=async _=>{if(u){if(!_){await E(),J(null);return}await C(_),J(_)}},Or=async()=>{await E(),J(null)},pe=`flex flex-1 w-full flex-col min-h-0 min-w-0 max-h-full overflow-hidden bg-transparent ${e} ${c.container||""}`,Oe=`flex-1 min-h-0 min-w-0 max-h-full w-full overflow-y-auto overflow-x-auto overscroll-contain break-words break-anywhere p-4 space-y-4 bg-transparent ${c.messagesArea||""}`,Me=`flex-shrink-0 w-full border-t p-4 bg-transparent ${c.inputArea||""}`;return i.jsxs("div",{className:pe,children:[!!g&&!z&&i.jsxs("div",{className:"flex-shrink-0 bg-red-50 border border-red-200 text-red-800 px-4 py-2 text-sm flex items-center justify-between",children:[i.jsx("span",{children:g}),i.jsx(me,{variant:"ghost",size:"sm",onClick:()=>P(!0),className:"text-red-800 hover:bg-red-100","aria-label":"Dismiss error",children:i.jsx(G.X,{size:16})})]}),u&&I.length>0&&i.jsxs("div",{className:"flex-shrink-0 flex items-center gap-2 px-4 py-2 border-b border-border bg-muted/60 text-xs dark:bg-muted/50",children:[i.jsx(G.GitBranch,{className:"h-4 w-4 opacity-70"}),i.jsx("span",{className:"opacity-70",children:"Checkpoint:"}),i.jsxs("select",{className:"border border-border rounded px-2 py-1 text-xs bg-card text-foreground focus:outline-none focus:ring-1 focus:ring-ring dark:bg-secondary",value:j??"",onChange:_=>{const B=_.target.value||null;Rt(B)},children:[i.jsx("option",{value:"",children:"Latest"}),I.slice().sort((_,B)=>new Date(B.createdAt).getTime()-new Date(_.createdAt).getTime()).map(_=>i.jsxs("option",{value:_.checkpointId,children:[new Date(_.createdAt).toLocaleString(),_.preview?` — ${_.preview.slice(0,30)}`:""]},_.checkpointId))]})]}),i.jsxs("div",{ref:ie,className:Oe,style:r?{maxHeight:r}:void 0,children:[p.length===0?i.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:"No messages yet. Start a conversation!"}):i.jsxs(i.Fragment,{children:[(T||!k)&&i.jsx("div",{className:"flex justify-center py-2 text-xs text-muted-foreground",children:T?i.jsx(G.Loader2,{className:"h-4 w-4 animate-spin"}):"You've reached the beginning"}),p.map((_,B)=>i.jsx(Ca,{message:_,messageIndex:B,isStreamingMessage:m&&v===_.id,streamingDebounceMs:o,isEditing:W===_.id,showActions:a,showTimestamp:!1,showAgentName:!0,layoutSize:K,truncateToolMessages:!1,toolMessagePreviewLength:200,checkpointBranches:ge(B),currentCheckpointId:j??void 0,temporalNavigation:Ie(B),onSwitchToCheckpoint:Rt,onReturnToMainThread:Or,onNavigateToPreviousBranch:()=>{var le;const oe=ge(B),Q=Math.max(0,oe.findIndex(ve=>ve.isCurrent));if(Q>0){const ve=((le=oe[Q-1])==null?void 0:le.checkpoint_id)??null;Rt(ve??null)}},onNavigateToNextBranch:()=>{var le;const oe=ge(B),Q=Math.max(0,oe.findIndex(ve=>ve.isCurrent));if(Q>=0&&Q<oe.length-1){const ve=((le=oe[Q+1])==null?void 0:le.checkpoint_id)??null;Rt(ve??null)}},onEdit:(oe,Q)=>Vt(oe,Q),onEditFromCheckpoint:gs,onRegenerate:()=>{const oe=[...p].reverse().find(le=>le.role==="user"),Q=oe?ye(oe):"";Q&&h(Q,{checkpointId:j??void 0})},onCancelEdit:jt},_.id||B))]}),i.jsx("div",{ref:be})]}),i.jsxs("div",{className:Me,children:[W&&i.jsx("div",{className:"mb-3 p-3 bg-blue-50 border border-blue-200 rounded-lg",children:i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(G.Edit3,{size:16,className:"text-blue-600"}),i.jsx("span",{className:"text-sm font-medium text-blue-800",children:"Editing message"})]}),i.jsx(me,{variant:"ghost",size:"sm",onClick:jt,className:"text-blue-600 hover:bg-blue-100",children:i.jsx(G.X,{size:16})})]})}),s&&i.jsxs("div",{className:"mb-3",children:[i.jsx("input",{ref:R,type:"file",multiple:!0,onChange:_=>kr(_),className:"hidden"}),Z.length>0&&i.jsx("div",{className:"mb-3 flex flex-wrap gap-2",children:Z.map((_,B)=>i.jsxs("div",{className:"flex items-center gap-2 bg-gray-100 rounded-lg px-3 py-2 text-sm",children:[i.jsx(G.Paperclip,{size:14}),i.jsx("span",{className:"truncate max-w-[150px]",children:_.name}),i.jsx(me,{variant:"ghost",size:"sm",onClick:()=>bs(B),className:"h-4 w-4 p-0 text-gray-500 hover:text-red-500","aria-label":`Remove ${_.name}`,children:i.jsx(G.X,{size:12})})]},B))})]}),H&&i.jsx("div",{className:"mb-3 text-sm text-red-600 bg-red-50 border border-red-200 rounded px-3 py-2",children:H}),i.jsxs("div",{className:"flex items-end gap-2",children:[s&&i.jsxs(Xm,{children:[i.jsx(Ym,{asChild:!0,children:i.jsx(me,{type:"button",size:"icon",variant:"outline",disabled:m,title:"More input actions",className:c.moreButton||"",children:i.jsx(G.Plus,{size:16})})}),i.jsx(Ic,{align:"start",sideOffset:6,className:"w-52",children:i.jsxs(Pc,{onClick:()=>{var _;return(_=R.current)==null?void 0:_.click()},className:"cursor-pointer",children:[i.jsx(G.Paperclip,{className:"h-4 w-4 mr-2"})," Attach files or images"]})})]}),i.jsx("div",{className:"flex-1",children:i.jsx(ha,{ref:re,value:M,onChange:_=>{$(_.target.value),O(null),re.current&&(re.current.style.height="auto",re.current.style.height=`${re.current.scrollHeight}px`)},onKeyDown:ms,placeholder:W?"Edit your message...":t,className:`resize-none min-h-[44px] max-h-[20rem] w-full ${W?"border-blue-400 bg-blue-50":""} ${H?"border-red-400":""} ${c.textarea||""}`,disabled:!1,maxLength:_t,rows:1})}),i.jsx("div",{children:m?i.jsx(me,{type:"button",onClick:b,size:"icon",variant:"outline",className:"shrink-0",title:"Stop generating",children:i.jsx(G.Square,{size:16})}):i.jsx(me,{type:"button",onClick:rt,size:"icon",disabled:!M.trim()&&Z.length===0,className:`shrink-0 ${c.sendButton||""}`,title:W?"Save changes":"Send message",children:i.jsx(G.Send,{size:16})})})]}),M.length>_t*.8&&i.jsxs("div",{className:"mt-2 text-xs text-gray-500 text-right",children:[M.length,"/",_t]})]})]})}const gn=l.forwardRef(({className:e,type:t,...n},r)=>i.jsx("input",{type:t,className:A("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:r,...n}));gn.displayName="Input";function Ro(e,[t,n]){return Math.min(n,Math.max(t,e))}function rb(e,t){return l.useReducer((n,r)=>t[n][r]??n,e)}var Ko="ScrollArea",[_c,Qw]=We(Ko),[ob,Ue]=_c(Ko),kc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...a}=e,[c,d]=l.useState(null),[f,u]=l.useState(null),[p,m]=l.useState(null),[v,g]=l.useState(null),[h,b]=l.useState(null),[w,y]=l.useState(0),[x,C]=l.useState(0),[E,k]=l.useState(!1),[T,F]=l.useState(!1),M=de(t,W=>d(W)),$=$n(o);return i.jsx(ob,{scope:n,type:r,dir:$,scrollHideDelay:s,scrollArea:c,viewport:f,onViewportChange:u,content:p,onContentChange:m,scrollbarX:v,onScrollbarXChange:g,scrollbarXEnabled:E,onScrollbarXEnabledChange:k,scrollbarY:h,onScrollbarYChange:b,scrollbarYEnabled:T,onScrollbarYEnabledChange:F,onCornerWidthChange:y,onCornerHeightChange:C,children:i.jsx(ee.div,{dir:$,...a,ref:M,style:{position:"relative","--radix-scroll-area-corner-width":w+"px","--radix-scroll-area-corner-height":x+"px",...e.style}})})});kc.displayName=Ko;var Oc="ScrollAreaViewport",Mc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,nonce:o,...s}=e,a=Ue(Oc,n),c=l.useRef(null),d=de(t,c,a.onViewportChange);return i.jsxs(i.Fragment,{children:[i.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),i.jsx(ee.div,{"data-radix-scroll-area-viewport":"",...s,ref:d,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...e.style},children:i.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});Mc.displayName=Oc;var nt="ScrollAreaScrollbar",Go=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ue(nt,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:a}=o,c=e.orientation==="horizontal";return l.useEffect(()=>(c?s(!0):a(!0),()=>{c?s(!1):a(!1)}),[c,s,a]),o.type==="hover"?i.jsx(sb,{...r,ref:t,forceMount:n}):o.type==="scroll"?i.jsx(ab,{...r,ref:t,forceMount:n}):o.type==="auto"?i.jsx(Dc,{...r,ref:t,forceMount:n}):o.type==="always"?i.jsx(qo,{...r,ref:t}):null});Go.displayName=nt;var sb=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ue(nt,e.__scopeScrollArea),[s,a]=l.useState(!1);return l.useEffect(()=>{const c=o.scrollArea;let d=0;if(c){const f=()=>{window.clearTimeout(d),a(!0)},u=()=>{d=window.setTimeout(()=>a(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",f),c.addEventListener("pointerleave",u),()=>{window.clearTimeout(d),c.removeEventListener("pointerenter",f),c.removeEventListener("pointerleave",u)}}},[o.scrollArea,o.scrollHideDelay]),i.jsx(ke,{present:n||s,children:i.jsx(Dc,{"data-state":s?"visible":"hidden",...r,ref:t})})}),ab=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ue(nt,e.__scopeScrollArea),s=e.orientation==="horizontal",a=fr(()=>d("SCROLL_END"),100),[c,d]=rb("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return l.useEffect(()=>{if(c==="idle"){const f=window.setTimeout(()=>d("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(f)}},[c,o.scrollHideDelay,d]),l.useEffect(()=>{const f=o.viewport,u=s?"scrollLeft":"scrollTop";if(f){let p=f[u];const m=()=>{const v=f[u];p!==v&&(d("SCROLL"),a()),p=v};return f.addEventListener("scroll",m),()=>f.removeEventListener("scroll",m)}},[o.viewport,s,d,a]),i.jsx(ke,{present:n||c!=="hidden",children:i.jsx(qo,{"data-state":c==="hidden"?"hidden":"visible",...r,ref:t,onPointerEnter:U(e.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:U(e.onPointerLeave,()=>d("POINTER_LEAVE"))})})}),Dc=l.forwardRef((e,t)=>{const n=Ue(nt,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,a]=l.useState(!1),c=e.orientation==="horizontal",d=fr(()=>{if(n.viewport){const f=n.viewport.offsetWidth<n.viewport.scrollWidth,u=n.viewport.offsetHeight<n.viewport.scrollHeight;a(c?f:u)}},10);return Ht(n.viewport,d),Ht(n.content,d),i.jsx(ke,{present:r||s,children:i.jsx(qo,{"data-state":s?"visible":"hidden",...o,ref:t})})}),qo=l.forwardRef((e,t)=>{const{orientation:n="vertical",...r}=e,o=Ue(nt,e.__scopeScrollArea),s=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),f=Uc(c.viewport,c.content),u={...r,sizes:c,onSizesChange:d,hasThumb:f>0&&f<1,onThumbChange:m=>s.current=m,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:m=>a.current=m};function p(m,v){return fb(m,a.current,c,v)}return n==="horizontal"?i.jsx(ib,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const m=o.viewport.scrollLeft,v=Hc(m,c,o.dir);s.current.style.transform=`translate3d(${v}px, 0, 0)`}},onWheelScroll:m=>{o.viewport&&(o.viewport.scrollLeft=m)},onDragScroll:m=>{o.viewport&&(o.viewport.scrollLeft=p(m,o.dir))}}):n==="vertical"?i.jsx(cb,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const m=o.viewport.scrollTop,v=Hc(m,c);s.current.style.transform=`translate3d(0, ${v}px, 0)`}},onWheelScroll:m=>{o.viewport&&(o.viewport.scrollTop=m)},onDragScroll:m=>{o.viewport&&(o.viewport.scrollTop=p(m))}}):null}),ib=l.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=Ue(nt,e.__scopeScrollArea),[a,c]=l.useState(),d=l.useRef(null),f=de(t,d,s.onScrollbarXChange);return l.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),i.jsx(Fc,{"data-orientation":"horizontal",...o,ref:f,sizes:n,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":ur(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.x),onDragScroll:u=>e.onDragScroll(u.x),onWheelScroll:(u,p)=>{if(s.viewport){const m=s.viewport.scrollLeft+u.deltaX;e.onWheelScroll(m),Wc(m,p)&&u.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:dr(a.paddingLeft),paddingEnd:dr(a.paddingRight)}})}})}),cb=l.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=Ue(nt,e.__scopeScrollArea),[a,c]=l.useState(),d=l.useRef(null),f=de(t,d,s.onScrollbarYChange);return l.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),i.jsx(Fc,{"data-orientation":"vertical",...o,ref:f,sizes:n,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":ur(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.y),onDragScroll:u=>e.onDragScroll(u.y),onWheelScroll:(u,p)=>{if(s.viewport){const m=s.viewport.scrollTop+u.deltaY;e.onWheelScroll(m),Wc(m,p)&&u.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:dr(a.paddingTop),paddingEnd:dr(a.paddingBottom)}})}})}),[lb,Lc]=_c(nt),Fc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:a,onThumbPointerDown:c,onThumbPositionChange:d,onDragScroll:f,onWheelScroll:u,onResize:p,...m}=e,v=Ue(nt,n),[g,h]=l.useState(null),b=de(t,M=>h(M)),w=l.useRef(null),y=l.useRef(""),x=v.viewport,C=r.content-r.viewport,E=Ee(u),k=Ee(d),T=fr(p,10);function F(M){if(w.current){const $=M.clientX-w.current.left,W=M.clientY-w.current.top;f({x:$,y:W})}}return l.useEffect(()=>{const M=$=>{const W=$.target;(g==null?void 0:g.contains(W))&&E($,C)};return document.addEventListener("wheel",M,{passive:!1}),()=>document.removeEventListener("wheel",M,{passive:!1})},[x,g,C,E]),l.useEffect(k,[r,k]),Ht(g,T),Ht(v.content,T),i.jsx(lb,{scope:n,scrollbar:g,hasThumb:o,onThumbChange:Ee(s),onThumbPointerUp:Ee(a),onThumbPositionChange:k,onThumbPointerDown:Ee(c),children:i.jsx(ee.div,{...m,ref:b,style:{position:"absolute",...m.style},onPointerDown:U(e.onPointerDown,M=>{M.button===0&&(M.target.setPointerCapture(M.pointerId),w.current=g.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",v.viewport&&(v.viewport.style.scrollBehavior="auto"),F(M))}),onPointerMove:U(e.onPointerMove,F),onPointerUp:U(e.onPointerUp,M=>{const $=M.target;$.hasPointerCapture(M.pointerId)&&$.releasePointerCapture(M.pointerId),document.body.style.webkitUserSelect=y.current,v.viewport&&(v.viewport.style.scrollBehavior=""),w.current=null})})})}),lr="ScrollAreaThumb",$c=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Lc(lr,e.__scopeScrollArea);return i.jsx(ke,{present:n||o.hasThumb,children:i.jsx(db,{ref:t,...r})})}),db=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=Ue(lr,n),a=Lc(lr,n),{onThumbPositionChange:c}=a,d=de(t,p=>a.onThumbChange(p)),f=l.useRef(void 0),u=fr(()=>{f.current&&(f.current(),f.current=void 0)},100);return l.useEffect(()=>{const p=s.viewport;if(p){const m=()=>{if(u(),!f.current){const v=pb(p,c);f.current=v,c()}};return c(),p.addEventListener("scroll",m),()=>p.removeEventListener("scroll",m)}},[s.viewport,u,c]),i.jsx(ee.div,{"data-state":a.hasThumb?"visible":"hidden",...o,ref:d,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:U(e.onPointerDownCapture,p=>{const v=p.target.getBoundingClientRect(),g=p.clientX-v.left,h=p.clientY-v.top;a.onThumbPointerDown({x:g,y:h})}),onPointerUp:U(e.onPointerUp,a.onThumbPointerUp)})});$c.displayName=lr;var Xo="ScrollAreaCorner",Bc=l.forwardRef((e,t)=>{const n=Ue(Xo,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?i.jsx(ub,{...e,ref:t}):null});Bc.displayName=Xo;var ub=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=Ue(Xo,n),[s,a]=l.useState(0),[c,d]=l.useState(0),f=!!(s&&c);return Ht(o.scrollbarX,()=>{var p;const u=((p=o.scrollbarX)==null?void 0:p.offsetHeight)||0;o.onCornerHeightChange(u),d(u)}),Ht(o.scrollbarY,()=>{var p;const u=((p=o.scrollbarY)==null?void 0:p.offsetWidth)||0;o.onCornerWidthChange(u),a(u)}),f?i.jsx(ee.div,{...r,ref:t,style:{width:s,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function dr(e){return e?parseInt(e,10):0}function Uc(e,t){const n=e/t;return isNaN(n)?0:n}function ur(e){const t=Uc(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function fb(e,t,n,r="ltr"){const o=ur(n),s=o/2,a=t||s,c=o-a,d=n.scrollbar.paddingStart+a,f=n.scrollbar.size-n.scrollbar.paddingEnd-c,u=n.content-n.viewport,p=r==="ltr"?[0,u]:[u*-1,0];return zc([d,f],p)(e)}function Hc(e,t,n="ltr"){const r=ur(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,a=t.content-t.viewport,c=s-r,d=n==="ltr"?[0,a]:[a*-1,0],f=Ro(e,d);return zc([0,a],[0,c])(f)}function zc(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Wc(e,t){return e>0&&e<t}var pb=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function o(){const s={left:e.scrollLeft,top:e.scrollTop},a=n.left!==s.left,c=n.top!==s.top;(a||c)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function fr(e,t){const n=Ee(e),r=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(r.current),[]),l.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function Ht(e,t){const n=Ee(t);Ce(()=>{let r=0;if(e){const o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,n])}var Vc=kc,hb=Mc,gb=Bc;const jc=l.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(Vc,{ref:r,className:A("relative overflow-hidden",e),...n,children:[i.jsx(hb,{className:"h-full w-full rounded-[inherit] overflow-auto",children:t}),i.jsx(Rc,{}),i.jsx(gb,{})]}));jc.displayName=Vc.displayName;const Rc=l.forwardRef(({className:e,orientation:t="vertical",...n},r)=>i.jsx(Go,{ref:r,orientation:t,className:A("flex touch-none select-none transition-colors",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",e),...n,children:i.jsx($c,{className:"relative flex-1 rounded-full bg-border"})}));Rc.displayName=Go.displayName;function pr({className:e="",showCreateButton:t=!0,showDeleteButton:n=!0,showEditTitle:r=!0,maxHeight:o="400px",customStyles:s={},currentThreadId:a=null,navigateToThread:c,onThreadSelect:d,onThreadCreate:f,onThreadDelete:u}){const{loadThread:p,threads:m,refreshThreads:v,currentThreadId:g,createThread:h,deleteThread:b,renameThread:w}=Qr(),[y,x]=N.useState(m??[]),[C,E]=N.useState(!1),[k,T]=N.useState(null),[F,M]=N.useState(null),[$,W]=N.useState(""),[X,H]=N.useState(!1);N.useEffect(()=>{x(m??[])},[m]);const O=async D=>{try{await p(D),c==null||c(D),d==null||d(D)}catch(V){console.error("Failed to select thread:",V)}},Z=async()=>{try{H(!0);const D=await h();f==null||f(D),c==null||c(D)}catch(D){console.error("Failed to create thread:",D)}finally{H(!1)}},L=async(D,V)=>{if(V.stopPropagation(),!!confirm("Delete this thread?"))try{await b(D),u==null||u(D)}catch(be){console.error("Failed to delete thread:",be)}},z=(D,V)=>{V.stopPropagation(),M(D.threadId),W(D.title||`Thread ${D.threadId.slice(0,8)}`)},P=async D=>{if($.trim())try{await w(D,$.trim()),M(null),W("")}catch(V){console.error("Failed to update title:",V)}},I=()=>{M(null),W("")},Y=(D,V)=>{D.key==="Enter"?P(V):D.key==="Escape"&&I()},j=D=>{if(!D)return"";try{const V=new Date(D),re=new Date().getTime()-V.getTime(),R=Math.floor(re/(1e3*60*60*24));return R===0?V.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):R===1?"Yesterday":R<7?`${R} days ago`:V.toLocaleDateString()}catch{return""}},J=D=>D.title||`Thread ${D.threadId.slice(0,8)}`;return i.jsxs("div",{className:`flex flex-col h-full ${e} ${s.container||""}`,children:[t&&i.jsx("div",{className:s.header||"flex-shrink-0 p-2 border-b bg-slate-800 border-slate-700 text-slate-100 flex justify-end",children:i.jsx(me,{onClick:Z,disabled:X||C,className:s.createButton||"p-2",size:"sm",variant:"ghost",title:X?"Creating...":"New Chat",children:i.jsx(G.MessageSquarePlus,{size:20})})}),i.jsx(jc,{className:`flex-1 min-h-0 ${s.threadList||""}`,style:o?{maxHeight:o}:void 0,children:i.jsx("div",{className:"p-2 space-y-1 pb-4",children:C?i.jsx("div",{className:"text-center py-8 text-slate-400",children:"Loading…"}):y.length===0?i.jsxs("div",{className:"text-center py-8 text-slate-400",children:[i.jsx(G.MessageSquare,{className:"w-8 h-8 mx-auto mb-2 opacity-40 text-slate-500"}),i.jsx("p",{className:"text-sm text-slate-500",children:"No conversations yet"})]}):y.slice().sort((D,V)=>new Date(V.updatedAt||V.createdAt||"").getTime()-new Date(D.updatedAt||D.createdAt||"").getTime()).map(D=>i.jsxs("div",{onClick:()=>O(D.threadId),className:`group relative p-3 rounded-lg cursor-pointer transition-colors border ${(a??g)===D.threadId?`${s.activeThread||"bg-slate-600 border-slate-500"} `:`${s.threadItem||"bg-slate-700 border-slate-600 hover:bg-slate-600 text-gray-900 dark:text-slate-100"}`} ${s.threadItem||""} text-gray-900 dark:text-slate-100`,children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("div",{className:"flex-1 min-w-0",children:F===D.threadId?i.jsxs("div",{className:"flex items-center gap-2",onClick:V=>V.stopPropagation(),children:[i.jsx(gn,{value:$,onChange:V=>W(V.target.value),onKeyDown:V=>Y(V,D.threadId),className:"h-6 text-sm",autoFocus:!0}),i.jsx(me,{variant:"ghost",size:"sm",onClick:()=>P(D.threadId),className:"h-6 w-6 p-0",children:i.jsx(G.Check,{size:12})}),i.jsx(me,{variant:"ghost",size:"sm",onClick:I,className:"h-6 w-6 p-0",children:i.jsx(G.X,{size:12})})]}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"font-medium text-sm truncate text-gray-900 dark:text-slate-100",children:J(D)}),i.jsxs("div",{className:"flex items-center gap-2 text-xs text-gray-500 dark:text-slate-400 mt-1",children:[i.jsx(G.Calendar,{size:10}),i.jsx("span",{children:j(D.updatedAt||D.createdAt)})]})]})}),i.jsxs("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity ml-2",children:[r&&F!==D.threadId&&i.jsx(me,{variant:"ghost",size:"sm",onClick:V=>z(D,V),className:"h-6 w-6 p-0",title:"Edit title",children:i.jsx(G.Edit3,{size:12})}),n&&i.jsx(me,{variant:"ghost",size:"sm",onClick:V=>L(D.threadId,V),className:"h-6 w-6 p-0 text-red-400 hover:text-red-300 hover:bg-red-900/20",title:"Delete thread",children:i.jsx(G.Trash2,{size:12})})]})]}),a===D.threadId&&i.jsx("div",{className:"absolute left-0 top-1/2 -translate-y-1/2 w-1 h-8 bg-blue-400 rounded-r"})]},D.threadId))})})]})}const Kc=N.createContext(null);function mb({children:e,basePath:t="/chat"}){const n=N.useMemo(()=>t?t==="/"?"":t.endsWith("/")?t.slice(0,-1):t:"/chat",[t]),r={basePath:n,buildThreadPath:o=>`${n}/${o}`,buildBasePath:()=>n};return i.jsx(Kc.Provider,{value:r,children:e})}function bb(){const e=N.useContext(Kc);return e||{basePath:"/chat",buildThreadPath:t=>`/chat/${t}`,buildBasePath:()=>"/chat"}}const Gc={BASE_URL:"/",DEV:!1,MODE:"library",PROD:!0,SSR:!1};function mn(e){var o;const t=typeof{url:typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:Dr&&Dr.tagName.toUpperCase()==="SCRIPT"&&Dr.src||new URL("index.umd.js",document.baseURI).href}<"u"&&Gc?Gc[e]:void 0,n=(o=globalThis==null?void 0:globalThis.process)==null?void 0:o.env,r=n?n[e]:void 0;return(t??r)||void 0}function vb(){return mn("VITE_API_BASE_URL")||mn("NEXT_PUBLIC_API_BASE_URL")||void 0}function wb(){return mn("VITE_API_KEY")||mn("NEXT_PUBLIC_API_KEY")||mn("VITE_AUTH_TOKEN")||void 0}function qc(){const e=vb(),t=wb(),n={};return e&&(n.baseUrl=e),t&&(n.apiKey=t),n}function Xc(){const e=qc(),t=ot.getAuthToken();return{apiBaseUrl:e.baseUrl||ot.baseUrl||"http://localhost:8000",apiKey:t||e.apiKey||"",model:"gpt-4",temperature:.7,maxTokens:4096,layoutSize:"desktop",showThreads:!0,autoScrollMessages:!0,truncateToolMessages:!0,toolMessagePreviewLength:200,darkMode:!1,enableSound:!1,messageHistory:100}}const Yc="chat-settings";function yb(){try{const e=localStorage.getItem(Yc);return e?JSON.parse(e):{}}catch(e){return console.error("Failed to parse stored settings:",e),{}}}function xb(e){try{localStorage.setItem(Yc,JSON.stringify(e)),e.apiKey&&ot.setAuthToken(e.apiKey)}catch(t){console.error("Failed to save settings:",t)}}function Sb(){const e=Xc(),t=yb(),n=ot.getAuthToken();return{...e,...t,apiKey:n||t.apiKey||e.apiKey,apiBaseUrl:ot.baseUrl||t.apiBaseUrl||e.apiBaseUrl}}function Cb(e){e.apiKey&&ot.setAuthToken(e.apiKey),xb(e)}const Yo=768;function Eb(){const[e,t]=l.useState(void 0);return l.useEffect(()=>{const n=window.matchMedia(`(max-width: ${Yo-1}px)`),r=()=>{t(window.innerWidth<Yo)};return n.addEventListener("change",r),t(window.innerWidth<Yo),()=>n.removeEventListener("change",r)},[]),!!e}var Nb="Separator",Jc="horizontal",Tb=["horizontal","vertical"],Zc=l.forwardRef((e,t)=>{const{decorative:n,orientation:r=Jc,...o}=e,s=Ab(r)?r:Jc,c=n?{role:"none"}:{"aria-orientation":s==="vertical"?s:void 0,role:"separator"};return i.jsx(ee.div,{"data-orientation":s,...c,...o,ref:t})});Zc.displayName=Nb;function Ab(e){return Tb.includes(e)}var Qc=Zc;const Jo=l.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},o)=>i.jsx(Qc,{ref:o,decorative:n,orientation:t,className:A("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...r}));Jo.displayName=Qc.displayName;var hr="Dialog",[el,ey]=We(hr),[Ib,Ke]=el(hr),tl=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:s,modal:a=!0}=e,c=l.useRef(null),d=l.useRef(null),[f,u]=it({prop:r,defaultProp:o??!1,onChange:s,caller:hr});return i.jsx(Ib,{scope:t,triggerRef:c,contentRef:d,contentId:Ve(),titleId:Ve(),descriptionId:Ve(),open:f,onOpenChange:u,onOpenToggle:l.useCallback(()=>u(p=>!p),[u]),modal:a,children:n})};tl.displayName=hr;var nl="DialogTrigger",rl=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(nl,n),s=de(t,o.triggerRef);return i.jsx(ee.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":es(o.open),...r,ref:s,onClick:U(e.onClick,o.onOpenToggle)})});rl.displayName=nl;var Zo="DialogPortal",[Pb,ol]=el(Zo,{forceMount:void 0}),sl=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,s=Ke(Zo,t);return i.jsx(Pb,{scope:t,forceMount:n,children:l.Children.map(r,a=>i.jsx(ke,{present:n||s.open,children:i.jsx(Xn,{asChild:!0,container:o,children:a})}))})};sl.displayName=Zo;var gr="DialogOverlay",al=l.forwardRef((e,t)=>{const n=ol(gr,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=Ke(gr,e.__scopeDialog);return s.modal?i.jsx(ke,{present:r||s.open,children:i.jsx(kb,{...o,ref:t})}):null});al.displayName=gr;var _b=De.createSlot("DialogOverlay.RemoveScroll"),kb=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(gr,n);return i.jsx(rr,{as:_b,allowPinchZoom:!0,shards:[o.contentRef],children:i.jsx(ee.div,{"data-state":es(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),St="DialogContent",il=l.forwardRef((e,t)=>{const n=ol(St,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=Ke(St,e.__scopeDialog);return i.jsx(ke,{present:r||s.open,children:s.modal?i.jsx(Ob,{...o,ref:t}):i.jsx(Mb,{...o,ref:t})})});il.displayName=St;var Ob=l.forwardRef((e,t)=>{const n=Ke(St,e.__scopeDialog),r=l.useRef(null),o=de(t,n.contentRef,r);return l.useEffect(()=>{const s=r.current;if(s)return Oo(s)},[]),i.jsx(cl,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:U(e.onCloseAutoFocus,s=>{var a;s.preventDefault(),(a=n.triggerRef.current)==null||a.focus()}),onPointerDownOutside:U(e.onPointerDownOutside,s=>{const a=s.detail.originalEvent,c=a.button===0&&a.ctrlKey===!0;(a.button===2||c)&&s.preventDefault()}),onFocusOutside:U(e.onFocusOutside,s=>s.preventDefault())})}),Mb=l.forwardRef((e,t)=>{const n=Ke(St,e.__scopeDialog),r=l.useRef(!1),o=l.useRef(!1);return i.jsx(cl,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var a,c;(a=e.onCloseAutoFocus)==null||a.call(e,s),s.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),s.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:s=>{var d,f;(d=e.onInteractOutside)==null||d.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const a=s.target;((f=n.triggerRef.current)==null?void 0:f.contains(a))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&o.current&&s.preventDefault()}})}),cl=l.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,...a}=e,c=Ke(St,n),d=l.useRef(null),f=de(t,d);return co(),i.jsxs(i.Fragment,{children:[i.jsx(Bn,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:i.jsx(rn,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":es(c.open),...a,ref:f,onDismiss:()=>c.onOpenChange(!1)})}),i.jsxs(i.Fragment,{children:[i.jsx(Db,{titleId:c.titleId}),i.jsx(Fb,{contentRef:d,descriptionId:c.descriptionId})]})]})}),Qo="DialogTitle",ll=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(Qo,n);return i.jsx(ee.h2,{id:o.titleId,...r,ref:t})});ll.displayName=Qo;var dl="DialogDescription",ul=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(dl,n);return i.jsx(ee.p,{id:o.descriptionId,...r,ref:t})});ul.displayName=dl;var fl="DialogClose",pl=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(fl,n);return i.jsx(ee.button,{type:"button",...r,ref:t,onClick:U(e.onClick,()=>o.onOpenChange(!1))})});pl.displayName=fl;function es(e){return e?"open":"closed"}var hl="DialogTitleWarning",[ty,gl]=_f(hl,{contentName:St,titleName:Qo,docsSlug:"dialog"}),Db=({titleId:e})=>{const t=gl(hl),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
|
58
|
+
`)},Fg=0,Ut=[];function $g(e){var t=l.useRef([]),n=l.useRef([0,0]),r=l.useRef(),o=l.useState(Fg++)[0],s=l.useState(Ti)[0],a=l.useRef(e);l.useEffect(function(){a.current=e},[e]),l.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var h=og([e.lockRef.current],(e.shards||[]).map(Mi),!0).filter(Boolean);return h.forEach(function(b){return b.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),h.forEach(function(b){return b.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var c=l.useCallback(function(h,b){if("touches"in h&&h.touches.length===2||h.type==="wheel"&&h.ctrlKey)return!a.current.allowPinchZoom;var w=nr(h),y=n.current,x="deltaX"in h?h.deltaX:y[0]-w[0],C="deltaY"in h?h.deltaY:y[1]-w[1],E,k=h.target,T=Math.abs(x)>Math.abs(C)?"h":"v";if("touches"in h&&T==="h"&&k.type==="range")return!1;var F=Pi(T,k);if(!F)return!0;if(F?E=T:(E=T==="v"?"h":"v",F=Pi(T,k)),!F)return!1;if(!r.current&&"changedTouches"in h&&(x||C)&&(r.current=E),!E)return!0;var M=r.current||E;return Mg(M,b,h,M==="h"?x:C)},[]),d=l.useCallback(function(h){var b=h;if(!(!Ut.length||Ut[Ut.length-1]!==s)){var w="deltaY"in b?Oi(b):nr(b),y=t.current.filter(function(E){return E.name===b.type&&(E.target===b.target||b.target===E.shadowParent)&&Dg(E.delta,w)})[0];if(y&&y.should){b.cancelable&&b.preventDefault();return}if(!y){var x=(a.current.shards||[]).map(Mi).filter(Boolean).filter(function(E){return E.contains(b.target)}),C=x.length>0?c(b,x[0]):!a.current.noIsolation;C&&b.cancelable&&b.preventDefault()}}},[]),f=l.useCallback(function(h,b,w,y){var x={name:h,delta:b,target:w,should:y,shadowParent:Bg(w)};t.current.push(x),setTimeout(function(){t.current=t.current.filter(function(C){return C!==x})},1)},[]),u=l.useCallback(function(h){n.current=nr(h),r.current=void 0},[]),p=l.useCallback(function(h){f(h.type,Oi(h),h.target,c(h,e.lockRef.current))},[]),m=l.useCallback(function(h){f(h.type,nr(h),h.target,c(h,e.lockRef.current))},[]);l.useEffect(function(){return Ut.push(s),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:m}),document.addEventListener("wheel",d,Bt),document.addEventListener("touchmove",d,Bt),document.addEventListener("touchstart",u,Bt),function(){Ut=Ut.filter(function(h){return h!==s}),document.removeEventListener("wheel",d,Bt),document.removeEventListener("touchmove",d,Bt),document.removeEventListener("touchstart",u,Bt)}},[]);var v=e.removeScrollBar,g=e.inert;return l.createElement(l.Fragment,null,g?l.createElement(s,{styles:Lg(o)}):null,v?l.createElement(Tg,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Bg(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Ug=pg(Ni,$g);var rr=l.forwardRef(function(e,t){return l.createElement(er,tt({},e,{ref:t,sideCar:Ug}))});rr.classNames=er.classNames;var $o=["Enter"," "],Hg=["ArrowDown","PageUp","Home"],Di=["ArrowUp","PageDown","End"],zg=[...Hg,...Di],Wg={ltr:[...$o,"ArrowRight"],rtl:[...$o,"ArrowLeft"]},Vg={ltr:["ArrowLeft"],rtl:["ArrowRight"]},ln="Menu",[dn,jg,Rg]=so(ln),[yt,Li]=We(ln,[Rg,Lt,mi]),or=Lt(),Fi=mi(),[Kg,xt]=yt(ln),[Gg,un]=yt(ln),$i=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:o,onOpenChange:s,modal:a=!0}=e,c=or(t),[d,f]=l.useState(null),u=l.useRef(!1),p=Ee(s),m=$n(o);return l.useEffect(()=>{const v=()=>{u.current=!0,document.addEventListener("pointerdown",g,{capture:!0,once:!0}),document.addEventListener("pointermove",g,{capture:!0,once:!0})},g=()=>u.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",g,{capture:!0}),document.removeEventListener("pointermove",g,{capture:!0})}},[]),i.jsx(No,{...c,children:i.jsx(Kg,{scope:t,open:n,onOpenChange:p,content:d,onContentChange:f,children:i.jsx(Gg,{scope:t,onClose:l.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:u,dir:m,modal:a,children:r})})})};$i.displayName=ln;var qg="MenuAnchor",Bo=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=or(n);return i.jsx(To,{...o,...r,ref:t})});Bo.displayName=qg;var Uo="MenuPortal",[Xg,Bi]=yt(Uo,{forceMount:void 0}),Ui=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:o}=e,s=xt(Uo,t);return i.jsx(Xg,{scope:t,forceMount:n,children:i.jsx(ke,{present:n||s.open,children:i.jsx(Xn,{asChild:!0,container:o,children:r})})})};Ui.displayName=Uo;var Be="MenuContent",[Yg,Ho]=yt(Be),Hi=l.forwardRef((e,t)=>{const n=Bi(Be,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=xt(Be,e.__scopeMenu),a=un(Be,e.__scopeMenu);return i.jsx(dn.Provider,{scope:e.__scopeMenu,children:i.jsx(ke,{present:r||s.open,children:i.jsx(dn.Slot,{scope:e.__scopeMenu,children:a.modal?i.jsx(Jg,{...o,ref:t}):i.jsx(Zg,{...o,ref:t})})})})}),Jg=l.forwardRef((e,t)=>{const n=xt(Be,e.__scopeMenu),r=l.useRef(null),o=de(t,r);return l.useEffect(()=>{const s=r.current;if(s)return Oo(s)},[]),i.jsx(zo,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:U(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Zg=l.forwardRef((e,t)=>{const n=xt(Be,e.__scopeMenu);return i.jsx(zo,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),Qg=De.createSlot("MenuContent.ScrollLock"),zo=l.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:a,disableOutsidePointerEvents:c,onEntryFocus:d,onEscapeKeyDown:f,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:m,onDismiss:v,disableOutsideScroll:g,...h}=e,b=xt(Be,n),w=un(Be,n),y=or(n),x=Fi(n),C=jg(n),[E,k]=l.useState(null),T=l.useRef(null),F=de(t,T,b.onContentChange),M=l.useRef(0),$=l.useRef(""),W=l.useRef(0),X=l.useRef(null),H=l.useRef("right"),O=l.useRef(0),Z=g?rr:l.Fragment,L=g?{as:Qg,allowPinchZoom:!0}:void 0,z=I=>{var R,ie;const Y=$.current+I,j=C().filter(ue=>!ue.disabled),J=document.activeElement,D=(R=j.find(ue=>ue.ref.current===J))==null?void 0:R.textValue,V=j.map(ue=>ue.textValue),be=um(V,Y,D),re=(ie=j.find(ue=>ue.textValue===be))==null?void 0:ie.ref.current;(function ue(ce){$.current=ce,window.clearTimeout(M.current),ce!==""&&(M.current=window.setTimeout(()=>ue(""),1e3))})(Y),re&&setTimeout(()=>re.focus())};l.useEffect(()=>()=>window.clearTimeout(M.current),[]),co();const P=l.useCallback(I=>{var j,J;return H.current===((j=X.current)==null?void 0:j.side)&&pm(I,(J=X.current)==null?void 0:J.area)},[]);return i.jsx(Yg,{scope:n,searchRef:$,onItemEnter:l.useCallback(I=>{P(I)&&I.preventDefault()},[P]),onItemLeave:l.useCallback(I=>{var Y;P(I)||((Y=T.current)==null||Y.focus(),k(null))},[P]),onTriggerLeave:l.useCallback(I=>{P(I)&&I.preventDefault()},[P]),pointerGraceTimerRef:W,onPointerGraceIntentChange:l.useCallback(I=>{X.current=I},[]),children:i.jsx(Z,{...L,children:i.jsx(Bn,{asChild:!0,trapped:o,onMountAutoFocus:U(s,I=>{var Y;I.preventDefault(),(Y=T.current)==null||Y.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:i.jsx(rn,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:f,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:m,onDismiss:v,children:i.jsx(Qh,{asChild:!0,...x,dir:w.dir,orientation:"vertical",loop:r,currentTabStopId:E,onCurrentTabStopIdChange:k,onEntryFocus:U(d,I=>{w.isUsingKeyboardRef.current||I.preventDefault()}),preventScrollOnEntryFocus:!0,children:i.jsx(Ao,{role:"menu","aria-orientation":"vertical","data-state":rc(b.open),"data-radix-menu-content":"",dir:w.dir,...y,...h,ref:F,style:{outline:"none",...h.style},onKeyDown:U(h.onKeyDown,I=>{const j=I.target.closest("[data-radix-menu-content]")===I.currentTarget,J=I.ctrlKey||I.altKey||I.metaKey,D=I.key.length===1;j&&(I.key==="Tab"&&I.preventDefault(),!J&&D&&z(I.key));const V=T.current;if(I.target!==V||!zg.includes(I.key))return;I.preventDefault();const re=C().filter(R=>!R.disabled).map(R=>R.ref.current);Di.includes(I.key)&&re.reverse(),lm(re)}),onBlur:U(e.onBlur,I=>{I.currentTarget.contains(I.target)||(window.clearTimeout(M.current),$.current="")}),onPointerMove:U(e.onPointerMove,pn(I=>{const Y=I.target,j=O.current!==I.clientX;if(I.currentTarget.contains(Y)&&j){const J=I.clientX>O.current?"right":"left";H.current=J,O.current=I.clientX}}))})})})})})})});Hi.displayName=Be;var em="MenuGroup",Wo=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(ee.div,{role:"group",...r,ref:t})});Wo.displayName=em;var tm="MenuLabel",zi=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(ee.div,{...r,ref:t})});zi.displayName=tm;var sr="MenuItem",Wi="menu.itemSelect",ar=l.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...o}=e,s=l.useRef(null),a=un(sr,e.__scopeMenu),c=Ho(sr,e.__scopeMenu),d=de(t,s),f=l.useRef(!1),u=()=>{const p=s.current;if(!n&&p){const m=new CustomEvent(Wi,{bubbles:!0,cancelable:!0});p.addEventListener(Wi,v=>r==null?void 0:r(v),{once:!0}),ba(p,m),m.defaultPrevented?f.current=!1:a.onClose()}};return i.jsx(Vi,{...o,ref:d,disabled:n,onClick:U(e.onClick,u),onPointerDown:p=>{var m;(m=e.onPointerDown)==null||m.call(e,p),f.current=!0},onPointerUp:U(e.onPointerUp,p=>{var m;f.current||(m=p.currentTarget)==null||m.click()}),onKeyDown:U(e.onKeyDown,p=>{const m=c.searchRef.current!=="";n||m&&p.key===" "||$o.includes(p.key)&&(p.currentTarget.click(),p.preventDefault())})})});ar.displayName=sr;var Vi=l.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:o,...s}=e,a=Ho(sr,n),c=Fi(n),d=l.useRef(null),f=de(t,d),[u,p]=l.useState(!1),[m,v]=l.useState("");return l.useEffect(()=>{const g=d.current;g&&v((g.textContent??"").trim())},[s.children]),i.jsx(dn.ItemSlot,{scope:n,disabled:r,textValue:o??m,children:i.jsx(eg,{asChild:!0,...c,focusable:!r,children:i.jsx(ee.div,{role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:f,onPointerMove:U(e.onPointerMove,pn(g=>{r?a.onItemLeave(g):(a.onItemEnter(g),g.defaultPrevented||g.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:U(e.onPointerLeave,pn(g=>a.onItemLeave(g))),onFocus:U(e.onFocus,()=>p(!0)),onBlur:U(e.onBlur,()=>p(!1))})})})}),nm="MenuCheckboxItem",ji=l.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...o}=e;return i.jsx(Xi,{scope:e.__scopeMenu,checked:n,children:i.jsx(ar,{role:"menuitemcheckbox","aria-checked":ir(n)?"mixed":n,...o,ref:t,"data-state":jo(n),onSelect:U(o.onSelect,()=>r==null?void 0:r(ir(n)?!0:!n),{checkForDefaultPrevented:!1})})})});ji.displayName=nm;var Ri="MenuRadioGroup",[rm,om]=yt(Ri,{value:void 0,onValueChange:()=>{}}),Ki=l.forwardRef((e,t)=>{const{value:n,onValueChange:r,...o}=e,s=Ee(r);return i.jsx(rm,{scope:e.__scopeMenu,value:n,onValueChange:s,children:i.jsx(Wo,{...o,ref:t})})});Ki.displayName=Ri;var Gi="MenuRadioItem",qi=l.forwardRef((e,t)=>{const{value:n,...r}=e,o=om(Gi,e.__scopeMenu),s=n===o.value;return i.jsx(Xi,{scope:e.__scopeMenu,checked:s,children:i.jsx(ar,{role:"menuitemradio","aria-checked":s,...r,ref:t,"data-state":jo(s),onSelect:U(r.onSelect,()=>{var a;return(a=o.onValueChange)==null?void 0:a.call(o,n)},{checkForDefaultPrevented:!1})})})});qi.displayName=Gi;var Vo="MenuItemIndicator",[Xi,sm]=yt(Vo,{checked:!1}),Yi=l.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...o}=e,s=sm(Vo,n);return i.jsx(ke,{present:r||ir(s.checked)||s.checked===!0,children:i.jsx(ee.span,{...o,ref:t,"data-state":jo(s.checked)})})});Yi.displayName=Vo;var am="MenuSeparator",Ji=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return i.jsx(ee.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});Ji.displayName=am;var im="MenuArrow",Zi=l.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=or(n);return i.jsx(Io,{...o,...r,ref:t})});Zi.displayName=im;var cm="MenuSub",[Jw,Qi]=yt(cm),fn="MenuSubTrigger",ec=l.forwardRef((e,t)=>{const n=xt(fn,e.__scopeMenu),r=un(fn,e.__scopeMenu),o=Qi(fn,e.__scopeMenu),s=Ho(fn,e.__scopeMenu),a=l.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:d}=s,f={__scopeMenu:e.__scopeMenu},u=l.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return l.useEffect(()=>u,[u]),l.useEffect(()=>{const p=c.current;return()=>{window.clearTimeout(p),d(null)}},[c,d]),i.jsx(Bo,{asChild:!0,...f,children:i.jsx(Vi,{id:o.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":o.contentId,"data-state":rc(n.open),...e,ref:eo(t,o.onTriggerChange),onClick:p=>{var m;(m=e.onClick)==null||m.call(e,p),!(e.disabled||p.defaultPrevented)&&(p.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:U(e.onPointerMove,pn(p=>{s.onItemEnter(p),!p.defaultPrevented&&!e.disabled&&!n.open&&!a.current&&(s.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:U(e.onPointerLeave,pn(p=>{var v,g;u();const m=(v=n.content)==null?void 0:v.getBoundingClientRect();if(m){const h=(g=n.content)==null?void 0:g.dataset.side,b=h==="right",w=b?-5:5,y=m[b?"left":"right"],x=m[b?"right":"left"];s.onPointerGraceIntentChange({area:[{x:p.clientX+w,y:p.clientY},{x:y,y:m.top},{x,y:m.top},{x,y:m.bottom},{x:y,y:m.bottom}],side:h}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(p),p.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:U(e.onKeyDown,p=>{var v;const m=s.searchRef.current!=="";e.disabled||m&&p.key===" "||Wg[r.dir].includes(p.key)&&(n.onOpenChange(!0),(v=n.content)==null||v.focus(),p.preventDefault())})})})});ec.displayName=fn;var tc="MenuSubContent",nc=l.forwardRef((e,t)=>{const n=Bi(Be,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,s=xt(Be,e.__scopeMenu),a=un(Be,e.__scopeMenu),c=Qi(tc,e.__scopeMenu),d=l.useRef(null),f=de(t,d);return i.jsx(dn.Provider,{scope:e.__scopeMenu,children:i.jsx(ke,{present:r||s.open,children:i.jsx(dn.Slot,{scope:e.__scopeMenu,children:i.jsx(zo,{id:c.contentId,"aria-labelledby":c.triggerId,...o,ref:f,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:u=>{var p;a.isUsingKeyboardRef.current&&((p=d.current)==null||p.focus()),u.preventDefault()},onCloseAutoFocus:u=>u.preventDefault(),onFocusOutside:U(e.onFocusOutside,u=>{u.target!==c.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:U(e.onEscapeKeyDown,u=>{a.onClose(),u.preventDefault()}),onKeyDown:U(e.onKeyDown,u=>{var v;const p=u.currentTarget.contains(u.target),m=Vg[a.dir].includes(u.key);p&&m&&(s.onOpenChange(!1),(v=c.trigger)==null||v.focus(),u.preventDefault())})})})})})});nc.displayName=tc;function rc(e){return e?"open":"closed"}function ir(e){return e==="indeterminate"}function jo(e){return ir(e)?"indeterminate":e?"checked":"unchecked"}function lm(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function dm(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function um(e,t,n){const o=t.length>1&&Array.from(t).every(f=>f===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let a=dm(e,Math.max(s,0));o.length===1&&(a=a.filter(f=>f!==n));const d=a.find(f=>f.toLowerCase().startsWith(o.toLowerCase()));return d!==n?d:void 0}function fm(e,t){const{x:n,y:r}=e;let o=!1;for(let s=0,a=t.length-1;s<t.length;a=s++){const c=t[s],d=t[a],f=c.x,u=c.y,p=d.x,m=d.y;u>r!=m>r&&n<(p-f)*(r-u)/(m-u)+f&&(o=!o)}return o}function pm(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return fm(n,t)}function pn(e){return t=>t.pointerType==="mouse"?e(t):void 0}var hm=$i,gm=Bo,mm=Ui,bm=Hi,vm=Wo,wm=zi,ym=ar,xm=ji,Sm=Ki,Cm=qi,Em=Yi,Nm=Ji,Tm=Zi,Am=ec,Im=nc,cr="DropdownMenu",[Pm,Zw]=We(cr,[Li]),Ae=Li(),[_m,oc]=Pm(cr),sc=e=>{const{__scopeDropdownMenu:t,children:n,dir:r,open:o,defaultOpen:s,onOpenChange:a,modal:c=!0}=e,d=Ae(t),f=l.useRef(null),[u,p]=it({prop:o,defaultProp:s??!1,onChange:a,caller:cr});return i.jsx(_m,{scope:t,triggerId:Ve(),triggerRef:f,contentId:Ve(),open:u,onOpenChange:p,onOpenToggle:l.useCallback(()=>p(m=>!m),[p]),modal:c,children:i.jsx(hm,{...d,open:u,onOpenChange:p,dir:r,modal:c,children:n})})};sc.displayName=cr;var ac="DropdownMenuTrigger",ic=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:r=!1,...o}=e,s=oc(ac,n),a=Ae(n);return i.jsx(gm,{asChild:!0,...a,children:i.jsx(ee.button,{type:"button",id:s.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":s.open?s.contentId:void 0,"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:eo(t,s.triggerRef),onPointerDown:U(e.onPointerDown,c=>{!r&&c.button===0&&c.ctrlKey===!1&&(s.onOpenToggle(),s.open||c.preventDefault())}),onKeyDown:U(e.onKeyDown,c=>{r||(["Enter"," "].includes(c.key)&&s.onOpenToggle(),c.key==="ArrowDown"&&s.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(c.key)&&c.preventDefault())})})})});ic.displayName=ac;var km="DropdownMenuPortal",cc=e=>{const{__scopeDropdownMenu:t,...n}=e,r=Ae(t);return i.jsx(mm,{...r,...n})};cc.displayName=km;var lc="DropdownMenuContent",dc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=oc(lc,n),s=Ae(n),a=l.useRef(!1);return i.jsx(bm,{id:o.contentId,"aria-labelledby":o.triggerId,...s,...r,ref:t,onCloseAutoFocus:U(e.onCloseAutoFocus,c=>{var d;a.current||(d=o.triggerRef.current)==null||d.focus(),a.current=!1,c.preventDefault()}),onInteractOutside:U(e.onInteractOutside,c=>{const d=c.detail.originalEvent,f=d.button===0&&d.ctrlKey===!0,u=d.button===2||f;(!o.modal||u)&&(a.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});dc.displayName=lc;var Om="DropdownMenuGroup",Mm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(vm,{...o,...r,ref:t})});Mm.displayName=Om;var Dm="DropdownMenuLabel",uc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(wm,{...o,...r,ref:t})});uc.displayName=Dm;var Lm="DropdownMenuItem",fc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(ym,{...o,...r,ref:t})});fc.displayName=Lm;var Fm="DropdownMenuCheckboxItem",pc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(xm,{...o,...r,ref:t})});pc.displayName=Fm;var $m="DropdownMenuRadioGroup",Bm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Sm,{...o,...r,ref:t})});Bm.displayName=$m;var Um="DropdownMenuRadioItem",hc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Cm,{...o,...r,ref:t})});hc.displayName=Um;var Hm="DropdownMenuItemIndicator",gc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Em,{...o,...r,ref:t})});gc.displayName=Hm;var zm="DropdownMenuSeparator",mc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Nm,{...o,...r,ref:t})});mc.displayName=zm;var Wm="DropdownMenuArrow",Vm=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Tm,{...o,...r,ref:t})});Vm.displayName=Wm;var jm="DropdownMenuSubTrigger",bc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Am,{...o,...r,ref:t})});bc.displayName=jm;var Rm="DropdownMenuSubContent",vc=l.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=Ae(n);return i.jsx(Im,{...o,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});vc.displayName=Rm;var Km=sc,Gm=ic,qm=cc,wc=dc,yc=uc,xc=fc,Sc=pc,Cc=hc,Ec=gc,Nc=mc,Tc=bc,Ac=vc;const Xm=Km,Ym=Gm,Jm=l.forwardRef(({className:e,inset:t,children:n,...r},o)=>i.jsxs(Tc,{ref:o,className:A("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",t&&"pl-8",e),...r,children:[n,i.jsx(G.ChevronRight,{className:"ml-auto h-4 w-4"})]}));Jm.displayName=Tc.displayName;const Zm=l.forwardRef(({className:e,...t},n)=>i.jsx(Ac,{ref:n,className:A("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t}));Zm.displayName=Ac.displayName;const Ic=l.forwardRef(({className:e,sideOffset:t=4,...n},r)=>i.jsx(qm,{children:i.jsx(wc,{ref:r,sideOffset:t,className:A("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n})}));Ic.displayName=wc.displayName;const Pc=l.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(xc,{ref:r,className:A("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t&&"pl-8",e),...n}));Pc.displayName=xc.displayName;const Qm=l.forwardRef(({className:e,children:t,checked:n,...r},o)=>i.jsxs(Sc,{ref:o,className:A("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...r,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(Ec,{children:i.jsx(G.Check,{className:"h-4 w-4"})})}),t]}));Qm.displayName=Sc.displayName;const eb=l.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(Cc,{ref:r,className:A("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[i.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:i.jsx(Ec,{children:i.jsx(G.Circle,{className:"h-2 w-2 fill-current"})})}),t]}));eb.displayName=Cc.displayName;const tb=l.forwardRef(({className:e,inset:t,...n},r)=>i.jsx(yc,{ref:r,className:A("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...n}));tb.displayName=yc.displayName;const nb=l.forwardRef(({className:e,...t},n)=>i.jsx(Nc,{ref:n,className:A("-mx-1 my-1 h-px bg-muted",e),...t}));nb.displayName=Nc.displayName;function hn({className:e="",placeholder:t="Type your message...",autoFocus:n=!0,maxHeight:r=void 0,streamingDebounceMs:o=40,enableFileUpload:s=!0,enableMessageEditing:a=!0,customStyles:c={},onMessageSent:d,onError:f}){const{currentThreadId:u,messages:p,isStreaming:m,streamingAssistantId:v,error:g,send:h,stop:b,lastCheckpointId:w,lastBranchEvent:y,listCheckpoints:x,navigateToCheckpoint:C,returnToLatest:E,hasMoreHistory:k,isLoadingHistory:T,loadOlderMessages:F}=Qr(),[M,$]=N.useState(""),[W,X]=N.useState(null),[H,O]=N.useState(null),[Z,L]=N.useState([]),[z,P]=N.useState(!1),[I,Y]=N.useState([]),[j,J]=N.useState(null),[D,V]=N.useState({}),be=N.useRef(null),re=N.useRef(null),R=N.useRef(null),ie=N.useRef(null),ue=N.useRef(!1),ce=N.useRef(!0),he=N.useRef(0),fe=N.useRef(null),[K,q]=N.useState("desktop");N.useEffect(()=>{const _=()=>{const B=window.innerWidth;q(B<640?"phone":B<1024?"tablet":"desktop")};return _(),window.addEventListener("resize",_),()=>window.removeEventListener("resize",_)},[]),N.useEffect(()=>{V({}),fe.current=null},[u]);const we=N.useCallback(async()=>{if(!k||T)return;const _=ie.current;if(!_)return;const B=_.scrollHeight,oe=_.scrollTop;ue.current=!0;try{await F()}catch(Q){console.warn("loadOlderMessages failed",Q)}finally{requestAnimationFrame(()=>{const Q=ie.current;if(!Q){ue.current=!1;return}const le=Q.scrollHeight;Q.scrollTop=oe+(le-B);const ve=le-Q.scrollTop-Q.clientHeight;ce.current=ve<=32,ue.current=!1})}},[k,T,F]);N.useEffect(()=>{const _=ie.current;if(!_)return;const B=()=>{_.scrollTop<=80&&we();const le=_.scrollHeight-_.scrollTop-_.clientHeight;ce.current=le<=80};return _.addEventListener("scroll",B),()=>_.removeEventListener("scroll",B)},[we]),N.useEffect(()=>{p.length<he.current&&(ce.current=!0),he.current=p.length},[p.length]),N.useEffect(()=>{const _=ie.current;_&&(ue.current||ce.current&&(_.scrollTop=_.scrollHeight,ce.current=!0))},[p]),N.useEffect(()=>{var _;n&&((_=re.current)==null||_.focus())},[n]),N.useEffect(()=>{g&&!z&&(f==null||f(g))},[g,z,f]),N.useEffect(()=>{let _=!0;if(!u){Y([]),J(null);return}return x(u).then(B=>{var le;if(!_)return;const oe=B.checkpoints||[];Y(oe);const Q=((le=oe.slice().sort((ve,Se)=>new Date(Se.createdAt).getTime()-new Date(ve.createdAt).getTime())[0])==null?void 0:le.checkpointId)||null;J(ve=>ve??Q)}).catch(()=>{}),()=>{_=!1}},[u,x]),N.useEffect(()=>{w&&J(w)},[w]);const te=_=>{if(_.length>_t)return`Message too long (${_.length}/${_t} characters)`;try{return ip(_),null}catch(B){return(B==null?void 0:B.message)||"Invalid message"}},ye=_=>{const B=_.content||[],oe=B.filter(Q=>Q.type==="text").map(Q=>Q.text).join("");if(oe)return oe;try{return JSON.stringify(B,null,2)}catch{return String(B)}},ae=N.useMemo(()=>{const _=new Map;for(const B of I)B!=null&&B.checkpointId&&_.set(B.checkpointId,B);return _},[I]);N.useEffect(()=>{if(!y)return;const _=[y.editedMessageId??"",y.parentCheckpointId??"",y.checkpointId??""].join("::");if(fe.current===_)return;fe.current=_;const B=y.editedMessageId;B&&V(oe=>{const Q=oe[B]??[],le=new Map;for(const Te of Q){const $e=Te.checkpointId??"__root__";le.set($e,Te)}const ve=(Te,$e,Kt)=>{if(Te===void 0)return;const yn=Te??"__root__",ht=le.get(yn);le.set(yn,{checkpointId:Te,parentCheckpointId:$e??(ht==null?void 0:ht.parentCheckpointId)??null,branchLabel:Kt??(ht==null?void 0:ht.branchLabel)??null})};if(y.parentCheckpointId){const Te=ae.get(y.parentCheckpointId),$e=le.get(y.parentCheckpointId),Kt=($e==null?void 0:$e.branchLabel)??(Te==null?void 0:Te.preview)??"Original";ve(y.parentCheckpointId,null,Kt)}ve(y.checkpointId??null,y.parentCheckpointId??null,y.branchLabel??null);const Se=Array.from(le.values()),Mr=y.parentCheckpointId??null;return Se.sort((Te,$e)=>{if(Te.checkpointId===Mr)return-1;if($e.checkpointId===Mr)return 1;const Kt=Te.checkpointId?ae.get(Te.checkpointId):void 0,yn=$e.checkpointId?ae.get($e.checkpointId):void 0,ht=Kt?new Date(Kt.createdAt).getTime():Number.MAX_SAFE_INTEGER,Aw=yn?new Date(yn.createdAt).getTime():Number.MAX_SAFE_INTEGER;return ht-Aw}),{...oe,[B]:Se}})},[y,ae]);const ge=_=>{const B=p[_],oe=B==null?void 0:B.id;if(!oe)return[];const Q=D[oe];return Q!=null&&Q.length?Q.map((le,ve)=>{const Se=le.checkpointId?ae.get(le.checkpointId):void 0,Mr=Se?new Date(Se.createdAt).getTime():void 0,Te=le.checkpointId?le.checkpointId===j:!j,$e=ve===0?"Original":`Branch ${ve}`;return{checkpoint_id:le.checkpointId,checkpoint_ns:Se==null?void 0:Se.checkpointNs,message_count:(Se==null?void 0:Se.messagesLen)??0,last_message_preview:(Se==null?void 0:Se.preview)??void 0,ts:Mr,isCurrent:Te,label:le.branchLabel??(Se==null?void 0:Se.preview)??$e}}):[]},Ie=_=>{var ve;if(_===void 0)return{canGoBack:!1,canGoForward:!1,currentIndex:0,totalBranches:0,currentLabel:null};const B=ge(_);if(B.length<=1)return{canGoBack:!1,canGoForward:!1,currentIndex:0,totalBranches:B.length,currentLabel:((ve=B[0])==null?void 0:ve.label)??null};const oe=B.findIndex(Se=>Se.isCurrent),Q=oe>=0?oe:0,le=B[Q]??null;return{canGoBack:Q>0,canGoForward:Q<B.length-1,currentIndex:Q,totalBranches:B.length,currentLabel:(le==null?void 0:le.label)??null}},rt=async()=>{const _=M.trim();if(!_&&Z.length===0)return;const B=te(_);if(B){O(B);return}try{const oe=window.__editingCheckpointId||j||void 0;await h(_,{checkpointId:oe,payloadExtras:W?{edit:!0,originalMessageId:W}:void 0,attachments:Z}),d==null||d(_),$(""),O(null),L([]),delete window.__editingCheckpointId,X(null),re.current&&(re.current.style.height="auto")}catch(oe){const Q=(oe==null?void 0:oe.message)||"Failed to send message";O(Q),f==null||f(Q)}},Vt=(_,B)=>{a&&(X(_),$(B),O(null),setTimeout(()=>{re.current&&(re.current.focus(),re.current.style.height="auto",re.current.style.height=re.current.scrollHeight+"px")},0))},gs=async(_,B)=>{const oe=p.find(le=>le.id===_);if(!oe){O("Message not found");return}const Q=ye(oe);X(_),$(Q),window.__editingCheckpointId=B,setTimeout(()=>{var le;return(le=re.current)==null?void 0:le.focus()},0)},jt=()=>{X(null),$(""),O(null),delete window.__editingCheckpointId,re.current&&(re.current.style.height="auto")},ms=_=>{_.key==="Enter"&&!_.shiftKey?(_.preventDefault(),rt()):_.key==="Escape"&&W&&(_.preventDefault(),jt())},kr=_=>{const B=Array.from(_.target.files||[]);L(oe=>[...oe,...B])},bs=_=>L(B=>B.filter((oe,Q)=>_!==Q)),Rt=async _=>{if(u){if(!_){await E(),J(null);return}await C(_),J(_)}},Or=async()=>{await E(),J(null)},pe=`flex flex-1 w-full flex-col min-h-0 min-w-0 max-h-full overflow-hidden bg-transparent ${e} ${c.container||""}`,Oe=`flex-1 min-h-0 min-w-0 max-h-full w-full overflow-y-auto overflow-x-auto overscroll-contain break-words break-anywhere p-4 space-y-4 bg-transparent ${c.messagesArea||""}`,Me=`flex-shrink-0 w-full border-t p-4 bg-transparent ${c.inputArea||""}`;return i.jsxs("div",{className:pe,children:[!!g&&!z&&i.jsxs("div",{className:"flex-shrink-0 bg-red-50 border border-red-200 text-red-800 px-4 py-2 text-sm flex items-center justify-between",children:[i.jsx("span",{children:g}),i.jsx(me,{variant:"ghost",size:"sm",onClick:()=>P(!0),className:"text-red-800 hover:bg-red-100","aria-label":"Dismiss error",children:i.jsx(G.X,{size:16})})]}),u&&I.length>0&&i.jsxs("div",{className:"flex-shrink-0 flex items-center gap-2 px-4 py-2 border-b border-border bg-muted/60 text-xs dark:bg-muted/50",children:[i.jsx(G.GitBranch,{className:"h-4 w-4 opacity-70"}),i.jsx("span",{className:"opacity-70",children:"Checkpoint:"}),i.jsxs("select",{className:"border border-border rounded px-2 py-1 text-xs bg-card text-foreground focus:outline-none focus:ring-1 focus:ring-ring dark:bg-secondary",value:j??"",onChange:_=>{const B=_.target.value||null;Rt(B)},children:[i.jsx("option",{value:"",children:"Latest"}),I.slice().sort((_,B)=>new Date(B.createdAt).getTime()-new Date(_.createdAt).getTime()).map(_=>i.jsxs("option",{value:_.checkpointId,children:[new Date(_.createdAt).toLocaleString(),_.preview?` — ${_.preview.slice(0,30)}`:""]},_.checkpointId))]})]}),i.jsxs("div",{ref:ie,className:Oe,style:r?{maxHeight:r}:void 0,children:[p.length===0?i.jsx("div",{className:"flex items-center justify-center py-8 text-muted-foreground",children:"No messages yet. Start a conversation!"}):i.jsxs(i.Fragment,{children:[(T||!k)&&i.jsx("div",{className:"flex justify-center py-2 text-xs text-muted-foreground",children:T?i.jsx(G.Loader2,{className:"h-4 w-4 animate-spin"}):"You've reached the beginning"}),p.map((_,B)=>i.jsx(Ca,{message:_,messageIndex:B,isStreamingMessage:m&&v===_.id,streamingDebounceMs:o,isEditing:W===_.id,showActions:a,showTimestamp:!1,showAgentName:!0,layoutSize:K,truncateToolMessages:!1,toolMessagePreviewLength:200,checkpointBranches:ge(B),currentCheckpointId:j??void 0,temporalNavigation:Ie(B),onSwitchToCheckpoint:Rt,onReturnToMainThread:Or,onNavigateToPreviousBranch:()=>{var le;const oe=ge(B),Q=Math.max(0,oe.findIndex(ve=>ve.isCurrent));if(Q>0){const ve=((le=oe[Q-1])==null?void 0:le.checkpoint_id)??null;Rt(ve??null)}},onNavigateToNextBranch:()=>{var le;const oe=ge(B),Q=Math.max(0,oe.findIndex(ve=>ve.isCurrent));if(Q>=0&&Q<oe.length-1){const ve=((le=oe[Q+1])==null?void 0:le.checkpoint_id)??null;Rt(ve??null)}},onEdit:(oe,Q)=>Vt(oe,Q),onEditFromCheckpoint:gs,onRegenerate:()=>{const oe=[...p].reverse().find(le=>le.role==="user"),Q=oe?ye(oe):"";Q&&h(Q,{checkpointId:j??void 0})},onCancelEdit:jt},_.id||B))]}),i.jsx("div",{ref:be})]}),i.jsxs("div",{className:Me,children:[W&&i.jsx("div",{className:"mb-3 p-3 bg-blue-50 border border-blue-200 rounded-lg",children:i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsxs("div",{className:"flex items-center gap-2",children:[i.jsx(G.Edit3,{size:16,className:"text-blue-600"}),i.jsx("span",{className:"text-sm font-medium text-blue-800",children:"Editing message"})]}),i.jsx(me,{variant:"ghost",size:"sm",onClick:jt,className:"text-blue-600 hover:bg-blue-100",children:i.jsx(G.X,{size:16})})]})}),s&&i.jsxs("div",{className:"mb-3",children:[i.jsx("input",{ref:R,type:"file",multiple:!0,onChange:_=>kr(_),className:"hidden"}),Z.length>0&&i.jsx("div",{className:"mb-3 flex flex-wrap gap-2",children:Z.map((_,B)=>i.jsxs("div",{className:"flex items-center gap-2 bg-gray-100 rounded-lg px-3 py-2 text-sm",children:[i.jsx(G.Paperclip,{size:14}),i.jsx("span",{className:"truncate max-w-[150px]",children:_.name}),i.jsx(me,{variant:"ghost",size:"sm",onClick:()=>bs(B),className:"h-4 w-4 p-0 text-gray-500 hover:text-red-500","aria-label":`Remove ${_.name}`,children:i.jsx(G.X,{size:12})})]},B))})]}),H&&i.jsx("div",{className:"mb-3 text-sm text-red-600 bg-red-50 border border-red-200 rounded px-3 py-2",children:H}),i.jsxs("div",{className:"flex items-end gap-2",children:[s&&i.jsxs(Xm,{children:[i.jsx(Ym,{asChild:!0,children:i.jsx(me,{type:"button",size:"icon",variant:"outline",disabled:m,title:"More input actions",className:c.moreButton||"",children:i.jsx(G.Plus,{size:16})})}),i.jsx(Ic,{align:"start",sideOffset:6,className:"w-52",children:i.jsxs(Pc,{onClick:()=>{var _;return(_=R.current)==null?void 0:_.click()},className:"cursor-pointer",children:[i.jsx(G.Paperclip,{className:"h-4 w-4 mr-2"})," Attach files or images"]})})]}),i.jsx("div",{className:"flex-1",children:i.jsx(ha,{ref:re,value:M,onChange:_=>{$(_.target.value),O(null),re.current&&(re.current.style.height="auto",re.current.style.height=`${re.current.scrollHeight}px`)},onKeyDown:ms,placeholder:W?"Edit your message...":t,className:`resize-none min-h-[44px] max-h-[20rem] w-full transition-colors ${W?"border-blue-400 bg-blue-50 text-blue-900 dark:border-blue-500 dark:bg-blue-950/60 dark:text-blue-50":""} ${H?"border-red-400":""} ${c.textarea||""}`,disabled:!1,maxLength:_t,rows:1})}),i.jsx("div",{children:m?i.jsx(me,{type:"button",onClick:b,size:"icon",variant:"outline",className:"shrink-0",title:"Stop generating",children:i.jsx(G.Square,{size:16})}):i.jsx(me,{type:"button",onClick:rt,size:"icon",disabled:!M.trim()&&Z.length===0,className:`shrink-0 ${c.sendButton||""}`,title:W?"Save changes":"Send message",children:i.jsx(G.Send,{size:16})})})]}),M.length>_t*.8&&i.jsxs("div",{className:"mt-2 text-xs text-gray-500 text-right",children:[M.length,"/",_t]})]})]})}const gn=l.forwardRef(({className:e,type:t,...n},r)=>i.jsx("input",{type:t,className:A("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:r,...n}));gn.displayName="Input";function Ro(e,[t,n]){return Math.min(n,Math.max(t,e))}function rb(e,t){return l.useReducer((n,r)=>t[n][r]??n,e)}var Ko="ScrollArea",[_c,Qw]=We(Ko),[ob,Ue]=_c(Ko),kc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...a}=e,[c,d]=l.useState(null),[f,u]=l.useState(null),[p,m]=l.useState(null),[v,g]=l.useState(null),[h,b]=l.useState(null),[w,y]=l.useState(0),[x,C]=l.useState(0),[E,k]=l.useState(!1),[T,F]=l.useState(!1),M=de(t,W=>d(W)),$=$n(o);return i.jsx(ob,{scope:n,type:r,dir:$,scrollHideDelay:s,scrollArea:c,viewport:f,onViewportChange:u,content:p,onContentChange:m,scrollbarX:v,onScrollbarXChange:g,scrollbarXEnabled:E,onScrollbarXEnabledChange:k,scrollbarY:h,onScrollbarYChange:b,scrollbarYEnabled:T,onScrollbarYEnabledChange:F,onCornerWidthChange:y,onCornerHeightChange:C,children:i.jsx(ee.div,{dir:$,...a,ref:M,style:{position:"relative","--radix-scroll-area-corner-width":w+"px","--radix-scroll-area-corner-height":x+"px",...e.style}})})});kc.displayName=Ko;var Oc="ScrollAreaViewport",Mc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,nonce:o,...s}=e,a=Ue(Oc,n),c=l.useRef(null),d=de(t,c,a.onViewportChange);return i.jsxs(i.Fragment,{children:[i.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),i.jsx(ee.div,{"data-radix-scroll-area-viewport":"",...s,ref:d,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...e.style},children:i.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});Mc.displayName=Oc;var nt="ScrollAreaScrollbar",Go=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ue(nt,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:a}=o,c=e.orientation==="horizontal";return l.useEffect(()=>(c?s(!0):a(!0),()=>{c?s(!1):a(!1)}),[c,s,a]),o.type==="hover"?i.jsx(sb,{...r,ref:t,forceMount:n}):o.type==="scroll"?i.jsx(ab,{...r,ref:t,forceMount:n}):o.type==="auto"?i.jsx(Dc,{...r,ref:t,forceMount:n}):o.type==="always"?i.jsx(qo,{...r,ref:t}):null});Go.displayName=nt;var sb=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ue(nt,e.__scopeScrollArea),[s,a]=l.useState(!1);return l.useEffect(()=>{const c=o.scrollArea;let d=0;if(c){const f=()=>{window.clearTimeout(d),a(!0)},u=()=>{d=window.setTimeout(()=>a(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",f),c.addEventListener("pointerleave",u),()=>{window.clearTimeout(d),c.removeEventListener("pointerenter",f),c.removeEventListener("pointerleave",u)}}},[o.scrollArea,o.scrollHideDelay]),i.jsx(ke,{present:n||s,children:i.jsx(Dc,{"data-state":s?"visible":"hidden",...r,ref:t})})}),ab=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ue(nt,e.__scopeScrollArea),s=e.orientation==="horizontal",a=fr(()=>d("SCROLL_END"),100),[c,d]=rb("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return l.useEffect(()=>{if(c==="idle"){const f=window.setTimeout(()=>d("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(f)}},[c,o.scrollHideDelay,d]),l.useEffect(()=>{const f=o.viewport,u=s?"scrollLeft":"scrollTop";if(f){let p=f[u];const m=()=>{const v=f[u];p!==v&&(d("SCROLL"),a()),p=v};return f.addEventListener("scroll",m),()=>f.removeEventListener("scroll",m)}},[o.viewport,s,d,a]),i.jsx(ke,{present:n||c!=="hidden",children:i.jsx(qo,{"data-state":c==="hidden"?"hidden":"visible",...r,ref:t,onPointerEnter:U(e.onPointerEnter,()=>d("POINTER_ENTER")),onPointerLeave:U(e.onPointerLeave,()=>d("POINTER_LEAVE"))})})}),Dc=l.forwardRef((e,t)=>{const n=Ue(nt,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,a]=l.useState(!1),c=e.orientation==="horizontal",d=fr(()=>{if(n.viewport){const f=n.viewport.offsetWidth<n.viewport.scrollWidth,u=n.viewport.offsetHeight<n.viewport.scrollHeight;a(c?f:u)}},10);return Ht(n.viewport,d),Ht(n.content,d),i.jsx(ke,{present:r||s,children:i.jsx(qo,{"data-state":s?"visible":"hidden",...o,ref:t})})}),qo=l.forwardRef((e,t)=>{const{orientation:n="vertical",...r}=e,o=Ue(nt,e.__scopeScrollArea),s=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),f=Uc(c.viewport,c.content),u={...r,sizes:c,onSizesChange:d,hasThumb:f>0&&f<1,onThumbChange:m=>s.current=m,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:m=>a.current=m};function p(m,v){return fb(m,a.current,c,v)}return n==="horizontal"?i.jsx(ib,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const m=o.viewport.scrollLeft,v=Hc(m,c,o.dir);s.current.style.transform=`translate3d(${v}px, 0, 0)`}},onWheelScroll:m=>{o.viewport&&(o.viewport.scrollLeft=m)},onDragScroll:m=>{o.viewport&&(o.viewport.scrollLeft=p(m,o.dir))}}):n==="vertical"?i.jsx(cb,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const m=o.viewport.scrollTop,v=Hc(m,c);s.current.style.transform=`translate3d(0, ${v}px, 0)`}},onWheelScroll:m=>{o.viewport&&(o.viewport.scrollTop=m)},onDragScroll:m=>{o.viewport&&(o.viewport.scrollTop=p(m))}}):null}),ib=l.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=Ue(nt,e.__scopeScrollArea),[a,c]=l.useState(),d=l.useRef(null),f=de(t,d,s.onScrollbarXChange);return l.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),i.jsx(Fc,{"data-orientation":"horizontal",...o,ref:f,sizes:n,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":ur(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.x),onDragScroll:u=>e.onDragScroll(u.x),onWheelScroll:(u,p)=>{if(s.viewport){const m=s.viewport.scrollLeft+u.deltaX;e.onWheelScroll(m),Wc(m,p)&&u.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:dr(a.paddingLeft),paddingEnd:dr(a.paddingRight)}})}})}),cb=l.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=Ue(nt,e.__scopeScrollArea),[a,c]=l.useState(),d=l.useRef(null),f=de(t,d,s.onScrollbarYChange);return l.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),i.jsx(Fc,{"data-orientation":"vertical",...o,ref:f,sizes:n,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":ur(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.y),onDragScroll:u=>e.onDragScroll(u.y),onWheelScroll:(u,p)=>{if(s.viewport){const m=s.viewport.scrollTop+u.deltaY;e.onWheelScroll(m),Wc(m,p)&&u.preventDefault()}},onResize:()=>{d.current&&s.viewport&&a&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:dr(a.paddingTop),paddingEnd:dr(a.paddingBottom)}})}})}),[lb,Lc]=_c(nt),Fc=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:a,onThumbPointerDown:c,onThumbPositionChange:d,onDragScroll:f,onWheelScroll:u,onResize:p,...m}=e,v=Ue(nt,n),[g,h]=l.useState(null),b=de(t,M=>h(M)),w=l.useRef(null),y=l.useRef(""),x=v.viewport,C=r.content-r.viewport,E=Ee(u),k=Ee(d),T=fr(p,10);function F(M){if(w.current){const $=M.clientX-w.current.left,W=M.clientY-w.current.top;f({x:$,y:W})}}return l.useEffect(()=>{const M=$=>{const W=$.target;(g==null?void 0:g.contains(W))&&E($,C)};return document.addEventListener("wheel",M,{passive:!1}),()=>document.removeEventListener("wheel",M,{passive:!1})},[x,g,C,E]),l.useEffect(k,[r,k]),Ht(g,T),Ht(v.content,T),i.jsx(lb,{scope:n,scrollbar:g,hasThumb:o,onThumbChange:Ee(s),onThumbPointerUp:Ee(a),onThumbPositionChange:k,onThumbPointerDown:Ee(c),children:i.jsx(ee.div,{...m,ref:b,style:{position:"absolute",...m.style},onPointerDown:U(e.onPointerDown,M=>{M.button===0&&(M.target.setPointerCapture(M.pointerId),w.current=g.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",v.viewport&&(v.viewport.style.scrollBehavior="auto"),F(M))}),onPointerMove:U(e.onPointerMove,F),onPointerUp:U(e.onPointerUp,M=>{const $=M.target;$.hasPointerCapture(M.pointerId)&&$.releasePointerCapture(M.pointerId),document.body.style.webkitUserSelect=y.current,v.viewport&&(v.viewport.style.scrollBehavior=""),w.current=null})})})}),lr="ScrollAreaThumb",$c=l.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Lc(lr,e.__scopeScrollArea);return i.jsx(ke,{present:n||o.hasThumb,children:i.jsx(db,{ref:t,...r})})}),db=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=Ue(lr,n),a=Lc(lr,n),{onThumbPositionChange:c}=a,d=de(t,p=>a.onThumbChange(p)),f=l.useRef(void 0),u=fr(()=>{f.current&&(f.current(),f.current=void 0)},100);return l.useEffect(()=>{const p=s.viewport;if(p){const m=()=>{if(u(),!f.current){const v=pb(p,c);f.current=v,c()}};return c(),p.addEventListener("scroll",m),()=>p.removeEventListener("scroll",m)}},[s.viewport,u,c]),i.jsx(ee.div,{"data-state":a.hasThumb?"visible":"hidden",...o,ref:d,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:U(e.onPointerDownCapture,p=>{const v=p.target.getBoundingClientRect(),g=p.clientX-v.left,h=p.clientY-v.top;a.onThumbPointerDown({x:g,y:h})}),onPointerUp:U(e.onPointerUp,a.onThumbPointerUp)})});$c.displayName=lr;var Xo="ScrollAreaCorner",Bc=l.forwardRef((e,t)=>{const n=Ue(Xo,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?i.jsx(ub,{...e,ref:t}):null});Bc.displayName=Xo;var ub=l.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=Ue(Xo,n),[s,a]=l.useState(0),[c,d]=l.useState(0),f=!!(s&&c);return Ht(o.scrollbarX,()=>{var p;const u=((p=o.scrollbarX)==null?void 0:p.offsetHeight)||0;o.onCornerHeightChange(u),d(u)}),Ht(o.scrollbarY,()=>{var p;const u=((p=o.scrollbarY)==null?void 0:p.offsetWidth)||0;o.onCornerWidthChange(u),a(u)}),f?i.jsx(ee.div,{...r,ref:t,style:{width:s,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function dr(e){return e?parseInt(e,10):0}function Uc(e,t){const n=e/t;return isNaN(n)?0:n}function ur(e){const t=Uc(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function fb(e,t,n,r="ltr"){const o=ur(n),s=o/2,a=t||s,c=o-a,d=n.scrollbar.paddingStart+a,f=n.scrollbar.size-n.scrollbar.paddingEnd-c,u=n.content-n.viewport,p=r==="ltr"?[0,u]:[u*-1,0];return zc([d,f],p)(e)}function Hc(e,t,n="ltr"){const r=ur(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,a=t.content-t.viewport,c=s-r,d=n==="ltr"?[0,a]:[a*-1,0],f=Ro(e,d);return zc([0,a],[0,c])(f)}function zc(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Wc(e,t){return e>0&&e<t}var pb=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function o(){const s={left:e.scrollLeft,top:e.scrollTop},a=n.left!==s.left,c=n.top!==s.top;(a||c)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function fr(e,t){const n=Ee(e),r=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(r.current),[]),l.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function Ht(e,t){const n=Ee(t);Ce(()=>{let r=0;if(e){const o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,n])}var Vc=kc,hb=Mc,gb=Bc;const jc=l.forwardRef(({className:e,children:t,...n},r)=>i.jsxs(Vc,{ref:r,className:A("relative overflow-hidden",e),...n,children:[i.jsx(hb,{className:"h-full w-full rounded-[inherit] overflow-auto",children:t}),i.jsx(Rc,{}),i.jsx(gb,{})]}));jc.displayName=Vc.displayName;const Rc=l.forwardRef(({className:e,orientation:t="vertical",...n},r)=>i.jsx(Go,{ref:r,orientation:t,className:A("flex touch-none select-none transition-colors",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",e),...n,children:i.jsx($c,{className:"relative flex-1 rounded-full bg-border"})}));Rc.displayName=Go.displayName;function pr({className:e="",showCreateButton:t=!0,showDeleteButton:n=!0,showEditTitle:r=!0,maxHeight:o="400px",customStyles:s={},currentThreadId:a=null,navigateToThread:c,onThreadSelect:d,onThreadCreate:f,onThreadDelete:u}){const{loadThread:p,threads:m,refreshThreads:v,currentThreadId:g,createThread:h,deleteThread:b,renameThread:w}=Qr(),[y,x]=N.useState(m??[]),[C,E]=N.useState(!1),[k,T]=N.useState(null),[F,M]=N.useState(null),[$,W]=N.useState(""),[X,H]=N.useState(!1);N.useEffect(()=>{x(m??[])},[m]);const O=async D=>{try{await p(D),c==null||c(D),d==null||d(D)}catch(V){console.error("Failed to select thread:",V)}},Z=async()=>{try{H(!0);const D=await h();f==null||f(D),c==null||c(D)}catch(D){console.error("Failed to create thread:",D)}finally{H(!1)}},L=async(D,V)=>{if(V.stopPropagation(),!!confirm("Delete this thread?"))try{await b(D),u==null||u(D)}catch(be){console.error("Failed to delete thread:",be)}},z=(D,V)=>{V.stopPropagation(),M(D.threadId),W(D.title||`Thread ${D.threadId.slice(0,8)}`)},P=async D=>{if($.trim())try{await w(D,$.trim()),M(null),W("")}catch(V){console.error("Failed to update title:",V)}},I=()=>{M(null),W("")},Y=(D,V)=>{D.key==="Enter"?P(V):D.key==="Escape"&&I()},j=D=>{if(!D)return"";try{const V=new Date(D),re=new Date().getTime()-V.getTime(),R=Math.floor(re/(1e3*60*60*24));return R===0?V.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):R===1?"Yesterday":R<7?`${R} days ago`:V.toLocaleDateString()}catch{return""}},J=D=>D.title||`Thread ${D.threadId.slice(0,8)}`;return i.jsxs("div",{className:`flex flex-col h-full ${e} ${s.container||""}`,children:[t&&i.jsx("div",{className:s.header||"flex-shrink-0 p-2 border-b bg-slate-800 border-slate-700 text-slate-100 flex justify-end",children:i.jsx(me,{onClick:Z,disabled:X||C,className:s.createButton||"p-2",size:"sm",variant:"ghost",title:X?"Creating...":"New Chat",children:i.jsx(G.MessageSquarePlus,{size:20})})}),i.jsx(jc,{className:`flex-1 min-h-0 ${s.threadList||""}`,style:o?{maxHeight:o}:void 0,children:i.jsx("div",{className:"p-2 space-y-1 pb-4",children:C?i.jsx("div",{className:"text-center py-8 text-slate-400",children:"Loading…"}):y.length===0?i.jsxs("div",{className:"text-center py-8 text-slate-400",children:[i.jsx(G.MessageSquare,{className:"w-8 h-8 mx-auto mb-2 opacity-40 text-slate-500"}),i.jsx("p",{className:"text-sm text-slate-500",children:"No conversations yet"})]}):y.slice().sort((D,V)=>new Date(V.updatedAt||V.createdAt||"").getTime()-new Date(D.updatedAt||D.createdAt||"").getTime()).map(D=>i.jsxs("div",{onClick:()=>O(D.threadId),className:`group relative p-3 rounded-lg cursor-pointer transition-colors border ${(a??g)===D.threadId?`${s.activeThread||"bg-slate-600 border-slate-500"} `:`${s.threadItem||"bg-slate-700 border-slate-600 hover:bg-slate-600 text-gray-900 dark:text-slate-100"}`} ${s.threadItem||""} text-gray-900 dark:text-slate-100`,children:[i.jsxs("div",{className:"flex items-center justify-between",children:[i.jsx("div",{className:"flex-1 min-w-0",children:F===D.threadId?i.jsxs("div",{className:"flex items-center gap-2",onClick:V=>V.stopPropagation(),children:[i.jsx(gn,{value:$,onChange:V=>W(V.target.value),onKeyDown:V=>Y(V,D.threadId),className:"h-6 text-sm",autoFocus:!0}),i.jsx(me,{variant:"ghost",size:"sm",onClick:()=>P(D.threadId),className:"h-6 w-6 p-0",children:i.jsx(G.Check,{size:12})}),i.jsx(me,{variant:"ghost",size:"sm",onClick:I,className:"h-6 w-6 p-0",children:i.jsx(G.X,{size:12})})]}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"font-medium text-sm truncate text-gray-900 dark:text-slate-100",children:J(D)}),i.jsxs("div",{className:"flex items-center gap-2 text-xs text-gray-500 dark:text-slate-400 mt-1",children:[i.jsx(G.Calendar,{size:10}),i.jsx("span",{children:j(D.updatedAt||D.createdAt)})]})]})}),i.jsxs("div",{className:"flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity ml-2",children:[r&&F!==D.threadId&&i.jsx(me,{variant:"ghost",size:"sm",onClick:V=>z(D,V),className:"h-6 w-6 p-0",title:"Edit title",children:i.jsx(G.Edit3,{size:12})}),n&&i.jsx(me,{variant:"ghost",size:"sm",onClick:V=>L(D.threadId,V),className:"h-6 w-6 p-0 text-red-400 hover:text-red-300 hover:bg-red-900/20",title:"Delete thread",children:i.jsx(G.Trash2,{size:12})})]})]}),a===D.threadId&&i.jsx("div",{className:"absolute left-0 top-1/2 -translate-y-1/2 w-1 h-8 bg-blue-400 rounded-r"})]},D.threadId))})})]})}const Kc=N.createContext(null);function mb({children:e,basePath:t="/chat"}){const n=N.useMemo(()=>t?t==="/"?"":t.endsWith("/")?t.slice(0,-1):t:"/chat",[t]),r={basePath:n,buildThreadPath:o=>`${n}/${o}`,buildBasePath:()=>n};return i.jsx(Kc.Provider,{value:r,children:e})}function bb(){const e=N.useContext(Kc);return e||{basePath:"/chat",buildThreadPath:t=>`/chat/${t}`,buildBasePath:()=>"/chat"}}const Gc={BASE_URL:"/",DEV:!1,MODE:"library",PROD:!0,SSR:!1};function mn(e){var o;const t=typeof{url:typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:Dr&&Dr.tagName.toUpperCase()==="SCRIPT"&&Dr.src||new URL("index.umd.js",document.baseURI).href}<"u"&&Gc?Gc[e]:void 0,n=(o=globalThis==null?void 0:globalThis.process)==null?void 0:o.env,r=n?n[e]:void 0;return(t??r)||void 0}function vb(){return mn("VITE_API_BASE_URL")||mn("NEXT_PUBLIC_API_BASE_URL")||void 0}function wb(){return mn("VITE_API_KEY")||mn("NEXT_PUBLIC_API_KEY")||mn("VITE_AUTH_TOKEN")||void 0}function qc(){const e=vb(),t=wb(),n={};return e&&(n.baseUrl=e),t&&(n.apiKey=t),n}function Xc(){const e=qc(),t=ot.getAuthToken();return{apiBaseUrl:e.baseUrl||ot.baseUrl||"http://localhost:8000",apiKey:t||e.apiKey||"",model:"gpt-4",temperature:.7,maxTokens:4096,layoutSize:"desktop",showThreads:!0,autoScrollMessages:!0,truncateToolMessages:!0,toolMessagePreviewLength:200,darkMode:!1,enableSound:!1,messageHistory:100}}const Yc="chat-settings";function yb(){try{const e=localStorage.getItem(Yc);return e?JSON.parse(e):{}}catch(e){return console.error("Failed to parse stored settings:",e),{}}}function xb(e){try{localStorage.setItem(Yc,JSON.stringify(e)),e.apiKey&&ot.setAuthToken(e.apiKey)}catch(t){console.error("Failed to save settings:",t)}}function Sb(){const e=Xc(),t=yb(),n=ot.getAuthToken();return{...e,...t,apiKey:n||t.apiKey||e.apiKey,apiBaseUrl:ot.baseUrl||t.apiBaseUrl||e.apiBaseUrl}}function Cb(e){e.apiKey&&ot.setAuthToken(e.apiKey),xb(e)}const Yo=768;function Eb(){const[e,t]=l.useState(void 0);return l.useEffect(()=>{const n=window.matchMedia(`(max-width: ${Yo-1}px)`),r=()=>{t(window.innerWidth<Yo)};return n.addEventListener("change",r),t(window.innerWidth<Yo),()=>n.removeEventListener("change",r)},[]),!!e}var Nb="Separator",Jc="horizontal",Tb=["horizontal","vertical"],Zc=l.forwardRef((e,t)=>{const{decorative:n,orientation:r=Jc,...o}=e,s=Ab(r)?r:Jc,c=n?{role:"none"}:{"aria-orientation":s==="vertical"?s:void 0,role:"separator"};return i.jsx(ee.div,{"data-orientation":s,...c,...o,ref:t})});Zc.displayName=Nb;function Ab(e){return Tb.includes(e)}var Qc=Zc;const Jo=l.forwardRef(({className:e,orientation:t="horizontal",decorative:n=!0,...r},o)=>i.jsx(Qc,{ref:o,decorative:n,orientation:t,className:A("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...r}));Jo.displayName=Qc.displayName;var hr="Dialog",[el,ey]=We(hr),[Ib,Ke]=el(hr),tl=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:s,modal:a=!0}=e,c=l.useRef(null),d=l.useRef(null),[f,u]=it({prop:r,defaultProp:o??!1,onChange:s,caller:hr});return i.jsx(Ib,{scope:t,triggerRef:c,contentRef:d,contentId:Ve(),titleId:Ve(),descriptionId:Ve(),open:f,onOpenChange:u,onOpenToggle:l.useCallback(()=>u(p=>!p),[u]),modal:a,children:n})};tl.displayName=hr;var nl="DialogTrigger",rl=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(nl,n),s=de(t,o.triggerRef);return i.jsx(ee.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":es(o.open),...r,ref:s,onClick:U(e.onClick,o.onOpenToggle)})});rl.displayName=nl;var Zo="DialogPortal",[Pb,ol]=el(Zo,{forceMount:void 0}),sl=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,s=Ke(Zo,t);return i.jsx(Pb,{scope:t,forceMount:n,children:l.Children.map(r,a=>i.jsx(ke,{present:n||s.open,children:i.jsx(Xn,{asChild:!0,container:o,children:a})}))})};sl.displayName=Zo;var gr="DialogOverlay",al=l.forwardRef((e,t)=>{const n=ol(gr,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=Ke(gr,e.__scopeDialog);return s.modal?i.jsx(ke,{present:r||s.open,children:i.jsx(kb,{...o,ref:t})}):null});al.displayName=gr;var _b=De.createSlot("DialogOverlay.RemoveScroll"),kb=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(gr,n);return i.jsx(rr,{as:_b,allowPinchZoom:!0,shards:[o.contentRef],children:i.jsx(ee.div,{"data-state":es(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),St="DialogContent",il=l.forwardRef((e,t)=>{const n=ol(St,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,s=Ke(St,e.__scopeDialog);return i.jsx(ke,{present:r||s.open,children:s.modal?i.jsx(Ob,{...o,ref:t}):i.jsx(Mb,{...o,ref:t})})});il.displayName=St;var Ob=l.forwardRef((e,t)=>{const n=Ke(St,e.__scopeDialog),r=l.useRef(null),o=de(t,n.contentRef,r);return l.useEffect(()=>{const s=r.current;if(s)return Oo(s)},[]),i.jsx(cl,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:U(e.onCloseAutoFocus,s=>{var a;s.preventDefault(),(a=n.triggerRef.current)==null||a.focus()}),onPointerDownOutside:U(e.onPointerDownOutside,s=>{const a=s.detail.originalEvent,c=a.button===0&&a.ctrlKey===!0;(a.button===2||c)&&s.preventDefault()}),onFocusOutside:U(e.onFocusOutside,s=>s.preventDefault())})}),Mb=l.forwardRef((e,t)=>{const n=Ke(St,e.__scopeDialog),r=l.useRef(!1),o=l.useRef(!1);return i.jsx(cl,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var a,c;(a=e.onCloseAutoFocus)==null||a.call(e,s),s.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),s.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:s=>{var d,f;(d=e.onInteractOutside)==null||d.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const a=s.target;((f=n.triggerRef.current)==null?void 0:f.contains(a))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&o.current&&s.preventDefault()}})}),cl=l.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,...a}=e,c=Ke(St,n),d=l.useRef(null),f=de(t,d);return co(),i.jsxs(i.Fragment,{children:[i.jsx(Bn,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:i.jsx(rn,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":es(c.open),...a,ref:f,onDismiss:()=>c.onOpenChange(!1)})}),i.jsxs(i.Fragment,{children:[i.jsx(Db,{titleId:c.titleId}),i.jsx(Fb,{contentRef:d,descriptionId:c.descriptionId})]})]})}),Qo="DialogTitle",ll=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(Qo,n);return i.jsx(ee.h2,{id:o.titleId,...r,ref:t})});ll.displayName=Qo;var dl="DialogDescription",ul=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(dl,n);return i.jsx(ee.p,{id:o.descriptionId,...r,ref:t})});ul.displayName=dl;var fl="DialogClose",pl=l.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=Ke(fl,n);return i.jsx(ee.button,{type:"button",...r,ref:t,onClick:U(e.onClick,()=>o.onOpenChange(!1))})});pl.displayName=fl;function es(e){return e?"open":"closed"}var hl="DialogTitleWarning",[ty,gl]=_f(hl,{contentName:St,titleName:Qo,docsSlug:"dialog"}),Db=({titleId:e})=>{const t=gl(hl),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
|
59
59
|
|
|
60
60
|
If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
61
61
|
|
package/package.json
CHANGED