@qearlyao/familiar 0.2.1 → 0.2.3
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/README.md +1 -12
- package/dist/browser-tools.js +6 -1
- package/dist/discord.js +89 -15
- package/dist/inbound-attachments.js +11 -1
- package/dist/memory/index/chunk-indexer.js +23 -6
- package/dist/memory/lcm/context-transformer.js +5 -5
- package/dist/memory/operator.js +1 -27
- package/dist/persona.js +1 -1
- package/dist/runtime.js +10 -0
- package/dist/service.js +15 -13
- package/dist/silent-marker.js +64 -0
- package/dist/web-static.js +36 -1
- package/dist/web.js +77 -19
- package/npm-shrinkwrap.json +5139 -0
- package/package.json +5 -4
- package/web/dist/assets/{index-BPZQbZh5.js → index-C-w9fjBf.js} +1 -1
- package/web/dist/index.html +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qearlyao/familiar",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"skills/**",
|
|
24
24
|
"scripts/install.sh",
|
|
25
25
|
"scripts/install.ps1",
|
|
26
|
+
"npm-shrinkwrap.json",
|
|
26
27
|
"README.md",
|
|
27
28
|
"LICENSE"
|
|
28
29
|
],
|
|
@@ -41,9 +42,9 @@
|
|
|
41
42
|
"typecheck": "tsc --noEmit"
|
|
42
43
|
},
|
|
43
44
|
"dependencies": {
|
|
44
|
-
"@earendil-works/pi-agent-core": "
|
|
45
|
-
"@earendil-works/pi-ai": "
|
|
46
|
-
"@earendil-works/pi-coding-agent": "
|
|
45
|
+
"@earendil-works/pi-agent-core": "0.75.5",
|
|
46
|
+
"@earendil-works/pi-ai": "0.75.5",
|
|
47
|
+
"@earendil-works/pi-coding-agent": "0.75.5",
|
|
47
48
|
"better-sqlite3": "^12.10.0",
|
|
48
49
|
"discord.js": "^14.26.3",
|
|
49
50
|
"dotenv": "^16.4.5",
|
|
@@ -58,4 +58,4 @@ Alternatively, you can use your own component as a description by assigning it a
|
|
|
58
58
|
|
|
59
59
|
For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return _.useEffect(()=>{document.getElementById(e.current?.getAttribute(`aria-describedby`))||console.warn(t)},[t,e]),null},xi=ei,Si=ii,Ci=oi,wi=di,Ti=_i,Ei=yi,Di=pi,Oi=hi;function ki(e){let t=_.useRef({value:e,previous:e});return _.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function Ai(e){let[t,n]=_.useState(void 0);return Ne(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var ji=[`top`,`right`,`bottom`,`left`],Mi=Math.min,Ni=Math.max,Pi=Math.round,Fi=Math.floor,L=e=>({x:e,y:e}),R={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function Ii(e,t,n){return Ni(e,Mi(t,n))}function Li(e,t){return typeof e==`function`?e(t):e}function Ri(e){return e.split(`-`)[0]}function zi(e){return e.split(`-`)[1]}function Bi(e){return e===`x`?`y`:`x`}function Vi(e){return e===`y`?`height`:`width`}function Hi(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function Ui(e){return Bi(Hi(e))}function Wi(e,t,n){n===void 0&&(n=!1);let r=zi(e),i=Ui(e),a=Vi(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=$i(o)),[o,$i(o)]}function Gi(e){let t=$i(e);return[Ki(e),t,Ki(t)]}function Ki(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var qi=[`left`,`right`],Ji=[`right`,`left`],Yi=[`top`,`bottom`],Xi=[`bottom`,`top`];function Zi(e,t,n){switch(e){case`top`:case`bottom`:return n?t?Ji:qi:t?qi:Ji;case`left`:case`right`:return t?Yi:Xi;default:return[]}}function Qi(e,t,n,r){let i=zi(e),a=Zi(Ri(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(Ki)))),a}function $i(e){let t=Ri(e);return R[t]+e.slice(t.length)}function ea(e){return{top:0,right:0,bottom:0,left:0,...e}}function ta(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ea(e)}function na(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function ra(e,t,n){let{reference:r,floating:i}=e,a=Hi(t),o=Ui(t),s=Vi(o),c=Ri(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(zi(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function ia(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=Li(t,e),p=ta(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=na(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=na(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var aa=50,oa=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:ia},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=ra(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<aa&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=ra(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},sa=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=Li(e,t)||{};if(l==null)return{};let d=ta(u),f={x:n,y:r},p=Ui(i),m=Vi(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,T=C/2-h[m]/2-1,ee=Mi(d[_],T),te=Mi(d[v],T),E=ee,ne=C-h[m]-te,re=C/2-h[m]/2+w,D=Ii(E,re,ne),ie=!c.arrow&&zi(i)!=null&&re!==D&&a.reference[m]/2-(re<E?ee:te)-h[m]/2<0,O=ie?re<E?re-E:re-ne:0;return{[p]:f[p]+O,data:{[p]:D,centerOffset:re-D-O,...ie&&{alignmentOffset:O}},reset:ie}}}),ca=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=Li(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=Ri(r),_=Hi(o),v=Ri(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[$i(o)]:Gi(o)),x=p!==`none`;!d&&x&&b.push(...Qi(o,m,p,y));let S=[o,...b],C=await s.detectOverflow(t,h),w=[],T=i.flip?.overflows||[];if(l&&w.push(C[g]),u){let e=Wi(r,a,y);w.push(C[e[0]],C[e[1]])}if(T=[...T,{placement:r,overflows:w}],!w.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==Hi(t))||T.every(e=>Hi(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=Hi(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function la(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function ua(e){return ji.some(t=>e[t]>=0)}var da=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=Li(e,t);switch(i){case`referenceHidden`:{let e=la(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:ua(e)}}}case`escaped`:{let e=la(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:ua(e)}}}default:return{}}}}},fa=new Set([`left`,`top`]);async function pa(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=Ri(n),s=zi(n),c=Hi(n)===`y`,l=fa.has(o)?-1:1,u=a&&c?-1:1,d=Li(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var ma=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await pa(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},ha=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=Li(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=Hi(Ri(i)),p=Bi(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=Ii(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=Ii(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},ga=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=Li(e,t),u={x:n,y:r},d=Hi(i),f=Bi(d),p=u[f],m=u[d],h=Li(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;p<t?p=t:p>n&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=fa.has(Ri(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[f]:p,[d]:m}}}},_a=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=Li(e,t),u=await o.detectOverflow(t,l),d=Ri(i),f=zi(i),p=Hi(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=Mi(h-u[g],v),x=Mi(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=Ni(u.left,0),t=Ni(u.right,0),n=Ni(u.top,0),r=Ni(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:Ni(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:Ni(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function va(){return typeof window<`u`}function ya(e){return Sa(e)?(e.nodeName||``).toLowerCase():`#document`}function ba(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function xa(e){return((Sa(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Sa(e){return va()?e instanceof Node||e instanceof ba(e).Node:!1}function Ca(e){return va()?e instanceof Element||e instanceof ba(e).Element:!1}function wa(e){return va()?e instanceof HTMLElement||e instanceof ba(e).HTMLElement:!1}function Ta(e){return!va()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof ba(e).ShadowRoot}function Ea(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=La(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Da(e){return/^(table|td|th)$/.test(ya(e))}function Oa(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var ka=/transform|translate|scale|rotate|perspective|filter/,Aa=/paint|layout|strict|content/,ja=e=>!!e&&e!==`none`,Ma;function Na(e){let t=Ca(e)?La(e):e;return ja(t.transform)||ja(t.translate)||ja(t.scale)||ja(t.rotate)||ja(t.perspective)||!Fa()&&(ja(t.backdropFilter)||ja(t.filter))||ka.test(t.willChange||``)||Aa.test(t.contain||``)}function Pa(e){let t=za(e);for(;wa(t)&&!Ia(t);){if(Na(t))return t;if(Oa(t))return null;t=za(t)}return null}function Fa(){return Ma??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Ma}function Ia(e){return/^(html|body|#document)$/.test(ya(e))}function La(e){return ba(e).getComputedStyle(e)}function Ra(e){return Ca(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function za(e){if(ya(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Ta(e)&&e.host||xa(e);return Ta(t)?t.host:t}function Ba(e){let t=za(e);return Ia(t)?e.ownerDocument?e.ownerDocument.body:e.body:wa(t)&&Ea(t)?t:Ba(t)}function Va(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Ba(e),i=r===e.ownerDocument?.body,a=ba(r);if(i){let e=Ha(a);return t.concat(a,a.visualViewport||[],Ea(r)?r:[],e&&n?Va(e):[])}else return t.concat(r,Va(r,[],n))}function Ha(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ua(e){let t=La(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=wa(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Pi(n)!==a||Pi(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Wa(e){return Ca(e)?e:e.contextElement}function Ga(e){let t=Wa(e);if(!wa(t))return L(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Ua(t),o=(a?Pi(n.width):n.width)/r,s=(a?Pi(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Ka=L(0);function qa(e){let t=ba(e);return!Fa()||!t.visualViewport?Ka:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Ja(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==ba(e)?!1:t}function Ya(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Wa(e),o=L(1);t&&(r?Ca(r)&&(o=Ga(r)):o=Ga(e));let s=Ja(a,n,r)?qa(a):L(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=ba(a),t=r&&Ca(r)?ba(r):r,n=e,i=Ha(n);for(;i&&r&&t!==n;){let e=Ga(i),t=i.getBoundingClientRect(),r=La(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=ba(i),i=Ha(n)}}return na({width:u,height:d,x:c,y:l})}function Xa(e,t){let n=Ra(e).scrollLeft;return t?t.left+n:Ya(xa(e)).left+n}function Za(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-Xa(e,n),y:n.top+t.scrollTop}}function Qa(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=xa(r),s=t?Oa(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=L(1),u=L(0),d=wa(r);if((d||!d&&!a)&&((ya(r)!==`body`||Ea(o))&&(c=Ra(r)),d)){let e=Ya(r);l=Ga(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?Za(o,c):L(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function $a(e){return Array.from(e.getClientRects())}function eo(e){let t=xa(e),n=Ra(e),r=e.ownerDocument.body,i=Ni(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=Ni(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+Xa(e),s=-n.scrollTop;return La(r).direction===`rtl`&&(o+=Ni(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var to=25;function no(e,t){let n=ba(e),r=xa(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Fa();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=Xa(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=to&&(a-=o)}else l<=to&&(a+=l);return{width:a,height:o,x:s,y:c}}function ro(e,t){let n=Ya(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=wa(e)?Ga(e):L(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function io(e,t,n){let r;if(t===`viewport`)r=no(e,n);else if(t===`document`)r=eo(xa(e));else if(Ca(t))r=ro(t,n);else{let n=qa(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return na(r)}function ao(e,t){let n=za(e);return n===t||!Ca(n)||Ia(n)?!1:La(n).position===`fixed`||ao(n,t)}function oo(e,t){let n=t.get(e);if(n)return n;let r=Va(e,[],!1).filter(e=>Ca(e)&&ya(e)!==`body`),i=null,a=La(e).position===`fixed`,o=a?za(e):e;for(;Ca(o)&&!Ia(o);){let t=La(o),n=Na(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||Ea(o)&&!n&&ao(e,o))?r=r.filter(e=>e!==o):i=t,o=za(o)}return t.set(e,r),r}function so(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Oa(t)?[]:oo(t,this._c):[].concat(n),r],o=io(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=io(t,a[e],i);s=Ni(n.top,s),c=Mi(n.right,c),l=Mi(n.bottom,l),u=Ni(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function co(e){let{width:t,height:n}=Ua(e);return{width:t,height:n}}function lo(e,t,n){let r=wa(t),i=xa(t),a=n===`fixed`,o=Ya(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=L(0);function l(){c.x=Xa(i)}if(r||!r&&!a)if((ya(t)!==`body`||Ea(i))&&(s=Ra(t)),r){let e=Ya(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?Za(i,s):L(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function uo(e){return La(e).position===`static`}function fo(e,t){if(!wa(e)||La(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return xa(e)===n&&(n=n.ownerDocument.body),n}function po(e,t){let n=ba(e);if(Oa(e))return n;if(!wa(e)){let t=za(e);for(;t&&!Ia(t);){if(Ca(t)&&!uo(t))return t;t=za(t)}return n}let r=fo(e,t);for(;r&&Da(r)&&uo(r);)r=fo(r,t);return r&&Ia(r)&&uo(r)&&!Na(r)?n:r||Pa(e)||n}var mo=async function(e){let t=this.getOffsetParent||po,n=this.getDimensions,r=await n(e.floating);return{reference:lo(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function z(e){return La(e).direction===`rtl`}var B={convertOffsetParentRelativeRectToViewportRelativeRect:Qa,getDocumentElement:xa,getClippingRect:so,getOffsetParent:po,getElementRects:mo,getClientRects:$a,getDimensions:co,getScale:Ga,isElement:Ca,isRTL:z};function ho(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function go(e,t){let n=null,r,i=xa(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=Fi(d),h=Fi(i.clientWidth-(u+f)),g=Fi(i.clientHeight-(d+p)),_=Fi(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:Ni(0,Mi(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!ho(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function _o(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Wa(e),u=i||a?[...l?Va(l):[],...t?Va(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?go(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Ya(e):null;c&&g();function g(){let t=Ya(e);h&&!ho(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var vo=ma,yo=ha,bo=ca,xo=_a,So=da,Co=sa,wo=ga,To=(e,t,n)=>{let r=new Map,i={platform:B,...n},a={...i.platform,_c:r};return oa(e,t,{...i,platform:a})},Eo=typeof document<`u`?_.useLayoutEffect:function(){};function Do(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Do(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!Do(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Oo(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function ko(e,t){let n=Oo(e);return Math.round(t*n)/n}function Ao(e){let t=_.useRef(e);return Eo(()=>{t.current=e}),t}function jo(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=_.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=_.useState(r);Do(f,r)||p(r);let[m,h]=_.useState(null),[g,v]=_.useState(null),y=_.useCallback(e=>{e!==C.current&&(C.current=e,h(e))},[]),b=_.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||m,S=o||g,C=_.useRef(null),w=_.useRef(null),T=_.useRef(u),ee=c!=null,te=Ao(c),E=Ao(i),ne=Ao(l),re=_.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:f};E.current&&(e.platform=E.current),To(C.current,w.current,e).then(e=>{let t={...e,isPositioned:ne.current!==!1};D.current&&!Do(T.current,t)&&(T.current=t,De.flushSync(()=>{d(t)}))})},[f,t,n,E,ne]);Eo(()=>{l===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let D=_.useRef(!1);Eo(()=>(D.current=!0,()=>{D.current=!1}),[]),Eo(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(te.current)return te.current(x,S,re);re()}},[x,S,re,te,ee]);let ie=_.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),O=_.useMemo(()=>({reference:x,floating:S}),[x,S]),ae=_.useMemo(()=>{let e={position:n,left:0,top:0};if(!O.floating)return e;let t=ko(O.floating,u.x),r=ko(O.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Oo(O.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,O.floating,u.x,u.y]);return _.useMemo(()=>({...u,update:re,refs:ie,elements:O,floatingStyles:ae}),[u,re,ie,O,ae])}var Mo=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:Co({element:r.current,padding:i}).fn(n):r?Co({element:r,padding:i}).fn(n):{}}}},No=(e,t)=>{let n=vo(e);return{name:n.name,fn:n.fn,options:[e,t]}},Po=(e,t)=>{let n=yo(e);return{name:n.name,fn:n.fn,options:[e,t]}},Fo=(e,t)=>({fn:wo(e).fn,options:[e,t]}),Io=(e,t)=>{let n=bo(e);return{name:n.name,fn:n.fn,options:[e,t]}},Lo=(e,t)=>{let n=xo(e);return{name:n.name,fn:n.fn,options:[e,t]}},Ro=(e,t)=>{let n=So(e);return{name:n.name,fn:n.fn,options:[e,t]}},zo=(e,t)=>{let n=Mo(e);return{name:n.name,fn:n.fn,options:[e,t]}},Bo=`Arrow`,Vo=_.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,P.jsx)(F.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,P.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});Vo.displayName=Bo;var Ho=Vo,Uo=`Popper`,[Wo,Go]=Ae(Uo),[Ko,qo]=Wo(Uo),Jo=e=>{let{__scopePopper:t,children:n}=e,[r,i]=_.useState(null);return(0,P.jsx)(Ko,{scope:t,anchor:r,onAnchorChange:i,children:n})};Jo.displayName=Uo;var Yo=`PopperAnchor`,Xo=_.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=qo(Yo,n),o=_.useRef(null),s=N(t,o),c=_.useRef(null);return _.useEffect(()=>{let e=c.current;c.current=r?.current||o.current,e!==c.current&&a.onAnchorChange(c.current)}),r?null:(0,P.jsx)(F.div,{...i,ref:s})});Xo.displayName=Yo;var Zo=`PopperContent`,[Qo,$o]=Wo(Zo),es=_.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:s=0,avoidCollisions:c=!0,collisionBoundary:l=[],collisionPadding:u=0,sticky:d=`partial`,hideWhenDetached:f=!1,updatePositionStrategy:p=`optimized`,onPlaced:m,...h}=e,g=qo(Zo,n),[v,y]=_.useState(null),b=N(t,e=>y(e)),[x,S]=_.useState(null),C=Ai(x),w=C?.width??0,T=C?.height??0,ee=r+(a===`center`?``:`-`+a),te=typeof u==`number`?u:{top:0,right:0,bottom:0,left:0,...u},E=Array.isArray(l)?l:[l],ne=E.length>0,re={padding:te,boundary:E.filter(is),altBoundary:ne},{refs:D,floatingStyles:ie,placement:O,isPositioned:ae,middlewareData:oe}=jo({strategy:`fixed`,placement:ee,whileElementsMounted:(...e)=>_o(...e,{animationFrame:p===`always`}),elements:{reference:g.anchor},middleware:[No({mainAxis:i+T,alignmentAxis:o}),c&&Po({mainAxis:!0,crossAxis:!1,limiter:d===`partial`?Fo():void 0,...re}),c&&Io({...re}),Lo({...re,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),x&&zo({element:x,padding:s}),as({arrowWidth:w,arrowHeight:T}),f&&Ro({strategy:`referenceHidden`,...re})]}),[k,A]=os(O),se=st(m);Ne(()=>{ae&&se?.()},[ae,se]);let ce=oe.arrow?.x,le=oe.arrow?.y,ue=oe.arrow?.centerOffset!==0,[j,M]=_.useState();return Ne(()=>{v&&M(window.getComputedStyle(v).zIndex)},[v]),(0,P.jsx)(`div`,{ref:D.setFloating,"data-radix-popper-content-wrapper":``,style:{...ie,transform:ae?ie.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:j,"--radix-popper-transform-origin":[oe.transformOrigin?.x,oe.transformOrigin?.y].join(` `),...oe.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,P.jsx)(Qo,{scope:n,placedSide:k,onArrowChange:S,arrowX:ce,arrowY:le,shouldHideArrow:ue,children:(0,P.jsx)(F.div,{"data-side":k,"data-align":A,...h,ref:b,style:{...h.style,animation:ae?void 0:`none`}})})})});es.displayName=Zo;var ts=`PopperArrow`,ns={top:`bottom`,right:`left`,bottom:`top`,left:`right`},rs=_.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=$o(ts,n),a=ns[i.placedSide];return(0,P.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,P.jsx)(Ho,{...r,ref:t,style:{...r.style,display:`block`}})})});rs.displayName=ts;function is(e){return e!==null}var as=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=os(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function os(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var ss=Jo,cs=Xo,ls=es,us=rs,ds=`rovingFocusGroup.onEntryFocus`,fs={bubbles:!1,cancelable:!0},ps=`RovingFocusGroup`,[ms,hs,gs]=Me(ps),[_s,vs]=Ae(ps,[gs]),[ys,bs]=_s(ps),xs=_.forwardRef((e,t)=>(0,P.jsx)(ms.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,P.jsx)(ms.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,P.jsx)(Ss,{...e,ref:t})})}));xs.displayName=ps;var Ss=_.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:a,currentTabStopId:o,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:c,onEntryFocus:l,preventScrollOnEntryFocus:u=!1,...d}=e,f=_.useRef(null),p=N(t,f),m=ot(a),[h,g]=Fe({prop:o,defaultProp:s??null,onChange:c,caller:ps}),[v,y]=_.useState(!1),b=st(l),x=hs(n),S=_.useRef(!1),[C,w]=_.useState(0);return _.useEffect(()=>{let e=f.current;if(e)return e.addEventListener(ds,b),()=>e.removeEventListener(ds,b)},[b]),(0,P.jsx)(ys,{scope:n,orientation:r,dir:m,loop:i,currentTabStopId:h,onItemFocus:_.useCallback(e=>g(e),[g]),onItemShiftTab:_.useCallback(()=>y(!0),[]),onFocusableItemAdd:_.useCallback(()=>w(e=>e+1),[]),onFocusableItemRemove:_.useCallback(()=>w(e=>e-1),[]),children:(0,P.jsx)(F.div,{tabIndex:v||C===0?-1:0,"data-orientation":r,...d,ref:p,style:{outline:`none`,...e.style},onMouseDown:I(e.onMouseDown,()=>{S.current=!0}),onFocus:I(e.onFocus,e=>{let t=!S.current;if(e.target===e.currentTarget&&t&&!v){let t=new CustomEvent(ds,fs);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);Os([e.find(e=>e.active),e.find(e=>e.id===h),...e].filter(Boolean).map(e=>e.ref.current),u)}}S.current=!1}),onBlur:I(e.onBlur,()=>y(!1))})})}),Cs=`RovingFocusGroupItem`,ws=_.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...s}=e,c=Ge(),l=a||c,u=bs(Cs,n),d=u.currentTabStopId===l,f=hs(n),{onFocusableItemAdd:p,onFocusableItemRemove:m,currentTabStopId:h}=u;return _.useEffect(()=>{if(r)return p(),()=>m()},[r,p,m]),(0,P.jsx)(ms.ItemSlot,{scope:n,id:l,focusable:r,active:i,children:(0,P.jsx)(F.span,{tabIndex:d?0:-1,"data-orientation":u.orientation,...s,ref:t,onMouseDown:I(e.onMouseDown,e=>{r?u.onItemFocus(l):e.preventDefault()}),onFocus:I(e.onFocus,()=>u.onItemFocus(l)),onKeyDown:I(e.onKeyDown,e=>{if(e.key===`Tab`&&e.shiftKey){u.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=Ds(e,u.orientation,u.dir);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=f().filter(e=>e.focusable).map(e=>e.ref.current);if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=u.loop?ks(n,r+1):n.slice(r+1)}setTimeout(()=>Os(n))}}),children:typeof o==`function`?o({isCurrentTabStop:d,hasTabStop:h!=null}):o})})});ws.displayName=Cs;var Ts={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function Es(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function Ds(e,t,n){let r=Es(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return Ts[r]}function Os(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function ks(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var As=xs,js=ws,Ms=[`Enter`,` `],Ns=[`ArrowDown`,`PageUp`,`Home`],Ps=[`ArrowUp`,`PageDown`,`End`],Fs=[...Ns,...Ps],Is={ltr:[...Ms,`ArrowRight`],rtl:[...Ms,`ArrowLeft`]},Ls={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},Rs=`Menu`,[zs,Bs,Vs]=Me(Rs),[Hs,Us]=Ae(Rs,[Vs,Go,vs]),Ws=Go(),Gs=vs(),[Ks,qs]=Hs(Rs),[Js,Ys]=Hs(Rs),Xs=e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,s=Ws(t),[c,l]=_.useState(null),u=_.useRef(!1),d=st(a),f=ot(i);return _.useEffect(()=>{let e=()=>{u.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},t=()=>u.current=!1;return document.addEventListener(`keydown`,e,{capture:!0}),()=>{document.removeEventListener(`keydown`,e,{capture:!0}),document.removeEventListener(`pointerdown`,t,{capture:!0}),document.removeEventListener(`pointermove`,t,{capture:!0})}},[]),(0,P.jsx)(ss,{...s,children:(0,P.jsx)(Ks,{scope:t,open:n,onOpenChange:d,content:c,onContentChange:l,children:(0,P.jsx)(Js,{scope:t,onClose:_.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:u,dir:f,modal:o,children:r})})})};Xs.displayName=Rs;var Zs=`MenuAnchor`,Qs=_.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=Ws(n);return(0,P.jsx)(cs,{...i,...r,ref:t})});Qs.displayName=Zs;var $s=`MenuPortal`,[ec,tc]=Hs($s,{forceMount:void 0}),nc=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=qs($s,t);return(0,P.jsx)(ec,{scope:t,forceMount:n,children:(0,P.jsx)(ze,{present:n||a.open,children:(0,P.jsx)(zt,{asChild:!0,container:i,children:r})})})};nc.displayName=$s;var rc=`MenuContent`,[ic,ac]=Hs(rc),oc=_.forwardRef((e,t)=>{let n=tc(rc,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=qs(rc,e.__scopeMenu),o=Ys(rc,e.__scopeMenu);return(0,P.jsx)(zs.Provider,{scope:e.__scopeMenu,children:(0,P.jsx)(ze,{present:r||a.open,children:(0,P.jsx)(zs.Slot,{scope:e.__scopeMenu,children:o.modal?(0,P.jsx)(sc,{...i,ref:t}):(0,P.jsx)(cc,{...i,ref:t})})})})}),sc=_.forwardRef((e,t)=>{let n=qs(rc,e.__scopeMenu),r=_.useRef(null),i=N(t,r);return _.useEffect(()=>{let e=r.current;if(e)return sr(e)},[]),(0,P.jsx)(uc,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:I(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),cc=_.forwardRef((e,t)=>{let n=qs(rc,e.__scopeMenu);return(0,P.jsx)(uc,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),lc=ye(`MenuContent.ScrollLock`),uc=_.forwardRef((e,t)=>{let{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:a,onCloseAutoFocus:o,disableOutsidePointerEvents:s,onEntryFocus:c,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,disableOutsideScroll:m,...h}=e,g=qs(rc,n),v=Ys(rc,n),y=Ws(n),b=Gs(n),x=Bs(n),[S,C]=_.useState(null),w=_.useRef(null),T=N(t,w,g.onContentChange),ee=_.useRef(0),te=_.useRef(``),E=_.useRef(0),ne=_.useRef(null),re=_.useRef(`right`),D=_.useRef(0),ie=m?Qn:_.Fragment,O=m?{as:lc,allowPinchZoom:!0}:void 0,ae=e=>{let t=te.current+e,n=x().filter(e=>!e.disabled),r=document.activeElement,i=n.find(e=>e.ref.current===r)?.textValue,a=qc(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;(function e(t){te.current=t,window.clearTimeout(ee.current),t!==``&&(ee.current=window.setTimeout(()=>e(``),1e3))})(t),o&&setTimeout(()=>o.focus())};_.useEffect(()=>()=>window.clearTimeout(ee.current),[]),Vt();let oe=_.useCallback(e=>re.current===ne.current?.side&&Yc(e,ne.current?.area),[]);return(0,P.jsx)(ic,{scope:n,searchRef:te,onItemEnter:_.useCallback(e=>{oe(e)&&e.preventDefault()},[oe]),onItemLeave:_.useCallback(e=>{oe(e)||(w.current?.focus(),C(null))},[oe]),onTriggerLeave:_.useCallback(e=>{oe(e)&&e.preventDefault()},[oe]),pointerGraceTimerRef:E,onPointerGraceIntentChange:_.useCallback(e=>{ne.current=e},[]),children:(0,P.jsx)(ie,{...O,children:(0,P.jsx)(Et,{asChild:!0,trapped:i,onMountAutoFocus:I(a,e=>{e.preventDefault(),w.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:o,children:(0,P.jsx)(ht,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:d,onInteractOutside:f,onDismiss:p,children:(0,P.jsx)(As,{asChild:!0,...b,dir:v.dir,orientation:`vertical`,loop:r,currentTabStopId:S,onCurrentTabStopIdChange:C,onEntryFocus:I(c,e=>{v.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,P.jsx)(ls,{role:`menu`,"aria-orientation":`vertical`,"data-state":Hc(g.open),"data-radix-menu-content":``,dir:v.dir,...y,...h,ref:T,style:{outline:`none`,...h.style},onKeyDown:I(h.onKeyDown,e=>{let t=e.target.closest(`[data-radix-menu-content]`)===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=e.key.length===1;t&&(e.key===`Tab`&&e.preventDefault(),!n&&r&&ae(e.key));let i=w.current;if(e.target!==i||!Fs.includes(e.key))return;e.preventDefault();let a=x().filter(e=>!e.disabled).map(e=>e.ref.current);Ps.includes(e.key)&&a.reverse(),Gc(a)}),onBlur:I(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(ee.current),te.current=``)}),onPointerMove:I(e.onPointerMove,Xc(e=>{let t=e.target,n=D.current!==e.clientX;e.currentTarget.contains(t)&&n&&(re.current=e.clientX>D.current?`right`:`left`,D.current=e.clientX)}))})})})})})})});oc.displayName=rc;var dc=`MenuGroup`,fc=_.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,P.jsx)(F.div,{role:`group`,...r,ref:t})});fc.displayName=dc;var pc=`MenuLabel`,mc=_.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,P.jsx)(F.div,{...r,ref:t})});mc.displayName=pc;var hc=`MenuItem`,gc=`menu.itemSelect`,_c=_.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:r,...i}=e,a=_.useRef(null),o=Ys(hc,e.__scopeMenu),s=ac(hc,e.__scopeMenu),c=N(t,a),l=_.useRef(!1),u=()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(gc,{bubbles:!0,cancelable:!0});e.addEventListener(gc,e=>r?.(e),{once:!0}),Oe(e,t),t.defaultPrevented?l.current=!1:o.onClose()}};return(0,P.jsx)(vc,{...i,ref:c,disabled:n,onClick:I(e.onClick,u),onPointerDown:t=>{e.onPointerDown?.(t),l.current=!0},onPointerUp:I(e.onPointerUp,e=>{l.current||e.currentTarget?.click()}),onKeyDown:I(e.onKeyDown,e=>{let t=s.searchRef.current!==``;n||t&&e.key===` `||Ms.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});_c.displayName=hc;var vc=_.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=ac(hc,n),s=Gs(n),c=_.useRef(null),l=N(t,c),[u,d]=_.useState(!1),[f,p]=_.useState(``);return _.useEffect(()=>{let e=c.current;e&&p((e.textContent??``).trim())},[a.children]),(0,P.jsx)(zs.ItemSlot,{scope:n,disabled:r,textValue:i??f,children:(0,P.jsx)(js,{asChild:!0,...s,focusable:!r,children:(0,P.jsx)(F.div,{role:`menuitem`,"data-highlighted":u?``:void 0,"aria-disabled":r||void 0,"data-disabled":r?``:void 0,...a,ref:l,onPointerMove:I(e.onPointerMove,Xc(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:I(e.onPointerLeave,Xc(e=>o.onItemLeave(e))),onFocus:I(e.onFocus,()=>d(!0)),onBlur:I(e.onBlur,()=>d(!1))})})})}),yc=`MenuCheckboxItem`,bc=_.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...i}=e;return(0,P.jsx)(Oc,{scope:e.__scopeMenu,checked:n,children:(0,P.jsx)(_c,{role:`menuitemcheckbox`,"aria-checked":Uc(n)?`mixed`:n,...i,ref:t,"data-state":Wc(n),onSelect:I(i.onSelect,()=>r?.(Uc(n)?!0:!n),{checkForDefaultPrevented:!1})})})});bc.displayName=yc;var xc=`MenuRadioGroup`,[Sc,Cc]=Hs(xc,{value:void 0,onValueChange:()=>{}}),wc=_.forwardRef((e,t)=>{let{value:n,onValueChange:r,...i}=e,a=st(r);return(0,P.jsx)(Sc,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,P.jsx)(fc,{...i,ref:t})})});wc.displayName=xc;var Tc=`MenuRadioItem`,Ec=_.forwardRef((e,t)=>{let{value:n,...r}=e,i=Cc(Tc,e.__scopeMenu),a=n===i.value;return(0,P.jsx)(Oc,{scope:e.__scopeMenu,checked:a,children:(0,P.jsx)(_c,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":Wc(a),onSelect:I(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});Ec.displayName=Tc;var Dc=`MenuItemIndicator`,[Oc,kc]=Hs(Dc,{checked:!1}),Ac=_.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...i}=e,a=kc(Dc,n);return(0,P.jsx)(ze,{present:r||Uc(a.checked)||a.checked===!0,children:(0,P.jsx)(F.span,{...i,ref:t,"data-state":Wc(a.checked)})})});Ac.displayName=Dc;var jc=`MenuSeparator`,Mc=_.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,P.jsx)(F.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})});Mc.displayName=jc;var Nc=`MenuArrow`,Pc=_.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,i=Ws(n);return(0,P.jsx)(us,{...i,...r,ref:t})});Pc.displayName=Nc;var Fc=`MenuSub`,[Ic,Lc]=Hs(Fc),Rc=e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=qs(Fc,t),o=Ws(t),[s,c]=_.useState(null),[l,u]=_.useState(null),d=st(i);return _.useEffect(()=>(a.open===!1&&d(!1),()=>d(!1)),[a.open,d]),(0,P.jsx)(ss,{...o,children:(0,P.jsx)(Ks,{scope:t,open:r,onOpenChange:d,content:l,onContentChange:u,children:(0,P.jsx)(Ic,{scope:t,contentId:Ge(),triggerId:Ge(),trigger:s,onTriggerChange:c,children:n})})})};Rc.displayName=Fc;var zc=`MenuSubTrigger`,Bc=_.forwardRef((e,t)=>{let n=qs(zc,e.__scopeMenu),r=Ys(zc,e.__scopeMenu),i=Lc(zc,e.__scopeMenu),a=ac(zc,e.__scopeMenu),o=_.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:c}=a,l={__scopeMenu:e.__scopeMenu},u=_.useCallback(()=>{o.current&&window.clearTimeout(o.current),o.current=null},[]);return _.useEffect(()=>u,[u]),_.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),c(null)}},[s,c]),(0,P.jsx)(Qs,{asChild:!0,...l,children:(0,P.jsx)(vc,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":i.contentId,"data-state":Hc(n.open),...e,ref:_e(t,i.onTriggerChange),onClick:t=>{e.onClick?.(t),!(e.disabled||t.defaultPrevented)&&(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:I(e.onPointerMove,Xc(t=>{a.onItemEnter(t),!t.defaultPrevented&&!e.disabled&&!n.open&&!o.current&&(a.onPointerGraceIntentChange(null),o.current=window.setTimeout(()=>{n.onOpenChange(!0),u()},100))})),onPointerLeave:I(e.onPointerLeave,Xc(e=>{u();let t=n.content?.getBoundingClientRect();if(t){let r=n.content?.dataset.side,i=r===`right`,o=i?-5:5,c=t[i?`left`:`right`],l=t[i?`right`:`left`];a.onPointerGraceIntentChange({area:[{x:e.clientX+o,y:e.clientY},{x:c,y:t.top},{x:l,y:t.top},{x:l,y:t.bottom},{x:c,y:t.bottom}],side:r}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>a.onPointerGraceIntentChange(null),300)}else{if(a.onTriggerLeave(e),e.defaultPrevented)return;a.onPointerGraceIntentChange(null)}})),onKeyDown:I(e.onKeyDown,t=>{let i=a.searchRef.current!==``;e.disabled||i&&t.key===` `||Is[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})});Bc.displayName=zc;var V=`MenuSubContent`,Vc=_.forwardRef((e,t)=>{let n=tc(rc,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=qs(rc,e.__scopeMenu),o=Ys(rc,e.__scopeMenu),s=Lc(V,e.__scopeMenu),c=_.useRef(null),l=N(t,c);return(0,P.jsx)(zs.Provider,{scope:e.__scopeMenu,children:(0,P.jsx)(ze,{present:r||a.open,children:(0,P.jsx)(zs.Slot,{scope:e.__scopeMenu,children:(0,P.jsx)(uc,{id:s.contentId,"aria-labelledby":s.triggerId,...i,ref:l,align:`start`,side:o.dir===`rtl`?`left`:`right`,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{o.isUsingKeyboardRef.current&&c.current?.focus(),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:I(e.onFocusOutside,e=>{e.target!==s.trigger&&a.onOpenChange(!1)}),onEscapeKeyDown:I(e.onEscapeKeyDown,e=>{o.onClose(),e.preventDefault()}),onKeyDown:I(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=Ls[o.dir].includes(e.key);t&&n&&(a.onOpenChange(!1),s.trigger?.focus(),e.preventDefault())})})})})})});Vc.displayName=V;function Hc(e){return e?`open`:`closed`}function Uc(e){return e===`indeterminate`}function Wc(e){return Uc(e)?`indeterminate`:e?`checked`:`unchecked`}function Gc(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Kc(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function qc(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Kc(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Jc(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Yc(e,t){return t?Jc({x:e.clientX,y:e.clientY},t):!1}function Xc(e){return t=>t.pointerType===`mouse`?e(t):void 0}var Zc=Xs,Qc=Qs,$c=nc,el=oc,tl=fc,nl=mc,rl=_c,il=bc,al=wc,ol=Ec,sl=Ac,cl=Mc,ll=Pc,ul=Bc,dl=Vc,fl=`DropdownMenu`,[pl,ml]=Ae(fl,[Us]),hl=Us(),[gl,_l]=pl(fl),vl=e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:s=!0}=e,c=hl(t),l=_.useRef(null),[u,d]=Fe({prop:i,defaultProp:a??!1,onChange:o,caller:fl});return(0,P.jsx)(gl,{scope:t,triggerId:Ge(),triggerRef:l,contentId:Ge(),open:u,onOpenChange:d,onOpenToggle:_.useCallback(()=>d(e=>!e),[d]),modal:s,children:(0,P.jsx)(Zc,{...c,open:u,onOpenChange:d,dir:r,modal:s,children:n})})};vl.displayName=fl;var yl=`DropdownMenuTrigger`,bl=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=_l(yl,n),o=hl(n);return(0,P.jsx)(Qc,{asChild:!0,...o,children:(0,P.jsx)(F.button,{type:`button`,id:a.triggerId,"aria-haspopup":`menu`,"aria-expanded":a.open,"aria-controls":a.open?a.contentId:void 0,"data-state":a.open?`open`:`closed`,"data-disabled":r?``:void 0,disabled:r,...i,ref:_e(t,a.triggerRef),onPointerDown:I(e.onPointerDown,e=>{!r&&e.button===0&&e.ctrlKey===!1&&(a.onOpenToggle(),a.open||e.preventDefault())}),onKeyDown:I(e.onKeyDown,e=>{r||([`Enter`,` `].includes(e.key)&&a.onOpenToggle(),e.key===`ArrowDown`&&a.onOpenChange(!0),[`Enter`,` `,`ArrowDown`].includes(e.key)&&e.preventDefault())})})})});bl.displayName=yl;var xl=`DropdownMenuPortal`,Sl=e=>{let{__scopeDropdownMenu:t,...n}=e,r=hl(t);return(0,P.jsx)($c,{...r,...n})};Sl.displayName=xl;var Cl=`DropdownMenuContent`,wl=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=_l(Cl,n),a=hl(n),o=_.useRef(!1);return(0,P.jsx)(el,{id:i.contentId,"aria-labelledby":i.triggerId,...a,...r,ref:t,onCloseAutoFocus:I(e.onCloseAutoFocus,e=>{o.current||i.triggerRef.current?.focus(),o.current=!1,e.preventDefault()}),onInteractOutside:I(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0,r=t.button===2||n;(!i.modal||r)&&(o.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)`}})});wl.displayName=Cl;var Tl=`DropdownMenuGroup`,El=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(tl,{...i,...r,ref:t})});El.displayName=Tl;var Dl=`DropdownMenuLabel`,Ol=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(nl,{...i,...r,ref:t})});Ol.displayName=Dl;var kl=`DropdownMenuItem`,Al=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(rl,{...i,...r,ref:t})});Al.displayName=kl;var jl=`DropdownMenuCheckboxItem`,Ml=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(il,{...i,...r,ref:t})});Ml.displayName=jl;var Nl=`DropdownMenuRadioGroup`,Pl=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(al,{...i,...r,ref:t})});Pl.displayName=Nl;var Fl=`DropdownMenuRadioItem`,Il=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(ol,{...i,...r,ref:t})});Il.displayName=Fl;var Ll=`DropdownMenuItemIndicator`,Rl=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(sl,{...i,...r,ref:t})});Rl.displayName=Ll;var zl=`DropdownMenuSeparator`,Bl=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(cl,{...i,...r,ref:t})});Bl.displayName=zl;var Vl=`DropdownMenuArrow`,Hl=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(ll,{...i,...r,ref:t})});Hl.displayName=Vl;var H=`DropdownMenuSubTrigger`,U=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(ul,{...i,...r,ref:t})});U.displayName=H;var W=`DropdownMenuSubContent`,G=_.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,i=hl(n);return(0,P.jsx)(dl,{...i,...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)`}})});G.displayName=W;var K=vl,Ul=bl,Wl=Sl,Gl=wl,Kl=Al,ql=`Label`,Jl=_.forwardRef((e,t)=>(0,P.jsx)(F.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));Jl.displayName=ql;var Yl=Jl,Xl=`Popover`,[Zl,Ql]=Ae(Xl,[Go]),$l=Go(),[eu,tu]=Zl(Xl),nu=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,s=$l(t),c=_.useRef(null),[l,u]=_.useState(!1),[d,f]=Fe({prop:r,defaultProp:i??!1,onChange:a,caller:Xl});return(0,P.jsx)(ss,{...s,children:(0,P.jsx)(eu,{scope:t,contentId:Ge(),triggerRef:c,open:d,onOpenChange:f,onOpenToggle:_.useCallback(()=>f(e=>!e),[f]),hasCustomAnchor:l,onCustomAnchorAdd:_.useCallback(()=>u(!0),[]),onCustomAnchorRemove:_.useCallback(()=>u(!1),[]),modal:o,children:n})})};nu.displayName=Xl;var ru=`PopoverAnchor`,iu=_.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=tu(ru,n),a=$l(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return _.useEffect(()=>(o(),()=>s()),[o,s]),(0,P.jsx)(cs,{...a,...r,ref:t})});iu.displayName=ru;var au=`PopoverTrigger`,ou=_.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=tu(au,n),a=$l(n),o=N(t,i.triggerRef),s=(0,P.jsx)(F.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.contentId,"data-state":xu(i.open),...r,ref:o,onClick:I(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,P.jsx)(cs,{asChild:!0,...a,children:s})});ou.displayName=au;var su=`PopoverPortal`,[cu,lu]=Zl(su,{forceMount:void 0}),uu=e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=tu(su,t);return(0,P.jsx)(cu,{scope:t,forceMount:n,children:(0,P.jsx)(ze,{present:n||a.open,children:(0,P.jsx)(zt,{asChild:!0,container:i,children:r})})})};uu.displayName=su;var du=`PopoverContent`,fu=_.forwardRef((e,t)=>{let n=lu(du,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=tu(du,e.__scopePopover);return(0,P.jsx)(ze,{present:r||a.open,children:a.modal?(0,P.jsx)(mu,{...i,ref:t}):(0,P.jsx)(hu,{...i,ref:t})})});fu.displayName=du;var pu=ye(`PopoverContent.RemoveScroll`),mu=_.forwardRef((e,t)=>{let n=tu(du,e.__scopePopover),r=_.useRef(null),i=N(t,r),a=_.useRef(!1);return _.useEffect(()=>{let e=r.current;if(e)return sr(e)},[]),(0,P.jsx)(Qn,{as:pu,allowPinchZoom:!0,children:(0,P.jsx)(gu,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:I(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:I(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;a.current=t.button===2||n},{checkForDefaultPrevented:!1}),onFocusOutside:I(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),hu=_.forwardRef((e,t)=>{let n=tu(du,e.__scopePopover),r=_.useRef(!1),i=_.useRef(!1);return(0,P.jsx)(gu,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),gu=_.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=tu(du,n),p=$l(n);return Vt(),(0,P.jsx)(Et,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,P.jsx)(ht,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),children:(0,P.jsx)(ls,{"data-state":xu(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),_u=`PopoverClose`,vu=_.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=tu(_u,n);return(0,P.jsx)(F.button,{type:`button`,...r,ref:t,onClick:I(e.onClick,()=>i.onOpenChange(!1))})});vu.displayName=_u;var yu=`PopoverArrow`,bu=_.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=$l(n);return(0,P.jsx)(us,{...i,...r,ref:t})});bu.displayName=yu;function xu(e){return e?`open`:`closed`}var Su=nu,Cu=ou,wu=uu,Tu=fu,Eu=`Radio`,[Du,Ou]=Ae(Eu),[ku,Au]=Du(Eu),ju=_.forwardRef((e,t)=>{let{__scopeRadio:n,name:r,checked:i=!1,required:a,disabled:o,value:s=`on`,onCheck:c,form:l,...u}=e,[d,f]=_.useState(null),p=N(t,e=>f(e)),m=_.useRef(!1),h=d?l||!!d.closest(`form`):!0;return(0,P.jsxs)(ku,{scope:n,checked:i,disabled:o,children:[(0,P.jsx)(F.button,{type:`button`,role:`radio`,"aria-checked":i,"data-state":Iu(i),"data-disabled":o?``:void 0,disabled:o,value:s,...u,ref:p,onClick:I(e.onClick,e=>{i||c?.(),h&&(m.current=e.isPropagationStopped(),m.current||e.stopPropagation())})}),h&&(0,P.jsx)(Fu,{control:d,bubbles:!m.current,name:r,value:s,checked:i,required:a,disabled:o,form:l,style:{transform:`translateX(-100%)`}})]})});ju.displayName=Eu;var Mu=`RadioIndicator`,Nu=_.forwardRef((e,t)=>{let{__scopeRadio:n,forceMount:r,...i}=e,a=Au(Mu,n);return(0,P.jsx)(ze,{present:r||a.checked,children:(0,P.jsx)(F.span,{"data-state":Iu(a.checked),"data-disabled":a.disabled?``:void 0,...i,ref:t})})});Nu.displayName=Mu;var Pu=`RadioBubbleInput`,Fu=_.forwardRef(({__scopeRadio:e,control:t,checked:n,bubbles:r=!0,...i},a)=>{let o=_.useRef(null),s=N(o,a),c=ki(n),l=Ai(t);return _.useEffect(()=>{let e=o.current;if(!e)return;let t=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(t,`checked`).set;if(c!==n&&i){let t=new Event(`click`,{bubbles:r});i.call(e,n),e.dispatchEvent(t)}},[c,n,r]),(0,P.jsx)(F.input,{type:`radio`,"aria-hidden":!0,defaultChecked:n,...i,tabIndex:-1,ref:s,style:{...i.style,...l,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0}})});Fu.displayName=Pu;function Iu(e){return e?`checked`:`unchecked`}var Lu=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],Ru=`RadioGroup`,[zu,Bu]=Ae(Ru,[vs,Ou]),Vu=vs(),Hu=Ou(),[Uu,Wu]=zu(Ru),Gu=_.forwardRef((e,t)=>{let{__scopeRadioGroup:n,name:r,defaultValue:i,value:a,required:o=!1,disabled:s=!1,orientation:c,dir:l,loop:u=!0,onValueChange:d,...f}=e,p=Vu(n),m=ot(l),[h,g]=Fe({prop:a,defaultProp:i??null,onChange:d,caller:Ru});return(0,P.jsx)(Uu,{scope:n,name:r,required:o,disabled:s,value:h,onValueChange:g,children:(0,P.jsx)(As,{asChild:!0,...p,orientation:c,dir:m,loop:u,children:(0,P.jsx)(F.div,{role:`radiogroup`,"aria-required":o,"aria-orientation":c,"data-disabled":s?``:void 0,dir:m,...f,ref:t})})})});Gu.displayName=Ru;var Ku=`RadioGroupItem`,qu=_.forwardRef((e,t)=>{let{__scopeRadioGroup:n,disabled:r,...i}=e,a=Wu(Ku,n),o=a.disabled||r,s=Vu(n),c=Hu(n),l=_.useRef(null),u=N(t,l),d=a.value===i.value,f=_.useRef(!1);return _.useEffect(()=>{let e=e=>{Lu.includes(e.key)&&(f.current=!0)},t=()=>f.current=!1;return document.addEventListener(`keydown`,e),document.addEventListener(`keyup`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`keyup`,t)}},[]),(0,P.jsx)(js,{asChild:!0,...s,focusable:!o,active:d,children:(0,P.jsx)(ju,{disabled:o,required:a.required,checked:d,...c,...i,name:a.name,ref:u,onCheck:()=>a.onValueChange(i.value),onKeyDown:I(e=>{e.key===`Enter`&&e.preventDefault()}),onFocus:I(i.onFocus,()=>{f.current&&l.current?.click()})})})});qu.displayName=Ku;var Ju=`RadioGroupIndicator`,q=_.forwardRef((e,t)=>{let{__scopeRadioGroup:n,...r}=e;return(0,P.jsx)(Nu,{...Hu(n),...r,ref:t})});q.displayName=Ju;var Yu=Gu,Xu=qu,Zu=q,Qu=`Toggle`,$u=_.forwardRef((e,t)=>{let{pressed:n,defaultPressed:r,onPressedChange:i,...a}=e,[o,s]=Fe({prop:n,onChange:i,defaultProp:r??!1,caller:Qu});return(0,P.jsx)(F.button,{type:`button`,"aria-pressed":o,"data-state":o?`on`:`off`,"data-disabled":e.disabled?``:void 0,...a,ref:t,onClick:I(e.onClick,()=>{e.disabled||s(!o)})})});$u.displayName=Qu;var ed=`ToggleGroup`,[td,nd]=Ae(ed,[vs]),rd=vs(),id=_.forwardRef((e,t)=>{let{type:n,...r}=e;if(n===`single`)return(0,P.jsx)(sd,{...r,ref:t});if(n===`multiple`)return(0,P.jsx)(cd,{...r,ref:t});throw Error(`Missing prop \`type\` expected on \`${ed}\``)});id.displayName=ed;var[ad,od]=td(ed),sd=_.forwardRef((e,t)=>{let{value:n,defaultValue:r,onValueChange:i=()=>{},...a}=e,[o,s]=Fe({prop:n,defaultProp:r??``,onChange:i,caller:ed});return(0,P.jsx)(ad,{scope:e.__scopeToggleGroup,type:`single`,value:_.useMemo(()=>o?[o]:[],[o]),onItemActivate:s,onItemDeactivate:_.useCallback(()=>s(``),[s]),children:(0,P.jsx)(dd,{...a,ref:t})})}),cd=_.forwardRef((e,t)=>{let{value:n,defaultValue:r,onValueChange:i=()=>{},...a}=e,[o,s]=Fe({prop:n,defaultProp:r??[],onChange:i,caller:ed}),c=_.useCallback(e=>s((t=[])=>[...t,e]),[s]),l=_.useCallback(e=>s((t=[])=>t.filter(t=>t!==e)),[s]);return(0,P.jsx)(ad,{scope:e.__scopeToggleGroup,type:`multiple`,value:o,onItemActivate:c,onItemDeactivate:l,children:(0,P.jsx)(dd,{...a,ref:t})})});id.displayName=ed;var[ld,ud]=td(ed),dd=_.forwardRef((e,t)=>{let{__scopeToggleGroup:n,disabled:r=!1,rovingFocus:i=!0,orientation:a,dir:o,loop:s=!0,...c}=e,l=rd(n),u=ot(o),d={role:`group`,dir:u,...c};return(0,P.jsx)(ld,{scope:n,rovingFocus:i,disabled:r,children:i?(0,P.jsx)(As,{asChild:!0,...l,orientation:a,dir:u,loop:s,children:(0,P.jsx)(F.div,{...d,ref:t})}):(0,P.jsx)(F.div,{...d,ref:t})})}),fd=`ToggleGroupItem`,pd=_.forwardRef((e,t)=>{let n=od(fd,e.__scopeToggleGroup),r=ud(fd,e.__scopeToggleGroup),i=rd(e.__scopeToggleGroup),a=n.value.includes(e.value),o=r.disabled||e.disabled,s={...e,pressed:a,disabled:o},c=_.useRef(null);return r.rovingFocus?(0,P.jsx)(js,{asChild:!0,...i,focusable:!o,active:a,ref:c,children:(0,P.jsx)(md,{...s,ref:t})}):(0,P.jsx)(md,{...s,ref:t})});pd.displayName=fd;var md=_.forwardRef((e,t)=>{let{__scopeToggleGroup:n,value:r,...i}=e,a=od(fd,n),o={role:`radio`,"aria-checked":e.pressed,"aria-pressed":void 0};return(0,P.jsx)($u,{...a.type===`single`?o:void 0,...i,ref:t,onPressedChange:e=>{e?a.onItemActivate(r):a.onItemDeactivate(r)}})}),hd=id,gd=pd,_d=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},vd=(e,t)=>({classGroupId:e,validator:t}),yd=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),bd=`-`,xd=[],Sd=`arbitrary..`,Cd=e=>{let t=Td(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return wd(e);let n=e.split(bd);return J(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?_d(i,t):t:i||xd}return n[e]||xd}}},J=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=J(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(bd):e.slice(t).join(bd),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},wd=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?Sd+r:void 0})(),Td=e=>{let{theme:t,classGroups:n}=e;return Ed(n,t)},Ed=(e,t)=>{let n=yd();for(let r in e){let i=e[r];Dd(i,n,r,t)}return n},Dd=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];Od(i,t,n,r)}},Od=(e,t,n,r)=>{if(typeof e==`string`){kd(e,t,n);return}if(typeof e==`function`){Ad(e,t,n,r);return}jd(e,t,n,r)},kd=(e,t,n)=>{let r=e===``?t:Md(t,e);r.classGroupId=n},Ad=(e,t,n,r)=>{if(Nd(e)){Dd(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(vd(n,e))},jd=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];Dd(o,Md(t,a),n,r)}},Md=(e,t)=>{let n=e,r=t.split(bd),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=yd(),n.nextPart.set(t,i)),n=i}return n},Nd=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,Pd=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},Fd=`!`,Id=`:`,Y=[],Ld=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),Rd=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===Id){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(Fd)?(c=s.slice(0,-1),l=!0):s.startsWith(Fd)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return Ld(t,l,c,u)};if(t){let e=t+Id,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):Ld(Y,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},zd=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},Bd=e=>({cache:Pd(e.cacheSize),parseClassName:Rd(e),sortModifiers:zd(e),postfixLookupClassGroupIds:Vd(e),...Cd(e)}),Vd=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e<n.length;e++)t[n[e]]=!0;return t},Hd=/\s+/,Ud=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(Hd),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+Fd:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e<b.length;++e){let t=b[e];s.push(v+t)}l=t+(l.length>0?` `+l:l)}return l},Wd=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=Gd(n))&&(i&&(i+=` `),i+=r);return i},Gd=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=Gd(e[r]))&&(n&&(n+=` `),n+=t);return n},Kd=(e,...t)=>{let n,r,i,a,o=o=>(n=Bd(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=Ud(e,n);return i(e,a),a};return a=o,(...e)=>a(Wd(...e))},qd=[],Jd=e=>{let t=t=>t[e]||qd;return t.isThemeGetter=!0,t},Yd=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Xd=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Zd=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Qd=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,$d=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,ef=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,tf=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,nf=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,rf=e=>Zd.test(e),X=e=>!!e&&!Number.isNaN(Number(e)),af=e=>!!e&&Number.isInteger(Number(e)),of=e=>e.endsWith(`%`)&&X(e.slice(0,-1)),sf=e=>Qd.test(e),cf=()=>!0,lf=e=>$d.test(e)&&!ef.test(e),uf=()=>!1,df=e=>tf.test(e),ff=e=>nf.test(e),pf=e=>!Z(e)&&!Q(e),mf=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),hf=e=>Af(e,Pf,uf),Z=e=>Yd.test(e),gf=e=>Af(e,Ff,lf),_f=e=>Af(e,If,X),vf=e=>Af(e,Rf,cf),yf=e=>Af(e,Lf,uf),bf=e=>Af(e,Mf,uf),xf=e=>Af(e,Nf,ff),Sf=e=>Af(e,zf,df),Q=e=>Xd.test(e),Cf=e=>jf(e,Ff),wf=e=>jf(e,Lf),Tf=e=>jf(e,Mf),Ef=e=>jf(e,Pf),Df=e=>jf(e,Nf),Of=e=>jf(e,zf,!0),kf=e=>jf(e,Rf,!0),Af=(e,t,n)=>{let r=Yd.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},jf=(e,t,n=!1)=>{let r=Xd.exec(e);return r?r[1]?t(r[1]):n:!1},Mf=e=>e===`position`||e===`percentage`,Nf=e=>e===`image`||e===`url`,Pf=e=>e===`length`||e===`size`||e===`bg-size`,Ff=e=>e===`length`,If=e=>e===`number`,Lf=e=>e===`family-name`,Rf=e=>e===`number`||e===`weight`,zf=e=>e===`shadow`,Bf=Kd(()=>{let e=Jd(`color`),t=Jd(`font`),n=Jd(`text`),r=Jd(`font-weight`),i=Jd(`tracking`),a=Jd(`leading`),o=Jd(`breakpoint`),s=Jd(`container`),c=Jd(`spacing`),l=Jd(`radius`),u=Jd(`shadow`),d=Jd(`inset-shadow`),f=Jd(`text-shadow`),p=Jd(`drop-shadow`),m=Jd(`blur`),h=Jd(`perspective`),g=Jd(`aspect`),_=Jd(`ease`),v=Jd(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),Q,Z],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[Q,Z,c],T=()=>[rf,`full`,`auto`,...w()],ee=()=>[af,`none`,`subgrid`,Q,Z],te=()=>[`auto`,{span:[`full`,af,Q,Z]},af,Q,Z],E=()=>[af,`auto`,Q,Z],ne=()=>[`auto`,`min`,`max`,`fr`,Q,Z],re=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],D=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],ie=()=>[`auto`,...w()],O=()=>[rf,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],ae=()=>[rf,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],oe=()=>[rf,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],k=()=>[e,Q,Z],A=()=>[...b(),Tf,bf,{position:[Q,Z]}],se=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ce=()=>[`auto`,`cover`,`contain`,Ef,hf,{size:[Q,Z]}],le=()=>[of,Cf,gf],ue=()=>[``,`none`,`full`,l,Q,Z],j=()=>[``,X,Cf,gf],M=()=>[`solid`,`dashed`,`dotted`,`double`],de=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],fe=()=>[X,of,Tf,bf],pe=()=>[``,`none`,m,Q,Z],me=()=>[`none`,X,Q,Z],he=()=>[`none`,X,Q,Z],ge=()=>[X,Q,Z],_e=()=>[rf,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[sf],breakpoint:[sf],color:[cf],container:[sf],"drop-shadow":[sf],ease:[`in`,`out`,`in-out`],font:[pf],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[sf],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[sf],shadow:[sf],spacing:[`px`,X],text:[sf],"text-shadow":[sf],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,rf,Z,Q,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,Q,Z]}],"container-named":[mf],columns:[{columns:[X,Z,Q,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[af,`auto`,Q,Z]}],basis:[{basis:[rf,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[X,rf,`auto`,`initial`,`none`,Z]}],grow:[{grow:[``,X,Q,Z]}],shrink:[{shrink:[``,X,Q,Z]}],order:[{order:[af,`first`,`last`,`none`,Q,Z]}],"grid-cols":[{"grid-cols":ee()}],"col-start-end":[{col:te()}],"col-start":[{"col-start":E()}],"col-end":[{"col-end":E()}],"grid-rows":[{"grid-rows":ee()}],"row-start-end":[{row:te()}],"row-start":[{"row-start":E()}],"row-end":[{"row-end":E()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":ne()}],"auto-rows":[{"auto-rows":ne()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...re(),`normal`]}],"justify-items":[{"justify-items":[...D(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...D()]}],"align-content":[{content:[`normal`,...re()]}],"align-items":[{items:[...D(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...D(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":re()}],"place-items":[{"place-items":[...D(),`baseline`]}],"place-self":[{"place-self":[`auto`,...D()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:ie()}],mx:[{mx:ie()}],my:[{my:ie()}],ms:[{ms:ie()}],me:[{me:ie()}],mbs:[{mbs:ie()}],mbe:[{mbe:ie()}],mt:[{mt:ie()}],mr:[{mr:ie()}],mb:[{mb:ie()}],ml:[{ml:ie()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:O()}],"inline-size":[{inline:[`auto`,...ae()]}],"min-inline-size":[{"min-inline":[`auto`,...ae()]}],"max-inline-size":[{"max-inline":[`none`,...ae()]}],"block-size":[{block:[`auto`,...oe()]}],"min-block-size":[{"min-block":[`auto`,...oe()]}],"max-block-size":[{"max-block":[`none`,...oe()]}],w:[{w:[s,`screen`,...O()]}],"min-w":[{"min-w":[s,`screen`,`none`,...O()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...O()]}],h:[{h:[`screen`,`lh`,...O()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...O()]}],"max-h":[{"max-h":[`screen`,`lh`,...O()]}],"font-size":[{text:[`base`,n,Cf,gf]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,kf,vf]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,of,Z]}],"font-family":[{font:[wf,yf,t]}],"font-features":[{"font-features":[Z]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,Q,Z]}],"line-clamp":[{"line-clamp":[X,`none`,Q,_f]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,Q,Z]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,Q,Z]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:k()}],"text-color":[{text:k()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...M(),`wavy`]}],"text-decoration-thickness":[{decoration:[X,`from-font`,`auto`,Q,gf]}],"text-decoration-color":[{decoration:k()}],"underline-offset":[{"underline-offset":[X,`auto`,Q,Z]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[af,Q,Z]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,Q,Z]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,Q,Z]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:A()}],"bg-repeat":[{bg:se()}],"bg-size":[{bg:ce()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},af,Q,Z],radial:[``,Q,Z],conic:[af,Q,Z]},Df,xf]}],"bg-color":[{bg:k()}],"gradient-from-pos":[{from:le()}],"gradient-via-pos":[{via:le()}],"gradient-to-pos":[{to:le()}],"gradient-from":[{from:k()}],"gradient-via":[{via:k()}],"gradient-to":[{to:k()}],rounded:[{rounded:ue()}],"rounded-s":[{"rounded-s":ue()}],"rounded-e":[{"rounded-e":ue()}],"rounded-t":[{"rounded-t":ue()}],"rounded-r":[{"rounded-r":ue()}],"rounded-b":[{"rounded-b":ue()}],"rounded-l":[{"rounded-l":ue()}],"rounded-ss":[{"rounded-ss":ue()}],"rounded-se":[{"rounded-se":ue()}],"rounded-ee":[{"rounded-ee":ue()}],"rounded-es":[{"rounded-es":ue()}],"rounded-tl":[{"rounded-tl":ue()}],"rounded-tr":[{"rounded-tr":ue()}],"rounded-br":[{"rounded-br":ue()}],"rounded-bl":[{"rounded-bl":ue()}],"border-w":[{border:j()}],"border-w-x":[{"border-x":j()}],"border-w-y":[{"border-y":j()}],"border-w-s":[{"border-s":j()}],"border-w-e":[{"border-e":j()}],"border-w-bs":[{"border-bs":j()}],"border-w-be":[{"border-be":j()}],"border-w-t":[{"border-t":j()}],"border-w-r":[{"border-r":j()}],"border-w-b":[{"border-b":j()}],"border-w-l":[{"border-l":j()}],"divide-x":[{"divide-x":j()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":j()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...M(),`hidden`,`none`]}],"divide-style":[{divide:[...M(),`hidden`,`none`]}],"border-color":[{border:k()}],"border-color-x":[{"border-x":k()}],"border-color-y":[{"border-y":k()}],"border-color-s":[{"border-s":k()}],"border-color-e":[{"border-e":k()}],"border-color-bs":[{"border-bs":k()}],"border-color-be":[{"border-be":k()}],"border-color-t":[{"border-t":k()}],"border-color-r":[{"border-r":k()}],"border-color-b":[{"border-b":k()}],"border-color-l":[{"border-l":k()}],"divide-color":[{divide:k()}],"outline-style":[{outline:[...M(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[X,Q,Z]}],"outline-w":[{outline:[``,X,Cf,gf]}],"outline-color":[{outline:k()}],shadow:[{shadow:[``,`none`,u,Of,Sf]}],"shadow-color":[{shadow:k()}],"inset-shadow":[{"inset-shadow":[`none`,d,Of,Sf]}],"inset-shadow-color":[{"inset-shadow":k()}],"ring-w":[{ring:j()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:k()}],"ring-offset-w":[{"ring-offset":[X,gf]}],"ring-offset-color":[{"ring-offset":k()}],"inset-ring-w":[{"inset-ring":j()}],"inset-ring-color":[{"inset-ring":k()}],"text-shadow":[{"text-shadow":[`none`,f,Of,Sf]}],"text-shadow-color":[{"text-shadow":k()}],opacity:[{opacity:[X,Q,Z]}],"mix-blend":[{"mix-blend":[...de(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":de()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[X]}],"mask-image-linear-from-pos":[{"mask-linear-from":fe()}],"mask-image-linear-to-pos":[{"mask-linear-to":fe()}],"mask-image-linear-from-color":[{"mask-linear-from":k()}],"mask-image-linear-to-color":[{"mask-linear-to":k()}],"mask-image-t-from-pos":[{"mask-t-from":fe()}],"mask-image-t-to-pos":[{"mask-t-to":fe()}],"mask-image-t-from-color":[{"mask-t-from":k()}],"mask-image-t-to-color":[{"mask-t-to":k()}],"mask-image-r-from-pos":[{"mask-r-from":fe()}],"mask-image-r-to-pos":[{"mask-r-to":fe()}],"mask-image-r-from-color":[{"mask-r-from":k()}],"mask-image-r-to-color":[{"mask-r-to":k()}],"mask-image-b-from-pos":[{"mask-b-from":fe()}],"mask-image-b-to-pos":[{"mask-b-to":fe()}],"mask-image-b-from-color":[{"mask-b-from":k()}],"mask-image-b-to-color":[{"mask-b-to":k()}],"mask-image-l-from-pos":[{"mask-l-from":fe()}],"mask-image-l-to-pos":[{"mask-l-to":fe()}],"mask-image-l-from-color":[{"mask-l-from":k()}],"mask-image-l-to-color":[{"mask-l-to":k()}],"mask-image-x-from-pos":[{"mask-x-from":fe()}],"mask-image-x-to-pos":[{"mask-x-to":fe()}],"mask-image-x-from-color":[{"mask-x-from":k()}],"mask-image-x-to-color":[{"mask-x-to":k()}],"mask-image-y-from-pos":[{"mask-y-from":fe()}],"mask-image-y-to-pos":[{"mask-y-to":fe()}],"mask-image-y-from-color":[{"mask-y-from":k()}],"mask-image-y-to-color":[{"mask-y-to":k()}],"mask-image-radial":[{"mask-radial":[Q,Z]}],"mask-image-radial-from-pos":[{"mask-radial-from":fe()}],"mask-image-radial-to-pos":[{"mask-radial-to":fe()}],"mask-image-radial-from-color":[{"mask-radial-from":k()}],"mask-image-radial-to-color":[{"mask-radial-to":k()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[X]}],"mask-image-conic-from-pos":[{"mask-conic-from":fe()}],"mask-image-conic-to-pos":[{"mask-conic-to":fe()}],"mask-image-conic-from-color":[{"mask-conic-from":k()}],"mask-image-conic-to-color":[{"mask-conic-to":k()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:A()}],"mask-repeat":[{mask:se()}],"mask-size":[{mask:ce()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,Q,Z]}],filter:[{filter:[``,`none`,Q,Z]}],blur:[{blur:pe()}],brightness:[{brightness:[X,Q,Z]}],contrast:[{contrast:[X,Q,Z]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,Of,Sf]}],"drop-shadow-color":[{"drop-shadow":k()}],grayscale:[{grayscale:[``,X,Q,Z]}],"hue-rotate":[{"hue-rotate":[X,Q,Z]}],invert:[{invert:[``,X,Q,Z]}],saturate:[{saturate:[X,Q,Z]}],sepia:[{sepia:[``,X,Q,Z]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,Q,Z]}],"backdrop-blur":[{"backdrop-blur":pe()}],"backdrop-brightness":[{"backdrop-brightness":[X,Q,Z]}],"backdrop-contrast":[{"backdrop-contrast":[X,Q,Z]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,X,Q,Z]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[X,Q,Z]}],"backdrop-invert":[{"backdrop-invert":[``,X,Q,Z]}],"backdrop-opacity":[{"backdrop-opacity":[X,Q,Z]}],"backdrop-saturate":[{"backdrop-saturate":[X,Q,Z]}],"backdrop-sepia":[{"backdrop-sepia":[``,X,Q,Z]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,Q,Z]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[X,`initial`,Q,Z]}],ease:[{ease:[`linear`,`initial`,_,Q,Z]}],delay:[{delay:[X,Q,Z]}],animate:[{animate:[`none`,v,Q,Z]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,Q,Z]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:me()}],"rotate-x":[{"rotate-x":me()}],"rotate-y":[{"rotate-y":me()}],"rotate-z":[{"rotate-z":me()}],scale:[{scale:he()}],"scale-x":[{"scale-x":he()}],"scale-y":[{"scale-y":he()}],"scale-z":[{"scale-z":he()}],"scale-3d":[`scale-3d`],skew:[{skew:ge()}],"skew-x":[{"skew-x":ge()}],"skew-y":[{"skew-y":ge()}],transform:[{transform:[Q,Z,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:_e()}],"translate-x":[{"translate-x":_e()}],"translate-y":[{"translate-y":_e()}],"translate-z":[{"translate-z":_e()}],"translate-none":[`translate-none`],zoom:[{zoom:[af,Q,Z]}],accent:[{accent:k()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:k()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,Q,Z]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":k()}],"scrollbar-track-color":[{"scrollbar-track":k()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,Q,Z]}],fill:[{fill:[`none`,...k()]}],"stroke-w":[{stroke:[X,Cf,gf,_f]}],stroke:[{stroke:[`none`,...k()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function $(...e){return Bf(fe(e))}var Vf=he(`group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,outline:`border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground`,ghost:`hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground`,destructive:`bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,xs:`h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,icon:`size-8`,"icon-xs":`size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg`,"icon-lg":`size-9`}},defaultVariants:{variant:`default`,size:`default`}});function Hf({className:e,variant:t=`default`,size:n=`default`,asChild:r=!1,...i}){return(0,P.jsx)(r?be:`button`,{"data-slot":`button`,"data-variant":t,"data-size":n,className:$(Vf({variant:t,size:n,className:e})),...i})}async function Uf(){let e=await fetch(`/api/web/auth/mode`);if(!e.ok)throw Error(`auth/mode: ${e.status}`);let t=await e.json();return{mode:t.mode,personaName:t.personaName??`Familiar`}}async function Wf(){let e=await fetch(`/api/web/sessions`);if(!e.ok)throw Error(`sessions: ${e.status}`);return(await e.json()).sessions}async function Gf(e,t=50){let n=new URLSearchParams({limit:String(t)});e&&n.set(`channelKey`,e);let r=await fetch(`/api/web/history?${n.toString()}`);if(!r.ok)throw Error(`history: ${r.status}`);return await r.json()}async function Kf(e,t,n,r=[]){let i=new FormData;i.set(`text`,e),i.set(`clientId`,t),n&&i.set(`channelKey`,n);for(let e of r)i.append(`attachments`,e,e.name);let a=await fetch(`/api/web/send`,{method:`POST`,body:i});if(!a.ok)throw Error(`send: ${a.status}`);return await a.json()}function qf(e){let t=window.location.protocol===`https:`?`wss:`:`ws:`,n=e?`?channelKey=${encodeURIComponent(e)}`:``;return`${t}//${window.location.host}/api/web/stream${n}`}async function Jf(e){let t=new URLSearchParams;e&&t.set(`channelKey`,e);let n=await fetch(`/api/web/agent/settings${t.toString()?`?${t.toString()}`:``}`);if(!n.ok)throw Error(`agent/settings: ${n.status}`);return await n.json()}async function Yf(){let e=await fetch(`/api/web/agent/models`);if(!e.ok)throw Error(`agent/models: ${e.status}`);let t=await e.json();return{models:t.models,added:t.added??[]}}async function Xf(e){let t=await fetch(`/api/web/agent/models`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:e})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`agent/models: ${t.status}`)}let n=await t.json();return{models:n.models,added:n.added??[]}}async function Zf(e){let t=await fetch(`/api/web/agent/models`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({model:e})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`agent/models: ${t.status}`)}let n=await t.json();return{models:n.models,added:n.added??[]}}async function Qf(e,t){let n=await fetch(`/api/web/agent/settings`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({channelKey:e,...t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`agent/settings: ${n.status}`)}return await n.json()}async function $f(e){let t=await fetch(`/api/web/agent/new`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({channelKey:e})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`agent/new: ${t.status}`)}}async function ep(){let e=await fetch(`/api/web/memes`);if(!e.ok)throw Error(`memes: ${e.status}`);return(await e.json()).families}async function tp(){let e=await fetch(`/api/web/config`);if(!e.ok)throw Error(`config: ${e.status}`);return await e.json()}async function np(e,t){let n=await fetch(`/api/web/config`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({key:e,value:t})});if(!n.ok){let e=await n.json().catch(()=>({}));throw Error(e.error??`config: ${n.status}`)}return await n.json()}async function rp(e){let t=await fetch(`/api/web/config`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({key:e})});if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error??`config: ${t.status}`)}return await t.json()}function ip({onPick:e}){let[t,n]=(0,_.useState)(!1),[r,i]=(0,_.useState)(null),[a,o]=(0,_.useState)(null),[s,c]=(0,_.useState)(null),[l,u]=(0,_.useState)(``),d=(0,_.useRef)(null),f=(0,_.useRef)(!1);(0,_.useEffect)(()=>{t&&(r!=null||f.current||(f.current=!0,ep().then(e=>{i(e),!s&&e[0]&&c(e[0].name),o(null)}).catch(()=>o(`catalog unavailable`)).finally(()=>{f.current=!1})))},[t,r,s]),(0,_.useEffect)(()=>{if(t){let e=window.setTimeout(()=>d.current?.focus(),30);return()=>window.clearTimeout(e)}let e=window.setTimeout(()=>u(``),0);return()=>window.clearTimeout(e)},[t]);let p=(0,_.useMemo)(()=>r?r.find(e=>e.name===s)??r[0]??null:null,[r,s]),m=(0,_.useMemo)(()=>{if(!p)return[];let e=l.trim().toLowerCase();return e?p.memes.filter(t=>t.name.toLowerCase().includes(e)):p.memes},[p,l]),h=t=>{e(t),n(!1)};return(0,P.jsxs)(Su,{open:t,onOpenChange:n,children:[(0,P.jsx)(Cu,{asChild:!0,children:(0,P.jsx)(Hf,{type:`button`,size:`sm`,variant:`ghost`,"aria-label":`memes`,className:`text-muted-foreground hover:text-foreground`,children:(0,P.jsx)(ce,{className:`size-4`})})}),(0,P.jsx)(wu,{children:(0,P.jsx)(Tu,{side:`top`,align:`end`,sideOffset:10,collisionPadding:16,className:$(`z-50 w-[min(28rem,calc(100vw-2rem))] origin-(--radix-popover-content-transform-origin)`,`rounded-md border border-border bg-card p-3 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`),children:a?(0,P.jsx)(`div`,{className:`px-2 py-6 text-center font-serif text-sm italic text-muted-foreground`,children:a}):r?(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(`div`,{className:`flex items-center gap-3 px-1 pb-2 text-sm`,children:r.map((e,t)=>(0,P.jsxs)(`span`,{className:`flex items-center gap-3`,children:[t>0&&(0,P.jsx)(`span`,{className:`text-muted-foreground/40`,children:`·`}),(0,P.jsx)(`button`,{type:`button`,onClick:()=>c(e.name),className:$(`font-serif tracking-tight transition-colors`,e.name===p?.name?`text-foreground`:`italic text-muted-foreground hover:text-foreground`),children:e.name})]},e.name))}),(0,P.jsx)(`input`,{ref:d,type:`text`,value:l,onChange:e=>u(e.target.value),placeholder:`search by name…`,className:$(`mb-2 w-full rounded border border-input bg-background px-2.5 py-1.5 text-sm`,`placeholder:text-muted-foreground focus:outline-none`,`transition-[border-color,box-shadow] focus:border-ring focus:ring-3 focus:ring-ring/30`)}),(0,P.jsx)(`div`,{className:`max-h-72 overflow-y-auto`,children:m.length===0?(0,P.jsx)(`div`,{className:`px-2 py-6 text-center font-serif text-sm italic text-muted-foreground/80`,children:`nothing in this family matches`}):(0,P.jsx)(`div`,{className:`grid grid-cols-4 gap-2 sm:grid-cols-5`,children:m.map(e=>(0,P.jsxs)(`button`,{type:`button`,onClick:()=>h(e),title:e.name,className:$(`group relative aspect-square overflow-hidden rounded border border-border/60 bg-background`,`transition-[border-color,transform] hover:border-ring hover:-translate-y-px`),children:[(0,P.jsx)(`img`,{src:e.url,alt:e.name,loading:`lazy`,className:`h-full w-full object-cover`}),(0,P.jsx)(`span`,{className:$(`pointer-events-none absolute inset-x-0 bottom-0 truncate px-1 py-0.5`,`bg-gradient-to-t from-background/95 via-background/70 to-transparent`,`text-[10px] font-medium leading-tight text-foreground`,`opacity-0 transition-opacity group-hover:opacity-100`),children:e.name})]},e.url))})})]}):(0,P.jsx)(`div`,{className:`px-2 py-6 text-center font-serif text-sm italic text-muted-foreground/80`,children:`opening the drawer…`})})})]})}function ap({onSend:e,onAbort:t,streaming:n,personaName:r}){let[i,a]=(0,_.useState)(``),[o,s]=(0,_.useState)([]),c=(0,_.useRef)(null),l=(0,_.useRef)(null);(0,_.useEffect)(()=>{let e=c.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,200)}px`)},[i]);let u=()=>{let t=i.trim();!t&&o.length===0||(e(t,o),a(``),s([]))},d=e=>{let t=`meme: ${e.name} (${e.url})`;a(e=>e.trim()?`${e.trimEnd()}\n${t}`:t),window.setTimeout(()=>c.current?.focus(),0)},f=!n&&!i.trim()&&o.length===0;return(0,P.jsx)(`div`,{className:`border-t border-border bg-background pb-[env(safe-area-inset-bottom)]`,children:(0,P.jsxs)(`div`,{className:`mx-auto max-w-3xl px-5 py-4`,children:[(0,P.jsx)(`input`,{ref:l,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{s([...e.target.files?Array.from(e.target.files):[]]),e.target.value=``}}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border border-input bg-card px-3 py-2.5 shadow-sm transition-[border-color,box-shadow] focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/30`,children:[o.length>0&&(0,P.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:o.map((e,t)=>(0,P.jsxs)(`button`,{type:`button`,onClick:()=>s(e=>e.filter((e,n)=>n!==t)),className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-xs text-muted-foreground`,children:[e.name,(0,P.jsx)(M,{className:`size-3`})]},`${e.name}-${t}`))}),(0,P.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,P.jsx)(Hf,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>l.current?.click(),"aria-label":`attach`,className:`text-muted-foreground hover:text-foreground`,children:(0,P.jsx)(ae,{className:`size-4`})}),(0,P.jsx)(ip,{onPick:d}),(0,P.jsx)(`textarea`,{ref:c,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),u())},placeholder:`write to ${r}…`,rows:1,autoFocus:!0,className:`min-h-8 flex-1 resize-none bg-transparent leading-8 text-foreground placeholder:text-muted-foreground focus:outline-none`}),(0,P.jsx)(Hf,{type:`button`,size:`sm`,onClick:n?t:u,disabled:f,"aria-label":n?`stop`:`send`,className:`h-8 px-3`,children:n?(0,P.jsx)(ue,{className:`size-3 fill-current`,strokeWidth:0}):(0,P.jsx)(A,{className:`size-4`})})]})]}),(0,P.jsx)(`p`,{className:`mt-1.5 text-center text-[11px] tracking-wide text-muted-foreground`,children:`enter to send · shift+enter for newline`})]})})}function op({...e}){return(0,P.jsx)(it,{"data-slot":`collapsible`,...e})}function sp({...e}){return(0,P.jsx)($e,{"data-slot":`collapsible-trigger`,...e})}function cp({...e}){return(0,P.jsx)(tt,{"data-slot":`collapsible-content`,...e})}function lp({...e}){return(0,P.jsx)(Hr,{"data-slot":`sheet`,...e})}function up({...e}){return(0,P.jsx)(Wr,{"data-slot":`sheet-portal`,...e})}function dp({className:e,...t}){return(0,P.jsx)(Gr,{"data-slot":`sheet-overlay`,className:$(`fixed inset-0 z-50 bg-foreground/15 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function fp({className:e,children:t,side:n=`right`,showCloseButton:r=!0,...i}){return(0,P.jsxs)(up,{children:[(0,P.jsx)(dp,{}),(0,P.jsxs)(Kr,{"data-slot":`sheet-content`,"data-side":n,className:$(`fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10`,e),...i,children:[t,r&&(0,P.jsx)(Yr,{"data-slot":`sheet-close`,asChild:!0,children:(0,P.jsxs)(Hf,{variant:`ghost`,className:`absolute top-3 right-3`,size:`icon-sm`,children:[(0,P.jsx)(M,{}),(0,P.jsx)(`span`,{className:`sr-only`,children:`Close`})]})})]})]})}function pp({className:e,...t}){return(0,P.jsx)(`div`,{"data-slot":`sheet-header`,className:$(`flex flex-col gap-0.5 p-4`,e),...t})}function mp({className:e,...t}){return(0,P.jsx)(qr,{"data-slot":`sheet-title`,className:$(`font-heading text-base font-medium text-foreground`,e),...t})}function hp({className:e,...t}){return(0,P.jsx)(Yu,{"data-slot":`radio-group`,className:$(`grid w-full gap-2`,e),...t})}function gp({className:e,...t}){return(0,P.jsx)(Xu,{"data-slot":`radio-group-item`,className:$(`group/radio-group-item peer relative flex aspect-square size-4 shrink-0 rounded-full border border-input outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary`,e),...t,children:(0,P.jsx)(Zu,{"data-slot":`radio-group-indicator`,className:`flex size-4 items-center justify-center`,children:(0,P.jsx)(`span`,{className:`absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary-foreground`})})})}function _p({className:e,...t}){return(0,P.jsx)(Yl,{"data-slot":`label`,className:$(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}function vp({models:e,added:t,current:n,source:r,disabled:i,onChange:a,onAdd:o,onRemove:s}){let[c,l]=(0,_.useState)(``),[u,d]=(0,_.useState)(!1),[f,p]=(0,_.useState)(),m=new Set(t),h=async e=>{e.preventDefault();let t=c.trim();if(t){if(!t.includes(`/`)||t.startsWith(`/`)||t.endsWith(`/`)){p(`format must be provider/model-id`);return}p(void 0),d(!0);try{await o(t),l(``)}catch(e){p(e instanceof Error?e.message:String(e))}finally{d(!1)}}},g=async(e,t)=>{e.preventDefault(),e.stopPropagation(),d(!0);try{await s(t)}catch{}finally{d(!1)}};return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(hp,{value:n??``,onValueChange:a,disabled:i,className:`grid gap-1`,children:e.map(e=>{let t=`model-${e}`,r=e===n,a=m.has(e),[o,...s]=e.split(`/`),c=s.join(`/`);return(0,P.jsxs)(_p,{htmlFor:t,className:`group/row flex cursor-pointer items-center gap-3 rounded-md px-3 py-2.5 transition-colors hover:bg-accent has-data-[state=checked]:bg-primary has-data-[state=checked]:text-primary-foreground has-data-[state=checked]:hover:bg-primary`,children:[(0,P.jsx)(gp,{value:e,id:t}),(0,P.jsxs)(`span`,{className:`min-w-0 flex-1 font-mono text-sm leading-tight`,children:[(0,P.jsx)(`span`,{className:r?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:o}),(0,P.jsx)(`span`,{className:r?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:`/`}),(0,P.jsx)(`span`,{className:r?`text-primary-foreground`:`text-muted-foreground group-hover/row:text-foreground`,children:c})]}),a?(0,P.jsx)(`button`,{type:`button`,onClick:t=>g(t,e),"aria-label":`remove ${e}`,disabled:u||i,className:`flex size-6 shrink-0 items-center justify-center rounded-sm opacity-0 transition-opacity group-hover/row:opacity-100 focus-visible:opacity-100 disabled:cursor-not-allowed `+(r?`text-primary-foreground/70 hover:text-primary-foreground`:`text-muted-foreground hover:text-foreground`),children:(0,P.jsx)(M,{className:`size-3.5`})}):null]},e)})}),n&&r?(0,P.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-muted-foreground/70`,children:r===`override`?`set for this channel`:`inherited from default config`}):null,(0,P.jsxs)(`form`,{onSubmit:h,className:`mt-4 flex items-center gap-2`,children:[(0,P.jsx)(`input`,{type:`text`,value:c,onChange:e=>{l(e.target.value),f&&p(void 0)},placeholder:`provider/model-id`,spellCheck:!1,autoComplete:`off`,disabled:u||i,className:`h-8 min-w-0 flex-1 rounded-md border border-border bg-background px-3 font-mono text-sm text-foreground placeholder:text-muted-foreground/60 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`}),(0,P.jsx)(Hf,{type:`submit`,variant:`outline`,size:`default`,disabled:u||i||!c.trim(),children:`add`})]}),f?(0,P.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-destructive`,children:f}):null]})}var yp=he(`group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent hover:bg-muted`},size:{default:`h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,sm:`h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`}},defaultVariants:{variant:`default`,size:`default`}}),bp=_.createContext({size:`default`,variant:`default`,spacing:0,orientation:`horizontal`});function xp({className:e,variant:t,size:n,spacing:r=0,orientation:i=`horizontal`,children:a,...o}){return(0,P.jsx)(hd,{"data-slot":`toggle-group`,"data-variant":t,"data-size":n,"data-spacing":r,"data-orientation":i,style:{"--gap":r},className:$(`group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch`,e),...o,children:(0,P.jsx)(bp.Provider,{value:{variant:t,size:n,spacing:r,orientation:i},children:a})})}function Sp({className:e,children:t,variant:n=`default`,size:r=`default`,...i}){let a=_.useContext(bp);return(0,P.jsx)(gd,{"data-slot":`toggle-group-item`,"data-variant":a.variant||n,"data-size":a.size||r,"data-spacing":a.spacing,className:$(`shrink-0 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t`,yp({variant:a.variant||n,size:a.size||r}),e),...i,children:t})}var Cp=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function wp({current:e,supported:t,disabled:n,onChange:r}){let i=Cp.filter(e=>t.includes(e)),a=i.length>0?i:Cp;return(0,P.jsx)(xp,{type:`single`,value:e??``,onValueChange:e=>{e&&r(e)},disabled:n,spacing:1,className:`flex-wrap rounded-lg bg-muted/40 p-1`,children:a.map(e=>(0,P.jsx)(Sp,{value:e,"aria-label":`thinking ${e}`,className:`h-9 rounded-md px-3.5 text-sm lowercase text-muted-foreground transition-colors hover:bg-muted hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:hover:bg-primary`,children:e},e))})}var Tp=`familiar.theme`;function Ep(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches}function Dp(){let e=localStorage.getItem(Tp);return e===`light`||e===`dark`||e===`auto`?e:`auto`}function Op(e){localStorage.setItem(Tp,e),kp(e)}function kp(e){let t=e===`dark`||e===`auto`&&Ep();document.documentElement.classList.toggle(`dark`,t)}function Ap(e){let t=window.matchMedia(`(prefers-color-scheme: dark)`),n=()=>{e()===`auto`&&kp(`auto`)};return t.addEventListener(`change`,n),()=>t.removeEventListener(`change`,n)}var jp=[`light`,`dark`,`auto`],Mp={light:j,dark:O,auto:ie},Np={light:`light`,dark:`dark`,auto:`system`};function Pp(){let[e,t]=(0,_.useState)(()=>Dp());return(0,_.useEffect)(()=>{Op(e)},[e]),(0,P.jsx)(xp,{type:`single`,value:e,onValueChange:e=>{e&&t(e)},spacing:1,className:`rounded-lg bg-muted/40 p-1`,children:jp.map(e=>{let t=Mp[e];return(0,P.jsxs)(Sp,{value:e,"aria-label":Np[e],className:`h-9 gap-2 rounded-md px-3.5 text-sm lowercase text-muted-foreground transition-colors hover:bg-muted hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:hover:bg-primary`,children:[(0,P.jsx)(t,{className:`size-4`}),(0,P.jsx)(`span`,{children:Np[e]})]},e)})})}var Fp=6e4,Ip=`h-9 rounded-md px-3.5 text-sm lowercase text-muted-foreground transition-colors hover:bg-muted hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:hover:bg-primary`;function Lp({valueMs:e,disabled:t,onCommit:n}){let r=e===void 0?``:String(Math.round(e/Fp)),[i,a]=(0,_.useState)(r),[o,s]=(0,_.useState)(!1),c=async()=>{let t=Number.parseInt(i,10);if(Number.isNaN(t)||t<1){a(r);return}let o=t*Fp;if(o!==e){s(!0);try{await n(o)}catch{a(r)}finally{s(!1)}}};return(0,P.jsx)(`input`,{type:`number`,inputMode:`numeric`,value:i,onChange:e=>a(e.target.value),onBlur:()=>void c(),onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},disabled:t||o,min:1,className:`h-8 w-16 rounded-md border border-border bg-background px-2 font-mono text-sm text-right text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`})}function Rp({enabled:e,idleThresholdMs:t,intervalMs:n,disabled:r,onChange:i}){let a=e===!0;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(xp,{type:`single`,value:e===void 0?``:a?`on`:`off`,onValueChange:e=>{e&&i(`heartbeat.enabled`,e===`on`)},disabled:r,spacing:1,className:`rounded-lg bg-muted/40 p-1`,children:[(0,P.jsx)(Sp,{value:`on`,"aria-label":`heartbeat on`,className:Ip,children:`on`}),(0,P.jsx)(Sp,{value:`off`,"aria-label":`heartbeat off`,className:Ip,children:`off`})]}),(0,P.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:`first wakeup after`}),(0,P.jsx)(Lp,{valueMs:t,disabled:r||!a,onCommit:e=>i(`heartbeat.idleThresholdMs`,e)},`idle-${t??`default`}`),(0,P.jsx)(`span`,{className:`w-14 font-serif text-xs italic text-muted-foreground`,children:`minutes`})]}),(0,P.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`minutes of silence before the first wakeup`})]}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:`between wakeups`}),(0,P.jsx)(Lp,{valueMs:n,disabled:r||!a,onCommit:e=>i(`heartbeat.intervalMs`,e)},`interval-${n??`default`}`),(0,P.jsx)(`span`,{className:`w-14 font-serif text-xs italic text-muted-foreground`,children:`minutes`})]}),(0,P.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`cadence of subsequent wakeups while you stay quiet`})]})]})]})}var zp=`h-9 rounded-md px-3.5 text-sm lowercase text-muted-foreground transition-colors hover:bg-muted hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:hover:bg-primary`;function Bp({value:e,placeholder:t,allowEmpty:n,disabled:r,onCommit:i}){let a=e??``,[o,s]=(0,_.useState)(a),[c,l]=(0,_.useState)(!1),[u,d]=(0,_.useState)(!1),f=async()=>{let e=o.trim();if(e===a){s(e),d(!1);return}if(!e){if(!n){s(a),d(!1);return}}else if(!/^[^/\s]+\/[^\s]+$/.test(e)){d(!0);return}l(!0),d(!1);try{await i(e)}catch{s(a)}finally{l(!1)}};return(0,P.jsx)(`input`,{type:`text`,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`,spellCheck:!1,value:o,placeholder:t,onChange:e=>{s(e.target.value),u&&d(!1)},onBlur:()=>void f(),onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},disabled:r||c,className:`h-9 w-full rounded-md border bg-background px-3 font-mono text-sm text-foreground focus-visible:ring-3 focus-visible:outline-none disabled:opacity-50 ${u?`border-destructive focus-visible:border-destructive focus-visible:ring-destructive/40`:`border-border focus-visible:border-ring focus-visible:ring-ring/50`}`})}function Vp({enabled:e,model:t,fallbackModel:n,disabled:r,onChange:i}){let a=e===!0,o=r||!a;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(xp,{type:`single`,value:e===void 0?``:a?`on`:`off`,onValueChange:e=>{e&&i(`image_gen.enabled`,e===`on`)},disabled:r,spacing:1,className:`rounded-lg bg-muted/40 p-1`,children:[(0,P.jsx)(Sp,{value:`on`,"aria-label":`image generation on`,className:zp,children:`on`}),(0,P.jsx)(Sp,{value:`off`,"aria-label":`image generation off`,className:zp,children:`off`})]}),(0,P.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,P.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,P.jsx)(`span`,{className:`font-serif text-sm text-foreground`,children:`primary model`}),(0,P.jsx)(Bp,{value:t,placeholder:`openrouter/google/gemini-2.5-flash-image`,allowEmpty:!1,disabled:o,onCommit:e=>i(`image_gen.model`,e)},`model-${t??`default`}`),(0,P.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`format: provider/model-id`})]}),(0,P.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,P.jsx)(`span`,{className:`font-serif text-sm text-foreground`,children:`fallback model`}),(0,P.jsx)(Bp,{value:n,placeholder:`none`,allowEmpty:!0,disabled:o,onCommit:e=>i(`image_gen.fallback_model`,e)},`fallback-${n??`default`}`),(0,P.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:`leave empty for no fallback`})]})]})]})}var Hp=`h-9 rounded-md px-3.5 text-sm lowercase text-muted-foreground transition-colors hover:bg-muted hover:text-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:hover:bg-primary`;function Up({value:e,step:t=1,min:n,max:r,disabled:i,onCommit:a}){let o=e===void 0?``:String(e),[s,c]=(0,_.useState)(o),[l,u]=(0,_.useState)(!1),d=async()=>{let t=Number(s);if(!Number.isFinite(t)){c(o);return}if(n!==void 0&&t<n){c(o);return}if(r!==void 0&&t>r){c(o);return}if(t!==e){u(!0);try{await a(t)}catch{c(o)}finally{u(!1)}}};return(0,P.jsx)(`input`,{type:`number`,inputMode:t<1?`decimal`:`numeric`,value:s,onChange:e=>c(e.target.value),onBlur:()=>void d(),onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},disabled:i||l,step:t,min:n,max:r,className:`h-8 w-20 rounded-md border border-border bg-background px-2 font-mono text-sm text-right text-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-none disabled:opacity-50`})}function Wp({label:e,description:t,children:n}){return(0,P.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,P.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,P.jsx)(`span`,{className:`flex-1 font-serif text-sm text-foreground`,children:e}),n]}),t?(0,P.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground/70`,children:t}):null]})}function Gp({children:e}){return(0,P.jsx)(`h4`,{className:`mb-4 font-serif text-base lowercase tracking-tight text-foreground`,children:e})}function Kp({enabled:e,disabled:t,ariaPrefix:n,onChange:r}){return(0,P.jsxs)(xp,{type:`single`,value:e===void 0?``:e===!0?`on`:`off`,onValueChange:e=>{e&&r(e===`on`)},disabled:t,spacing:1,className:`rounded-lg bg-muted/40 p-1`,children:[(0,P.jsx)(Sp,{value:`on`,"aria-label":`${n} on`,className:Hp,children:`on`}),(0,P.jsx)(Sp,{value:`off`,"aria-label":`${n} off`,className:Hp,children:`off`})]})}function qp({compactionEnabled:e,compactionModel:t,compactionModelSource:n,models:r,contextThreshold:i,freshTailCount:a,leafChunkTokens:o,leafTargetTokens:s,condenseGroupSize:c,maxSummaryDepth:l,newSessionRetainDepth:u,ambientEnabled:d,topK:f,minQueryLength:p,throttleSeconds:m,weightSimilarity:h,weightValence:g,weightRecency:_,weightIntensity:v,disabled:y,onChange:b,onClear:x}){let S=y||e!==!0,C=y||d!==!0;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`section`,{children:[(0,P.jsx)(Gp,{children:`compaction`}),(0,P.jsx)(Kp,{enabled:e,disabled:y,ariaPrefix:`compaction`,onChange:e=>void b(`memory.lcm.enabled`,e)}),(0,P.jsxs)(`div`,{className:`mt-4`,children:[(0,P.jsx)(hp,{value:t??``,onValueChange:e=>void b(`memory.lcm.model`,e),disabled:S,className:`grid gap-1`,children:r.map(e=>{let n=`memory-model-${e}`,r=e===t,[i,...a]=e.split(`/`),o=a.join(`/`);return(0,P.jsxs)(_p,{htmlFor:n,className:`group/row flex cursor-pointer items-center gap-3 rounded-md px-3 py-2.5 transition-colors hover:bg-accent has-data-[state=checked]:bg-primary has-data-[state=checked]:text-primary-foreground has-data-[state=checked]:hover:bg-primary`,children:[(0,P.jsx)(gp,{value:e,id:n}),(0,P.jsxs)(`span`,{className:`min-w-0 flex-1 font-mono text-sm leading-tight`,children:[(0,P.jsx)(`span`,{className:r?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:i}),(0,P.jsx)(`span`,{className:r?`text-primary-foreground/70`:`text-muted-foreground group-hover/row:text-foreground`,children:`/`}),(0,P.jsx)(`span`,{className:r?`text-primary-foreground`:`text-muted-foreground group-hover/row:text-foreground`,children:o})]})]},e)})}),n===`override`?(0,P.jsx)(`button`,{type:`button`,onClick:()=>void x(`memory.lcm.model`),disabled:S,className:`mt-2 font-serif text-xs italic text-muted-foreground/70 transition-colors hover:text-foreground disabled:opacity-50`,children:`set just for compaction · use default instead`}):t?(0,P.jsx)(`p`,{className:`mt-2 font-serif text-xs italic text-muted-foreground/70`,children:`following your conversation model`}):null]}),(0,P.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,P.jsx)(Wp,{label:`context threshold`,description:`fraction of context that triggers compaction`,children:(0,P.jsx)(Up,{value:i,step:.05,min:0,max:1,disabled:S,onCommit:e=>b(`memory.lcm.contextThreshold`,e)},`context-${i??`default`}`)}),(0,P.jsx)(Wp,{label:`fresh tail count`,description:`most recent messages kept raw, never compacted`,children:(0,P.jsx)(Up,{value:a,min:1,disabled:S,onCommit:e=>b(`memory.lcm.freshTailCount`,e)},`fresh-${a??`default`}`)}),(0,P.jsx)(Wp,{label:`leaf chunk tokens`,description:`max tokens of input per leaf summary`,children:(0,P.jsx)(Up,{value:o,min:1,disabled:S,onCommit:e=>b(`memory.lcm.leafChunkTokens`,e)},`leaf-chunk-${o??`default`}`)}),(0,P.jsx)(Wp,{label:`leaf target tokens`,description:`target tokens per leaf summary output`,children:(0,P.jsx)(Up,{value:s,min:1,disabled:S,onCommit:e=>b(`memory.lcm.leafTargetTokens`,e)},`leaf-target-${s??`default`}`)}),(0,P.jsx)(Wp,{label:`condense group size`,description:`how many summaries combine into one at the next level`,children:(0,P.jsx)(Up,{value:c,min:1,disabled:S,onCommit:e=>b(`memory.lcm.condenseGroupSize`,e)},`condense-${c??`default`}`)}),(0,P.jsx)(Wp,{label:`max summary depth`,description:`deepest level of recursive summary-of-summaries`,children:(0,P.jsx)(Up,{value:l,min:1,disabled:S,onCommit:e=>b(`memory.lcm.maxSummaryDepth`,e)},`max-depth-${l??`default`}`)}),(0,P.jsx)(Wp,{label:`kept after /new`,description:`lowest summary depth kept after /new. -1 keeps full context, 0 keeps every summary.`,children:(0,P.jsx)(Up,{value:u,min:-1,disabled:S,onCommit:e=>b(`memory.lcm.newSessionRetainDepth`,e)},`retain-${u??`default`}`)})]})]}),(0,P.jsxs)(`section`,{className:`mt-8`,children:[(0,P.jsx)(Gp,{children:`ambient`}),(0,P.jsx)(Kp,{enabled:d,disabled:y,ariaPrefix:`ambient`,onChange:e=>void b(`memory.ambient.enabled`,e)}),(0,P.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,P.jsx)(Wp,{label:`top k`,description:`how many memories to surface per query`,children:(0,P.jsx)(Up,{value:f,min:1,disabled:C,onCommit:e=>b(`memory.ambient.topK`,e)},`top-k-${f??`default`}`)}),(0,P.jsx)(Wp,{label:`min query length`,description:`minimum query chars before recall fires`,children:(0,P.jsx)(Up,{value:p,min:0,disabled:C,onCommit:e=>b(`memory.ambient.minQueryLength`,e)},`min-query-${p??`default`}`)}),(0,P.jsx)(Wp,{label:`throttle seconds`,description:`cooldown between recalls`,children:(0,P.jsx)(Up,{value:m,min:0,disabled:C,onCommit:e=>b(`memory.ambient.throttleSeconds`,e)},`throttle-${m??`default`}`)}),(0,P.jsx)(Wp,{label:`similarity weight`,description:`semantic match to your query`,children:(0,P.jsx)(Up,{value:h,step:.05,min:0,disabled:C,onCommit:e=>b(`memory.ambient.weightSimilarity`,e)},`weight-similarity-${h??`default`}`)}),(0,P.jsx)(Wp,{label:`valence weight`,description:`emotional charge of the memory`,children:(0,P.jsx)(Up,{value:g,step:.05,min:0,disabled:C,onCommit:e=>b(`memory.ambient.weightValence`,e)},`weight-valence-${g??`default`}`)}),(0,P.jsx)(Wp,{label:`recency weight`,description:`favors recent memories`,children:(0,P.jsx)(Up,{value:_,step:.05,min:0,disabled:C,onCommit:e=>b(`memory.ambient.weightRecency`,e)},`weight-recency-${_??`default`}`)}),(0,P.jsx)(Wp,{label:`intensity weight`,description:`favors strongly-felt memories`,children:(0,P.jsx)(Up,{value:v,step:.05,min:0,disabled:C,onCommit:e=>b(`memory.ambient.weightIntensity`,e)},`weight-intensity-${v??`default`}`)})]})]}),(0,P.jsx)(`p`,{className:`mt-8 font-serif text-xs italic text-muted-foreground/60`,children:`embedding model lives in config.toml. swapping it invalidates existing memory.`})]})}function Jp(e){let[t,n]=(0,_.useState)(void 0),[r,i]=(0,_.useState)([]),[a,o]=(0,_.useState)([]),[s,c]=(0,_.useState)(void 0),[l,u]=(0,_.useState)(!1),[d,f]=(0,_.useState)(!1),p=(0,_.useRef)(!0);(0,_.useEffect)(()=>(p.current=!0,()=>{p.current=!1}),[]);let m=(0,_.useCallback)(async()=>{if(e){u(!0),c(void 0);try{let[t,r]=await Promise.all([Jf(e),Yf()]);if(!p.current)return;n(t),i(r.models),o(r.added)}catch(e){if(!p.current)return;c(e instanceof Error?e.message:String(e))}finally{p.current&&u(!1)}}},[e]);(0,_.useEffect)(()=>{let e=window.setTimeout(()=>void m(),0);return()=>window.clearTimeout(e)},[m]);let h=(0,_.useCallback)(async r=>{if(!e)return;let i=t,a=i&&{...i,model:r.model?{value:r.model,source:`override`}:i.model,thinking:r.thinking?{value:r.thinking,source:`override`}:i.thinking};a&&n(a),f(!0),c(void 0);try{let t=await Qf(e,r);if(!p.current)return;n(t)}catch(e){if(!p.current)return;i&&n(i),c(e instanceof Error?e.message:String(e))}finally{p.current&&f(!1)}},[e,t]);return{data:t,models:r,addedModels:a,error:s,isLoading:l,isMutating:d,setModel:(0,_.useCallback)(e=>h({model:e}),[h]),setThinking:(0,_.useCallback)(e=>h({thinking:e}),[h]),addModel:(0,_.useCallback)(async e=>{f(!0),c(void 0);try{let t=await Xf(e);if(!p.current)return;i(t.models),o(t.added)}catch(e){if(!p.current)return;throw c(e instanceof Error?e.message:String(e)),e}finally{p.current&&f(!1)}},[]),removeModel:(0,_.useCallback)(async e=>{f(!0),c(void 0);try{let t=await Zf(e);if(!p.current)return;i(t.models),o(t.added)}catch(e){if(!p.current)return;throw c(e instanceof Error?e.message:String(e)),e}finally{p.current&&f(!1)}},[]),refetch:m}}function Yp(e){let[t,n]=(0,_.useState)(void 0),[r,i]=(0,_.useState)(void 0),[a,o]=(0,_.useState)(!1),[s,c]=(0,_.useState)(!1),l=(0,_.useRef)(!0);(0,_.useEffect)(()=>(l.current=!0,()=>{l.current=!1}),[]);let u=(0,_.useCallback)(async()=>{if(e){o(!0),i(void 0);try{let e=await tp();if(!l.current)return;n(e)}catch(e){if(!l.current)return;i(e instanceof Error?e.message:String(e))}finally{l.current&&o(!1)}}},[e]);return(0,_.useEffect)(()=>{let e=window.setTimeout(()=>void u(),0);return()=>window.clearTimeout(e)},[u]),{data:t,error:r,isLoading:a,isMutating:s,setConfig:(0,_.useCallback)(async(e,t)=>{c(!0),i(void 0);try{let r=await np(e,t);if(!l.current)return;n(r)}catch(e){if(!l.current)return;throw i(e instanceof Error?e.message:String(e)),e}finally{l.current&&c(!1)}},[]),clearConfig:(0,_.useCallback)(async e=>{c(!0),i(void 0);try{let t=await rp(e);if(!l.current)return;n(t)}catch(e){if(!l.current)return;throw i(e instanceof Error?e.message:String(e)),e}finally{l.current&&c(!1)}},[]),refetch:u}}function Xp({title:e,description:t,defaultOpen:n=!1,children:r}){let[i,a]=(0,_.useState)(n);return(0,P.jsxs)(op,{open:i,onOpenChange:a,children:[(0,P.jsxs)(sp,{className:`group flex w-full items-center gap-2 py-3 text-left`,children:[(0,P.jsx)(D,{className:$(`size-3.5 text-muted-foreground transition-transform duration-150 group-hover:text-foreground`,i&&`rotate-90`)}),(0,P.jsx)(`h3`,{className:`font-serif text-lg leading-tight tracking-tight text-foreground`,children:e})]}),(0,P.jsx)(cp,{children:(0,P.jsxs)(`div`,{className:`pb-4`,children:[(0,P.jsx)(`p`,{className:`font-serif text-xs italic text-muted-foreground`,children:t}),(0,P.jsx)(`div`,{className:`mt-4`,children:r})]})})]})}function Zp({open:e,onOpenChange:t,channelKey:n}){let{data:r,models:i,addedModels:a,error:o,isLoading:s,isMutating:c,setModel:l,setThinking:u,addModel:d,removeModel:f}=Jp(n),{data:p,error:m,isLoading:h,isMutating:g,setConfig:_,clearConfig:v}=Yp(e),y=!!r&&!!p,b=s||c||h||g,x=o??m;return(0,P.jsx)(lp,{open:e,onOpenChange:t,children:(0,P.jsxs)(fp,{className:`w-screen bg-card shadow-2xl sm:w-md sm:max-w-md sm:rounded-l-2xl`,side:`right`,children:[(0,P.jsx)(pp,{className:`px-6 pt-6 pb-2`,children:(0,P.jsx)(mp,{className:`font-serif text-2xl leading-none tracking-tight text-foreground`,children:`settings`})}),(0,P.jsxs)(`div`,{className:`flex flex-col overflow-y-auto px-6 pt-2 pb-8`,children:[(0,P.jsx)(Xp,{title:`model`,description:`which language model carries this conversation.`,defaultOpen:!0,children:(0,P.jsx)(vp,{models:i,added:a,current:r?.model.value,source:r?.model.source,disabled:!y||b,onChange:e=>void l(e),onAdd:d,onRemove:f})}),(0,P.jsx)(Xp,{title:`thinking`,description:`how long the model deliberates before answering.`,children:(0,P.jsx)(wp,{current:r?.thinking.value,supported:r?.supportedThinking??[],disabled:!y||b,onChange:e=>void u(e)})}),(0,P.jsx)(Xp,{title:`heartbeat`,description:`your companion's pulse when you've gone quiet.`,children:(0,P.jsx)(Rp,{enabled:p?.values[`heartbeat.enabled`].value,idleThresholdMs:p?.values[`heartbeat.idleThresholdMs`].value,intervalMs:p?.values[`heartbeat.intervalMs`].value,disabled:!y||b,onChange:_})}),(0,P.jsx)(Xp,{title:`image generation`,description:`which model your companion uses to paint.`,children:(0,P.jsx)(Vp,{enabled:p?.values[`image_gen.enabled`].value,model:p?.values[`image_gen.model`].value,fallbackModel:p?.values[`image_gen.fallback_model`].value,disabled:!y||b,onChange:_})}),(0,P.jsx)(Xp,{title:`memory`,description:`how older conversation is condensed and how earlier memories return.`,children:(0,P.jsx)(qp,{compactionEnabled:p?.values[`memory.lcm.enabled`].value,compactionModel:p?.values[`memory.lcm.model`].value,compactionModelSource:p?.values[`memory.lcm.model`].source,models:i,contextThreshold:p?.values[`memory.lcm.contextThreshold`].value,freshTailCount:p?.values[`memory.lcm.freshTailCount`].value,leafChunkTokens:p?.values[`memory.lcm.leafChunkTokens`].value,leafTargetTokens:p?.values[`memory.lcm.leafTargetTokens`].value,condenseGroupSize:p?.values[`memory.lcm.condenseGroupSize`].value,maxSummaryDepth:p?.values[`memory.lcm.maxSummaryDepth`].value,newSessionRetainDepth:p?.values[`memory.lcm.newSessionRetainDepth`].value,ambientEnabled:p?.values[`memory.ambient.enabled`].value,topK:p?.values[`memory.ambient.topK`].value,minQueryLength:p?.values[`memory.ambient.minQueryLength`].value,throttleSeconds:p?.values[`memory.ambient.throttleSeconds`].value,weightSimilarity:p?.values[`memory.ambient.weightSimilarity`].value,weightValence:p?.values[`memory.ambient.weightValence`].value,weightRecency:p?.values[`memory.ambient.weightRecency`].value,weightIntensity:p?.values[`memory.ambient.weightIntensity`].value,disabled:!y||b,onChange:_,onClear:v})}),(0,P.jsx)(Xp,{title:`theme`,description:`light, dark, or follow your system.`,children:(0,P.jsx)(Pp,{})}),x?(0,P.jsx)(`p`,{className:`mt-4 font-serif text-xs italic text-destructive`,children:x}):null]})]})})}function Qp({...e}){return(0,P.jsx)(xi,{"data-slot":`alert-dialog`,...e})}function $p({...e}){return(0,P.jsx)(Si,{"data-slot":`alert-dialog-portal`,...e})}function em({className:e,...t}){return(0,P.jsx)(Ci,{"data-slot":`alert-dialog-overlay`,className:$(`fixed inset-0 z-50 bg-foreground/15 duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function tm({className:e,size:t=`default`,...n}){return(0,P.jsxs)($p,{children:[(0,P.jsx)(em,{}),(0,P.jsx)(wi,{"data-slot":`alert-dialog-content`,"data-size":t,className:$(`group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...n})]})}function nm({className:e,...t}){return(0,P.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:$(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,e),...t})}function rm({className:e,...t}){return(0,P.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:$(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,e),...t})}function im({className:e,...t}){return(0,P.jsx)(Di,{"data-slot":`alert-dialog-title`,className:$(`font-heading text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,e),...t})}function am({className:e,...t}){return(0,P.jsx)(Oi,{"data-slot":`alert-dialog-description`,className:$(`text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function om({className:e,variant:t=`default`,size:n=`default`,...r}){return(0,P.jsx)(Hf,{variant:t,size:n,asChild:!0,children:(0,P.jsx)(Ti,{"data-slot":`alert-dialog-action`,className:$(e),...r})})}function sm({className:e,variant:t=`outline`,size:n=`default`,...r}){return(0,P.jsx)(Hf,{variant:t,size:n,asChild:!0,children:(0,P.jsx)(Ei,{"data-slot":`alert-dialog-cancel`,className:$(e),...r})})}function cm({channelKey:e,onStarted:t}){let[n,r]=(0,_.useState)(!1),[i,a]=(0,_.useState)(!1),[o,s]=(0,_.useState)(void 0),c=async()=>{if(e){a(!0),s(void 0);try{await $f(e),r(!1),t()}catch(e){s(e instanceof Error?e.message:String(e))}finally{a(!1)}}};return(0,P.jsxs)(Qp,{open:n,onOpenChange:e=>{i||r(e)},children:[(0,P.jsx)(Hf,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`new chat`,title:`new chat`,className:`size-8 text-muted-foreground hover:text-foreground`,onClick:()=>r(!0),children:(0,P.jsx)(le,{className:`size-4`})}),(0,P.jsxs)(tm,{className:`bg-card`,children:[(0,P.jsxs)(nm,{children:[(0,P.jsx)(im,{className:`font-serif text-xl tracking-tight`,children:`start fresh?`}),(0,P.jsx)(am,{className:`font-sans text-sm`,children:`this clears the agent's context. you'll still see the conversation above, but they won't.`})]}),o?(0,P.jsx)(`p`,{className:`font-serif text-xs italic text-destructive`,children:o}):null,(0,P.jsxs)(rm,{children:[(0,P.jsx)(sm,{disabled:i,children:`cancel`}),(0,P.jsx)(om,{onClick:e=>{e.preventDefault(),c()},disabled:i||!e,children:i?`starting…`:`start fresh`})]})]})]})}function lm({...e}){return(0,P.jsx)(K,{"data-slot":`dropdown-menu`,...e})}function um({...e}){return(0,P.jsx)(Ul,{"data-slot":`dropdown-menu-trigger`,...e})}function dm({className:e,align:t=`start`,sideOffset:n=4,...r}){return(0,P.jsx)(Wl,{children:(0,P.jsx)(Gl,{"data-slot":`dropdown-menu-content`,sideOffset:n,align:t,className:$(`z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 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 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...r})})}function fm({className:e,inset:t,variant:n=`default`,...r}){return(0,P.jsx)(Kl,{"data-slot":`dropdown-menu-item`,"data-inset":t,"data-variant":n,className:$(`group/dropdown-menu-item relative flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive`,e),...r})}function pm(e){return e.label?e.label:e.scope===`dm`?`Main Chat`:e.channelName??e.channelId}function mm({sessions:e,activeKey:t,onSelect:n}){if(e.length<=1)return null;let r=e.find(e=>e.key===t);return(0,P.jsxs)(lm,{children:[(0,P.jsxs)(um,{className:`inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus:outline-none focus:ring-2 focus:ring-ring/30`,children:[(0,P.jsx)(`span`,{className:`font-medium`,children:r?pm(r):`select session`}),(0,P.jsx)(re,{className:`size-3 opacity-70`})]}),(0,P.jsx)(dm,{align:`end`,className:`min-w-[180px]`,children:e.map(e=>{let r=e.key===t;return(0,P.jsxs)(fm,{onSelect:()=>n(e.key),className:`flex items-center justify-between gap-3`,children:[(0,P.jsx)(`span`,{className:$(`truncate`,r&&`font-medium`),children:pm(e)}),r&&(0,P.jsx)(ne,{className:`size-3.5 text-muted-foreground`})]},e.key)})})]})}var hm={connecting:`connecting`,open:`online`,closed:`offline`,error:`error`},gm={connecting:`reaching out…`,closed:`out of touch · trying again`,error:`out of touch · trying again`};function _m({connection:e,personaName:t,sessions:n,activeSessionKey:r,channelKey:i,onSelectSession:a,onOpenConfig:o,onNewChatStarted:s}){let c=e===`open`;return(0,P.jsx)(`header`,{className:`sticky top-0 z-10 border-b border-border bg-background`,children:(0,P.jsxs)(`div`,{className:`mx-auto flex max-w-3xl items-center gap-3 px-5 py-3`,children:[(0,P.jsx)(`span`,{"aria-label":hm[e],title:hm[e],className:$(`size-2 rounded-full ring-3 ring-accent/60`,c?`bg-primary`:`bg-muted-foreground/40 ring-transparent`)}),(0,P.jsx)(`span`,{className:`font-serif text-lg leading-none tracking-tight`,children:t}),!c&&(0,P.jsx)(`span`,{className:`font-serif text-xs italic leading-none text-muted-foreground/80`,children:gm[e]}),(0,P.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[(0,P.jsx)(mm,{sessions:n,activeKey:r,onSelect:a}),(0,P.jsx)(cm,{channelKey:i,onStarted:s}),(0,P.jsx)(Hf,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`settings`,title:`settings`,className:`size-8 text-muted-foreground hover:text-foreground`,onClick:o,children:(0,P.jsx)(se,{className:`size-4`})})]})]})})}var vm=/\.(jpe?g|png|gif|webp)(?:\?[^\s]*)?$/i,ym=/https?:\/\/[^\s)<>"']+/gi,bm=/meme:\s*/gi;function xm(e,t){let n=e.indexOf(`
|
|
60
60
|
`,t),r=n===-1?e.length:n,i=e.slice(t,r),a=new RegExp(ym.source,`gi`),o=Array.from(i.matchAll(a));for(let e=o.length-1;e>=0;e--){let t=o[e],n=t[0],r=t.index??0,a=i.lastIndexOf(`(`,r),s=r+n.length;if(a===-1||i[s]!==`)`)continue;let c=i.slice(0,a).trim();if(c)return{whole:i.slice(0,s+1),name:c,url:n}}return null}function Sm(e){let t=[],n=0,r=0;for(;r<e.length;){bm.lastIndex=r,ym.lastIndex=r;let i=bm.exec(e),a=ym.exec(e),o=i&&(!a||i.index<=a.index)?i.index:-1,s=o===-1?a?.index:o;if(s===void 0)break;let c=o===s?xm(e,o+i[0].length):null;if(o===s&&!c){r=s+i[0].length;continue}let l=c?.whole??a[0],u=c?.url??l;if(!(c||vm.test(u))){r=s+l.length;continue}s>n&&t.push({type:`text`,value:e.slice(n,s)}),t.push({type:`image`,url:u,alt:c?.name??``}),n=s+(c?i[0].length:0)+l.length,r=n}return n<e.length&&t.push({type:`text`,value:e.slice(n)}),t}function Cm(e){let t=[],n=``;for(let r of e){if(r.type===`text`){n+=r.value;continue}let e=n.replace(/[ \t]+$/,``).replace(/\n{2,}$/,`
|
|
61
|
-
`);e.trim()&&t.push({type:`text`,value:e}),n=``,t.push(r)}let r=n.replace(/^\n+/,``);return r.trim()&&t.push({type:`text`,value:r}),t}function wm(e){let t=Cm(Sm(e));return t.length===0?null:t.length===1&&t[0].type===`text`?(0,P.jsx)(`div`,{className:`whitespace-pre-wrap break-words leading-relaxed text-foreground`,children:t[0].value}):(0,P.jsx)(`div`,{className:`flex flex-col gap-2`,children:t.map((e,t)=>e.type===`text`?(0,P.jsx)(`div`,{className:`whitespace-pre-wrap break-words leading-relaxed text-foreground`,children:e.value},t):(0,P.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-block`,children:(0,P.jsx)(`img`,{src:e.url,alt:e.alt||`meme`,loading:`lazy`,className:`max-h-72 max-w-[24rem] rounded-md`})},t))})}function Tm(e){if(!Number.isFinite(e)||e<0)return`0:00`;let t=Math.floor(e);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}function Em({src:e,name:t,className:n}){let r=(0,_.useRef)(null),[i,a]=(0,_.useState)(!1),[o,s]=(0,_.useState)(0),[c,l]=(0,_.useState)(0);(0,_.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>s(e.currentTime),n=()=>l(Number.isFinite(e.duration)?e.duration:0),i=()=>a(!0),o=()=>a(!1),c=()=>a(!1);return e.addEventListener(`timeupdate`,t),e.addEventListener(`loadedmetadata`,n),e.addEventListener(`durationchange`,n),e.addEventListener(`play`,i),e.addEventListener(`pause`,o),e.addEventListener(`ended`,c),()=>{e.removeEventListener(`timeupdate`,t),e.removeEventListener(`loadedmetadata`,n),e.removeEventListener(`durationchange`,n),e.removeEventListener(`play`,i),e.removeEventListener(`pause`,o),e.removeEventListener(`ended`,c)}},[]);let u=()=>{let e=r.current;e&&(i?e.pause():e.play())},d=e=>{let t=r.current;if(!t)return;let n=Math.max(0,Math.min(c||0,e));t.currentTime=n,s(n)},f=c>0?o/c*100:0;return(0,P.jsxs)(`div`,{className:$(`flex w-full max-w-sm items-center gap-3 rounded-md bg-card px-3 py-2`,n),children:[(0,P.jsx)(`audio`,{ref:r,src:e,preload:`metadata`,children:(0,P.jsx)(`a`,{href:e,children:t??`audio`})}),(0,P.jsx)(`button`,{type:`button`,onClick:u,"aria-label":i?`pause`:`play`,className:`grid size-8 shrink-0 place-items-center rounded-md text-foreground hover:bg-accent focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-ring/40`,children:i?(0,P.jsx)(oe,{className:`size-4 fill-current`,strokeWidth:0}):(0,P.jsx)(k,{className:`size-4 fill-current translate-x-px`,strokeWidth:0})}),(0,P.jsxs)(`span`,{className:`shrink-0 whitespace-nowrap font-serif text-xs italic text-muted-foreground tabular-nums`,children:[Tm(o),` / `,Tm(c)]}),(0,P.jsx)(`input`,{type:`range`,min:0,max:c||0,step:.1,value:o,onChange:e=>d(Number(e.target.value)),"aria-label":`seek`,className:$(`h-1 flex-1 cursor-pointer appearance-none rounded-full bg-border outline-none`,`[&::-webkit-slider-thumb]:size-3 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-primary [&::-webkit-slider-thumb]:cursor-pointer`,`[&::-moz-range-thumb]:size-3 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:bg-primary [&::-moz-range-thumb]:cursor-pointer`,`focus-visible:ring-3 focus-visible:ring-ring/40`),style:{background:`linear-gradient(to right, var(--primary) 0%, var(--primary) ${f}%, var(--border) ${f}%, var(--border) 100%)`}})]})}function Dm(e){return e==null?`thinking…`:e<1e3?`thought for <1s`:`thought for ${Math.round(e/100)/10}s`}function Om({text:e,durationMs:t,streaming:n,defaultOpen:r}){let[i,a]=(0,_.useState)(r??!!n);return!e&&!n?null:(0,P.jsxs)(op,{open:i,onOpenChange:a,className:`mt-1 mb-3`,children:[(0,P.jsxs)(sp,{className:`group flex items-center gap-1.5 text-xs uppercase tracking-wider text-muted-foreground/55 transition-colors hover:text-muted-foreground`,children:[(0,P.jsx)(D,{className:$(`size-3 transition-transform duration-150`,i&&`rotate-90`)}),(0,P.jsx)(`span`,{children:n?`thinking…`:Dm(t)})]}),(0,P.jsx)(cp,{children:(0,P.jsxs)(`div`,{className:`mt-2 border-l-2 border-border pl-3 italic font-serif text-[0.95em] leading-relaxed text-muted-foreground/80 whitespace-pre-wrap`,children:[e,n&&(0,P.jsx)(`span`,{className:`ml-0.5 inline-block animate-pulse`,children:`▎`})]})})]})}function km(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Am(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}var jm=[`query`,`url`,`command`,`prompt`,`file_path`,`path`,`pattern`,`description`];function Mm(e){if(!km(e.args))return``;for(let t of jm){let n=e.args[t];if(typeof n==`string`&&n.trim())return n.trim()}return``}function Nm(e){return e.status===`pending`?`queued`:e.status===`running`?`running…`:e.status===`error`?`failed`:`done`}function Pm(e){let t=e.length,n=t===1?`tool call`:`tool calls`,r=e.filter(e=>e.status===`running`||e.status===`pending`).length;if(r>0)return`${t} ${n} · ${r} running`;let i=e.filter(e=>e.status===`error`).length;return i>0?`${t} ${n} · ${i} failed`:`${t} ${n}`}function Fm({tool:e}){let[t,n]=(0,_.useState)(!1),r=Mm(e),i=Am(e.args),a=Am(e.status===`running`?e.partialResult:e.result),o=!!(i||a||e.error);return(0,P.jsxs)(op,{open:t&&o,onOpenChange:n,children:[(0,P.jsxs)(sp,{disabled:!o,className:`group flex w-full items-center gap-1.5 py-1 text-xs uppercase tracking-wider text-muted-foreground/55 transition-colors hover:text-muted-foreground disabled:cursor-default disabled:hover:text-muted-foreground/55`,children:[(0,P.jsx)(D,{className:$(`size-3 shrink-0 transition-transform duration-150`,t&&o&&`rotate-90`,!o&&`opacity-0`)}),(0,P.jsx)(`span`,{className:`shrink-0`,children:e.name}),r&&(0,P.jsx)(`span`,{className:`min-w-0 truncate normal-case tracking-normal text-muted-foreground/70`,children:r}),(0,P.jsx)(`span`,{className:`ml-auto shrink-0`,children:Nm(e)})]}),(0,P.jsx)(cp,{children:(0,P.jsxs)(`div`,{className:`mb-1 mt-1 space-y-2 border-l border-border/70 pl-3 text-[0.95em] leading-relaxed text-muted-foreground/80`,children:[i&&(0,P.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words font-mono text-[11px]`,children:i}),a&&(0,P.jsx)(`pre`,{className:`max-h-80 overflow-auto whitespace-pre-wrap break-words font-mono text-[11px]`,children:a}),e.error&&(0,P.jsx)(`div`,{className:`text-destructive`,children:e.error})]})})]})}function Im({tools:e}){let[t,n]=(0,_.useState)(!1);return e.length===0?null:(0,P.jsxs)(op,{open:t,onOpenChange:n,className:`mt-1 mb-3`,children:[(0,P.jsxs)(sp,{className:`group flex w-full items-center gap-1.5 text-xs uppercase tracking-wider text-muted-foreground/55 transition-colors hover:text-muted-foreground`,children:[(0,P.jsx)(D,{className:$(`size-3 shrink-0 transition-transform duration-150`,t&&`rotate-90`)}),(0,P.jsx)(`span`,{children:Pm(e)})]}),(0,P.jsx)(cp,{children:(0,P.jsx)(`div`,{className:`mt-2 border-l-2 border-border pl-3`,children:e.map(e=>(0,P.jsx)(Fm,{tool:e},e.id))})})]})}function Lm({message:e}){if(e.role===`system`)return(0,P.jsx)(`div`,{className:`flex justify-center`,children:(0,P.jsx)(`p`,{className:`text-xs italic text-muted-foreground`,children:e.text})});let t=e.role===`user`,n=!t&&(e.thinking||e.thinkingMs!=null),r=e.attachments??[];return(0,P.jsxs)(`div`,{className:$(`flex flex-col gap-1`,t?`items-end`:`items-start`),children:[(0,P.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground`,children:e.who}),(0,P.jsxs)(`div`,{className:$(`flex flex-col`,t?`max-w-[85%]`:`w-full`),children:[n&&(0,P.jsx)(Om,{text:e.thinking??``,durationMs:e.thinkingMs}),!t&&(0,P.jsx)(Im,{tools:e.tools??[]}),e.text&&wm(e.text),r.length>0&&(0,P.jsx)(`div`,{className:`mt-3 flex flex-col gap-2`,children:r.map(e=>(e.kind===`image`||e.mimeType?.startsWith(`image/`))&&e.url?(0,P.jsx)(`a`,{href:e.url,className:`inline-block`,children:(0,P.jsx)(`img`,{src:e.url,alt:e.name,className:`max-h-72 max-w-[24rem] rounded-md`})},e.id):e.mimeType?.startsWith(`audio/`)&&e.url?(0,P.jsx)(Em,{src:e.url,name:e.name},e.id):e.url?(0,P.jsx)(`a`,{href:e.url,className:`text-sm italic text-muted-foreground underline-offset-4 hover:underline`,children:e.name},e.id):null)})]})]})}var Rm=1800*1e3;function zm(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Bm(e,t){let n=new Date(e),r=new Date(t),i=n.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}).toLowerCase();if(zm(n,r))return i;let a=new Date,o=n.getFullYear()===a.getFullYear();return`${n.toLocaleDateString([],{weekday:`long`,month:o?`long`:`short`,day:`numeric`,year:o?void 0:`numeric`}).toLowerCase()} · ${i}`}function Vm({messages:e,personaName:t,historyLoaded:n}){let r=(0,_.useRef)(null);return(0,_.useEffect)(()=>{r.current?.scrollIntoView({behavior:`smooth`,block:`end`})},[e]),n&&e.length===0?(0,P.jsx)(`div`,{className:`mx-auto flex h-full max-w-3xl items-center justify-center px-5`,children:(0,P.jsxs)(`p`,{className:`font-serif text-base italic leading-relaxed text-muted-foreground/80`,children:[`hi, i'm `,t,`. write whenever.`]})}):(0,P.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col gap-12 px-5 py-6`,children:[e.map((t,n)=>{let r=e[n-1];return(0,P.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[r!=null&&t.ts-r.ts>=Rm&&(0,P.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,P.jsx)(`span`,{className:`font-serif italic text-xs text-muted-foreground/70 tracking-wide`,children:Bm(t.ts,r.ts)})}),(0,P.jsx)(Lm,{message:t})]},t.id)}),(0,P.jsx)(`div`,{ref:r})]})}var Hm=1e3,Um=15e3;function Wm(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function Gm(e,t){let n=t.status===`completed`||t.status===`error`;return{...e,...t,args:t.args??e?.args,partialResult:n?void 0:t.partialResult??e?.partialResult,result:t.result??e?.result,error:t.error??e?.error,startedAt:e?.startedAt??t.startedAt}}function Km(){let[e,t]=(0,_.useState)([]),[n,r]=(0,_.useState)(`connecting`),[i,a]=(0,_.useState)(`Familiar`),[o,s]=(0,_.useState)([]),[c,l]=(0,_.useState)(void 0),[u,d]=(0,_.useState)(!1),[f,p]=(0,_.useState)(!1),m=(0,_.useRef)(null),h=(0,_.useRef)(new Map),g=(0,_.useRef)(null),v=(0,_.useRef)(async()=>void 0),y=(0,_.useCallback)((e,n)=>{t(t=>{let r=t.findIndex(t=>t.id===e);if(r>=0){let e=t.slice();return e[r]={...e[r],...n,attachments:n.attachments??e[r].attachments,usage:n.usage??e[r].usage},e}let i={id:e,role:n.role??`assistant`,who:n.who??`Familiar`,text:n.text??``,thinking:n.thinking,thinkingMs:n.thinkingMs,attachments:n.attachments,usage:n.usage,ts:n.ts??Date.now()};return[...t,i]})},[]),b=(0,_.useCallback)(e=>{switch(`eventId`in e&&(m.current=e.eventId),e.type){case`message_started`:{let t=e.role===`user`;h.current.set(e.messageId,{text:``,thinking:``,isUser:t}),t||p(!0),y(e.messageId,{role:t?`user`:`assistant`,who:e.who,text:``,ts:e.ts});break}case`delta`:{let n=h.current.get(e.messageId)??{text:``,thinking:``};e.part===`thinking`?(n.thinking+=e.content,n.thinkingStartedAt??=Date.now(),n.thinkingEndedAt=Date.now(),y(e.messageId,{thinking:n.thinking})):(n.thinkingStartedAt&&!n.thinkingEndedAt&&(n.thinkingEndedAt=Date.now()),n.text+=e.content,t(t=>t.map(t=>t.id===e.messageId?{...t,text:n.text}:t))),h.current.set(e.messageId,n);break}case`message_completed`:{let t=h.current.get(e.messageId),n=e.thinkingMs??(t?.thinkingStartedAt&&t?.thinkingEndedAt?Math.max(0,t.thinkingEndedAt-t.thinkingStartedAt):void 0);y(e.messageId,{thinkingMs:n,...e.attachments?{attachments:e.attachments}:{},...e.usage?{usage:e.usage}:{}}),h.current.delete(e.messageId);break}case`tool_event`:t(t=>t.map(t=>{if(t.id!==e.messageId)return t;let n=t.tools?[...t.tools]:[],r=n.findIndex(t=>t.id===e.tool.id);return r>=0?n[r]=Gm(n[r],e.tool):n.push(e.tool),{...t,tools:n}}));break;case`status`:e.kind===`idle`&&p(!1);break;case`error`:h.current.clear(),p(!1),t(t=>[...t,{id:Wm(),role:`system`,who:``,text:`error · ${e.code}: ${e.message}`,ts:e.ts}]);break;case`replay_window_lost`:Gf(c).then(e=>t(e.messages)).catch(()=>void 0);break}},[y,c]);(0,_.useEffect)(()=>{let e=!1;return Uf().then(t=>{e||a(t.personaName)}).catch(()=>void 0),Wf().then(t=>{if(e)return;s(t);let n=localStorage.getItem(`familiar.activeSession`),r=n?t.find(e=>e.key===n):void 0,i=t.find(e=>e.isDefault)??t[0],a=(r??i)?.key;a&&l(a)}).catch(()=>void 0),()=>{e=!0}},[]),(0,_.useEffect)(()=>{if(!c)return;localStorage.setItem(`familiar.activeSession`,c);let e=!1,n=null,i=0,a=null;h.current.clear(),m.current=null;let o=window.setTimeout(()=>{e||(t([]),d(!1),p(!1))},0);Gf(c).then(n=>{e||(t(n.messages),d(!0))}).catch(()=>{e||d(!0)});let s=()=>{if(e)return;r(`connecting`);let t=new WebSocket(qf(c));n=t,g.current=t,t.addEventListener(`open`,()=>{e||(i=0,r(`open`),t.send(JSON.stringify({type:`hello`,lastEventId:m.current})))}),t.addEventListener(`message`,t=>{if(!e)try{b(JSON.parse(t.data))}catch{}}),t.addEventListener(`close`,()=>{if(e)return;g.current===t&&(g.current=null),r(`closed`);let n=Math.min(Um,Hm*2**i);i+=1,a=setTimeout(s,n)}),t.addEventListener(`error`,()=>{e||r(`error`)})};return s(),v.current=async(e,t=[])=>{let n=e.trim();!n&&t.length===0||(p(!0),await Kf(n,Wm(),c,t))},()=>{e=!0,clearTimeout(o),a&&clearTimeout(a),g.current===n&&(g.current=null),n?.close()}},[c,b]);let x=(0,_.useCallback)((e,t=[])=>v.current(e,t),[]);return{messages:e,connection:n,personaName:i,sessions:o,activeSessionKey:c,historyLoaded:u,streaming:f,selectSession:(0,_.useCallback)(e=>l(e),[]),send:x,abort:(0,_.useCallback)(()=>{let e=g.current;e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:`abort`}))},[]),notifyNewChat:(0,_.useCallback)(()=>{t(e=>[...e,{id:Wm(),role:`system`,who:``,text:`started fresh`,ts:Date.now()}])},[])}}function qm(){let{messages:e,connection:t,personaName:n,sessions:r,activeSessionKey:i,historyLoaded:a,streaming:o,selectSession:s,send:c,abort:l,notifyNewChat:u}=Km(),[d,f]=(0,_.useState)(!1);return(0,P.jsxs)(`div`,{className:`flex h-dvh flex-col bg-background text-foreground antialiased`,children:[(0,P.jsx)(_m,{connection:t,personaName:n,sessions:r,activeSessionKey:i,channelKey:i,onSelectSession:s,onOpenConfig:()=>f(!0),onNewChatStarted:u}),(0,P.jsx)(`main`,{className:`flex-1 overflow-y-auto`,children:(0,P.jsx)(Vm,{messages:e,personaName:n,historyLoaded:a})}),(0,P.jsx)(ap,{onSend:(e,t)=>void c(e,t),onAbort:l,streaming:o,personaName:n}),(0,P.jsx)(Zp,{open:d,onOpenChange:f,channelKey:i})]})}function Jm(){return(0,P.jsx)(qm,{})}kp(Dp()),Ap(Dp),(0,v.createRoot)(document.getElementById(`root`)).render((0,P.jsx)(_.StrictMode,{children:(0,P.jsx)(Jm,{})}));
|
|
61
|
+
`);e.trim()&&t.push({type:`text`,value:e}),n=``,t.push(r)}let r=n.replace(/^\n+/,``);return r.trim()&&t.push({type:`text`,value:r}),t}function wm(e){let t=Cm(Sm(e));return t.length===0?null:t.length===1&&t[0].type===`text`?(0,P.jsx)(`div`,{className:`whitespace-pre-wrap break-words leading-relaxed text-foreground`,children:t[0].value}):(0,P.jsx)(`div`,{className:`flex flex-col gap-2`,children:t.map((e,t)=>e.type===`text`?(0,P.jsx)(`div`,{className:`whitespace-pre-wrap break-words leading-relaxed text-foreground`,children:e.value},t):(0,P.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-block`,children:(0,P.jsx)(`img`,{src:e.url,alt:e.alt||`meme`,loading:`lazy`,className:`max-h-72 max-w-[24rem] rounded-md`})},t))})}function Tm(e){if(!Number.isFinite(e)||e<0)return`0:00`;let t=Math.floor(e);return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}function Em({src:e,name:t,className:n}){let r=(0,_.useRef)(null),[i,a]=(0,_.useState)(!1),[o,s]=(0,_.useState)(0),[c,l]=(0,_.useState)(0);(0,_.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>s(e.currentTime),n=()=>l(Number.isFinite(e.duration)?e.duration:0),i=()=>a(!0),o=()=>a(!1),c=()=>a(!1);return e.addEventListener(`timeupdate`,t),e.addEventListener(`loadedmetadata`,n),e.addEventListener(`durationchange`,n),e.addEventListener(`play`,i),e.addEventListener(`pause`,o),e.addEventListener(`ended`,c),()=>{e.removeEventListener(`timeupdate`,t),e.removeEventListener(`loadedmetadata`,n),e.removeEventListener(`durationchange`,n),e.removeEventListener(`play`,i),e.removeEventListener(`pause`,o),e.removeEventListener(`ended`,c)}},[]);let u=()=>{let e=r.current;e&&(i?e.pause():e.play())},d=e=>{let t=r.current;if(!t)return;let n=Math.max(0,Math.min(c||0,e));t.currentTime=n,s(n)},f=c>0?o/c*100:0;return(0,P.jsxs)(`div`,{className:$(`flex w-full max-w-sm items-center gap-3 rounded-md bg-card px-3 py-2`,n),children:[(0,P.jsx)(`audio`,{ref:r,src:e,preload:`metadata`,children:(0,P.jsx)(`a`,{href:e,children:t??`audio`})}),(0,P.jsx)(`button`,{type:`button`,onClick:u,"aria-label":i?`pause`:`play`,className:`grid size-8 shrink-0 place-items-center rounded-md text-foreground hover:bg-accent focus-visible:outline-none focus-visible:ring-3 focus-visible:ring-ring/40`,children:i?(0,P.jsx)(oe,{className:`size-4 fill-current`,strokeWidth:0}):(0,P.jsx)(k,{className:`size-4 fill-current translate-x-px`,strokeWidth:0})}),(0,P.jsxs)(`span`,{className:`shrink-0 whitespace-nowrap font-serif text-xs italic text-muted-foreground tabular-nums`,children:[Tm(o),` / `,Tm(c)]}),(0,P.jsx)(`input`,{type:`range`,min:0,max:c||0,step:.1,value:o,onChange:e=>d(Number(e.target.value)),"aria-label":`seek`,className:$(`h-1 flex-1 cursor-pointer appearance-none rounded-full bg-border outline-none`,`[&::-webkit-slider-thumb]:size-3 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-primary [&::-webkit-slider-thumb]:cursor-pointer`,`[&::-moz-range-thumb]:size-3 [&::-moz-range-thumb]:appearance-none [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:bg-primary [&::-moz-range-thumb]:cursor-pointer`,`focus-visible:ring-3 focus-visible:ring-ring/40`),style:{background:`linear-gradient(to right, var(--primary) 0%, var(--primary) ${f}%, var(--border) ${f}%, var(--border) 100%)`}})]})}function Dm(e){return e==null?`thinking…`:e<1e3?`thought for <1s`:`thought for ${Math.round(e/100)/10}s`}function Om({text:e,durationMs:t,streaming:n,defaultOpen:r}){let[i,a]=(0,_.useState)(r??!!n);return!e&&!n?null:(0,P.jsxs)(op,{open:i,onOpenChange:a,className:`mt-1 mb-3`,children:[(0,P.jsxs)(sp,{className:`group flex items-center gap-1.5 text-xs uppercase tracking-wider text-muted-foreground/55 transition-colors hover:text-muted-foreground`,children:[(0,P.jsx)(D,{className:$(`size-3 transition-transform duration-150`,i&&`rotate-90`)}),(0,P.jsx)(`span`,{children:n?`thinking…`:Dm(t)})]}),(0,P.jsx)(cp,{children:(0,P.jsxs)(`div`,{className:`mt-2 border-l-2 border-border pl-3 italic font-serif text-[0.95em] leading-relaxed text-muted-foreground/80 whitespace-pre-wrap`,children:[e,n&&(0,P.jsx)(`span`,{className:`ml-0.5 inline-block animate-pulse`,children:`▎`})]})})]})}function km(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Am(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}var jm=[`query`,`url`,`command`,`prompt`,`file_path`,`path`,`pattern`,`description`];function Mm(e){if(!km(e.args))return``;for(let t of jm){let n=e.args[t];if(typeof n==`string`&&n.trim())return n.trim()}return``}function Nm(e){return e.status===`pending`?`queued`:e.status===`running`?`running…`:e.status===`error`?`failed`:`done`}function Pm(e){let t=e.length,n=t===1?`tool call`:`tool calls`,r=e.filter(e=>e.status===`running`||e.status===`pending`).length;if(r>0)return`${t} ${n} · ${r} running`;let i=e.filter(e=>e.status===`error`).length;return i>0?`${t} ${n} · ${i} failed`:`${t} ${n}`}function Fm({tool:e}){let[t,n]=(0,_.useState)(!1),r=Mm(e),i=Am(e.args),a=Am(e.status===`running`?e.partialResult:e.result),o=!!(i||a||e.error);return(0,P.jsxs)(op,{open:t&&o,onOpenChange:n,children:[(0,P.jsxs)(sp,{disabled:!o,className:`group flex w-full items-center gap-1.5 py-1 text-xs uppercase tracking-wider text-muted-foreground/55 transition-colors hover:text-muted-foreground disabled:cursor-default disabled:hover:text-muted-foreground/55`,children:[(0,P.jsx)(D,{className:$(`size-3 shrink-0 transition-transform duration-150`,t&&o&&`rotate-90`,!o&&`opacity-0`)}),(0,P.jsx)(`span`,{className:`shrink-0`,children:e.name}),r&&(0,P.jsx)(`span`,{className:`min-w-0 truncate normal-case tracking-normal text-muted-foreground/70`,children:r}),(0,P.jsx)(`span`,{className:`ml-auto shrink-0`,children:Nm(e)})]}),(0,P.jsx)(cp,{children:(0,P.jsxs)(`div`,{className:`mb-1 mt-1 space-y-2 border-l border-border/70 pl-3 text-[0.95em] leading-relaxed text-muted-foreground/80`,children:[i&&(0,P.jsx)(`pre`,{className:`max-h-64 overflow-auto whitespace-pre-wrap break-words font-mono text-[11px]`,children:i}),a&&(0,P.jsx)(`pre`,{className:`max-h-80 overflow-auto whitespace-pre-wrap break-words font-mono text-[11px]`,children:a}),e.error&&(0,P.jsx)(`div`,{className:`text-destructive`,children:e.error})]})})]})}function Im({tools:e}){let[t,n]=(0,_.useState)(!1);return e.length===0?null:(0,P.jsxs)(op,{open:t,onOpenChange:n,className:`mt-1 mb-3`,children:[(0,P.jsxs)(sp,{className:`group flex w-full items-center gap-1.5 text-xs uppercase tracking-wider text-muted-foreground/55 transition-colors hover:text-muted-foreground`,children:[(0,P.jsx)(D,{className:$(`size-3 shrink-0 transition-transform duration-150`,t&&`rotate-90`)}),(0,P.jsx)(`span`,{children:Pm(e)})]}),(0,P.jsx)(cp,{children:(0,P.jsx)(`div`,{className:`mt-2 border-l-2 border-border pl-3`,children:e.map(e=>(0,P.jsx)(Fm,{tool:e},e.id))})})]})}function Lm({attachment:e}){return e.url?e.kind===`image`||e.mimeType?.startsWith(`image/`)?(0,P.jsx)(`a`,{href:e.url,className:`inline-block`,children:(0,P.jsx)(`img`,{src:e.url,alt:e.name,className:`max-h-72 max-w-[24rem] rounded-md`})}):e.mimeType?.startsWith(`audio/`)?(0,P.jsx)(Em,{src:e.url,name:e.name}):(0,P.jsx)(`a`,{href:e.url,className:`text-sm italic text-muted-foreground underline-offset-4 hover:underline`,children:e.name}):null}function Rm({attachments:e}){return e.length===0?null:(0,P.jsx)(`div`,{className:`mt-3 flex flex-col gap-2`,children:e.map(e=>(0,P.jsx)(Lm,{attachment:e},e.id))})}function zm({message:e}){if(e.role===`system`)return(0,P.jsx)(`div`,{className:`flex justify-center`,children:(0,P.jsx)(`p`,{className:`text-xs italic text-muted-foreground`,children:e.text})});let t=e.role===`user`,n=!t&&(e.thinking||e.thinkingMs!=null),r=e.attachments??[];if(e.silent){let t=e.tools??[];return(0,P.jsxs)(`div`,{className:`flex flex-col items-start gap-3`,children:[n&&(0,P.jsx)(Om,{text:e.thinking??``,durationMs:e.thinkingMs}),t.length>0&&(0,P.jsx)(Im,{tools:t}),(0,P.jsx)(Rm,{attachments:r}),(0,P.jsx)(`div`,{className:`flex w-full justify-center`,children:(0,P.jsx)(`p`,{className:`text-xs italic text-muted-foreground`,children:`they kept quiet`})})]})}return(0,P.jsxs)(`div`,{className:$(`flex flex-col gap-1`,t?`items-end`:`items-start`),children:[(0,P.jsx)(`span`,{className:`text-xs uppercase tracking-wider text-muted-foreground`,children:e.who}),(0,P.jsxs)(`div`,{className:$(`flex flex-col`,t?`max-w-[85%]`:`w-full`),children:[n&&(0,P.jsx)(Om,{text:e.thinking??``,durationMs:e.thinkingMs}),!t&&(0,P.jsx)(Im,{tools:e.tools??[]}),e.text&&wm(e.text),(0,P.jsx)(Rm,{attachments:r})]})]})}var Bm=1800*1e3;function Vm(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Hm(e,t){let n=new Date(e),r=new Date(t),i=n.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`}).toLowerCase();if(Vm(n,r))return i;let a=new Date,o=n.getFullYear()===a.getFullYear();return`${n.toLocaleDateString([],{weekday:`long`,month:o?`long`:`short`,day:`numeric`,year:o?void 0:`numeric`}).toLowerCase()} · ${i}`}function Um({messages:e,personaName:t,historyLoaded:n}){let r=(0,_.useRef)(null);return(0,_.useEffect)(()=>{r.current?.scrollIntoView({behavior:`smooth`,block:`end`})},[e]),n&&e.length===0?(0,P.jsx)(`div`,{className:`mx-auto flex h-full max-w-3xl items-center justify-center px-5`,children:(0,P.jsxs)(`p`,{className:`font-serif text-base italic leading-relaxed text-muted-foreground/80`,children:[`hi, i'm `,t,`. write whenever.`]})}):(0,P.jsxs)(`div`,{className:`mx-auto flex max-w-3xl flex-col gap-12 px-5 py-6`,children:[e.map((t,n)=>{let r=e[n-1];return(0,P.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[r!=null&&t.ts-r.ts>=Bm&&(0,P.jsx)(`div`,{className:`flex justify-center pt-2`,children:(0,P.jsx)(`span`,{className:`font-serif italic text-xs text-muted-foreground/70 tracking-wide`,children:Hm(t.ts,r.ts)})}),(0,P.jsx)(zm,{message:t})]},t.id)}),(0,P.jsx)(`div`,{ref:r})]})}var Wm=1e3,Gm=15e3;function Km(){return typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`}function qm(e,t){let n=t.status===`completed`||t.status===`error`;return{...e,...t,args:t.args??e?.args,partialResult:n?void 0:t.partialResult??e?.partialResult,result:t.result??e?.result,error:t.error??e?.error,startedAt:e?.startedAt??t.startedAt}}function Jm(){let[e,t]=(0,_.useState)([]),[n,r]=(0,_.useState)(`connecting`),[i,a]=(0,_.useState)(`Familiar`),[o,s]=(0,_.useState)([]),[c,l]=(0,_.useState)(void 0),[u,d]=(0,_.useState)(!1),[f,p]=(0,_.useState)(!1),m=(0,_.useRef)(null),h=(0,_.useRef)(new Map),g=(0,_.useRef)(null),v=(0,_.useRef)(async()=>void 0),y=(0,_.useCallback)((e,n)=>{t(t=>{let r=t.findIndex(t=>t.id===e);if(r>=0){let e=t.slice();return e[r]={...e[r],...n,attachments:n.attachments??e[r].attachments,usage:n.usage??e[r].usage},e}let i={id:e,role:n.role??`assistant`,who:n.who??`Familiar`,text:n.text??``,thinking:n.thinking,thinkingMs:n.thinkingMs,attachments:n.attachments,usage:n.usage,ts:n.ts??Date.now()};return[...t,i]})},[]),b=(0,_.useCallback)(e=>{switch(`eventId`in e&&(m.current=e.eventId),e.type){case`message_started`:{let t=e.role===`user`;h.current.set(e.messageId,{text:``,thinking:``,isUser:t}),t||p(!0),y(e.messageId,{role:t?`user`:`assistant`,who:e.who,text:``,ts:e.ts});break}case`delta`:{let n=h.current.get(e.messageId)??{text:``,thinking:``};e.part===`thinking`?(n.thinking+=e.content,n.thinkingStartedAt??=Date.now(),n.thinkingEndedAt=Date.now(),y(e.messageId,{thinking:n.thinking})):(n.thinkingStartedAt&&!n.thinkingEndedAt&&(n.thinkingEndedAt=Date.now()),n.text+=e.content,t(t=>t.map(t=>t.id===e.messageId?{...t,text:n.text}:t))),h.current.set(e.messageId,n);break}case`message_completed`:{let t=h.current.get(e.messageId),n=e.thinkingMs??(t?.thinkingStartedAt&&t?.thinkingEndedAt?Math.max(0,t.thinkingEndedAt-t.thinkingStartedAt):void 0);y(e.messageId,{thinkingMs:n,...e.attachments?{attachments:e.attachments}:{},...e.usage?{usage:e.usage}:{},...e.silent?{silent:!0,text:``}:{}}),h.current.delete(e.messageId);break}case`tool_event`:t(t=>t.map(t=>{if(t.id!==e.messageId)return t;let n=t.tools?[...t.tools]:[],r=n.findIndex(t=>t.id===e.tool.id);return r>=0?n[r]=qm(n[r],e.tool):n.push(e.tool),{...t,tools:n}}));break;case`status`:e.kind===`idle`&&p(!1);break;case`error`:h.current.clear(),p(!1),t(t=>[...t,{id:Km(),role:`system`,who:``,text:`error · ${e.code}: ${e.message}`,ts:e.ts}]);break;case`replay_window_lost`:Gf(c).then(e=>t(e.messages)).catch(()=>void 0);break}},[y,c]);(0,_.useEffect)(()=>{let e=!1;return Uf().then(t=>{e||a(t.personaName)}).catch(()=>void 0),Wf().then(t=>{if(e)return;s(t);let n=localStorage.getItem(`familiar.activeSession`),r=n?t.find(e=>e.key===n):void 0,i=t.find(e=>e.isDefault)??t[0],a=(r??i)?.key;a&&l(a)}).catch(()=>void 0),()=>{e=!0}},[]),(0,_.useEffect)(()=>{if(!c)return;localStorage.setItem(`familiar.activeSession`,c);let e=!1,n=null,i=0,a=null;h.current.clear(),m.current=null;let o=window.setTimeout(()=>{e||(t([]),d(!1),p(!1))},0);Gf(c).then(n=>{e||(t(n.messages),d(!0))}).catch(()=>{e||d(!0)});let s=()=>{if(e)return;r(`connecting`);let t=new WebSocket(qf(c));n=t,g.current=t,t.addEventListener(`open`,()=>{e||(i=0,r(`open`),t.send(JSON.stringify({type:`hello`,lastEventId:m.current})))}),t.addEventListener(`message`,t=>{if(!e)try{b(JSON.parse(t.data))}catch{}}),t.addEventListener(`close`,()=>{if(e)return;g.current===t&&(g.current=null),r(`closed`);let n=Math.min(Gm,Wm*2**i);i+=1,a=setTimeout(s,n)}),t.addEventListener(`error`,()=>{e||r(`error`)})};return s(),v.current=async(e,t=[])=>{let n=e.trim();!n&&t.length===0||(p(!0),await Kf(n,Km(),c,t))},()=>{e=!0,clearTimeout(o),a&&clearTimeout(a),g.current===n&&(g.current=null),n?.close()}},[c,b]);let x=(0,_.useCallback)((e,t=[])=>v.current(e,t),[]);return{messages:e,connection:n,personaName:i,sessions:o,activeSessionKey:c,historyLoaded:u,streaming:f,selectSession:(0,_.useCallback)(e=>l(e),[]),send:x,abort:(0,_.useCallback)(()=>{let e=g.current;e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:`abort`}))},[]),notifyNewChat:(0,_.useCallback)(()=>{t(e=>[...e,{id:Km(),role:`system`,who:``,text:`started fresh`,ts:Date.now()}])},[])}}function Ym(){let{messages:e,connection:t,personaName:n,sessions:r,activeSessionKey:i,historyLoaded:a,streaming:o,selectSession:s,send:c,abort:l,notifyNewChat:u}=Jm(),[d,f]=(0,_.useState)(!1);return(0,P.jsxs)(`div`,{className:`flex h-dvh flex-col bg-background text-foreground antialiased`,children:[(0,P.jsx)(_m,{connection:t,personaName:n,sessions:r,activeSessionKey:i,channelKey:i,onSelectSession:s,onOpenConfig:()=>f(!0),onNewChatStarted:u}),(0,P.jsx)(`main`,{className:`flex-1 overflow-y-auto`,children:(0,P.jsx)(Um,{messages:e,personaName:n,historyLoaded:a})}),(0,P.jsx)(ap,{onSend:(e,t)=>void c(e,t),onAbort:l,streaming:o,personaName:n}),(0,P.jsx)(Zp,{open:d,onOpenChange:f,channelKey:i})]})}function Xm(){return(0,P.jsx)(Ym,{})}kp(Dp()),Ap(Dp),(0,v.createRoot)(document.getElementById(`root`)).render((0,P.jsx)(_.StrictMode,{children:(0,P.jsx)(Xm,{})}));
|
package/web/dist/index.html
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
href="https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Lora:ital,wght@0,400..700;1,400..700&family=IBM+Plex+Mono:wght@400;500&display=swap"
|
|
12
12
|
rel="stylesheet"
|
|
13
13
|
/>
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-C-w9fjBf.js"></script>
|
|
15
15
|
<link rel="stylesheet" crossorigin href="/assets/index-CcQ13VAY.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|