larkup 0.1.28 → 0.1.30
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +22 -22
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +16 -16
- package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/analytics/page.js.nft.json +1 -1
- package/.next/server/app/analytics/page_client-reference-manifest.js +1 -1
- package/.next/server/app/analytics.html +1 -1
- package/.next/server/app/analytics.rsc +17 -17
- package/.next/server/app/analytics.segments/_full.segment.rsc +17 -17
- package/.next/server/app/analytics.segments/_head.segment.rsc +4 -4
- package/.next/server/app/analytics.segments/_index.segment.rsc +11 -11
- package/.next/server/app/analytics.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/analytics.segments/analytics/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/analytics.segments/analytics.segment.rsc +3 -3
- package/.next/server/app/api/chat/route.js +8 -9
- package/.next/server/app/api/chat/route.js.nft.json +1 -1
- package/.next/server/app/api/config/test-provider/route.js +4 -4
- package/.next/server/app/api/config/test-provider/route.js.nft.json +1 -1
- package/.next/server/app/api/config/verify/route.js +3 -3
- package/.next/server/app/api/config/verify/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/[toolId]/route.js +1 -1
- package/.next/server/app/api/marketplace/[toolId]/route.js.nft.json +1 -1
- package/.next/server/app/api/marketplace/route.js +1 -1
- package/.next/server/app/api/marketplace/route.js.nft.json +1 -1
- package/.next/server/app/api/media/process/route.js +2 -2
- package/.next/server/app/api/media/process/route.js.nft.json +1 -1
- package/.next/server/app/api/media/route.js +1 -1
- package/.next/server/app/api/media/route.js.nft.json +1 -1
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +17 -17
- package/.next/server/app/chat.segments/_full.segment.rsc +17 -17
- package/.next/server/app/chat.segments/_head.segment.rsc +4 -4
- package/.next/server/app/chat.segments/_index.segment.rsc +11 -11
- package/.next/server/app/chat.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/chat.segments/chat/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/chat.segments/chat.segment.rsc +3 -3
- package/.next/server/app/data/page.js.nft.json +1 -1
- package/.next/server/app/data/page_client-reference-manifest.js +1 -1
- package/.next/server/app/data.html +1 -1
- package/.next/server/app/data.rsc +17 -17
- package/.next/server/app/data.segments/_full.segment.rsc +17 -17
- package/.next/server/app/data.segments/_head.segment.rsc +4 -4
- package/.next/server/app/data.segments/_index.segment.rsc +11 -11
- package/.next/server/app/data.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/data.segments/data/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/data.segments/data.segment.rsc +3 -3
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +16 -16
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +16 -16
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +11 -11
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +18 -18
- package/.next/server/app/settings.segments/_full.segment.rsc +18 -18
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +11 -11
- package/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_0kbcuk-.js +4 -3
- package/.next/server/chunks/0598_next_dist_esm_build_templates_app-route_1f4h7rr.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__067hiof._.js +18 -6
- package/.next/server/chunks/[root-of-the-server]__0a_0ywc._.js +18 -6
- package/.next/server/chunks/[root-of-the-server]__0c80bj0._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1m7m2x7._.js → [root-of-the-server]__0drkoru._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0vnm6_8._.js → [root-of-the-server]__0kmh740._.js} +6 -6
- package/.next/server/chunks/{[root-of-the-server]__0ou70-v._.js → [root-of-the-server]__0nfenje._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0omd-x0._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0u17zp8._.js +18 -6
- package/.next/server/chunks/{[root-of-the-server]__1s1zui-._.js → [root-of-the-server]__10v5qsi._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1xuhh_i._.js → [root-of-the-server]__16jk_se._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1ahdfq9._.js +19 -7
- package/.next/server/chunks/[root-of-the-server]__1idgvjh._.js +172 -0
- package/.next/server/chunks/[root-of-the-server]__1ip05r1._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__1jc54o2._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0748x7h._.js → [root-of-the-server]__1lhls88._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1o3rcbz._.js +2 -1
- package/.next/server/chunks/{[root-of-the-server]__10gcb7d._.js → [root-of-the-server]__1qh2h5v._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1s9is1o._.js +2 -1
- package/.next/server/chunks/[root-of-the-server]__1vsvck0._.js +18 -6
- package/.next/server/chunks/{[root-of-the-server]__0g_q-44._.js → [root-of-the-server]__1wy6wes._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1zptg4z._.js +2 -1
- package/.next/server/chunks/{packages_1f4dx4h._.js → packages_1ggqion._.js} +2 -2
- package/.next/server/chunks/packages_core_src_generator_server-runtime_ts_1_68l7t._.js +4 -4
- package/.next/server/chunks/packages_marketplace_src_125_g2p._.js +1 -1
- package/.next/server/chunks/{packages_vector-stores_src_064-9ay._.js → packages_vector-stores_src_1fib7u-._.js} +2 -2
- package/.next/server/chunks/ssr/{[root-of-the-server]__0wdatpx._.js → [root-of-the-server]__0m21fli._.js} +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__1r9ap67._.js → [root-of-the-server]__0t8ud_u._.js} +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__046ldu_._.js → [root-of-the-server]__0xyo3ni._.js} +1 -1
- package/.next/server/chunks/ssr/{_0k81--x._.js → _0ckxy33._.js} +2 -2
- package/.next/server/chunks/ssr/_169pdlf._.js +6 -6
- package/.next/server/chunks/ssr/_1hetwwu._.js +4 -3
- package/.next/server/chunks/ssr/_1yqlx1m._.js +1 -1
- package/.next/server/chunks/ssr/apps_web_components_analytics_analytics-dashboard_tsx_1056-z3._.js +1 -1
- package/.next/server/chunks/ssr/apps_web_lib_pdf-images_ts_13-l5wa._.js +1 -1
- package/.next/server/functions-config-manifest.json +3 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/{3bpr59xr-_rv7.js → 0ge3nirnmx_np.js} +1 -1
- package/.next/static/chunks/{0rgt7-bqxonef.js → 1uzf7x2okeuab.js} +6 -6
- package/.next/static/chunks/{3g_wl1fri6jb-.js → 21_6-9hjj2i68.js} +1 -1
- package/.next/static/chunks/2ib3e0xrrdait.js +1 -0
- package/.next/static/chunks/2jrpgzxyrmuqp.js +121 -0
- package/.next/static/chunks/390ds7l_plpmd.js +1 -0
- package/.next/static/chunks/{3een1tiktxr6a.js → 3zw6tgf7mxo39.js} +1 -1
- package/CHANGELOG.md +22 -0
- package/app/api/chat/route.ts +1 -0
- package/app/api/chat/tools.ts +5 -1
- package/app/api/config/test-provider/route.ts +16 -18
- package/app/api/config/verify/route.ts +5 -7
- package/app/api/describe-image/route.ts +12 -4
- package/app/api/firecrawl/local/route.ts +1 -1
- package/app/api/jobs/route.ts +1 -2
- package/app/api/marketplace/[toolId]/route.ts +1 -0
- package/components/analytics/analytics-dashboard.tsx +1 -1
- package/components/data/firecrawl-notice.tsx +49 -98
- package/components/data/media-panel.tsx +34 -5
- package/components/data/scrape-panel.tsx +17 -1
- package/components/data/upload-panel.tsx +2 -1
- package/components/onboarding/welcome-screen.tsx +45 -15
- package/components/settings/general-section.tsx +15 -10
- package/components/settings/marketplace-section.tsx +14 -2
- package/components/settings/server-section.tsx +3 -3
- package/lib/error-formatter.ts +19 -4
- package/lib/pdf-images.ts +20 -5
- package/package.json +7 -7
- package/.next/server/chunks/[root-of-the-server]__00r1kgp._.js +0 -143
- package/.next/server/chunks/[root-of-the-server]__064gb96._.js +0 -3
- package/.next/server/chunks/_0ce9vcg._.js +0 -32
- package/.next/static/chunks/00z1f-adeq1lg.js +0 -1
- package/.next/static/chunks/0k405nomf6s4e.js +0 -120
- package/.next/static/chunks/13hmtkhrbm4t3.js +0 -1
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → Laf7YhpONHOZXSCw6POiL}/_buildManifest.js +0 -0
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → Laf7YhpONHOZXSCw6POiL}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{bDwMIFYSTVBKUJkJJx77o → Laf7YhpONHOZXSCw6POiL}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,721606,e=>{"use strict";var t=e.i(199910),s=e.i(178328),a=e.i(732684);function n(){return"u">typeof window}function r(){return"production"}function i(){return"development"===((n()?window.vam:r())||"production")}function l(e){return RegExp(`/${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(?=[/?#]|$)`)}function o(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:`/${e}`}function d(e){return(0,s.useEffect)(()=>{var t;e.beforeSend&&(null==(t=window.va)||t.call(window,"beforeSend",e.beforeSend))},[e.beforeSend]),(0,s.useEffect)(()=>{!function(e={debug:!0},t){var s;if(!n())return;let{beforeSend:a,src:l,dataset:d}=function(e,t){var s,a;let n=e;if(t)try{n={...null==(s=JSON.parse(t))?void 0:s.analytics,...e}}catch{}!function(e="auto"){if("auto"===e){window.vam=r();return}window.vam=e}(n.mode);let l={sdkn:"@vercel/analytics"+(n.framework?`/${n.framework}`:""),sdkv:"2.0.1"};return n.disableAutoTrack&&(l.disableAutoTrack="1"),n.viewEndpoint&&(l.viewEndpoint=o(n.viewEndpoint)),n.eventEndpoint&&(l.eventEndpoint=o(n.eventEndpoint)),n.sessionEndpoint&&(l.sessionEndpoint=o(n.sessionEndpoint)),i()&&!1===n.debug&&(l.debug="false"),n.dsn&&(l.dsn=n.dsn),n.endpoint?l.endpoint=n.endpoint:n.basePath&&(l.endpoint=o(`${n.basePath}/insights`)),{beforeSend:n.beforeSend,src:(a=n).scriptSrc?o(a.scriptSrc):i()?"https://va.vercel-scripts.com/v1/script.debug.js":a.basePath?o(`${a.basePath}/insights/script.js`):"/_vercel/insights/script.js",dataset:l}}(e,t);if(window.va||(window.va=function(...e){window.vaq||(window.vaq=[]),window.vaq.push(e)}),a&&(null==(s=window.va)||s.call(window,"beforeSend",a)),document.head.querySelector(`script[src*="${l}"]`))return;let c=document.createElement("script");for(let[e,t]of(c.src=l,Object.entries(d)))c.dataset[e]=t;c.defer=!0,c.onerror=()=>{let e=i()?"Please check if any ad blockers are enabled and try again.":"Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information.";console.log(`[Vercel Web Analytics] Failed to load script from ${l}. ${e}`)},document.head.appendChild(c)}({framework:e.framework||"react",basePath:e.basePath??function(){if(void 0!==t.default&&void 0!==t.default.env)return t.default.env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH}(),...void 0!==e.route&&{disableAutoTrack:!0},...e},e.configString??function(){if(void 0!==t.default&&void 0!==t.default.env)return t.default.env.REACT_APP_VERCEL_OBSERVABILITY_CLIENT_CONFIG}())},[]),(0,s.useEffect)(()=>{e.route&&e.path&&function({route:e,path:t}){var s;null==(s=window.va)||s.call(window,"pageview",{route:e,path:t})}({route:e.route,path:e.path})},[e.route,e.path]),null}function c(e){let n,r,i,{route:o,path:c}=(n=(0,a.useParams)(),r=(0,a.useSearchParams)(),i=(0,a.usePathname)(),n?{route:function(e,t){if(!e||!t)return e;let s=e;try{let e=Object.entries(t);for(let[t,a]of e)if(!Array.isArray(a)){let e=l(a);e.test(s)&&(s=s.replace(e,`/[${t}]`))}for(let[t,a]of e)if(Array.isArray(a)){let e=l(a.join("/"));e.test(s)&&(s=s.replace(e,`/[...${t}]`))}return s}catch{return e}}(i,Object.keys(n).length?n:Object.fromEntries(r.entries())),path:i}:{route:null,path:i});return s.default.createElement(d,{path:c,route:o,...e,basePath:function(){if(void 0!==t.default&&void 0!==t.default.env)return t.default.env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_BASEPATH}(),configString:function(){if(void 0!==t.default&&void 0!==t.default.env)return t.default.env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_CLIENT_CONFIG}(),framework:"next"})}e.s(["Analytics",0,function(e){return s.default.createElement(s.Suspense,{fallback:null},s.default.createElement(c,{...e}))}])},7012,e=>{"use strict";var t=e.i(523829),s=e.i(178328),a=(e,t,s,a,n,r,i,l)=>{let o=document.documentElement,d=["light","dark"];function c(t){var s;(Array.isArray(e)?e:[e]).forEach(e=>{let s="class"===e,a=s&&r?n.map(e=>r[e]||e):n;s?(o.classList.remove(...a),o.classList.add(r&&r[t]?r[t]:t)):o.setAttribute(e,t)}),s=t,l&&d.includes(s)&&(o.style.colorScheme=s)}if(a)c(a);else try{let e=localStorage.getItem(t)||s,a=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(a)}catch(e){}},n=s.createContext(void 0),r={setTheme:e=>{},themes:[]};s.memo(({forcedTheme:e,storageKey:t,attribute:n,enableSystem:r,enableColorScheme:i,defaultTheme:l,value:o,themes:d,nonce:c,scriptProps:u})=>{let m=JSON.stringify([n,t,l,e,d,o,r,i]).slice(1,-1);return s.createElement("script",{...u,suppressHydrationWarning:!0,nonce:"u"<typeof window?c:"",dangerouslySetInnerHTML:{__html:`(${a.toString()})(${m})`}})});var i=e.i(746632),l=e.i(795360),l=l,o=e.i(951482),o=o,d=e.i(195300),d=d,c=e.i(909042),c=c,u=e.i(964548),u=u;e.s(["Toaster",0,({...e})=>{var a;let{theme:m="system"}=null!=(a=s.useContext(n))?a:r;return(0,t.jsx)(i.Toaster,{closeButton:!0,theme:m,className:"toaster group z-9999999! ",icons:{success:(0,t.jsx)(l.default,{className:"size-5 text-white",fill:"#10b981"}),info:(0,t.jsx)(o.default,{className:"size-5 text-white",fill:"#3b82f6"}),warning:(0,t.jsx)(d.default,{className:"size-5 text-white",fill:"#f59e0b"}),error:(0,t.jsx)(c.default,{className:"size-5 text-white",fill:"#ef4444"}),loading:(0,t.jsx)(u.default,{className:"size-5 animate-spin text-muted-foreground"})},style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)",zIndex:999999},toastOptions:{classNames:{toast:"group toast items-start group-[.toaster]:!bg-[#F9F9F7] dark:group-[.toaster]:!bg-zinc-900 group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:",icon:"mt-0.5",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",success:"group-[.toaster]:!bg-[#F9F9F7] dark:group-[.toaster]:!bg-zinc-900",error:"group-[.toaster]:!bg-[#F9F9F7] dark:group-[.toaster]:!bg-zinc-900",warning:"group-[.toaster]:!bg-[#F9F9F7] dark:group-[.toaster]:!bg-zinc-900",info:"group-[.toaster]:!bg-[#F9F9F7] dark:group-[.toaster]:!bg-zinc-900"}},...e})}],7012)},266186,e=>{"use strict";var t=e.i(523829),s=e.i(82100),a=e.i(178328),n=e.i(334347),r=e.i(732684),i=e.i(301470),l=e.i(518864),o=e.i(487779),d=e.i(874822);let c=(0,d.default)("chart-column",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);var u=e.i(708909),m=e.i(37126),x=e.i(152236),h=e.i(839717),p=e.i(133058);let f=(0,d.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var g=e.i(980369),b=e.i(379702),j=e.i(885131),v=e.i(440087),y=e.i(624529),N=e.i(874560),w=e.i(746632),k=e.i(501706),C=e.i(466691),A=e.i(282879);function F({target:e,open:s,onOpenChange:n}){let{deleteServer:r}=(0,y.useWorkspace)(),[i,l]=(0,a.useState)(!1);async function o(){if(e){l(!0);try{await r(e.id),w.toast.success(`Deleted "${e.name}".`),n(!1)}catch{w.toast.error("Could not delete the server.")}finally{l(!1)}}}return(0,t.jsx)(A.Dialog,{open:s,onOpenChange:n,children:(0,t.jsxs)(A.DialogContent,{className:"sm:max-w-md",children:[(0,t.jsxs)(A.DialogHeader,{children:[(0,t.jsxs)(A.DialogTitle,{children:["Delete “",e?.name,"”?"]}),(0,t.jsx)(A.DialogDescription,{children:"This permanently removes the server's documents, index, vector data, and generated files. This cannot be undone."})]}),(0,t.jsxs)(A.DialogFooter,{children:[(0,t.jsx)(C.Button,{variant:"outline",onClick:()=>n(!1),disabled:i,children:"Cancel"}),(0,t.jsxs)(C.Button,{variant:"destructive",onClick:()=>void o(),disabled:i,children:[i&&(0,t.jsx)(k.Loader2,{className:"size-4 animate-spin"}),"Delete server"]})]})]})})}function S(){let{servers:e,activeServer:s,activateServer:n}=(0,y.useWorkspace)(),[r,i]=(0,a.useState)(!1),[l,o]=(0,a.useState)(null),[d,c]=(0,a.useState)(null);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(v.DropdownMenu,{children:[(0,t.jsxs)(v.DropdownMenuTrigger,{render:(0,t.jsx)("button",{type:"button",className:"flex w-full items-center gap-2 rounded-lg border border-border bg-card px-2 py-1.5 text-left transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"}),children:[(0,t.jsx)("span",{className:"flex size-6 shrink-0 items-center justify-center rounded-md bg-primary/12 text-primary",children:(0,t.jsx)(m.Server,{className:"size-3.5"})}),(0,t.jsx)("span",{className:"flex min-w-0 flex-1 flex-col",children:(0,t.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("span",{className:"truncate text-sm font-medium text-foreground",children:s?.name??"No server"}),s?.running&&(0,t.jsx)(z,{})]})}),(0,t.jsx)(f,{className:"size-4 shrink-0 text-muted-foreground"})]}),(0,t.jsxs)(v.DropdownMenuContent,{align:"start",sideOffset:6,className:"w-(--anchor-width) min-w-[260px]",children:[(0,t.jsxs)(v.DropdownMenuGroup,{children:[(0,t.jsx)(v.DropdownMenuLabel,{children:"Your servers"}),e.map(e=>{let a=e.id===s?.id;return(0,t.jsxs)(v.DropdownMenuItem,{onClick:()=>{a||n(e.id)},className:"gap-2",children:[(0,t.jsx)("span",{className:"flex size-7 shrink-0 items-center justify-center rounded-md bg-muted text-muted-foreground",children:(0,t.jsx)(m.Server,{className:"size-3.5"})}),(0,t.jsxs)("span",{className:"flex min-w-0 flex-1 flex-col",children:[(0,t.jsx)("span",{className:"truncate font-medium",children:e.name}),(0,t.jsxs)("span",{className:"flex items-center gap-2 text-[11px] text-muted-foreground tabular-nums",children:[(0,t.jsxs)("span",{children:[e.docCount," docs"]}),e.indexed&&(0,t.jsx)("span",{children:"· indexed"}),e.running&&(0,t.jsxs)("span",{className:"flex items-center gap-1 text-green-500",children:[(0,t.jsx)(z,{}),"live"]})]})]}),a&&(0,t.jsx)(p.Check,{className:"size-4 shrink-0 text-primary"})]},e.id)})]}),(0,t.jsx)(v.DropdownMenuSeparator,{}),(0,t.jsxs)(v.DropdownMenuItem,{onClick:()=>i(!0),className:"gap-2 h-9",children:[(0,t.jsx)(b.Plus,{className:"size-4"}),"New server"]}),s&&(0,t.jsxs)(v.DropdownMenuItem,{onClick:()=>o(s),className:"gap-2 h-9",children:[(0,t.jsx)(g.Pencil,{className:"size-4"}),"Rename current"]}),s&&e.length>1&&(0,t.jsxs)(v.DropdownMenuItem,{variant:"destructive",onClick:()=>c(s),className:"gap-2",children:[(0,t.jsx)(j.Trash2,{className:"size-4"}),"Delete current"]})]})]}),(0,t.jsx)(N.ServerFormDialog,{mode:"create",open:r,onOpenChange:i}),(0,t.jsx)(N.ServerFormDialog,{mode:"rename",target:l,open:null!==l,onOpenChange:e=>!e&&o(null)}),(0,t.jsx)(F,{target:d,open:null!==d,onOpenChange:e=>!e&&c(null)})]})}function z(){return(0,t.jsxs)("span",{className:"relative flex size-2",children:[(0,t.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-green-500 opacity-75"}),(0,t.jsx)("span",{className:"relative inline-flex size-2 rounded-full bg-green-500"})]})}let E={"panel-default":void 0,"panel-white":"#FFFFFF","panel-fafafa":"#FAFAFA","panel-warm":"#F7F1EA","panel-soft":"#FBFAF8","panel-silver":"#F8F8F8","panel-stone":"#F5F5F2"},D=[{id:"chat",label:"Chat",href:"/chat",icon:i.MessageCircle},{id:"data",label:"Data",href:"/data",icon:l.Database},{id:"analytics",label:"Analytics",href:"/analytics",icon:c},{id:"settings",label:"Settings",href:"/settings",icon:o.Settings}];function T(){let e=(0,r.usePathname)(),{pageStyle:i,navBg:l}=(0,s.useThemeCustomizer)(),{activeServer:o}=(0,y.useWorkspace)(),[d,c]=(0,a.useState)(!0);(0,a.useEffect)(()=>{"false"===localStorage.getItem("sidebar-collapsed")&&c(!1)},[]);let p=()=>{let e=!d;c(e),localStorage.setItem("sidebar-collapsed",String(e))},f=l?E[l]:void 0;return(0,t.jsx)(h.TooltipProvider,{delay:150,children:(0,t.jsxs)("aside",{className:(0,x.cn)("sticky top-0 hidden h-screen shrink-0 flex-col self-start py-4 md:flex transition-all duration-300 ease-in-out",d?"w-18":"w-60",f?"":"bg-background","fused"===i?"border-r border-border":""),style:f?{backgroundColor:f}:void 0,children:[(0,t.jsx)("div",{className:(0,x.cn)("flex w-full items-center mb-6",d?"justify-center px-3":"justify-between px-4"),children:d?(0,t.jsxs)(h.Tooltip,{children:[(0,t.jsx)(h.TooltipTrigger,{render:(0,t.jsx)("button",{onClick:p,"aria-label":"Expand sidebar",className:"flex size-10 items-center justify-center rounded-xl bg-primary text-primary-foreground transition-transform hover:scale-105"}),children:(0,t.jsx)("img",{src:"/logo9.png",className:"size-5",alt:"logo"})}),(0,t.jsx)(h.TooltipContent,{side:"right",sideOffset:10,children:"Expand sidebar"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.default,{href:"/chat",className:"flex items-center gap-2.5",children:[(0,t.jsx)("span",{className:"flex size-9 items-center justify-center rounded-xl bg-primary text-primary-foreground transition-transform hover:scale-105",children:(0,t.jsx)("img",{src:"/logo9.png",className:"size-5",alt:"logo"})}),(0,t.jsx)("span",{className:"text-sm font-semibold tracking-tight text-foreground",children:"Larkup"})]}),(0,t.jsx)("button",{onClick:p,className:"flex size-7 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors","aria-label":"Collapse sidebar",children:(0,t.jsx)(u.ChevronLeft,{className:"size-3.5"})})]})}),(0,t.jsx)("nav",{className:(0,x.cn)("flex flex-1 flex-col w-full",d?"items-center px-3 gap-3":"px-3 gap-1.5"),children:D.map(s=>{let a=s.icon,r=e===s.href||"/"!==s.href&&e?.startsWith(s.href);return d?(0,t.jsxs)(h.Tooltip,{children:[(0,t.jsx)(h.TooltipTrigger,{render:(0,t.jsx)(n.default,{href:s.href,"aria-current":r?"page":void 0,onClick:t=>{"chat"===s.id&&"/chat"===e&&(t.preventDefault(),window.dispatchEvent(new CustomEvent("new-chat")))},className:(0,x.cn)("group relative flex size-10 items-center justify-center rounded-xl transition-all duration-200 outline-none focus-visible:ring-2 focus-visible:ring-ring",r?"bg-[#F0F0F0] text-foreground":"text-muted-foreground hover:bg-[#EBEBEB] hover:text-foreground")}),children:(0,t.jsx)(a,{className:"size-4.5",strokeWidth:r?2.25:1.75})}),(0,t.jsx)(h.TooltipContent,{side:"right",sideOffset:10,children:s.label})]},s.id):(0,t.jsxs)(n.default,{href:s.href,"aria-current":r?"page":void 0,onClick:t=>{"chat"===s.id&&"/chat"===e&&(t.preventDefault(),window.dispatchEvent(new CustomEvent("new-chat")))},className:(0,x.cn)("group relative flex items-center gap-3 rounded-xl px-3 py-2.5 text-[13px] font-medium transition-all duration-200 outline-none focus-visible:ring-2 focus-visible:ring-ring",r?"bg-[#F0F0F0] text-foreground":"text-muted-foreground hover:bg-[#EBEBEB] hover:text-foreground"),children:[(0,t.jsx)(a,{className:"size-4.5 shrink-0",strokeWidth:r?2.25:1.75}),(0,t.jsx)("span",{className:"truncate",children:s.label})]},s.id)})}),(0,t.jsx)("div",{className:(0,x.cn)("w-full pt-3",d?"px-2":"px-3"),children:d?(0,t.jsxs)(h.Tooltip,{children:[(0,t.jsx)(h.TooltipTrigger,{render:(0,t.jsx)("button",{onClick:p,className:"flex w-full items-center justify-center py-1.5 rounded-lg text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-colors"}),children:(0,t.jsxs)("div",{className:"relative size-8 rounded-lg border border-border bg-card flex items-center justify-center text-muted-foreground transition-colors group-hover:text-foreground",children:[(0,t.jsx)(m.Server,{className:"size-4"}),(0,t.jsx)("span",{className:"absolute -bottom-0.5 -right-0.5 flex size-2.5",children:o?.running?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-green-500 opacity-75"}),(0,t.jsx)("span",{className:"relative inline-flex size-full rounded-full bg-green-500 border border-card"})]}):(0,t.jsx)("span",{className:"relative inline-flex size-full rounded-full bg-gray-500 border border-card"})})]})}),(0,t.jsxs)(h.TooltipContent,{side:"right",sideOffset:10,children:[o?.name??"No server"," (",o?.running?"Live":"Offline",")"]})]}):(0,t.jsx)(S,{})})]})})}let I={"panel-default":void 0,"panel-white":"#FFFFFF","panel-fafafa":"#FAFAFA","panel-warm":"#F7F1EA","panel-soft":"#FBFAF8","panel-silver":"#F8F8F8","panel-stone":"#F5F5F2"},M=[{id:"chat",label:"Chat",href:"/chat",icon:i.MessageCircle},{id:"data",label:"Data",href:"/data",icon:l.Database},{id:"analytics",label:"Analytics",href:"/analytics",icon:c},{id:"settings",label:"Settings",href:"/settings",icon:o.Settings}];function P(){let e=(0,r.usePathname)(),{username:a}=(0,y.useWorkspace)(),{navBg:i}=(0,s.useThemeCustomizer)(),l=i?I[i]:void 0;return(0,t.jsx)(h.TooltipProvider,{delay:150,children:(0,t.jsxs)("header",{className:(0,x.cn)("sticky top-0 z-50 flex h-14 shrink-0 items-center gap-6 border-b border-border px-4 md:px-6",l?"":"bg-[#F5F5F4]"),style:l?{backgroundColor:l}:void 0,children:[(0,t.jsxs)(n.default,{href:"/chat","aria-label":"larkup home",className:"flex items-center gap-2.5 shrink-0",children:[(0,t.jsx)("span",{className:"flex size-9 items-center justify-center rounded-xl bg-primary text-primary-foreground transition-transform hover:scale-105",children:(0,t.jsx)("img",{src:"/logo9.png",className:"size-5",alt:"logo"})}),(0,t.jsx)("span",{className:"font-semibold tracking-tight text-foreground hidden sm:inline-block",children:"Larkup"})]}),(0,t.jsx)("nav",{className:"flex h-full items-center gap-1",children:M.map(s=>{let a=s.icon,r=e===s.href||"/"!==s.href&&e?.startsWith(s.href);return(0,t.jsxs)(n.default,{href:s.href,"aria-current":r?"page":void 0,className:(0,x.cn)("group relative flex items-center gap-2 h-full px-3 text-[13px] font-medium transition-colors outline-none",r?"text-primary":"text-muted-foreground hover:text-foreground"),children:[(0,t.jsx)(a,{className:"size-[16px]",strokeWidth:r?2.25:1.75}),(0,t.jsx)("span",{className:"hidden md:inline",children:s.label}),(0,t.jsx)("span",{className:(0,x.cn)("absolute bottom-0 left-2 right-2 h-[2px] rounded-full bg-primary transition-opacity",r?"opacity-100":"opacity-0")})]},s.id)})}),(0,t.jsx)("div",{className:"flex-1"}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(S,{}),a&&(0,t.jsxs)("span",{className:"hidden text-sm text-muted-foreground md:block",children:["Hi, ",(0,t.jsx)("span",{className:"font-medium text-foreground",children:a})]})]})]})})}let _=(0,d.default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);var B=e.i(570764),O=e.i(18928),O=O,L=e.i(562949),R=e.i(741445),V=e.i(924911),$=e.i(300033),W=e.i(856474),K=e.i(266741);let U=["vercel_ai_gateway","openai","google","mistral","custom"];function H(){let{setUsername:e,createServer:s,refresh:n}=(0,y.useWorkspace)(),i=(0,r.useRouter)(),[l,o]=(0,a.useState)(""),[d,c]=(0,a.useState)("vercel_ai_gateway"),[u,m]=(0,a.useState)(""),[x,h]=(0,a.useState)(null),[p,f]=(0,a.useState)("vercel_ai_gateway"),[b,j]=(0,a.useState)(""),[v,N]=(0,a.useState)(null),[F,S]=(0,a.useState)(!1),[z,E]=(0,a.useState)(!1),[D,T]=(0,a.useState)(!1),[I,M]=(0,a.useState)(!1),[P,H]=(0,a.useState)(null),q="custom"===d,Y="custom"===p,J=z||q||d!==p?b:u,G=async()=>{S(!0);try{let t=await fetch("/api/config"),{config:a}=await t.json(),r={...a};q&&x?(r.embeddingProvider="custom",r.embeddingModelId=`custom:${x.modelName}`,r.embeddingApiKey=x.apiKey||void 0,r.customEmbeddings=[x]):(r.embeddingProvider=d,r.embeddingApiKey=u),z?Y&&v?(r.chatProvider="custom",r.chatModelId=`custom:${v.modelName}`,r.chatApiKey=v.apiKey||void 0,r.customChatModels=[v]):(r.chatProvider=p,r.chatApiKey=J):q&&x||(r.chatProvider=d,r.chatApiKey=u);let o=await fetch("/api/config/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({embeddingProvider:r.embeddingProvider,embeddingApiKey:r.embeddingApiKey,embeddingModelId:r.embeddingModelId,customEmbeddings:r.customEmbeddings,chatProvider:r.chatProvider,chatApiKey:r.chatApiKey,chatModelId:r.chatModelId,customChatModels:r.customChatModels})});if(!o.ok){let e=await o.json();w.toast.error(e.error||"Verification failed — please check your API key.",{duration:8e3}),S(!1);return}l.trim()&&await e(l.trim()),await s("my-larkup"),await fetch("/api/config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)}),n(),i.push("/chat")}catch(e){w.toast.error("Failed to complete setup")}finally{S(!1)}},X=async()=>{S(!0);try{l.trim()&&await e(l.trim()),await s("my-larkup"),n(),i.push("/chat")}catch(e){w.toast.error("Failed to complete setup")}finally{S(!1)}},Z=(e,s)=>(0,t.jsxs)($.Select,{value:e,onValueChange:e=>{var t;"custom"===(t=e??"")?("embedding"===s?c("custom"):f("custom"),H(s)):"embedding"===s?(c(t),h(null),!z&&f(t)):(f(t),N(null))},children:[(0,t.jsx)($.SelectTrigger,{className:"w-full bg-white/90 hover:bg-white",children:(0,t.jsx)("span",{className:"flex items-center gap-2",children:W.PROVIDER_META[e]?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(W.ProviderIcon,{src:W.PROVIDER_META[e].iconSrc,alt:W.PROVIDER_META[e].label,pillBg:W.PROVIDER_META[e].pillBg,size:16}),W.PROVIDER_META[e].label]}):"Select provider"})}),(0,t.jsx)($.SelectContent,{children:U.map(e=>{let s=W.PROVIDER_META[e];return s?(0,t.jsx)($.SelectItem,{value:e,children:(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(W.ProviderIcon,{src:s.iconSrc,alt:s.label,pillBg:s.pillBg,size:16}),(0,t.jsxs)("span",{children:[s.label,"vercel_ai_gateway"===e&&" (Recommended)","custom"===e&&" (OpenAI-compatible)"]})]})},e):null})})]}),Q=(e,s)=>(0,t.jsxs)("div",{className:"mt-1.5 flex items-center gap-2 rounded-lg border border-green-200 bg-green-50/50 px-3 py-2",children:[(0,t.jsx)("span",{className:"text-green-600 text-xs",children:"✓"}),(0,t.jsx)("span",{className:"flex-1 truncate text-xs font-medium text-foreground",children:e.modelName}),(0,t.jsx)("button",{type:"button",onClick:()=>H(s),className:"text-muted-foreground hover:text-foreground transition-colors",children:(0,t.jsx)(g.Pencil,{className:"size-3"})})]});return(0,t.jsxs)("div",{className:"fixed inset-0 z-50 overflow-y-auto bg-background",children:[(0,t.jsxs)("div",{className:"pointer-events-none fixed inset-0 overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute -left-20 -top-20 h-125 w-125 rounded-full bg-stone-200/40 blur-3xl animate-pulse"}),(0,t.jsx)("div",{className:"absolute -bottom-32 -right-32 h-150 w-150 rounded-full bg-amber-100/30 blur-3xl animate-pulse [animation-delay:1s]"})]}),(0,t.jsx)("div",{className:"relative z-10 flex min-h-full w-full flex-col items-center justify-center px-6 py-12",children:(0,t.jsxs)("div",{className:"flex w-full max-w-lg flex-col items-center gap-8 animate-fade-up",children:[(0,t.jsxs)("div",{className:"flex flex-col items-center gap-4 text-center",children:[(0,t.jsx)("div",{className:"flex size-14 items-center justify-center rounded-xl bg-primary text-primary-foreground ",children:(0,t.jsx)("img",{src:"/logo9.png",className:"size-8",alt:"Larkup"})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("h1",{className:"text-2xl font-bold tracking-tight text-foreground",children:"Welcome to Larkup"}),(0,t.jsx)("p",{className:"mt-2 text-sm text-muted-foreground",children:"Let's set up your AI models. You can change these later in Settings."})]})]}),(0,t.jsxs)("div",{className:"w-full space-y-5 rounded-2xl p-6 backdrop-blur-xl",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:"text-xs font-medium text-foreground",children:"Your Name (Optional)"}),(0,t.jsx)(V.Input,{value:l,onChange:e=>o(e.target.value),placeholder:"How should we call you?",className:"bg-background/50"})]}),(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:"text-xs font-medium text-foreground",children:"Embedding Provider"}),Z(d,"embedding"),q&&x&&Q(x,"embedding"),q&&!x&&(0,t.jsx)("p",{className:"text-[11px] text-amber-600 mt-1",children:"Please configure and test your custom model to continue."})]}),!q&&(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsxs)("label",{className:"text-xs font-medium text-foreground",children:["API Key",!z&&(0,t.jsxs)("span",{className:"text-muted-foreground font-normal",children:[" ","(used for both embedding & chat)"]})]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(V.Input,{type:D?"text":"password",value:u,onChange:e=>m(e.target.value),placeholder:"sk-...",className:"bg-background/50 pr-10"}),(0,t.jsx)("button",{type:"button","aria-label":D?"Hide API key":"Show API key",onClick:()=>T(e=>!e),className:"absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground",children:D?(0,t.jsx)(R.EyeOff,{className:"size-4"}):(0,t.jsx)(L.Eye,{className:"size-4"})})]})]}),(0,t.jsxs)("button",{type:"button",onClick:()=>E(!z),className:"flex w-full items-center gap-1.5 text-xs text-muted-foreground hover:text-foreground transition-colors",children:[z?(0,t.jsx)(O.default,{className:"size-3.5"}):(0,t.jsx)(B.ChevronDown,{className:"size-3.5"}),"Use a different chat model"]}),z&&(0,t.jsxs)("div",{className:"space-y-3 rounded-xl border border-border/40 bg-muted/20 p-4",children:[(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:"text-xs font-medium text-foreground",children:"Chat Provider"}),Z(p,"chat"),Y&&v&&Q(v,"chat"),Y&&!v&&(0,t.jsx)("p",{className:"text-[11px] text-amber-600 mt-1",children:"Please configure and test your custom model to continue."})]}),!Y&&(0,t.jsxs)("div",{className:"space-y-1.5",children:[(0,t.jsx)("label",{className:"text-xs font-medium text-foreground",children:"Chat API Key"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(V.Input,{type:I?"text":"password",value:b,onChange:e=>j(e.target.value),placeholder:"sk-...",className:"bg-background/50 pr-10"}),(0,t.jsx)("button",{type:"button","aria-label":I?"Hide chat API key":"Show chat API key",onClick:()=>M(e=>!e),className:"absolute inset-y-0 right-0 flex items-center px-3 text-muted-foreground hover:text-foreground",children:I?(0,t.jsx)(R.EyeOff,{className:"size-4"}):(0,t.jsx)(L.Eye,{className:"size-4"})})]})]})]}),(0,t.jsx)("p",{className:"text-[11px] text-muted-foreground",children:"More providers and fine-grained model selection available in Settings → AI Models."}),(0,t.jsxs)("div",{className:"pt-2 flex gap-3",children:[(0,t.jsx)(C.Button,{variant:"outline",className:"flex-1",onClick:X,disabled:F,children:"Skip for now"}),(0,t.jsx)(C.Button,{className:"flex-1",onClick:G,disabled:F||!(()=>{if(q){if(!x)return!1}else if(!u)return!1;if(z){if(Y){if(!v)return!1}else if(!J)return!1}return!0})(),children:F?(0,t.jsx)(k.Loader2,{className:"size-4 animate-spin"}):(0,t.jsxs)(t.Fragment,{children:["Continue ",(0,t.jsx)(_,{className:"ml-1.5 size-4"})]})})]})]})]})}),(0,t.jsx)(A.Dialog,{open:null!==P,onOpenChange:e=>{e||("embedding"!==P||x||c("vercel_ai_gateway"),"chat"!==P||v||f("vercel_ai_gateway"),H(null))},children:(0,t.jsxs)(A.DialogContent,{className:"max-w-xl",children:[(0,t.jsxs)(A.DialogHeader,{children:[(0,t.jsxs)(A.DialogTitle,{children:["Custom ","embedding"===P?"Embedding":"Chat"," Model"]}),(0,t.jsxs)(A.DialogDescription,{children:["Connect an OpenAI-compatible ","embedding"===P?"embedding":"chat"," ","model. Test the connection before adding."]})]}),P&&(0,t.jsx)(K.CustomModelForm,{type:P,onSave:e=>{"embedding"===P?(h(e),c("custom")):"chat"===P&&(N(e),f("custom")),H(null)},onCancel:()=>{"embedding"!==P||x||c("vercel_ai_gateway"),"chat"!==P||v||f("vercel_ai_gateway"),H(null)}})]})})]})}let q={"panel-default":"#FAFAFA","panel-white":"#FFFFFF","panel-fafafa":"#FAFAFA","panel-warm":"#F7F1EA","panel-soft":"#FBFAF8","panel-silver":"#F8F8F8","panel-stone":"#F5F5F2"};e.s(["ClientLayoutWrapper",0,function({children:e}){let{pageStyle:a,panelBg:n,layout:i}=(0,s.useThemeCustomizer)(),l=(0,r.usePathname)(),o=l?.includes("/chat"),{isFirstRun:d,isLoading:c}=(0,y.useWorkspace)(),u=q[n],m=u?{backgroundColor:u}:void 0;return!c&&d?(0,t.jsx)(H,{}):c?(0,t.jsx)("div",{className:"flex h-screen items-center justify-center",children:(0,t.jsx)("div",{className:"size-6 animate-spin rounded-full border-2 border-primary border-t-transparent"})}):"topnav"===i?(0,t.jsxs)("div",{className:"flex flex-col h-screen overflow-hidden",children:[(0,t.jsx)(P,{}),(0,t.jsx)("main",{className:"min-w-0 flex-1 overflow-hidden",children:(0,t.jsx)("div",{className:"h-full flex flex-col bg-background text-foreground",style:m,children:(0,t.jsx)("div",{className:(0,x.cn)("flex-1 min-h-0",o||l?.includes("/settings")||l?.includes("/analytics")?"overflow-hidden flex flex-col":"overflow-auto"),children:(0,t.jsx)("div",{className:(0,x.cn)("h-full w-full",o||l?.includes("/settings")||l?.includes("/analytics")?"flex-1 min-h-0 flex flex-col":"container mx-auto pb-8"),children:e})})})})]}):(0,t.jsxs)("div",{className:"flex h-screen overflow-hidden",children:[(0,t.jsx)(T,{}),(0,t.jsx)("main",{className:"min-w-0 flex-1 overflow-hidden",children:(0,t.jsx)("div",{className:"fused"===a?"h-screen flex flex-col bg-background text-foreground overflow-hidden":"h-screen flex flex-col md:rounded-l-2xl border-l border-border bg-panel text-panel-foreground overflow-hidden",style:m,children:(0,t.jsx)("div",{className:(0,x.cn)("flex-1 min-h-0",o||l?.includes("/settings")||l?.includes("/analytics")?"overflow-hidden flex flex-col":"overflow-auto"),children:(0,t.jsx)("div",{className:(0,x.cn)("h-full w-full",o||l?.includes("/settings")||l?.includes("/analytics")?"flex-1 min-h-0 flex flex-col":"container mx-auto pb-8"),children:e})})})})]})}],266186)},953159,e=>{"use strict";var t=e.i(523829),s=e.i(842646),a=e.i(501706),n=e.i(178328),r=e.i(866657),i=e.i(874822);let l=(0,i.default)("boxes",[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]]);var o=e.i(871942);let d=(0,i.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]);var c=e.i(518864),u=e.i(702938);let m=(0,i.default)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);var x=e.i(743118),h=e.i(714809),p=e.i(241491),f=e.i(539352);let g=(0,i.default)("scissors",[["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M8.12 8.12 12 12",key:"1alkpv"}],["path",{d:"M20 4 8.12 15.88",key:"xgtan2"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M14.8 14.8 20 20",key:"ptml3r"}]]);var b=e.i(682458),j=e.i(161351),v=e.i(466691),y=e.i(861947),N=e.i(323621),w=e.i(524365),k=e.i(534792),C=e.i(746632),A=e.i(878835),F=e.i(282879);let S=e=>fetch(e).then(e=>e.json()),z=["chunking","embedding","upserting"];function E({open:e,onOpenChange:i,trigger:l}){let[o,d]=(0,n.useState)(!1),[c,u]=(0,n.useState)(!1),m=void 0!==e,g=m?e:c,b=m&&i?i:u,{data:j,isLoading:y,mutate:N}=(0,s.default)("/api/index",S,{refreshInterval:e=>e?.run&&z.includes(e.run.status)?1e3:0}),T=(0,n.useRef)(void 0);(0,n.useEffect)(()=>{let e=j?.run?.warning;e&&e!==T.current?C.toast.warning(e,{id:"rate-limit-warning",duration:7e4}):!e&&T.current&&(C.toast.dismiss("rate-limit-warning"),C.toast.success("Rate limit resolved — resuming indexing.",{duration:3e3})),T.current=e},[j?.run?.warning]);let[M,P]=(0,n.useState)(!1);async function _(e=!1){d(!0);try{let t=await fetch("/api/index",{method:"POST",body:JSON.stringify({incremental:e}),headers:{"Content-Type":"application/json"}}),s=await t.json();if(!t.ok)return void C.toast.error(s.error??"Could not start indexing.");C.toast.success("Indexing started."),N()}catch{C.toast.error("Could not start indexing.")}finally{d(!1)}}async function B(){d(!0);try{if(!(await fetch("/api/index",{method:"DELETE"})).ok)return void C.toast.error("Could not cancel indexing.");C.toast.success("Indexing cancelled."),N()}catch{C.toast.error("Could not cancel indexing.")}finally{d(!1)}}return(0,n.useEffect)(()=>{let e=j?.run?.status;e&&z.includes(e)?P(!0):M&&"completed"===e&&(P(!1),b(!1),C.toast.success("Indexing completed successfully!"))},[j?.run?.status,M,b]),(0,t.jsxs)(F.Dialog,{open:g,onOpenChange:b,children:[l?(0,t.jsx)(F.DialogTrigger,{render:(0,n.isValidElement)(l)?l:(0,t.jsx)("button",{children:l})}):(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[j?.run?.status==="completed"&&(0,t.jsxs)(A.AlertDialog,{children:[(0,t.jsx)(A.AlertDialogTrigger,{render:(0,t.jsxs)(v.Button,{disabled:!j.ready||!!(j.run&&z.includes(j.run.status))||o,variant:"outline",children:[(0,t.jsx)(f.RotateCcw,{className:"size-4 mr-2"}),"Re-Index Data"]})}),(0,t.jsxs)(A.AlertDialogContent,{children:[(0,t.jsxs)(A.AlertDialogHeader,{children:[(0,t.jsx)(A.AlertDialogTitle,{children:"Are you sure you want to re-index data?"}),(0,t.jsx)(A.AlertDialogDescription,{children:"This will rebuild the entire index from scratch. All documents will be re-processed."})]}),(0,t.jsxs)(A.AlertDialogFooter,{children:[(0,t.jsx)(A.AlertDialogCancel,{children:"Cancel"}),(0,t.jsx)(A.AlertDialogAction,{onClick:()=>{b(!0),_(!1)},children:"Continue"})]})]})]}),(0,t.jsx)(F.DialogTrigger,{render:(0,t.jsxs)(v.Button,{disabled:!j?.ready||j?.unindexedCount===0,children:[(0,t.jsx)(h.Layers,{className:"size-4 mr-2"}),"Index Data"]})})]}),(0,t.jsxs)(F.DialogContent,{className:"max-w-2xl max-h-[90vh] overflow-y-auto ",children:[(0,t.jsxs)(F.DialogHeader,{children:[(0,t.jsx)(F.DialogTitle,{children:"Index Data"}),(0,t.jsx)(F.DialogDescription,{children:"Chunk, embed, and index into your selected vector database."})]}),y||!j?(0,t.jsx)("div",{className:"py-6",children:(0,t.jsx)(k.Skeleton,{className:"h-40 w-full"})}):(0,t.jsxs)("div",{className:"space-y-6 py-4",children:[(0,t.jsx)(D,{config:j.config,docCount:j.docCount,charCount:j.charCount}),!j.ready&&(0,t.jsxs)(w.Alert,{variant:"default",children:[(0,t.jsx)(r.AlertTriangle,{className:"size-4 text-orange-500!"}),(0,t.jsx)(w.AlertTitle,{className:"text-orange-500!",children:"Not ready to index"}),(0,t.jsx)(w.AlertDescription,{children:(0,t.jsx)("ul",{className:"list-disc pl-4",children:j.blockers.map(e=>(0,t.jsx)("li",{children:e},e))})})]}),(0,t.jsx)(I,{run:j.run,running:!!(j.run&&z.includes(j.run.status))}),j.ready&&!j.run&&(0,t.jsxs)(w.Alert,{children:[(0,t.jsx)(x.Info,{className:"size-4 text-blue-500!"}),(0,t.jsx)(w.AlertTitle,{className:"text-blue-600 dark:text-blue-400",children:"Before you start indexing"}),(0,t.jsxs)(w.AlertDescription,{className:"text-muted-foreground space-y-1",children:[(0,t.jsxs)("p",{children:["Once indexing begins, two settings become"," ",(0,t.jsx)("span",{className:"font-medium text-foreground",children:"locked"})," to the existing index:"]}),(0,t.jsxs)("ul",{className:"list-disc pl-4 space-y-0.5",children:[(0,t.jsxs)("li",{children:[(0,t.jsx)("span",{className:"font-medium text-foreground",children:"Embedding model"})," — you can swap to any model with the"," ",(0,t.jsx)("span",{className:"font-medium text-foreground",children:"same vector dimensions"}),", but switching to a model with different dimensions will require a full re-index."]}),(0,t.jsxs)("li",{children:[(0,t.jsx)("span",{className:"font-medium text-foreground",children:"Vector store"})," — changing the store after indexing requires starting fresh."]})]})]})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between pt-2",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)(v.Button,{onClick:()=>_(j.run?.status==="completed"),disabled:!j.ready||!!(j.run&&z.includes(j.run.status))||o||j.run?.status==="completed"&&0===j.unindexedCount,size:"lg",children:[j.run&&z.includes(j.run.status)||o?(0,t.jsx)(a.Loader2,{className:"size-4 animate-spin mr-2"}):(0,t.jsx)(p.Play,{className:"size-4 mr-2"}),j.run&&z.includes(j.run.status)?"Indexing…":o?"Starting…":j.run?.status==="completed"?`Index new documents (${j.unindexedCount})`:`Start indexing (${j.unindexedCount})`]}),j.run?.status==="completed"&&!(j.run&&z.includes(j.run.status))&&(0,t.jsxs)(A.AlertDialog,{children:[(0,t.jsx)(A.AlertDialogTrigger,{render:(0,t.jsxs)(v.Button,{variant:"outline",size:"lg",disabled:o,children:[(0,t.jsx)(f.RotateCcw,{className:"size-4 mr-2"}),"Re-Index All"]})}),(0,t.jsxs)(A.AlertDialogContent,{children:[(0,t.jsxs)(A.AlertDialogHeader,{children:[(0,t.jsx)(A.AlertDialogTitle,{children:"Are you sure you want to re-index data?"}),(0,t.jsx)(A.AlertDialogDescription,{children:"This will rebuild the entire index from scratch. All documents will be re-processed."})]}),(0,t.jsxs)(A.AlertDialogFooter,{children:[(0,t.jsx)(A.AlertDialogCancel,{children:"Cancel"}),(0,t.jsx)(A.AlertDialogAction,{onClick:()=>{b(!0),_(!1)},children:"Continue"})]})]})]}),!!(j.run&&z.includes(j.run.status))&&(0,t.jsx)(v.Button,{onClick:B,disabled:o,size:"lg",variant:"destructive",children:"Cancel"})]}),(0,t.jsx)(v.Button,{variant:"ghost",size:"lg",onClick:()=>b(!1),children:"Close"})]})]})]})]})}function D({config:e,docCount:s,charCount:a}){let n=(0,b.getEmbeddingModel)(e.embeddingModelId),r=(0,j.getVectorStore)(e.vectorStore),i=[{icon:d,label:"Embedding model",value:n?.label??e.embeddingModelId,hint:n?`${n.dimensions} dims`:void 0},{icon:c.Database,label:"Vector store",value:r?.label??e.vectorStore},{icon:l,label:"Index type",value:e.indexType.toUpperCase()},{icon:g,label:"Chunking",value:`${e.chunking.chunkSize} / ${e.chunking.chunkOverlap}`,hint:"size / overlap"},{icon:u.FileText,label:"Corpus",value:`${s.toLocaleString()} docs`,hint:`${a.toLocaleString()} chars`}];return(0,t.jsxs)("div",{className:"rounded-xl border bg-card text-card-foreground p-4",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-base font-semibold mb-4",children:[(0,t.jsx)(h.Layers,{className:"size-4 text-primary"}),"Index configuration"]}),(0,t.jsx)("dl",{className:"grid grid-cols-2 gap-x-6 gap-y-5 sm:grid-cols-3",children:i.map(e=>(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("dt",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[(0,t.jsx)(e.icon,{className:"size-3.5"}),e.label]}),(0,t.jsxs)("dd",{className:"text-sm font-medium leading-tight",children:[e.value,e.hint&&(0,t.jsx)("span",{className:"ml-1.5 font-mono text-[11px] font-normal text-muted-foreground",children:e.hint})]})]},e.label))})]})}let T={idle:{label:"Idle"},chunking:{label:"Chunking",phase:"Splitting documents into chunks"},embedding:{label:"Embedding",phase:"Generating vector embeddings"},upserting:{label:"Storing",phase:"Writing vectors to the store"},completed:{label:"Completed"},failed:{label:"Failed"}};function I({run:e,running:s}){if(!e)return(0,t.jsxs)("div",{className:"rounded-xl border bg-card text-card-foreground flex flex-col items-center justify-center gap-1 py-8 text-center",children:[(0,t.jsx)(m,{className:"mb-1 size-6 text-muted-foreground/60"}),(0,t.jsx)("p",{className:"text-sm font-medium",children:"No index built yet"}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground",children:"Build a Larkup index to embed your corpus and make it searchable."})]});let n=T[e.status],i=e.totalChunks>0?Math.round(e.processedChunks/e.totalChunks*100):5*!!s;return(0,t.jsxs)("div",{className:"rounded-xl border bg-card text-card-foreground p-4 space-y-4",children:[(0,t.jsxs)("div",{className:"flex flex-row items-center justify-between",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 text-base font-semibold",children:["completed"===e.status?(0,t.jsx)(o.CheckCircle2,{className:"size-4 text-primary"}):"failed"===e.status?(0,t.jsx)(r.AlertTriangle,{className:"size-4 text-destructive"}):(0,t.jsx)(a.Loader2,{className:"size-4 animate-spin text-primary"}),n.label]}),(0,t.jsx)(P,{status:e.status})]}),"failed"===e.status?(0,t.jsx)(t.Fragment,{}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between text-sm",children:[(0,t.jsx)("span",{className:"text-muted-foreground",children:n.phase??"Done"}),(0,t.jsxs)("span",{className:"font-mono tabular-nums",children:[e.processedChunks.toLocaleString(),e.totalChunks>0&&` / ${e.totalChunks.toLocaleString()}`," chunks"]})]}),(0,t.jsx)(y.Progress,{value:i,className:"**:data-[slot=progress-indicator]:bg-green-600"})]}),(0,t.jsxs)("dl",{className:"grid grid-cols-2 gap-4 pt-1 sm:grid-cols-4",children:[(0,t.jsx)(M,{label:"Documents",value:e.docCount.toLocaleString()}),(0,t.jsx)(M,{label:"Chunks",value:e.totalChunks.toLocaleString()}),(0,t.jsx)(M,{label:"Dimensions",value:e.dimensions?e.dimensions.toLocaleString():"—"}),(0,t.jsx)(M,{label:"Duration",value:e.durationMs?`${(e.durationMs/1e3).toFixed(1)}s`:s?"running…":"—"})]})]})]})}function M({label:e,value:s}){return(0,t.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,t.jsx)("dt",{className:"text-xs text-muted-foreground",children:e}),(0,t.jsx)("dd",{className:"font-mono text-sm tabular-nums",children:s})]})}function P({status:e}){return"completed"===e?(0,t.jsx)(N.Badge,{className:"bg-primary/12 text-primary hover:bg-primary/12",children:"Ready"}):"failed"===e?(0,t.jsx)(N.Badge,{variant:"destructive",children:"Failed"}):z.includes(e)?(0,t.jsxs)("span",{className:"flex items-center gap-1.5 text-xs font-medium text-green-600",children:[(0,t.jsxs)("span",{className:"relative flex size-2",children:[(0,t.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-green-600 opacity-75"}),(0,t.jsx)("span",{className:"relative inline-flex size-2 rounded-full bg-green-600"})]}),"Live"]}):null}let _=e=>fetch(e).then(e=>e.json()),B=["chunking","embedding","upserting"];e.s(["GlobalIndexProgress",0,function(){let{data:e}=(0,s.default)("/api/index",_,{refreshInterval:e=>e?.run&&B.includes(e.run.status)?1e3:0});if(!(e?.run&&B.includes(e.run.status))||!e?.run)return null;let{run:n}=e,r=n.totalChunks>0?Math.round(n.processedChunks/n.totalChunks*100):5;return(0,t.jsx)("div",{className:"fixed bottom-6 right-6 z-50",children:(0,t.jsx)(E,{trigger:(0,t.jsxs)("button",{className:"flex items-center gap-3 rounded-full border bg-background px-4 py-2 text-sm font-medium transition-all hover:bg-muted/50 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",children:[(0,t.jsx)(a.Loader2,{className:"size-4 animate-spin text-primary"}),(0,t.jsxs)("div",{className:"flex flex-col items-start gap-0.5",children:[(0,t.jsx)("span",{className:"text-xs leading-none text-muted-foreground",children:"Storing..."}),(0,t.jsxs)("span",{className:"leading-none",children:[r,"%"]})]})]})})})}],953159)},232295,e=>{"use strict";var t=e.i(199910),s=e.i(523829),a=e.i(178328),n=e.i(960198),r=e.i(133058),i=e.i(736484),l=e.i(417368),o=e.i(466691);let d="larkup-update-dismissed",c={docker:"docker compose pull && docker compose up -d",npm:"larkup update"};e.s(["UpdateBanner",0,function(){let[u,m]=(0,a.useState)(null),[x,h]=(0,a.useState)(!1),[p,f]=(0,a.useState)(!1),[g,b]=(0,a.useState)(!1),j="0.1.30",v="__TAURI__"in window?"desktop":"true"===t.default.env.NEXT_PUBLIC_DOCKER_ENV||"true"===t.default.env.NEXT_PUBLIC_RUNNING_IN_DOCKER?"docker":"npm";(0,a.useEffect)(()=>{if(function(){try{let e=localStorage.getItem(d);if(!e)return!1;let{timestamp:t}=JSON.parse(e);return Date.now()-t<864e5}catch{return!1}}())return;let e=new AbortController;return fetch("https://larkup.de/api/version",{signal:e.signal,cache:"no-store"}).then(e=>e.json()).then(e=>{e.version&&function(e,t){let s=e.replace(/^v/,"").split(".").map(Number),a=t.replace(/^v/,"").split(".").map(Number);for(let e=0;e<3;e++){let t=s[e]||0,n=a[e]||0;if(t>n)return 1;if(t<n)return -1}return 0}(e.version,j)>0&&(m(e.version),h(!0))}).catch(()=>{}),()=>e.abort()},[j]);let y=async()=>{if("desktop"===v){f(!0);try{let{check:t}=await e.A(963347),{relaunch:s}=await e.A(995308),a=await t();a?(await a.downloadAndInstall(),await s()):f(!1)}catch(e){console.error("Auto-update failed:",e),f(!1),window.open("https://larkup.de/download","_blank")}}else try{await navigator.clipboard.writeText(c[v]),b(!0),window.setTimeout(()=>b(!1),2e3)}catch(e){console.error("Could not copy update command:",e)}};return x&&u?(0,s.jsx)("div",{role:"status","aria-live":"polite",className:"relative z-50 border-b border-border bg-background px-3 py-2 text-foreground sm:px-4",children:(0,s.jsxs)("div",{className:"mx-auto flex min-h-7 max-w-screen-2xl items-center gap-2.5",children:[(0,s.jsx)("span",{className:"flex size-6 shrink-0 items-center justify-center rounded-full bg-foreground text-background",children:(0,s.jsx)(n.ArrowUp,{className:"size-3.5","aria-hidden":"true"})}),(0,s.jsxs)("p",{className:"min-w-0 text-xs sm:text-sm",children:[(0,s.jsxs)("span",{className:"font-medium",children:["Larkup v",u," is available."]})," ",(0,s.jsxs)("span",{className:"hidden text-muted-foreground sm:inline",children:["You're using v",j,"."]})]}),"desktop"!==v&&(0,s.jsx)("code",{className:"ml-auto hidden max-w-[38rem] truncate rounded-[5px] border border-border bg-muted/40 px-2 py-1 font-mono text-[11px] text-muted-foreground lg:block",children:c[v]}),(0,s.jsx)(o.Button,{type:"button",variant:"desktop"===v?"default":"outline",size:"xs",onClick:y,disabled:p,"aria-label":"desktop"===v?"Update Larkup now":"Copy update command",className:"desktop"===v?"ml-auto":"ml-auto lg:ml-0",children:"desktop"===v?p?"Updating...":"Update now":g?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r.Check,{"aria-hidden":"true"}),"Copied"]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.Copy,{"aria-hidden":"true"}),"Copy command"]})}),(0,s.jsx)(o.Button,{type:"button",variant:"ghost",size:"icon-xs",onClick:()=>{try{localStorage.setItem(d,JSON.stringify({timestamp:Date.now()}))}catch{}h(!1)},"aria-label":"Dismiss update notification",title:"Remind me tomorrow",children:(0,s.jsx)(l.X,{"aria-hidden":"true"})})]})}):null}])}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,301470,e=>{"use strict";let t=(0,e.i(874822).default)("message-circle",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]);e.s(["MessageCircle",0,t],301470)},440087,e=>{"use strict";var t,n,o=e.i(523829);e.s([],7045),e.i(7045),e.i(199910);var r=e.i(178328),a=e.i(200622);let i=r.createContext(void 0);function s(e){let t=r.useContext(i);if(void 0===t&&!e)throw Error((0,a.default)(33));return t}let l=r.createContext(void 0);function d(e){let t=r.useContext(l);if(void 0===t&&!e)throw Error((0,a.default)(36));return t}var u=e.i(782486),c=e.i(907531);let p=r.forwardRef(function(e,t){let{render:n,className:o,style:r,...a}=e,{store:i}=d(),{arrowRef:l,side:p,align:g,arrowUncentered:f,arrowStyles:m}=s(),v=i.useState("open");return(0,u.useRenderElement)("div",e,{ref:[l,t],stateAttributesMapping:c.popupStateMapping,state:{open:v,side:p,align:g,uncentered:f},props:{style:m,"aria-hidden":!0,...a}})});var g=e.i(196630);let f=r.createContext(void 0);function m(e=!0){let t=r.useContext(f);if(void 0===t&&!e)throw Error((0,a.default)(25));return t}var v=e.i(399417);let b={...c.popupStateMapping,...g.transitionStatusMapping},h=r.forwardRef(function(e,t){let{render:n,className:o,style:r,...a}=e,{store:i}=d(),s=i.useState("open"),l=i.useState("mounted"),c=i.useState("transitionStatus"),p=i.useState("lastOpenChangeReason"),g=m();return(0,u.useRenderElement)("div",e,{ref:g?.backdropRef?[t,g.backdropRef]:t,state:{open:s,transitionStatus:c},stateAttributesMapping:b,props:[{role:"presentation",hidden:!l,style:{pointerEvents:p===v.REASONS.triggerHover?"none":void 0,userSelect:"none",WebkitUserSelect:"none"}},a]})});var x=e.i(410596);let S=r.createContext(void 0);var y=e.i(47334),R=e.i(11902),E=e.i(300441),C=e.i(67019);function I(e){let{closeOnClick:t,highlighted:n,id:o,nodeId:a,store:i,typingRef:s,itemRef:l,itemMetadata:d}=e,{events:u}=i.useState("floatingTreeRoot"),c=i.useState("open"),p=m(!0),g=void 0!==p;return r.useMemo(()=>({id:o,role:"menuitem",tabIndex:c&&n?0:-1,onKeyDown(e){" "===e.key&&s?.current&&e.preventDefault()},onMouseMove(e){a&&u.emit("itemhover",{nodeId:a,target:e.currentTarget})},onClick(e){t&&u.emit("close",{domEvent:e,reason:v.REASONS.itemPress})},onMouseUp(e){if(p){let t=p.initialCursorPointRef.current;if(p.initialCursorPointRef.current=null,g&&t&&1>=Math.abs(e.clientX-t.x)&&1>=Math.abs(e.clientY-t.y)||g&&!C.platform.os.mac&&2===e.button)return}l.current&&i.context.allowMouseUpTriggerRef.current&&(!g||2===e.button)&&(!d||"regular-item"===d.type)&&l.current.click()}}),[t,n,o,u,a,c,i,s,l,p,g,d])}let O={type:"regular-item"};function k(e){let{closeOnClick:t,disabled:n=!1,highlighted:o,id:a,store:i,typingRef:s=i.context.typingRef,nativeButton:l,itemMetadata:d,nodeId:u}=e,c=i.useState("disabled"),p=r.useRef(null),{getButtonProps:g,buttonRef:f}=(0,R.useButton)({disabled:n||c,focusableWhenDisabled:!0,native:l,composite:!0}),m=I({closeOnClick:t,highlighted:o,id:a,nodeId:u,store:i,typingRef:s,itemRef:p,itemMetadata:d}),v=r.useCallback(e=>(0,E.mergeProps)(m,{onMouseEnter(){"submenu-trigger"===d.type&&d.setActive()}},e,g),[m,g,d]),b=(0,y.useMergedRefs)(p,f);return r.useMemo(()=>({getItemProps:v,itemRef:b}),[v,b])}var T=e.i(544834),M=e.i(168198);let w=((t={}).checked="data-checked",t.unchecked="data-unchecked",t.disabled="data-disabled",t.highlighted="data-highlighted",t),P={checked:e=>e?{[w.checked]:""}:{[w.unchecked]:""},...g.transitionStatusMapping};var N=e.i(42237);let A=r.forwardRef(function(e,t){let{render:n,className:a,id:i,label:l,nativeButton:c=!1,disabled:p=!1,closeOnClick:g=!1,checked:f,defaultChecked:m,onCheckedChange:b,style:h,...y}=e,R=(0,T.useCompositeListItem)({label:l}),E=s(!0),C=(0,M.useBaseUiId)(i),{store:I}=d(),w=I.useState("isActive",R.index),A=I.useState("itemProps"),[j,D]=(0,x.useControlled)({controlled:f,default:m??!1,name:"MenuCheckboxItem",state:"checked"}),{getItemProps:B,itemRef:F}=k({closeOnClick:g,disabled:p,highlighted:w,id:C,store:I,nativeButton:c,nodeId:E?.context.nodeId,itemMetadata:O}),L=r.useMemo(()=>({disabled:p,highlighted:w,checked:j}),[p,w,j]),U=(0,u.useRenderElement)("div",e,{state:L,stateAttributesMapping:P,props:[A,{role:"menuitemcheckbox","aria-checked":j,onClick:function(e){let t=(0,N.createChangeEventDetails)(v.REASONS.itemPress,e.nativeEvent,void 0,{preventUnmountOnClose(){}});b?.(!j,t),t.isCanceled||D(e=>!e)}},y,B],ref:[F,t,R.ref]});return(0,o.jsx)(S.Provider,{value:L,children:U})});var j=e.i(484028),D=e.i(274172);let B=r.forwardRef(function(e,t){let{render:n,className:o,style:i,keepMounted:s=!1,...l}=e,d=function(){let e=r.useContext(S);if(void 0===e)throw Error((0,a.default)(30));return e}(),c=r.useRef(null),{transitionStatus:p,setMounted:g}=(0,j.useTransitionStatus)(d.checked);(0,D.useOpenChangeComplete)({open:d.checked,ref:c,onComplete(){d.checked||g(!1)}});let f={checked:d.checked,disabled:d.disabled,highlighted:d.highlighted,transitionStatus:p};return(0,u.useRenderElement)("span",e,{state:f,ref:[t,c],stateAttributesMapping:P,props:{"aria-hidden":!0,...l},enabled:s||d.checked})}),F=r.createContext(void 0),L=r.forwardRef(function(e,t){let{render:n,className:a,style:i,...s}=e,[l,d]=r.useState(void 0),c=(0,u.useRenderElement)("div",e,{ref:t,props:{role:"group","aria-labelledby":l,...s}});return(0,o.jsx)(F.Provider,{value:d,children:c})});var U=e.i(809937);let H=r.forwardRef(function(e,t){let{render:n,className:o,style:i,id:s,...l}=e,d=(0,M.useBaseUiId)(s),c=function(){let e=r.useContext(F);if(void 0===e)throw Error((0,a.default)(31));return e}();return(0,U.useIsoLayoutEffect)(()=>(c(d),()=>{c(void 0)}),[c,d]),(0,u.useRenderElement)("div",e,{ref:t,props:{id:d,role:"presentation",...l}})}),_=r.forwardRef(function(e,t){let{render:n,className:o,id:r,label:a,nativeButton:i=!1,disabled:l=!1,closeOnClick:c=!0,style:p,...g}=e,f=(0,T.useCompositeListItem)({label:a}),m=s(!0),v=(0,M.useBaseUiId)(r),{store:b}=d(),h=b.useState("isActive",f.index),x=b.useState("itemProps"),{getItemProps:S,itemRef:y}=k({closeOnClick:c,disabled:l,highlighted:h,id:v,store:b,nativeButton:i,nodeId:m?.context.nodeId,itemMetadata:O});return(0,u.useRenderElement)("div",e,{state:{disabled:l,highlighted:h},props:[x,g,S],ref:[y,t,f.ref]})}),G=r.forwardRef(function(e,t){let{render:n,className:o,id:a,label:i,closeOnClick:l=!1,style:c,...p}=e,g=r.useRef(null),f=(0,T.useCompositeListItem)({label:i}),m=s(!0),v=m?.context.nodeId,b=(0,M.useBaseUiId)(a),{store:h}=d(),x=h.useState("isActive",f.index),S=h.useState("itemProps"),y=h.context.typingRef,{getButtonProps:C,buttonRef:O}=(0,R.useButton)({native:!1,composite:!0}),k=I({closeOnClick:l,highlighted:x,id:b,nodeId:v,store:h,typingRef:y,itemRef:g});return(0,u.useRenderElement)("a",e,{state:{highlighted:x},props:[S,p,function(e){return(0,E.mergeProps)(k,e,C)}],ref:[g,O,t,f.ref]})});var z=e.i(310255),V=e.i(356312),Y=e.i(23701),K=e.i(196730),J=e.i(32677);let W={...c.popupStateMapping,...g.transitionStatusMapping},$=r.forwardRef(function(e,t){let{render:n,className:a,style:i,finalFocus:l,...c}=e,{store:p}=d(),{side:g,align:f}=s(),m=null!=(0,Y.useToolbarRootContext)(!0),b=p.useState("open"),h=p.useState("transitionStatus"),x=p.useState("popupProps"),S=p.useState("mounted"),y=p.useState("instantType"),R=p.useState("activeTriggerElement"),E=p.useState("parent"),C=p.useState("lastOpenChangeReason"),I=p.useState("rootId"),O=p.useState("floatingRootContext"),k=p.useState("floatingTreeRoot"),T=p.useState("closeDelay"),M=p.useState("activeTriggerElement"),w=p.useState("hoverEnabled"),P=p.useState("disabled"),A=p.useState("openMethod"),j="context-menu"===E.type;(0,D.useOpenChangeComplete)({open:b,ref:p.context.popupRef,onComplete(){b&&p.context.onOpenChangeComplete?.(!0)}}),r.useEffect(()=>{function e(e){p.setOpen(!1,(0,N.createChangeEventDetails)(e.reason,e.domEvent))}return k.events.on("close",e),()=>{k.events.off("close",e)}},[k.events,p]),(0,V.useHoverFloatingInteraction)(O,{enabled:w&&!P&&!j&&"menubar"!==E.type,closeDelay:T});let B=r.useCallback(e=>{p.set("popupElement",e)},[p]),F={transitionStatus:h,side:g,align:f,open:b,nested:"menu"===E.type,instant:y},L=(0,u.useRenderElement)("div",e,{state:F,ref:[t,p.context.popupRef,B],stateAttributesMapping:W,props:[x,{onKeyDown(e){m&&K.COMPOSITE_KEYS.has(e.key)&&e.stopPropagation()}},(0,J.getDisabledMountTransitionStyles)(h),c,{"data-rootownerid":I}]}),U=void 0===E.type||j;return(R||"menubar"===E.type&&C!==v.REASONS.outsidePress)&&(U=!0),(0,o.jsx)(z.FloatingFocusManager,{context:O,openInteractionType:A,modal:j,disabled:!S,returnFocus:void 0===l?U:l,initialFocus:"menu"!==E.type,restoreFocus:!0,externalTree:"menubar"!==E.type?k:void 0,previousFocusableElement:M,nextFocusableElement:void 0===E.type?p.context.triggerFocusTargetRef:void 0,beforeContentFocusGuardRef:void 0===E.type?p.context.beforeContentFocusGuardRef:void 0,children:L})});var q=e.i(672487);let X=r.createContext(void 0),Z=r.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e,{store:a}=d();return a.useState("mounted")||n?(0,o.jsx)(X.Provider,{value:n,children:(0,o.jsx)(q.FloatingPortal,{ref:t,...r})}):null});var Q=e.i(816045),ee=e.i(222769),et=e.i(548740),en=e.i(45527),eo=e.i(751252),er=e.i(170808),ea=e.i(166506),ei=e.i(681371),es=e.i(889326),el=e.i(397252),ed=e.i(602852);let eu=r.forwardRef(function(e,t){let{anchor:n,positionMethod:s="absolute",className:l,render:u,side:c,align:p,sideOffset:g=0,alignOffset:f=0,collisionBoundary:b="clipping-ancestors",collisionPadding:h=5,arrowPadding:x=5,sticky:S=!1,disableAnchorTracking:y=!1,collisionAvoidance:R=ea.DROPDOWN_COLLISION_AVOIDANCE,style:E,...C}=e,{store:I}=d(),O=function(){let e=r.useContext(X);if(void 0===e)throw Error((0,a.default)(32));return e}(),k=m(!0),T=I.useState("parent"),M=I.useState("floatingRootContext"),w=I.useState("floatingTreeRoot"),P=I.useState("mounted"),A=I.useState("open"),j=I.useState("modal"),D=I.useState("openMethod"),B=I.useState("activeTriggerElement"),F=I.useState("transitionStatus"),L=I.useState("positionerElement"),H=I.useState("instantType"),_=I.useState("hasViewport"),G=I.useState("lastOpenChangeReason"),z=I.useState("floatingNodeId"),V=I.useState("floatingParentNodeId"),Y=M.useState("domReferenceElement"),K=r.useRef(null),J=(0,es.useAnimationsFinished)(L,!1,!1),W=n,$=g,q=f,Z=p,eu=R;"context-menu"===T.type&&(W=n??T.context?.anchor,Z=Z??"start",c||"center"===Z||(q=e.alignOffset??2,$=e.sideOffset??-5));let ec=c,ep=Z;"menu"===T.type?(ec=ec??"inline-end",ep=ep??"start",eu=e.collisionAvoidance??ea.POPUP_COLLISION_AVOIDANCE):"menubar"===T.type&&(ec=ec??("vertical"===T.context.orientation?"inline-end":"bottom"),ep=ep??"start");let eg="context-menu"===T.type,ef=(0,en.useAnchorPositioning)({anchor:W,floatingRootContext:M,positionMethod:k?"fixed":s,mounted:P,side:ec,sideOffset:$,align:ep,alignOffset:q,arrowPadding:eg?0:x,collisionBoundary:b,collisionPadding:h,sticky:S,nodeId:z,keepMounted:O,disableAnchorTracking:y,collisionAvoidance:eu,shiftCrossAxis:eg&&!("side"in eu&&"flip"===eu.side),externalTree:w,adaptiveOrigin:_?ei.adaptiveOrigin:void 0});r.useEffect(()=>{function e(e){e.open&&(e.parentNodeId===z&&I.set("hoverEnabled",!1),e.nodeId!==z&&e.parentNodeId===I.select("floatingParentNodeId")&&I.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.siblingOpen)))}return w.events.on("menuopenchange",e),()=>{w.events.off("menuopenchange",e)}},[I,w.events,z]),r.useEffect(()=>{if(null!=I.select("floatingParentNodeId"))return w.events.on("menuopenchange",e),()=>{w.events.off("menuopenchange",e)};function e(e){if(e.open||e.nodeId!==I.select("floatingParentNodeId"))return;let t=e.reason??v.REASONS.siblingOpen;I.setOpen(!1,(0,N.createChangeEventDetails)(t))}},[w.events,I]);let em=(0,ee.useTimeout)();r.useEffect(()=>{A||em.clear()},[A,em]),r.useEffect(()=>{function e(e){if(A&&e.nodeId===I.select("floatingParentNodeId"))if(e.target&&B&&B!==e.target){let e=I.select("closeDelay");e>0?em.isStarted()||em.start(e,()=>{I.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.siblingOpen))}):I.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.siblingOpen))}else em.clear()}return w.events.on("itemhover",e),()=>{w.events.off("itemhover",e)}},[w.events,A,B,I,em]),r.useEffect(()=>{let e={open:A,nodeId:z,parentNodeId:V,reason:I.select("lastOpenChangeReason")};w.events.emit("menuopenchange",e)},[w.events,A,I,z,V]),(0,U.useIsoLayoutEffect)(()=>{let e=K.current;if(Y&&(K.current=Y),e&&Y&&Y!==e){I.set("instantType",void 0);let e=new AbortController;return J(()=>{I.set("instantType","trigger-change")},e.signal),()=>{e.abort()}}},[Y,J,I]);let ev={open:A,side:ef.side,align:ef.align,anchorHidden:ef.anchorHidden,nested:"menu"===T.type,instant:H},eb="menubar"===T.type&&T.context.modal,eh=j&&G!==v.REASONS.triggerHover;(0,ed.useAnchoredPopupScrollLock)(A&&(eb||eh),"touch"===D,L,B);let ex=(0,el.usePositioner)(e,ev,{styles:ef.positionerStyles,transitionStatus:F,props:C,refs:[t,I.useStateSetter("positionerElement")],hidden:!P,inert:!A}),eS=P&&"menu"!==T.type&&("menubar"!==T.type&&j&&G!==v.REASONS.triggerHover||"menubar"===T.type&&T.context.modal),ey=null;return"menubar"===T.type?ey=T.context.contentElement:void 0===T.type&&(ey=B),(0,o.jsxs)(i.Provider,{value:ef,children:[eS&&(0,o.jsx)(er.InternalBackdrop,{ref:"context-menu"===T.type||"nested-context-menu"===T.type?T.context.internalBackdropRef:null,inert:(0,Q.inertValue)(!A),cutout:ey}),(0,o.jsx)(et.FloatingNode,{id:z,children:(0,o.jsx)(eo.CompositeList,{elementsRef:I.context.itemDomElements,labelsRef:I.context.itemLabels,children:ex})})]})});var ec=e.i(114396);let ep=r.createContext(void 0),eg=r.memo(r.forwardRef(function(e,t){let{render:n,className:a,value:i,defaultValue:s,onValueChange:l,disabled:d=!1,style:c,"aria-labelledby":p,...g}=e,[f,m]=r.useState(void 0),[v,b]=(0,x.useControlled)({controlled:i,default:s,name:"MenuRadioGroup"}),h=(0,ec.useStableCallback)((e,t)=>{l?.(e,t),t.isCanceled||b(e)}),S=(0,u.useRenderElement)("div",e,{state:{disabled:d},ref:t,props:{role:"group","aria-labelledby":p??f,"aria-disabled":d||void 0,...g}}),y=r.useMemo(()=>({value:v,setValue:h,disabled:d}),[v,h,d]);return(0,o.jsx)(F.Provider,{value:m,children:(0,o.jsx)(ep.Provider,{value:y,children:S})})})),ef=r.createContext(void 0),em=r.forwardRef(function(e,t){let{render:n,className:i,id:l,label:c,nativeButton:p=!1,disabled:g=!1,closeOnClick:f=!1,value:m,style:b,...h}=e,x=(0,T.useCompositeListItem)({label:c}),S=s(!0),y=(0,M.useBaseUiId)(l),{store:R}=d(),E=R.useState("isActive",x.index),C=R.useState("itemProps"),{value:I,setValue:w,disabled:A}=function(){let e=r.useContext(ep);if(void 0===e)throw Error((0,a.default)(34));return e}(),j=A||g,D=I===m,{getItemProps:B,itemRef:F}=k({closeOnClick:f,disabled:j,highlighted:E,id:y,store:R,nativeButton:p,nodeId:S?.context.nodeId,itemMetadata:O}),L=r.useMemo(()=>({disabled:j,highlighted:E,checked:D}),[j,E,D]),U=(0,u.useRenderElement)("div",e,{state:L,stateAttributesMapping:P,props:[C,{role:"menuitemradio","aria-checked":D,onClick:function(e){w(m,(0,N.createChangeEventDetails)(v.REASONS.itemPress,e.nativeEvent,void 0,{preventUnmountOnClose(){}}))}},h,B],ref:[F,t,x.ref]});return(0,o.jsx)(ef.Provider,{value:L,children:U})}),ev=r.forwardRef(function(e,t){let{render:n,className:o,style:i,keepMounted:s=!1,...l}=e,d=function(){let e=r.useContext(ef);if(void 0===e)throw Error((0,a.default)(35));return e}(),c=r.useRef(null),{transitionStatus:p,setMounted:g}=(0,j.useTransitionStatus)(d.checked);(0,D.useOpenChangeComplete)({open:d.checked,ref:c,onComplete(){d.checked||g(!1)}});let f={checked:d.checked,disabled:d.disabled,highlighted:d.highlighted,transitionStatus:p};return(0,u.useRenderElement)("span",e,{state:f,stateAttributesMapping:P,ref:[t,c],props:{"aria-hidden":!0,...l},enabled:s||d.checked})});var eb=e.i(654975),eh=e.i(832817),ex=e.i(188479),eS=e.i(984676),ey=e.i(331347),eR=e.i(994601),eE=e.i(691981);let eC=r.createContext(null);function eI(e){let t=r.useContext(eC);if(null===t&&!e)throw Error((0,a.default)(5));return t}var eO=e.i(601132),ek=e.i(233250),eT=e.i(675007),eM=e.i(649111),ew=e.i(853607),eP=e.i(7022),eN=e.i(991327),eA=e.i(419093);let ej={...eN.popupStoreSelectors,disabled:(0,eT.createSelector)(e=>"menubar"===e.parent.type&&e.parent.context.disabled||e.disabled),modal:(0,eT.createSelector)(e=>(void 0===e.parent.type||"context-menu"===e.parent.type)&&(e.modal??!0)),openMethod:(0,eT.createSelector)(e=>e.openMethod),allowMouseEnter:(0,eT.createSelector)(e=>e.allowMouseEnter),highlightItemOnHover:(0,eT.createSelector)(e=>e.highlightItemOnHover),stickIfOpen:(0,eT.createSelector)(e=>e.stickIfOpen),parent:(0,eT.createSelector)(e=>e.parent),rootId:(0,eT.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("rootId"):void 0!==e.parent.type?e.parent.context.rootId:e.rootId),activeIndex:(0,eT.createSelector)(e=>e.activeIndex),isActive:(0,eT.createSelector)((e,t)=>e.activeIndex===t),hoverEnabled:(0,eT.createSelector)(e=>e.hoverEnabled),instantType:(0,eT.createSelector)(e=>e.instantType),lastOpenChangeReason:(0,eT.createSelector)(e=>e.openChangeReason),floatingTreeRoot:(0,eT.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("floatingTreeRoot"):e.floatingTreeRoot),floatingNodeId:(0,eT.createSelector)(e=>e.floatingNodeId),floatingParentNodeId:(0,eT.createSelector)(e=>e.floatingParentNodeId),itemProps:(0,eT.createSelector)(e=>e.itemProps),closeDelay:(0,eT.createSelector)(e=>e.closeDelay),hasViewport:(0,eT.createSelector)(e=>e.hasViewport),keyboardEventRelay:(0,eT.createSelector)(e=>e.keyboardEventRelay?e.keyboardEventRelay:"menu"===e.parent.type?e.parent.store.select("keyboardEventRelay"):void 0)};class eD extends eM.ReactStore{constructor(e){super({...{...(0,eN.createInitialPopupStoreState)(),disabled:!1,modal:!0,openMethod:null,allowMouseEnter:!1,highlightItemOnHover:!0,stickIfOpen:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new eP.FloatingTreeStore,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:eh.EMPTY_OBJECT,keyboardEventRelay:void 0,closeDelay:0,hasViewport:!1},...e},{positionerRef:r.createRef(),popupRef:r.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:r.createRef(),beforeContentFocusGuardRef:r.createRef(),onOpenChangeComplete:void 0,triggerElements:new eA.PopupTriggerMap},ej),this.unsubscribeParentListener=this.observe("parent",e=>{if(this.unsubscribeParentListener?.(),"menu"===e.type){let t=e.store.select("rootId"),n=e.store.select("floatingTreeRoot"),o=e.store.select("keyboardEventRelay");this.unsubscribeParentListener=e.store.subscribe(()=>{let r=e.store.select("rootId"),a=e.store.select("floatingTreeRoot"),i=e.store.select("keyboardEventRelay");(t!==r||n!==a||o!==i)&&(t=r,n=a,o=i,this.notifyAll())}),this.context.allowMouseUpTriggerRef=e.store.context.allowMouseUpTriggerRef;return}void 0!==e.type&&(this.context.allowMouseUpTriggerRef=e.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(e,t){this.state.floatingRootContext.context.events.emit("setOpen",{open:e,eventDetails:t})}static useStore(e,t){let n=(0,ew.useRefWithInit)(()=>new eD(t)).current;return e??n}unsubscribeParentListener=null}var eB=e.i(399636);let eF=r.createContext(void 0);function eL(){return r.useContext(eF)}let eU=(0,ex.fastComponent)(function(e){let t,{children:n,open:a,onOpenChange:i,onOpenChangeComplete:s,defaultOpen:u=!1,disabled:c=!1,modal:p,loopFocus:g=!0,orientation:f="vertical",actionsRef:b,closeParentOnEsc:h=!1,handle:x,triggerId:S,defaultTriggerId:y=null,highlightItemOnHover:R=!0}=e,C=m(!0),I=d(!0),O=eI(!0),k=eL(),T=r.useMemo(()=>k&&I?{type:"menu",store:I.store}:O?{type:"menubar",context:O}:C&&!I?{type:"context-menu",context:C}:{type:void 0},[C,I,O,k]),M=eD.useStore(x?.store,{open:u,openProp:a,activeTriggerId:y,triggerIdProp:S,parent:T});(0,eB.useInitialOpenSync)(M,a,u,y),M.useControlledProp("openProp",a),M.useControlledProp("triggerIdProp",S),M.useContextCallback("onOpenChangeComplete",s);let w=(0,eb.useId)(),P=(0,eb.useId)(),A=M.useState("floatingTreeRoot"),j=(0,et.useFloatingNodeId)(A),D=(0,et.useFloatingParentNodeId)(),B=M.useState("open"),F=M.useState("activeTriggerElement"),L=M.useState("positionerElement"),H=M.useState("hoverEnabled"),_=M.useState("disabled"),G=M.useState("lastOpenChangeReason"),z=M.useState("parent"),V=M.useState("activeIndex"),Y=M.useState("payload"),K=M.useState("floatingParentNodeId"),J=r.useRef(null),W=r.useRef("context-menu"!==z.type),$=(0,ee.useTimeout)(),q=r.useRef(!0),X=(0,ee.useTimeout)(),Z=null!=K,{openMethod:Q,triggerProps:en}=(0,ek.useOpenInteractionType)(B);M.useSyncedValues({disabled:c,highlightItemOnHover:R,modal:void 0===z.type?p:void 0,openMethod:Q,rootId:w}),(0,eB.useImplicitActiveTrigger)(M);let{forceUnmount:eo}=(0,eB.useOpenStateTransitions)(B,M,()=>{M.update({allowMouseEnter:!1,stickIfOpen:!0})});(0,U.useIsoLayoutEffect)(()=>{C&&!I?M.update({parent:{type:"context-menu",context:C},floatingNodeId:j,floatingParentNodeId:D}):I&&M.update({floatingNodeId:j,floatingParentNodeId:D})},[C,I,j,D,M]),r.useEffect(()=>{if(B||(J.current=null),"context-menu"===z.type){if(!B){$.clear(),W.current=!1;return}$.start(500,()=>{W.current=!0})}},[$,B,z.type]),(0,U.useIsoLayoutEffect)(()=>{B||H||M.set("hoverEnabled",!0)},[B,H,M]);let er=(0,ec.useStableCallback)((e,t)=>{let n=t.reason;if(B===e&&t.trigger===F&&G===n)return;let o=(0,eB.attachPreventUnmountOnClose)(t);if(e||null!=t.trigger||(t.trigger=F??void 0),i?.(e,t),t.isCanceled)return;M.state.floatingRootContext.dispatchOpenChange(e,t);let r=t.event;if(!1===e&&r?.type==="click"&&"touch"===r.pointerType&&!q.current)return;e&&n===v.REASONS.triggerFocus?(q.current=!1,X.start(300,()=>{q.current=!0})):(q.current=!0,X.clear());let a=(n===v.REASONS.triggerPress||n===v.REASONS.itemPress)&&0===r.detail&&r?.isTrusted,s=!e&&(n===v.REASONS.escapeKey||null==n),l={open:e,openChangeReason:n};J.current=t.event??null,(0,eB.setPopupOpenState)(l,e,t.trigger,o()),M.update(l),"menubar"===z.type&&(n===v.REASONS.triggerFocus||n===v.REASONS.focusOut||n===v.REASONS.triggerHover||n===v.REASONS.listNavigation||n===v.REASONS.siblingOpen)?M.set("instantType","group"):a||s?M.set("instantType",a?"click":"dismiss"):M.set("instantType",void 0)}),ei=(0,eE.useSyncedFloatingRootContext)({popupStore:M,floatingId:P,nested:null!=D,onOpenChange:er}),es=ei.context.events;r.useEffect(()=>{let e=({open:e,eventDetails:t})=>er(e,t);return es.on("setOpen",e),()=>{es?.off("setOpen",e)}},[es,er]);let el=r.useCallback(()=>{M.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.imperativeAction))},[M]);r.useImperativeHandle(b,()=>({unmount:eo,close:el}),[eo,el]),"context-menu"===z.type&&(t=z.context),r.useImperativeHandle(t?.positionerRef,()=>L,[L]),r.useImperativeHandle(t?.actionsRef,()=>({setOpen:er}),[er]);let ed=(0,eS.useDismiss)(ei,{enabled:!_,bubbles:{escapeKey:h&&"menu"===z.type},outsidePress:()=>"context-menu"!==z.type||J.current?.type==="contextmenu"||W.current,externalTree:Z?A:void 0}),eu=(0,eO.useDirection)(),ep=r.useCallback(e=>{M.select("activeIndex")!==e&&M.set("activeIndex",e)},[M]),eg=(0,ey.useListNavigation)(ei,{enabled:!_,listRef:M.context.itemDomElements,activeIndex:V,nested:void 0!==z.type,loopFocus:g,orientation:f,parentOrientation:"menubar"===z.type?z.context.orientation:void 0,rtl:"rtl"===eu,disabledIndices:eh.EMPTY_ARRAY,onNavigate:ep,openOnArrowKeyDown:"context-menu"!==z.type,externalTree:Z?A:void 0,focusItemOnHover:R}),ef=r.useCallback(e=>{M.context.typingRef.current=e},[M]),em=(0,eR.useTypeahead)(ei,{enabled:!_,listRef:M.context.itemLabels,elementsRef:M.context.itemDomElements,activeIndex:V,resetMs:ea.TYPEAHEAD_RESET_MS,onMatch:e=>{B&&e!==V&&M.set("activeIndex",e)},onTyping:ef}),ev=r.useMemo(()=>{let e=(0,E.mergeProps)(em.reference,eg.reference,ed.reference,{onMouseMove(){M.set("allowMouseEnter",!0)}},en);return e["aria-haspopup"]="menu",e["aria-expanded"]=B,e},[M,em.reference,eg.reference,ed.reference,en,B]),ex=r.useMemo(()=>{let e=(0,E.mergeProps)(eg.trigger,ed.trigger,en);return e["aria-haspopup"]="menu",e["aria-expanded"]=!1,e},[eg.trigger,ed.trigger,en]),eC=r.useMemo(()=>(0,E.mergeProps)(eB.FOCUSABLE_POPUP_PROPS,{id:P,role:"menu","aria-labelledby":F?.id,onMouseMove(){M.set("allowMouseEnter",!0),"menu"===z.type&&M.set("hoverEnabled",!1)},onClick(){M.select("hoverEnabled")&&M.set("hoverEnabled",!1)},onKeyDown(e){let t=M.select("keyboardEventRelay");t&&!e.isPropagationStopped()&&t(e)}},em.floating,eg.floating,ed.floating),[F,P,z.type,M,em.floating,eg.floating,ed.floating]),eT=eg.item??eh.EMPTY_OBJECT;(0,eB.usePopupInteractionProps)(M,{floatingRootContext:ei,activeTriggerProps:ev,inactiveTriggerProps:ex,popupProps:eC,itemProps:eT});let eM=r.useMemo(()=>({store:M,parent:T}),[M,T]),ew=(0,o.jsx)(l.Provider,{value:eM,children:"function"==typeof n?n({payload:Y}):n});return void 0===z.type||"context-menu"===z.type?(0,o.jsx)(et.FloatingTree,{externalTree:A,children:ew}):ew});var eH=e.i(595410),e_=e.i(451423),eG=e.i(438138),ez=e.i(970377),eV=e.i(299406),eY=e.i(617506),eK=e.i(965444),eJ=e.i(571140);function eW(e){let{render:t,className:n,style:o,state:r=eh.EMPTY_OBJECT,props:a=eh.EMPTY_ARRAY,refs:i=eh.EMPTY_ARRAY,metadata:s,stateAttributesMapping:l,tag:d="div",...c}=e,{compositeProps:p,compositeRef:g}=(0,eJ.useCompositeItem)({metadata:s});return(0,u.useRenderElement)(d,e,{state:r,ref:[...i,g],props:[p,...a,c],stateAttributesMapping:l})}var e$=e.i(832419),eq=e.i(92615),eX=e.i(200797),eZ=e.i(364598),eQ=e.i(744267);let e0=(0,ex.fastComponentRef)(function(e,t){let n,i,s,l,{render:p,className:g,style:f,disabled:b=!1,nativeButton:h=!0,id:x,openOnHover:S,delay:y=100,closeDelay:C=0,handle:I,payload:O,...k}=e,T=d(!0),w=I?.store??T?.store;if(!w)throw Error((0,a.default)(85));let P=(0,M.useBaseUiId)(x),A=w.useState("isTriggerActive",P),j=w.useState("floatingRootContext"),D=w.useState("isOpenedByTrigger",P),B=w.useState("triggerPopupId",P),F=r.useRef(null),L=(n=m(!0),i=d(!0),s=eI(!0),r.useMemo(()=>s?{type:"menubar",context:s}:n&&!i?{type:"context-menu",context:n}:{type:void 0},[n,i,s])),H=(0,e$.useCompositeRootContext)(!0),_=(0,et.useFloatingTree)(),G=r.useMemo(()=>_??new eP.FloatingTreeStore,[_]),z=(0,et.useFloatingNodeId)(G),V=(0,et.useFloatingParentNodeId)(),{registerTrigger:Y,isMountedByThisTrigger:K}=(0,eB.useTriggerDataForwarding)(P,F,w,{payload:O,closeDelay:C,parent:L,floatingTreeRoot:G,floatingNodeId:z,floatingParentNodeId:V,keyboardEventRelay:H?.relayKeyboardEvent}),J="menubar"===L.type,W=w.useState("disabled"),$=b||W||J&&L.context.disabled,{getButtonProps:q,buttonRef:X}=(0,R.useButton)({disabled:$,native:h});r.useEffect(()=>{D||void 0!==L.type||(w.context.allowMouseUpTriggerRef.current=!1)},[w,D,L.type]);let Z=r.useRef(null),Q=(0,ee.useTimeout)(),en=(0,ec.useStableCallback)(e=>{if(!Z.current)return;Q.clear(),w.context.allowMouseUpTriggerRef.current=!1;let t=e.target;if((0,eY.contains)(Z.current,t)||(0,eY.contains)(w.select("positionerElement"),t)||t===Z.current||null!=t&&function e(t){return(0,eq.isHTMLElement)(t)&&t.hasAttribute("data-rootownerid")?t.getAttribute("data-rootownerid")??void 0:(0,eq.isLastTraversableNode)(t)?void 0:e((0,eq.getParentNode)(t))}(t)===w.select("rootId"))return;let n=(0,eK.getPseudoElementBounds)(Z.current);e.clientX>=n.left-2&&e.clientX<=n.right+2&&e.clientY>=n.top-2&&e.clientY<=n.bottom+2||G.events.emit("close",{domEvent:e,reason:v.REASONS.cancelOpen})});r.useEffect(()=>{D&&w.select("lastOpenChangeReason")===v.REASONS.triggerHover&&(0,eH.ownerDocument)(Z.current).addEventListener("mouseup",en,{once:!0})},[D,en,w]);let eo=J&&L.context.hasSubmenuOpen,er=S??eo,ei=(0,eV.useHoverReferenceInteraction)(j,{enabled:er&&!$&&"context-menu"!==L.type&&(!J||eo&&!K),handleClose:(0,e_.safePolygon)({blockPointerEvents:!J}),mouseOnly:!0,move:!1,restMs:void 0===L.type?y:void 0,delay:{close:C},triggerElementRef:F,externalTree:G,isActiveTrigger:A,isClosing:()=>"ending"===w.select("transitionStatus")}),es=function(e,t){let n=(0,ee.useTimeout)(),[o,a]=r.useState(!1);return(0,U.useIsoLayoutEffect)(()=>{e&&"trigger-hover"===t?(a(!0),n.start(ea.PATIENT_CLICK_THRESHOLD,()=>{a(!1)})):e||(n.clear(),a(!1))},[e,t,n]),o}(D,w.select("lastOpenChangeReason")),el=(0,eG.useClick)(j,{enabled:!$&&"context-menu"!==L.type,event:D&&J?"click":"mousedown",toggle:!0,ignoreMouse:!1,stickIfOpen:void 0===L.type&&es}),ed=(0,ez.useFocus)(j,{enabled:!$&&eo}),eu=function(e){let{enabled:t=!0,mouseDownAction:n,open:o}=e,a=r.useRef(!1);return r.useMemo(()=>t?{onMouseDown:e=>{("open"===n&&!o||"close"===n&&o)&&(a.current=!0,(0,eH.ownerDocument)(e.currentTarget).addEventListener("click",()=>{a.current=!1},{once:!0}))},onClick:e=>{a.current&&(a.current=!1,e.preventBaseUIHandler())}}:eh.EMPTY_OBJECT,[t,n,o])}({open:D,enabled:J,mouseDownAction:"open"}),ep=r.useMemo(()=>(0,E.mergeProps)(ed.reference,el.reference),[ed.reference,el.reference]),eg=w.useState("triggerProps",K),{preFocusGuardRef:ef,handlePreFocusGuardFocus:em,handleFocusTargetFocus:ev}={preFocusGuardRef:l=r.useRef(null),handlePreFocusGuardFocus:function(e){eX.flushSync(()=>{w.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let t=(0,eZ.getTabbableBeforeElement)(l.current);t?.focus()},handleFocusTargetFocus:function(e){let t=w.select("positionerElement");if(t&&(0,eZ.isOutsideEvent)(e,t))w.context.beforeContentFocusGuardRef.current?.focus();else{eX.flushSync(()=>{w.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let n=(0,eZ.getTabbableAfterElement)(w.context.triggerFocusTargetRef.current||F.current);for(;null!==n&&(0,eY.contains)(t,n);){let e=n;if((n=(0,eZ.getNextTabbable)(n))===e)break}n?.focus()}}},eb={disabled:$,open:D},ex=[Z,t,X,Y,F],eS=[ep,ei??eh.EMPTY_OBJECT,eg,{"aria-haspopup":"menu","aria-controls":B,id:P,onMouseDown:e=>{w.select("open")||(Q.start(200,()=>{w.context.allowMouseUpTriggerRef.current=!0}),(0,eH.ownerDocument)(e.currentTarget).addEventListener("mouseup",en,{once:!0}))}},J?{role:"menuitem"}:{},eu,k,q],ey=(0,u.useRenderElement)("button",e,{enabled:!J,stateAttributesMapping:c.pressableTriggerOpenStateMapping,state:eb,ref:ex,props:eS});return J?(0,o.jsx)(eW,{tag:"button",render:p,className:g,style:f,state:eb,refs:ex,props:eS,stateAttributesMapping:c.pressableTriggerOpenStateMapping}):D?(0,o.jsxs)(r.Fragment,{children:[(0,o.jsx)(eQ.FocusGuard,{ref:ef,onFocus:em},`${P}-pre-focus-guard`),(0,o.jsx)(r.Fragment,{children:ey},P),(0,o.jsx)(eQ.FocusGuard,{ref:w.context.triggerFocusTargetRef,onFocus:ev},`${P}-post-focus-guard`)]}):(0,o.jsx)(r.Fragment,{children:ey},P)});var e1=e.i(500325);let e4=((n={}).popupWidth="--popup-width",n.popupHeight="--popup-height",n),e5={activationDirection:e=>e?{"data-activation-direction":e}:null},e2=r.forwardRef(function(e,t){let{render:n,className:o,style:r,children:a,...i}=e,{store:l}=d(),{side:c}=s(),p=l.useState("instantType"),{children:g,state:f}=(0,e1.usePopupViewport)({store:l,side:c,cssVars:e4,children:a}),m={activationDirection:f.activationDirection,transitioning:f.transitioning,instant:p};return(0,u.useRenderElement)("div",e,{state:m,ref:t,props:[i,{children:g}],stateAttributesMapping:e5})});var e7=e.i(962337);let e9=r.forwardRef(function(e,t){let{render:n,className:o,style:i,label:l,id:p,nativeButton:g=!1,openOnHover:f=!0,delay:m=100,closeDelay:v=0,disabled:b=!1,...h}=e,x=(0,T.useCompositeListItem)({label:l}),S=s(),{store:y}=d(),R=(0,M.useBaseUiId)(p),E=y.useState("open"),C=y.useState("floatingRootContext"),I=y.useState("floatingTreeRoot"),O=y.useState("triggerPopupId",R),w=(0,eB.useTriggerRegistration)(R,y),P=r.useCallback(e=>{let t=w(e);return null!==e&&y.select("open")&&null==y.select("activeTriggerId")&&y.update({activeTriggerId:R,activeTriggerElement:e,closeDelay:v}),t},[w,v,y,R]),N=r.useRef(null),A=r.useCallback(e=>{N.current=e,y.set("activeTriggerElement",e)},[y]),j=eL();if(!j?.parentMenu)throw Error((0,a.default)(37));y.useSyncedValue("closeDelay",v);let D=j.parentMenu,B=y.useState("disabled"),F=D.useState("disabled"),L=b||B||F,U=D.useState("itemProps"),H=D.useState("isActive",x.index),_=r.useMemo(()=>({type:"submenu-trigger",setActive(){D.select("highlightItemOnHover")&&D.set("activeIndex",x.index)}}),[D,x.index]),{getItemProps:G,itemRef:z}=k({closeOnClick:!1,disabled:L,highlighted:H,id:R,store:y,typingRef:D.context.typingRef,nativeButton:g,itemMetadata:_,nodeId:S?.context.nodeId}),V=y.useState("hoverEnabled"),Y=(0,eV.useHoverReferenceInteraction)(C,{enabled:V&&f&&!L,handleClose:(0,e_.safePolygon)({blockPointerEvents:!0}),mouseOnly:!0,move:!0,restMs:m,delay:{open:m,close:v},shouldOpen:m>0?()=>D.select("allowMouseEnter"):void 0,triggerElementRef:N,externalTree:I,isClosing:()=>"ending"===y.select("transitionStatus")}),K=(0,eG.useClick)(C,{enabled:!L,event:"mousedown",toggle:!f,ignoreMouse:f,stickIfOpen:!1}).reference??eh.EMPTY_OBJECT,J=y.useState("triggerProps",!0);return delete J.id,(0,u.useRenderElement)("div",e,{state:{disabled:L,highlighted:H,open:E},stateAttributesMapping:c.triggerOpenStateMapping,props:[K,Y,J,U,{"aria-controls":O,tabIndex:E||H?0:-1,onBlur(){H&&D.set("activeIndex",null)}},h,G],ref:[t,x.ref,z,P,A]})});class e6{constructor(){this.store=new eD}open(e){let t=e?this.store.context.triggerElements.getById(e):void 0;if(e&&!t)throw Error((0,a.default)(83,e));this.store.setOpen(!0,(0,N.createChangeEventDetails)("imperative-action",void 0,t))}close(){this.store.setOpen(!1,(0,N.createChangeEventDetails)("imperative-action",void 0,void 0))}get isOpen(){return this.store.select("open")}}e.s(["Arrow",0,p,"Backdrop",0,h,"CheckboxItem",0,A,"CheckboxItemIndicator",0,B,"Group",0,L,"GroupLabel",0,H,"Handle",0,e6,"Item",0,_,"LinkItem",0,G,"Popup",0,$,"Portal",0,Z,"Positioner",0,eu,"RadioGroup",0,eg,"RadioItem",0,em,"RadioItemIndicator",0,ev,"Root",0,eU,"Separator",()=>e7.Separator,"SubmenuRoot",0,function(e){let t=d().store,n=r.useMemo(()=>({parentMenu:t}),[t]);return(0,o.jsx)(eF.Provider,{value:n,children:(0,o.jsx)(eU,{...e})})},"SubmenuTrigger",0,e9,"Trigger",0,e0,"Viewport",0,e2,"createHandle",0,function(){return new e6}],69879);var e3=e.i(69879),e3=e3,e8=e.i(152236),te=e.i(837733),te=te;function tt({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:r=4,className:a,...i}){return(0,o.jsx)(e3.Portal,{children:(0,o.jsx)(e3.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:r,children:(0,o.jsx)(e3.Popup,{"data-slot":"dropdown-menu-content",className:(0,e8.cn)("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",a),...i})})})}e.i(347567),e.s(["DropdownMenu",0,function({...e}){return(0,o.jsx)(e3.Root,{"data-slot":"dropdown-menu",...e})},"DropdownMenuContent",0,tt,"DropdownMenuGroup",0,function({...e}){return(0,o.jsx)(e3.Group,{"data-slot":"dropdown-menu-group",...e})},"DropdownMenuItem",0,function({className:e,inset:t,variant:n="default",...r}){return(0,o.jsx)(e3.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:(0,e8.cn)("group/dropdown-menu-item relative flex cursor-pointer items-center gap-1.5 rounded-md px-1.5 py-1.5 text-sm outline-hidden select-none 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"," hover:bg-background ",e),...r})},"DropdownMenuLabel",0,function({className:e,inset:t,...n}){return(0,o.jsx)(e3.GroupLabel,{"data-slot":"dropdown-menu-label","data-inset":t,className:(0,e8.cn)("px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",e),...n})},"DropdownMenuSeparator",0,function({className:e,...t}){return(0,o.jsx)(e3.Separator,{"data-slot":"dropdown-menu-separator",className:(0,e8.cn)("-mx-1 my-1 h-px bg-border",e),...t})},"DropdownMenuSub",0,function({...e}){return(0,o.jsx)(e3.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})},"DropdownMenuSubContent",0,function({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:r=0,className:a,...i}){return(0,o.jsx)(tt,{"data-slot":"dropdown-menu-sub-content",className:(0,e8.cn)("w-auto min-w-[196px]! rounded-md bg-popover p-1 text-popover-foreground 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-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","",a),align:e,alignOffset:t,side:n,sideOffset:r,...i})},"DropdownMenuSubTrigger",0,function({className:e,inset:t,children:n,...r}){return(0,o.jsxs)(e3.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:(0,e8.cn)("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","h-8",e),...r,children:[n,(0,o.jsx)(te.default,{className:"ml-auto"})]})},"DropdownMenuTrigger",0,function({...e}){return(0,o.jsx)(e3.Trigger,{"data-slot":"dropdown-menu-trigger",...e,className:(0,e8.cn)("cursor-pointer",e.className)})}],440087)},856474,e=>{"use strict";var t=e.i(523829),n=e.i(152236);let o={vercel_ai_gateway:{label:"Vercel AI Gateway",iconSrc:"/icons/vercel.svg",pillBg:"bg-white dark:bg-white text-white dark:text-black"},openai:{label:"OpenAI",iconSrc:"/icons/openai.svg",pillBg:"bg-neutral-100 dark:bg-neutral-800"},anthropic:{label:"Anthropic",iconSrc:"https://models.dev/logos/anthropic.svg",pillBg:"bg-amber-50 dark:bg-amber-950/40"},google:{label:"Google",iconSrc:"/icons/gemini.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},meta:{label:"Meta",iconSrc:"https://models.dev/logos/meta.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},mistral:{label:"Mistral",iconSrc:"/icons/mistral.svg",pillBg:"bg-amber-50 dark:bg-amber-950/40"},cohere:{label:"Cohere",iconSrc:"/icons/cohere.svg",pillBg:"bg-orange-50 dark:bg-orange-950/40"},deepseek:{label:"DeepSeek",iconSrc:"https://models.dev/logos/deepseek.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},amazon:{label:"Amazon",iconSrc:"/icons/aws.svg",pillBg:"bg-orange-50 dark:bg-orange-950/40"},xai:{label:"xAI",iconSrc:"https://models.dev/logos/xai.svg",pillBg:"bg-neutral-100 dark:bg-neutral-800"},perplexity:{label:"Perplexity",iconSrc:"https://models.dev/logos/perplexity.svg",pillBg:"bg-teal-50 dark:bg-teal-950/40"},alibaba:{label:"Alibaba",iconSrc:"https://models.dev/logos/alibaba.svg",pillBg:"bg-orange-50 dark:bg-orange-950/40"},groq:{label:"Groq",iconSrc:"https://models.dev/logos/groq.svg",pillBg:"bg-orange-50 dark:bg-orange-950/40"},"together-ai":{label:"Together AI",iconSrc:"https://models.dev/logos/together-ai.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},fireworks:{label:"Fireworks",iconSrc:"https://models.dev/logos/fireworks.svg",pillBg:"bg-purple-50 dark:bg-purple-950/40"},cerebras:{label:"Cerebras",iconSrc:"https://models.dev/logos/cerebras.svg",pillBg:"bg-green-50 dark:bg-green-950/40"},voyage:{label:"Voyage AI",iconSrc:"/icons/voyage-light.png",pillBg:"bg-slate-100 dark:bg-slate-800"},jina:{label:"Jina AI",iconSrc:"/icons/jina.svg",pillBg:"bg-rose-50 dark:bg-rose-950/40"},nomic:{label:"Nomic",iconSrc:"/icons/nomic.png",pillBg:"bg-teal-50 dark:bg-teal-950/40"},minimax:{label:"MiniMax",iconSrc:"https://models.dev/logos/minimax.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},elevenlabs:{label:"ElevenLabs",iconSrc:"https://models.dev/logos/elevenlabs.svg",pillBg:"bg-neutral-100 dark:bg-neutral-800"},custom:{label:"Custom",iconSrc:"/logo.png",pillBg:"bg-slate-100 dark:bg-slate-800"}};e.s(["PROVIDER_META",0,o,"ProviderIcon",0,function({src:e,alt:o,pillBg:r,size:a=20}){return(0,t.jsx)("span",{className:(0,n.cn)("inline-flex shrink-0 items-center justify-center rounded",r),style:{width:a,height:a},children:e?(0,t.jsx)("img",{src:e,alt:o,width:a-4,height:a-4,className:"object-contain",style:{maxWidth:a-4,maxHeight:a-4}}):null})},"getProviderMeta",0,function(e){return o[e]??{label:e.charAt(0).toUpperCase()+e.slice(1),iconSrc:`https://models.dev/logos/${e}.svg`,pillBg:"bg-slate-100 dark:bg-slate-800"}}])},562949,741445,e=>{"use strict";var t=e.i(874822);let n=(0,t.default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",0,n],562949);let o=(0,t.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["EyeOff",0,o],741445)},266741,57555,e=>{"use strict";var t=e.i(523829),n=e.i(178328),o=e.i(746632),r=e.i(282879),a=e.i(466691),i=e.i(924911),s=e.i(925466),l=e.i(562949),d=e.i(741445),u=e.i(501706);let c=(0,e.i(874822).default)("cloud",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]);function p({onSave:e,type:r,onCancel:g}){let[f,m]=(0,n.useState)(""),[v,b]=(0,n.useState)(""),[h,x]=(0,n.useState)(!1),[S,y]=(0,n.useState)(""),[R,E]=(0,n.useState)(null),[C,I]=(0,n.useState)(!1),[O,k]=(0,n.useState)(!1),T=async()=>{if(!f||!S)return void o.toast.error("Base URL and Model Name are required");I(!0);try{if("embedding"===r){let e=await fetch("/api/config/test-embedding",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:f,apiKey:v,modelName:S})}),t=await e.json();if(!e.ok)throw Error(t.error||"Connection failed");E(t.dimensions),k(!0),o.toast.success(`Success! Detected ${t.dimensions} dimensions.`)}else{let e=await fetch("/api/config/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatProvider:"custom",chatApiKey:v,customChatModels:[{baseUrl:f,apiKey:v,modelName:S}]})}),t=await e.json();if(!e.ok)throw Error(t.error||"Connection failed");k(!0),o.toast.success("Success! Chat model connected.")}}catch(e){o.toast.error(e instanceof Error?e.message:"Test failed"),E(null),k(!1)}finally{I(!1)}};return(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(s.Label,{htmlFor:"baseUrl",children:"Base URL"}),(0,t.jsx)(i.Input,{id:"baseUrl",placeholder:"https://api.example.com/v1",value:f,onChange:e=>{m(e.target.value),k(!1)}})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(s.Label,{htmlFor:"apiKey",children:"API Key (Optional)"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(i.Input,{id:"apiKey",type:h?"text":"password",placeholder:"sk-...",value:v,onChange:e=>{b(e.target.value),k(!1)},className:"pr-10"}),(0,t.jsx)("button",{type:"button",onClick:()=>x(!h),className:"absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground",children:h?(0,t.jsx)(d.EyeOff,{className:"size-4"}):(0,t.jsx)(l.Eye,{className:"size-4"})})]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(s.Label,{htmlFor:"modelName",children:"Model Name"}),(0,t.jsx)(i.Input,{id:"modelName",placeholder:"embedding"===r?"my-embedding-model":"my-chat-model",value:S,onChange:e=>{y(e.target.value),k(!1)}})]}),O&&(0,t.jsxs)("div",{className:"text-sm text-green-600 dark:text-green-400 font-medium",children:["✓ Connection verified ",R?`(${R} dimensions)`:""]})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between sm:justify-between items-center gap-2",children:[(0,t.jsxs)(a.Button,{variant:"outline",type:"button",onClick:T,disabled:C,children:[C?(0,t.jsx)(u.Loader2,{className:"size-4 animate-spin mr-2"}):(0,t.jsx)(c,{className:"size-4 mr-2"}),"Test Connection"]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[g&&(0,t.jsx)(a.Button,{variant:"ghost",type:"button",onClick:g,children:"Cancel"}),(0,t.jsx)(a.Button,{className:"px-5",type:"button",onClick:()=>{f&&S&&O?e({baseUrl:f,apiKey:v,modelName:S,dimensions:R??void 0}):o.toast.error("Please test the connection first.")},disabled:!O,children:"Add Model"})]})]})]})}e.s(["Cloud",0,c],57555),e.s(["CustomModelForm",0,p,"CustomModelModal",0,function({open:e,onOpenChange:n,onSave:o,type:a}){return(0,t.jsx)(r.Dialog,{open:e,onOpenChange:n,children:(0,t.jsxs)(r.DialogContent,{className:"max-w-xl",children:[(0,t.jsxs)(r.DialogHeader,{children:[(0,t.jsxs)(r.DialogTitle,{children:["Custom ","embedding"===a?"Embedding":"Chat"," Model"]}),(0,t.jsxs)(r.DialogDescription,{children:["Connect an OpenAI-compatible ","embedding"===a?"embedding":"chat"," model."]})]}),(0,t.jsx)(p,{type:a,onSave:e=>{o(e),n(!1)}})]})})}],266741)}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,301470,e=>{"use strict";let t=(0,e.i(874822).default)("message-circle",[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]);e.s(["MessageCircle",0,t],301470)},440087,e=>{"use strict";var t,n,o=e.i(523829);e.s([],7045),e.i(7045),e.i(199910);var r=e.i(178328),a=e.i(200622);let i=r.createContext(void 0);function s(e){let t=r.useContext(i);if(void 0===t&&!e)throw Error((0,a.default)(33));return t}let l=r.createContext(void 0);function d(e){let t=r.useContext(l);if(void 0===t&&!e)throw Error((0,a.default)(36));return t}var u=e.i(782486),c=e.i(907531);let p=r.forwardRef(function(e,t){let{render:n,className:o,style:r,...a}=e,{store:i}=d(),{arrowRef:l,side:p,align:g,arrowUncentered:f,arrowStyles:m}=s(),v=i.useState("open");return(0,u.useRenderElement)("div",e,{ref:[l,t],stateAttributesMapping:c.popupStateMapping,state:{open:v,side:p,align:g,uncentered:f},props:{style:m,"aria-hidden":!0,...a}})});var g=e.i(196630);let f=r.createContext(void 0);function m(e=!0){let t=r.useContext(f);if(void 0===t&&!e)throw Error((0,a.default)(25));return t}var v=e.i(399417);let b={...c.popupStateMapping,...g.transitionStatusMapping},h=r.forwardRef(function(e,t){let{render:n,className:o,style:r,...a}=e,{store:i}=d(),s=i.useState("open"),l=i.useState("mounted"),c=i.useState("transitionStatus"),p=i.useState("lastOpenChangeReason"),g=m();return(0,u.useRenderElement)("div",e,{ref:g?.backdropRef?[t,g.backdropRef]:t,state:{open:s,transitionStatus:c},stateAttributesMapping:b,props:[{role:"presentation",hidden:!l,style:{pointerEvents:p===v.REASONS.triggerHover?"none":void 0,userSelect:"none",WebkitUserSelect:"none"}},a]})});var x=e.i(410596);let S=r.createContext(void 0);var y=e.i(47334),R=e.i(11902),E=e.i(300441),C=e.i(67019);function I(e){let{closeOnClick:t,highlighted:n,id:o,nodeId:a,store:i,typingRef:s,itemRef:l,itemMetadata:d}=e,{events:u}=i.useState("floatingTreeRoot"),c=i.useState("open"),p=m(!0),g=void 0!==p;return r.useMemo(()=>({id:o,role:"menuitem",tabIndex:c&&n?0:-1,onKeyDown(e){" "===e.key&&s?.current&&e.preventDefault()},onMouseMove(e){a&&u.emit("itemhover",{nodeId:a,target:e.currentTarget})},onClick(e){t&&u.emit("close",{domEvent:e,reason:v.REASONS.itemPress})},onMouseUp(e){if(p){let t=p.initialCursorPointRef.current;if(p.initialCursorPointRef.current=null,g&&t&&1>=Math.abs(e.clientX-t.x)&&1>=Math.abs(e.clientY-t.y)||g&&!C.platform.os.mac&&2===e.button)return}l.current&&i.context.allowMouseUpTriggerRef.current&&(!g||2===e.button)&&(!d||"regular-item"===d.type)&&l.current.click()}}),[t,n,o,u,a,c,i,s,l,p,g,d])}let O={type:"regular-item"};function k(e){let{closeOnClick:t,disabled:n=!1,highlighted:o,id:a,store:i,typingRef:s=i.context.typingRef,nativeButton:l,itemMetadata:d,nodeId:u}=e,c=i.useState("disabled"),p=r.useRef(null),{getButtonProps:g,buttonRef:f}=(0,R.useButton)({disabled:n||c,focusableWhenDisabled:!0,native:l,composite:!0}),m=I({closeOnClick:t,highlighted:o,id:a,nodeId:u,store:i,typingRef:s,itemRef:p,itemMetadata:d}),v=r.useCallback(e=>(0,E.mergeProps)(m,{onMouseEnter(){"submenu-trigger"===d.type&&d.setActive()}},e,g),[m,g,d]),b=(0,y.useMergedRefs)(p,f);return r.useMemo(()=>({getItemProps:v,itemRef:b}),[v,b])}var T=e.i(544834),M=e.i(168198);let w=((t={}).checked="data-checked",t.unchecked="data-unchecked",t.disabled="data-disabled",t.highlighted="data-highlighted",t),P={checked:e=>e?{[w.checked]:""}:{[w.unchecked]:""},...g.transitionStatusMapping};var N=e.i(42237);let A=r.forwardRef(function(e,t){let{render:n,className:a,id:i,label:l,nativeButton:c=!1,disabled:p=!1,closeOnClick:g=!1,checked:f,defaultChecked:m,onCheckedChange:b,style:h,...y}=e,R=(0,T.useCompositeListItem)({label:l}),E=s(!0),C=(0,M.useBaseUiId)(i),{store:I}=d(),w=I.useState("isActive",R.index),A=I.useState("itemProps"),[j,D]=(0,x.useControlled)({controlled:f,default:m??!1,name:"MenuCheckboxItem",state:"checked"}),{getItemProps:B,itemRef:F}=k({closeOnClick:g,disabled:p,highlighted:w,id:C,store:I,nativeButton:c,nodeId:E?.context.nodeId,itemMetadata:O}),L=r.useMemo(()=>({disabled:p,highlighted:w,checked:j}),[p,w,j]),U=(0,u.useRenderElement)("div",e,{state:L,stateAttributesMapping:P,props:[A,{role:"menuitemcheckbox","aria-checked":j,onClick:function(e){let t=(0,N.createChangeEventDetails)(v.REASONS.itemPress,e.nativeEvent,void 0,{preventUnmountOnClose(){}});b?.(!j,t),t.isCanceled||D(e=>!e)}},y,B],ref:[F,t,R.ref]});return(0,o.jsx)(S.Provider,{value:L,children:U})});var j=e.i(484028),D=e.i(274172);let B=r.forwardRef(function(e,t){let{render:n,className:o,style:i,keepMounted:s=!1,...l}=e,d=function(){let e=r.useContext(S);if(void 0===e)throw Error((0,a.default)(30));return e}(),c=r.useRef(null),{transitionStatus:p,setMounted:g}=(0,j.useTransitionStatus)(d.checked);(0,D.useOpenChangeComplete)({open:d.checked,ref:c,onComplete(){d.checked||g(!1)}});let f={checked:d.checked,disabled:d.disabled,highlighted:d.highlighted,transitionStatus:p};return(0,u.useRenderElement)("span",e,{state:f,ref:[t,c],stateAttributesMapping:P,props:{"aria-hidden":!0,...l},enabled:s||d.checked})}),F=r.createContext(void 0),L=r.forwardRef(function(e,t){let{render:n,className:a,style:i,...s}=e,[l,d]=r.useState(void 0),c=(0,u.useRenderElement)("div",e,{ref:t,props:{role:"group","aria-labelledby":l,...s}});return(0,o.jsx)(F.Provider,{value:d,children:c})});var U=e.i(809937);let H=r.forwardRef(function(e,t){let{render:n,className:o,style:i,id:s,...l}=e,d=(0,M.useBaseUiId)(s),c=function(){let e=r.useContext(F);if(void 0===e)throw Error((0,a.default)(31));return e}();return(0,U.useIsoLayoutEffect)(()=>(c(d),()=>{c(void 0)}),[c,d]),(0,u.useRenderElement)("div",e,{ref:t,props:{id:d,role:"presentation",...l}})}),_=r.forwardRef(function(e,t){let{render:n,className:o,id:r,label:a,nativeButton:i=!1,disabled:l=!1,closeOnClick:c=!0,style:p,...g}=e,f=(0,T.useCompositeListItem)({label:a}),m=s(!0),v=(0,M.useBaseUiId)(r),{store:b}=d(),h=b.useState("isActive",f.index),x=b.useState("itemProps"),{getItemProps:S,itemRef:y}=k({closeOnClick:c,disabled:l,highlighted:h,id:v,store:b,nativeButton:i,nodeId:m?.context.nodeId,itemMetadata:O});return(0,u.useRenderElement)("div",e,{state:{disabled:l,highlighted:h},props:[x,g,S],ref:[y,t,f.ref]})}),G=r.forwardRef(function(e,t){let{render:n,className:o,id:a,label:i,closeOnClick:l=!1,style:c,...p}=e,g=r.useRef(null),f=(0,T.useCompositeListItem)({label:i}),m=s(!0),v=m?.context.nodeId,b=(0,M.useBaseUiId)(a),{store:h}=d(),x=h.useState("isActive",f.index),S=h.useState("itemProps"),y=h.context.typingRef,{getButtonProps:C,buttonRef:O}=(0,R.useButton)({native:!1,composite:!0}),k=I({closeOnClick:l,highlighted:x,id:b,nodeId:v,store:h,typingRef:y,itemRef:g});return(0,u.useRenderElement)("a",e,{state:{highlighted:x},props:[S,p,function(e){return(0,E.mergeProps)(k,e,C)}],ref:[g,O,t,f.ref]})});var z=e.i(310255),V=e.i(356312),Y=e.i(23701),K=e.i(196730),J=e.i(32677);let W={...c.popupStateMapping,...g.transitionStatusMapping},$=r.forwardRef(function(e,t){let{render:n,className:a,style:i,finalFocus:l,...c}=e,{store:p}=d(),{side:g,align:f}=s(),m=null!=(0,Y.useToolbarRootContext)(!0),b=p.useState("open"),h=p.useState("transitionStatus"),x=p.useState("popupProps"),S=p.useState("mounted"),y=p.useState("instantType"),R=p.useState("activeTriggerElement"),E=p.useState("parent"),C=p.useState("lastOpenChangeReason"),I=p.useState("rootId"),O=p.useState("floatingRootContext"),k=p.useState("floatingTreeRoot"),T=p.useState("closeDelay"),M=p.useState("activeTriggerElement"),w=p.useState("hoverEnabled"),P=p.useState("disabled"),A=p.useState("openMethod"),j="context-menu"===E.type;(0,D.useOpenChangeComplete)({open:b,ref:p.context.popupRef,onComplete(){b&&p.context.onOpenChangeComplete?.(!0)}}),r.useEffect(()=>{function e(e){p.setOpen(!1,(0,N.createChangeEventDetails)(e.reason,e.domEvent))}return k.events.on("close",e),()=>{k.events.off("close",e)}},[k.events,p]),(0,V.useHoverFloatingInteraction)(O,{enabled:w&&!P&&!j&&"menubar"!==E.type,closeDelay:T});let B=r.useCallback(e=>{p.set("popupElement",e)},[p]),F={transitionStatus:h,side:g,align:f,open:b,nested:"menu"===E.type,instant:y},L=(0,u.useRenderElement)("div",e,{state:F,ref:[t,p.context.popupRef,B],stateAttributesMapping:W,props:[x,{onKeyDown(e){m&&K.COMPOSITE_KEYS.has(e.key)&&e.stopPropagation()}},(0,J.getDisabledMountTransitionStyles)(h),c,{"data-rootownerid":I}]}),U=void 0===E.type||j;return(R||"menubar"===E.type&&C!==v.REASONS.outsidePress)&&(U=!0),(0,o.jsx)(z.FloatingFocusManager,{context:O,openInteractionType:A,modal:j,disabled:!S,returnFocus:void 0===l?U:l,initialFocus:"menu"!==E.type,restoreFocus:!0,externalTree:"menubar"!==E.type?k:void 0,previousFocusableElement:M,nextFocusableElement:void 0===E.type?p.context.triggerFocusTargetRef:void 0,beforeContentFocusGuardRef:void 0===E.type?p.context.beforeContentFocusGuardRef:void 0,children:L})});var q=e.i(672487);let X=r.createContext(void 0),Z=r.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e,{store:a}=d();return a.useState("mounted")||n?(0,o.jsx)(X.Provider,{value:n,children:(0,o.jsx)(q.FloatingPortal,{ref:t,...r})}):null});var Q=e.i(816045),ee=e.i(222769),et=e.i(548740),en=e.i(45527),eo=e.i(751252),er=e.i(170808),ea=e.i(166506),ei=e.i(681371),es=e.i(889326),el=e.i(397252),ed=e.i(602852);let eu=r.forwardRef(function(e,t){let{anchor:n,positionMethod:s="absolute",className:l,render:u,side:c,align:p,sideOffset:g=0,alignOffset:f=0,collisionBoundary:b="clipping-ancestors",collisionPadding:h=5,arrowPadding:x=5,sticky:S=!1,disableAnchorTracking:y=!1,collisionAvoidance:R=ea.DROPDOWN_COLLISION_AVOIDANCE,style:E,...C}=e,{store:I}=d(),O=function(){let e=r.useContext(X);if(void 0===e)throw Error((0,a.default)(32));return e}(),k=m(!0),T=I.useState("parent"),M=I.useState("floatingRootContext"),w=I.useState("floatingTreeRoot"),P=I.useState("mounted"),A=I.useState("open"),j=I.useState("modal"),D=I.useState("openMethod"),B=I.useState("activeTriggerElement"),F=I.useState("transitionStatus"),L=I.useState("positionerElement"),H=I.useState("instantType"),_=I.useState("hasViewport"),G=I.useState("lastOpenChangeReason"),z=I.useState("floatingNodeId"),V=I.useState("floatingParentNodeId"),Y=M.useState("domReferenceElement"),K=r.useRef(null),J=(0,es.useAnimationsFinished)(L,!1,!1),W=n,$=g,q=f,Z=p,eu=R;"context-menu"===T.type&&(W=n??T.context?.anchor,Z=Z??"start",c||"center"===Z||(q=e.alignOffset??2,$=e.sideOffset??-5));let ec=c,ep=Z;"menu"===T.type?(ec=ec??"inline-end",ep=ep??"start",eu=e.collisionAvoidance??ea.POPUP_COLLISION_AVOIDANCE):"menubar"===T.type&&(ec=ec??("vertical"===T.context.orientation?"inline-end":"bottom"),ep=ep??"start");let eg="context-menu"===T.type,ef=(0,en.useAnchorPositioning)({anchor:W,floatingRootContext:M,positionMethod:k?"fixed":s,mounted:P,side:ec,sideOffset:$,align:ep,alignOffset:q,arrowPadding:eg?0:x,collisionBoundary:b,collisionPadding:h,sticky:S,nodeId:z,keepMounted:O,disableAnchorTracking:y,collisionAvoidance:eu,shiftCrossAxis:eg&&!("side"in eu&&"flip"===eu.side),externalTree:w,adaptiveOrigin:_?ei.adaptiveOrigin:void 0});r.useEffect(()=>{function e(e){e.open&&(e.parentNodeId===z&&I.set("hoverEnabled",!1),e.nodeId!==z&&e.parentNodeId===I.select("floatingParentNodeId")&&I.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.siblingOpen)))}return w.events.on("menuopenchange",e),()=>{w.events.off("menuopenchange",e)}},[I,w.events,z]),r.useEffect(()=>{if(null!=I.select("floatingParentNodeId"))return w.events.on("menuopenchange",e),()=>{w.events.off("menuopenchange",e)};function e(e){if(e.open||e.nodeId!==I.select("floatingParentNodeId"))return;let t=e.reason??v.REASONS.siblingOpen;I.setOpen(!1,(0,N.createChangeEventDetails)(t))}},[w.events,I]);let em=(0,ee.useTimeout)();r.useEffect(()=>{A||em.clear()},[A,em]),r.useEffect(()=>{function e(e){if(A&&e.nodeId===I.select("floatingParentNodeId"))if(e.target&&B&&B!==e.target){let e=I.select("closeDelay");e>0?em.isStarted()||em.start(e,()=>{I.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.siblingOpen))}):I.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.siblingOpen))}else em.clear()}return w.events.on("itemhover",e),()=>{w.events.off("itemhover",e)}},[w.events,A,B,I,em]),r.useEffect(()=>{let e={open:A,nodeId:z,parentNodeId:V,reason:I.select("lastOpenChangeReason")};w.events.emit("menuopenchange",e)},[w.events,A,I,z,V]),(0,U.useIsoLayoutEffect)(()=>{let e=K.current;if(Y&&(K.current=Y),e&&Y&&Y!==e){I.set("instantType",void 0);let e=new AbortController;return J(()=>{I.set("instantType","trigger-change")},e.signal),()=>{e.abort()}}},[Y,J,I]);let ev={open:A,side:ef.side,align:ef.align,anchorHidden:ef.anchorHidden,nested:"menu"===T.type,instant:H},eb="menubar"===T.type&&T.context.modal,eh=j&&G!==v.REASONS.triggerHover;(0,ed.useAnchoredPopupScrollLock)(A&&(eb||eh),"touch"===D,L,B);let ex=(0,el.usePositioner)(e,ev,{styles:ef.positionerStyles,transitionStatus:F,props:C,refs:[t,I.useStateSetter("positionerElement")],hidden:!P,inert:!A}),eS=P&&"menu"!==T.type&&("menubar"!==T.type&&j&&G!==v.REASONS.triggerHover||"menubar"===T.type&&T.context.modal),ey=null;return"menubar"===T.type?ey=T.context.contentElement:void 0===T.type&&(ey=B),(0,o.jsxs)(i.Provider,{value:ef,children:[eS&&(0,o.jsx)(er.InternalBackdrop,{ref:"context-menu"===T.type||"nested-context-menu"===T.type?T.context.internalBackdropRef:null,inert:(0,Q.inertValue)(!A),cutout:ey}),(0,o.jsx)(et.FloatingNode,{id:z,children:(0,o.jsx)(eo.CompositeList,{elementsRef:I.context.itemDomElements,labelsRef:I.context.itemLabels,children:ex})})]})});var ec=e.i(114396);let ep=r.createContext(void 0),eg=r.memo(r.forwardRef(function(e,t){let{render:n,className:a,value:i,defaultValue:s,onValueChange:l,disabled:d=!1,style:c,"aria-labelledby":p,...g}=e,[f,m]=r.useState(void 0),[v,b]=(0,x.useControlled)({controlled:i,default:s,name:"MenuRadioGroup"}),h=(0,ec.useStableCallback)((e,t)=>{l?.(e,t),t.isCanceled||b(e)}),S=(0,u.useRenderElement)("div",e,{state:{disabled:d},ref:t,props:{role:"group","aria-labelledby":p??f,"aria-disabled":d||void 0,...g}}),y=r.useMemo(()=>({value:v,setValue:h,disabled:d}),[v,h,d]);return(0,o.jsx)(F.Provider,{value:m,children:(0,o.jsx)(ep.Provider,{value:y,children:S})})})),ef=r.createContext(void 0),em=r.forwardRef(function(e,t){let{render:n,className:i,id:l,label:c,nativeButton:p=!1,disabled:g=!1,closeOnClick:f=!1,value:m,style:b,...h}=e,x=(0,T.useCompositeListItem)({label:c}),S=s(!0),y=(0,M.useBaseUiId)(l),{store:R}=d(),E=R.useState("isActive",x.index),C=R.useState("itemProps"),{value:I,setValue:w,disabled:A}=function(){let e=r.useContext(ep);if(void 0===e)throw Error((0,a.default)(34));return e}(),j=A||g,D=I===m,{getItemProps:B,itemRef:F}=k({closeOnClick:f,disabled:j,highlighted:E,id:y,store:R,nativeButton:p,nodeId:S?.context.nodeId,itemMetadata:O}),L=r.useMemo(()=>({disabled:j,highlighted:E,checked:D}),[j,E,D]),U=(0,u.useRenderElement)("div",e,{state:L,stateAttributesMapping:P,props:[C,{role:"menuitemradio","aria-checked":D,onClick:function(e){w(m,(0,N.createChangeEventDetails)(v.REASONS.itemPress,e.nativeEvent,void 0,{preventUnmountOnClose(){}}))}},h,B],ref:[F,t,x.ref]});return(0,o.jsx)(ef.Provider,{value:L,children:U})}),ev=r.forwardRef(function(e,t){let{render:n,className:o,style:i,keepMounted:s=!1,...l}=e,d=function(){let e=r.useContext(ef);if(void 0===e)throw Error((0,a.default)(35));return e}(),c=r.useRef(null),{transitionStatus:p,setMounted:g}=(0,j.useTransitionStatus)(d.checked);(0,D.useOpenChangeComplete)({open:d.checked,ref:c,onComplete(){d.checked||g(!1)}});let f={checked:d.checked,disabled:d.disabled,highlighted:d.highlighted,transitionStatus:p};return(0,u.useRenderElement)("span",e,{state:f,stateAttributesMapping:P,ref:[t,c],props:{"aria-hidden":!0,...l},enabled:s||d.checked})});var eb=e.i(654975),eh=e.i(832817),ex=e.i(188479),eS=e.i(984676),ey=e.i(331347),eR=e.i(994601),eE=e.i(691981);let eC=r.createContext(null);function eI(e){let t=r.useContext(eC);if(null===t&&!e)throw Error((0,a.default)(5));return t}var eO=e.i(601132),ek=e.i(233250),eT=e.i(675007),eM=e.i(649111),ew=e.i(853607),eP=e.i(7022),eN=e.i(991327),eA=e.i(419093);let ej={...eN.popupStoreSelectors,disabled:(0,eT.createSelector)(e=>"menubar"===e.parent.type&&e.parent.context.disabled||e.disabled),modal:(0,eT.createSelector)(e=>(void 0===e.parent.type||"context-menu"===e.parent.type)&&(e.modal??!0)),openMethod:(0,eT.createSelector)(e=>e.openMethod),allowMouseEnter:(0,eT.createSelector)(e=>e.allowMouseEnter),highlightItemOnHover:(0,eT.createSelector)(e=>e.highlightItemOnHover),stickIfOpen:(0,eT.createSelector)(e=>e.stickIfOpen),parent:(0,eT.createSelector)(e=>e.parent),rootId:(0,eT.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("rootId"):void 0!==e.parent.type?e.parent.context.rootId:e.rootId),activeIndex:(0,eT.createSelector)(e=>e.activeIndex),isActive:(0,eT.createSelector)((e,t)=>e.activeIndex===t),hoverEnabled:(0,eT.createSelector)(e=>e.hoverEnabled),instantType:(0,eT.createSelector)(e=>e.instantType),lastOpenChangeReason:(0,eT.createSelector)(e=>e.openChangeReason),floatingTreeRoot:(0,eT.createSelector)(e=>"menu"===e.parent.type?e.parent.store.select("floatingTreeRoot"):e.floatingTreeRoot),floatingNodeId:(0,eT.createSelector)(e=>e.floatingNodeId),floatingParentNodeId:(0,eT.createSelector)(e=>e.floatingParentNodeId),itemProps:(0,eT.createSelector)(e=>e.itemProps),closeDelay:(0,eT.createSelector)(e=>e.closeDelay),hasViewport:(0,eT.createSelector)(e=>e.hasViewport),keyboardEventRelay:(0,eT.createSelector)(e=>e.keyboardEventRelay?e.keyboardEventRelay:"menu"===e.parent.type?e.parent.store.select("keyboardEventRelay"):void 0)};class eD extends eM.ReactStore{constructor(e){super({...{...(0,eN.createInitialPopupStoreState)(),disabled:!1,modal:!0,openMethod:null,allowMouseEnter:!1,highlightItemOnHover:!0,stickIfOpen:!0,parent:{type:void 0},rootId:void 0,activeIndex:null,hoverEnabled:!0,instantType:void 0,openChangeReason:null,floatingTreeRoot:new eP.FloatingTreeStore,floatingNodeId:void 0,floatingParentNodeId:null,itemProps:eh.EMPTY_OBJECT,keyboardEventRelay:void 0,closeDelay:0,hasViewport:!1},...e},{positionerRef:r.createRef(),popupRef:r.createRef(),typingRef:{current:!1},itemDomElements:{current:[]},itemLabels:{current:[]},allowMouseUpTriggerRef:{current:!1},triggerFocusTargetRef:r.createRef(),beforeContentFocusGuardRef:r.createRef(),onOpenChangeComplete:void 0,triggerElements:new eA.PopupTriggerMap},ej),this.unsubscribeParentListener=this.observe("parent",e=>{if(this.unsubscribeParentListener?.(),"menu"===e.type){let t=e.store.select("rootId"),n=e.store.select("floatingTreeRoot"),o=e.store.select("keyboardEventRelay");this.unsubscribeParentListener=e.store.subscribe(()=>{let r=e.store.select("rootId"),a=e.store.select("floatingTreeRoot"),i=e.store.select("keyboardEventRelay");(t!==r||n!==a||o!==i)&&(t=r,n=a,o=i,this.notifyAll())}),this.context.allowMouseUpTriggerRef=e.store.context.allowMouseUpTriggerRef;return}void 0!==e.type&&(this.context.allowMouseUpTriggerRef=e.context.allowMouseUpTriggerRef),this.unsubscribeParentListener=null})}setOpen(e,t){this.state.floatingRootContext.context.events.emit("setOpen",{open:e,eventDetails:t})}static useStore(e,t){let n=(0,ew.useRefWithInit)(()=>new eD(t)).current;return e??n}unsubscribeParentListener=null}var eB=e.i(399636);let eF=r.createContext(void 0);function eL(){return r.useContext(eF)}let eU=(0,ex.fastComponent)(function(e){let t,{children:n,open:a,onOpenChange:i,onOpenChangeComplete:s,defaultOpen:u=!1,disabled:c=!1,modal:p,loopFocus:g=!0,orientation:f="vertical",actionsRef:b,closeParentOnEsc:h=!1,handle:x,triggerId:S,defaultTriggerId:y=null,highlightItemOnHover:R=!0}=e,C=m(!0),I=d(!0),O=eI(!0),k=eL(),T=r.useMemo(()=>k&&I?{type:"menu",store:I.store}:O?{type:"menubar",context:O}:C&&!I?{type:"context-menu",context:C}:{type:void 0},[C,I,O,k]),M=eD.useStore(x?.store,{open:u,openProp:a,activeTriggerId:y,triggerIdProp:S,parent:T});(0,eB.useInitialOpenSync)(M,a,u,y),M.useControlledProp("openProp",a),M.useControlledProp("triggerIdProp",S),M.useContextCallback("onOpenChangeComplete",s);let w=(0,eb.useId)(),P=(0,eb.useId)(),A=M.useState("floatingTreeRoot"),j=(0,et.useFloatingNodeId)(A),D=(0,et.useFloatingParentNodeId)(),B=M.useState("open"),F=M.useState("activeTriggerElement"),L=M.useState("positionerElement"),H=M.useState("hoverEnabled"),_=M.useState("disabled"),G=M.useState("lastOpenChangeReason"),z=M.useState("parent"),V=M.useState("activeIndex"),Y=M.useState("payload"),K=M.useState("floatingParentNodeId"),J=r.useRef(null),W=r.useRef("context-menu"!==z.type),$=(0,ee.useTimeout)(),q=r.useRef(!0),X=(0,ee.useTimeout)(),Z=null!=K,{openMethod:Q,triggerProps:en}=(0,ek.useOpenInteractionType)(B);M.useSyncedValues({disabled:c,highlightItemOnHover:R,modal:void 0===z.type?p:void 0,openMethod:Q,rootId:w}),(0,eB.useImplicitActiveTrigger)(M);let{forceUnmount:eo}=(0,eB.useOpenStateTransitions)(B,M,()=>{M.update({allowMouseEnter:!1,stickIfOpen:!0})});(0,U.useIsoLayoutEffect)(()=>{C&&!I?M.update({parent:{type:"context-menu",context:C},floatingNodeId:j,floatingParentNodeId:D}):I&&M.update({floatingNodeId:j,floatingParentNodeId:D})},[C,I,j,D,M]),r.useEffect(()=>{if(B||(J.current=null),"context-menu"===z.type){if(!B){$.clear(),W.current=!1;return}$.start(500,()=>{W.current=!0})}},[$,B,z.type]),(0,U.useIsoLayoutEffect)(()=>{B||H||M.set("hoverEnabled",!0)},[B,H,M]);let er=(0,ec.useStableCallback)((e,t)=>{let n=t.reason;if(B===e&&t.trigger===F&&G===n)return;let o=(0,eB.attachPreventUnmountOnClose)(t);if(e||null!=t.trigger||(t.trigger=F??void 0),i?.(e,t),t.isCanceled)return;M.state.floatingRootContext.dispatchOpenChange(e,t);let r=t.event;if(!1===e&&r?.type==="click"&&"touch"===r.pointerType&&!q.current)return;e&&n===v.REASONS.triggerFocus?(q.current=!1,X.start(300,()=>{q.current=!0})):(q.current=!0,X.clear());let a=(n===v.REASONS.triggerPress||n===v.REASONS.itemPress)&&0===r.detail&&r?.isTrusted,s=!e&&(n===v.REASONS.escapeKey||null==n),l={open:e,openChangeReason:n};J.current=t.event??null,(0,eB.setPopupOpenState)(l,e,t.trigger,o()),M.update(l),"menubar"===z.type&&(n===v.REASONS.triggerFocus||n===v.REASONS.focusOut||n===v.REASONS.triggerHover||n===v.REASONS.listNavigation||n===v.REASONS.siblingOpen)?M.set("instantType","group"):a||s?M.set("instantType",a?"click":"dismiss"):M.set("instantType",void 0)}),ei=(0,eE.useSyncedFloatingRootContext)({popupStore:M,floatingId:P,nested:null!=D,onOpenChange:er}),es=ei.context.events;r.useEffect(()=>{let e=({open:e,eventDetails:t})=>er(e,t);return es.on("setOpen",e),()=>{es?.off("setOpen",e)}},[es,er]);let el=r.useCallback(()=>{M.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.imperativeAction))},[M]);r.useImperativeHandle(b,()=>({unmount:eo,close:el}),[eo,el]),"context-menu"===z.type&&(t=z.context),r.useImperativeHandle(t?.positionerRef,()=>L,[L]),r.useImperativeHandle(t?.actionsRef,()=>({setOpen:er}),[er]);let ed=(0,eS.useDismiss)(ei,{enabled:!_,bubbles:{escapeKey:h&&"menu"===z.type},outsidePress:()=>"context-menu"!==z.type||J.current?.type==="contextmenu"||W.current,externalTree:Z?A:void 0}),eu=(0,eO.useDirection)(),ep=r.useCallback(e=>{M.select("activeIndex")!==e&&M.set("activeIndex",e)},[M]),eg=(0,ey.useListNavigation)(ei,{enabled:!_,listRef:M.context.itemDomElements,activeIndex:V,nested:void 0!==z.type,loopFocus:g,orientation:f,parentOrientation:"menubar"===z.type?z.context.orientation:void 0,rtl:"rtl"===eu,disabledIndices:eh.EMPTY_ARRAY,onNavigate:ep,openOnArrowKeyDown:"context-menu"!==z.type,externalTree:Z?A:void 0,focusItemOnHover:R}),ef=r.useCallback(e=>{M.context.typingRef.current=e},[M]),em=(0,eR.useTypeahead)(ei,{enabled:!_,listRef:M.context.itemLabels,elementsRef:M.context.itemDomElements,activeIndex:V,resetMs:ea.TYPEAHEAD_RESET_MS,onMatch:e=>{B&&e!==V&&M.set("activeIndex",e)},onTyping:ef}),ev=r.useMemo(()=>{let e=(0,E.mergeProps)(em.reference,eg.reference,ed.reference,{onMouseMove(){M.set("allowMouseEnter",!0)}},en);return e["aria-haspopup"]="menu",e["aria-expanded"]=B,e},[M,em.reference,eg.reference,ed.reference,en,B]),ex=r.useMemo(()=>{let e=(0,E.mergeProps)(eg.trigger,ed.trigger,en);return e["aria-haspopup"]="menu",e["aria-expanded"]=!1,e},[eg.trigger,ed.trigger,en]),eC=r.useMemo(()=>(0,E.mergeProps)(eB.FOCUSABLE_POPUP_PROPS,{id:P,role:"menu","aria-labelledby":F?.id,onMouseMove(){M.set("allowMouseEnter",!0),"menu"===z.type&&M.set("hoverEnabled",!1)},onClick(){M.select("hoverEnabled")&&M.set("hoverEnabled",!1)},onKeyDown(e){let t=M.select("keyboardEventRelay");t&&!e.isPropagationStopped()&&t(e)}},em.floating,eg.floating,ed.floating),[F,P,z.type,M,em.floating,eg.floating,ed.floating]),eT=eg.item??eh.EMPTY_OBJECT;(0,eB.usePopupInteractionProps)(M,{floatingRootContext:ei,activeTriggerProps:ev,inactiveTriggerProps:ex,popupProps:eC,itemProps:eT});let eM=r.useMemo(()=>({store:M,parent:T}),[M,T]),ew=(0,o.jsx)(l.Provider,{value:eM,children:"function"==typeof n?n({payload:Y}):n});return void 0===z.type||"context-menu"===z.type?(0,o.jsx)(et.FloatingTree,{externalTree:A,children:ew}):ew});var eH=e.i(595410),e_=e.i(451423),eG=e.i(438138),ez=e.i(970377),eV=e.i(299406),eY=e.i(617506),eK=e.i(965444),eJ=e.i(571140);function eW(e){let{render:t,className:n,style:o,state:r=eh.EMPTY_OBJECT,props:a=eh.EMPTY_ARRAY,refs:i=eh.EMPTY_ARRAY,metadata:s,stateAttributesMapping:l,tag:d="div",...c}=e,{compositeProps:p,compositeRef:g}=(0,eJ.useCompositeItem)({metadata:s});return(0,u.useRenderElement)(d,e,{state:r,ref:[...i,g],props:[p,...a,c],stateAttributesMapping:l})}var e$=e.i(832419),eq=e.i(92615),eX=e.i(200797),eZ=e.i(364598),eQ=e.i(744267);let e0=(0,ex.fastComponentRef)(function(e,t){let n,i,s,l,{render:p,className:g,style:f,disabled:b=!1,nativeButton:h=!0,id:x,openOnHover:S,delay:y=100,closeDelay:C=0,handle:I,payload:O,...k}=e,T=d(!0),w=I?.store??T?.store;if(!w)throw Error((0,a.default)(85));let P=(0,M.useBaseUiId)(x),A=w.useState("isTriggerActive",P),j=w.useState("floatingRootContext"),D=w.useState("isOpenedByTrigger",P),B=w.useState("triggerPopupId",P),F=r.useRef(null),L=(n=m(!0),i=d(!0),s=eI(!0),r.useMemo(()=>s?{type:"menubar",context:s}:n&&!i?{type:"context-menu",context:n}:{type:void 0},[n,i,s])),H=(0,e$.useCompositeRootContext)(!0),_=(0,et.useFloatingTree)(),G=r.useMemo(()=>_??new eP.FloatingTreeStore,[_]),z=(0,et.useFloatingNodeId)(G),V=(0,et.useFloatingParentNodeId)(),{registerTrigger:Y,isMountedByThisTrigger:K}=(0,eB.useTriggerDataForwarding)(P,F,w,{payload:O,closeDelay:C,parent:L,floatingTreeRoot:G,floatingNodeId:z,floatingParentNodeId:V,keyboardEventRelay:H?.relayKeyboardEvent}),J="menubar"===L.type,W=w.useState("disabled"),$=b||W||J&&L.context.disabled,{getButtonProps:q,buttonRef:X}=(0,R.useButton)({disabled:$,native:h});r.useEffect(()=>{D||void 0!==L.type||(w.context.allowMouseUpTriggerRef.current=!1)},[w,D,L.type]);let Z=r.useRef(null),Q=(0,ee.useTimeout)(),en=(0,ec.useStableCallback)(e=>{if(!Z.current)return;Q.clear(),w.context.allowMouseUpTriggerRef.current=!1;let t=e.target;if((0,eY.contains)(Z.current,t)||(0,eY.contains)(w.select("positionerElement"),t)||t===Z.current||null!=t&&function e(t){return(0,eq.isHTMLElement)(t)&&t.hasAttribute("data-rootownerid")?t.getAttribute("data-rootownerid")??void 0:(0,eq.isLastTraversableNode)(t)?void 0:e((0,eq.getParentNode)(t))}(t)===w.select("rootId"))return;let n=(0,eK.getPseudoElementBounds)(Z.current);e.clientX>=n.left-2&&e.clientX<=n.right+2&&e.clientY>=n.top-2&&e.clientY<=n.bottom+2||G.events.emit("close",{domEvent:e,reason:v.REASONS.cancelOpen})});r.useEffect(()=>{D&&w.select("lastOpenChangeReason")===v.REASONS.triggerHover&&(0,eH.ownerDocument)(Z.current).addEventListener("mouseup",en,{once:!0})},[D,en,w]);let eo=J&&L.context.hasSubmenuOpen,er=S??eo,ei=(0,eV.useHoverReferenceInteraction)(j,{enabled:er&&!$&&"context-menu"!==L.type&&(!J||eo&&!K),handleClose:(0,e_.safePolygon)({blockPointerEvents:!J}),mouseOnly:!0,move:!1,restMs:void 0===L.type?y:void 0,delay:{close:C},triggerElementRef:F,externalTree:G,isActiveTrigger:A,isClosing:()=>"ending"===w.select("transitionStatus")}),es=function(e,t){let n=(0,ee.useTimeout)(),[o,a]=r.useState(!1);return(0,U.useIsoLayoutEffect)(()=>{e&&"trigger-hover"===t?(a(!0),n.start(ea.PATIENT_CLICK_THRESHOLD,()=>{a(!1)})):e||(n.clear(),a(!1))},[e,t,n]),o}(D,w.select("lastOpenChangeReason")),el=(0,eG.useClick)(j,{enabled:!$&&"context-menu"!==L.type,event:D&&J?"click":"mousedown",toggle:!0,ignoreMouse:!1,stickIfOpen:void 0===L.type&&es}),ed=(0,ez.useFocus)(j,{enabled:!$&&eo}),eu=function(e){let{enabled:t=!0,mouseDownAction:n,open:o}=e,a=r.useRef(!1);return r.useMemo(()=>t?{onMouseDown:e=>{("open"===n&&!o||"close"===n&&o)&&(a.current=!0,(0,eH.ownerDocument)(e.currentTarget).addEventListener("click",()=>{a.current=!1},{once:!0}))},onClick:e=>{a.current&&(a.current=!1,e.preventBaseUIHandler())}}:eh.EMPTY_OBJECT,[t,n,o])}({open:D,enabled:J,mouseDownAction:"open"}),ep=r.useMemo(()=>(0,E.mergeProps)(ed.reference,el.reference),[ed.reference,el.reference]),eg=w.useState("triggerProps",K),{preFocusGuardRef:ef,handlePreFocusGuardFocus:em,handleFocusTargetFocus:ev}={preFocusGuardRef:l=r.useRef(null),handlePreFocusGuardFocus:function(e){eX.flushSync(()=>{w.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let t=(0,eZ.getTabbableBeforeElement)(l.current);t?.focus()},handleFocusTargetFocus:function(e){let t=w.select("positionerElement");if(t&&(0,eZ.isOutsideEvent)(e,t))w.context.beforeContentFocusGuardRef.current?.focus();else{eX.flushSync(()=>{w.setOpen(!1,(0,N.createChangeEventDetails)(v.REASONS.focusOut,e.nativeEvent,e.currentTarget))});let n=(0,eZ.getTabbableAfterElement)(w.context.triggerFocusTargetRef.current||F.current);for(;null!==n&&(0,eY.contains)(t,n);){let e=n;if((n=(0,eZ.getNextTabbable)(n))===e)break}n?.focus()}}},eb={disabled:$,open:D},ex=[Z,t,X,Y,F],eS=[ep,ei??eh.EMPTY_OBJECT,eg,{"aria-haspopup":"menu","aria-controls":B,id:P,onMouseDown:e=>{w.select("open")||(Q.start(200,()=>{w.context.allowMouseUpTriggerRef.current=!0}),(0,eH.ownerDocument)(e.currentTarget).addEventListener("mouseup",en,{once:!0}))}},J?{role:"menuitem"}:{},eu,k,q],ey=(0,u.useRenderElement)("button",e,{enabled:!J,stateAttributesMapping:c.pressableTriggerOpenStateMapping,state:eb,ref:ex,props:eS});return J?(0,o.jsx)(eW,{tag:"button",render:p,className:g,style:f,state:eb,refs:ex,props:eS,stateAttributesMapping:c.pressableTriggerOpenStateMapping}):D?(0,o.jsxs)(r.Fragment,{children:[(0,o.jsx)(eQ.FocusGuard,{ref:ef,onFocus:em},`${P}-pre-focus-guard`),(0,o.jsx)(r.Fragment,{children:ey},P),(0,o.jsx)(eQ.FocusGuard,{ref:w.context.triggerFocusTargetRef,onFocus:ev},`${P}-post-focus-guard`)]}):(0,o.jsx)(r.Fragment,{children:ey},P)});var e1=e.i(500325);let e4=((n={}).popupWidth="--popup-width",n.popupHeight="--popup-height",n),e5={activationDirection:e=>e?{"data-activation-direction":e}:null},e2=r.forwardRef(function(e,t){let{render:n,className:o,style:r,children:a,...i}=e,{store:l}=d(),{side:c}=s(),p=l.useState("instantType"),{children:g,state:f}=(0,e1.usePopupViewport)({store:l,side:c,cssVars:e4,children:a}),m={activationDirection:f.activationDirection,transitioning:f.transitioning,instant:p};return(0,u.useRenderElement)("div",e,{state:m,ref:t,props:[i,{children:g}],stateAttributesMapping:e5})});var e7=e.i(962337);let e9=r.forwardRef(function(e,t){let{render:n,className:o,style:i,label:l,id:p,nativeButton:g=!1,openOnHover:f=!0,delay:m=100,closeDelay:v=0,disabled:b=!1,...h}=e,x=(0,T.useCompositeListItem)({label:l}),S=s(),{store:y}=d(),R=(0,M.useBaseUiId)(p),E=y.useState("open"),C=y.useState("floatingRootContext"),I=y.useState("floatingTreeRoot"),O=y.useState("triggerPopupId",R),w=(0,eB.useTriggerRegistration)(R,y),P=r.useCallback(e=>{let t=w(e);return null!==e&&y.select("open")&&null==y.select("activeTriggerId")&&y.update({activeTriggerId:R,activeTriggerElement:e,closeDelay:v}),t},[w,v,y,R]),N=r.useRef(null),A=r.useCallback(e=>{N.current=e,y.set("activeTriggerElement",e)},[y]),j=eL();if(!j?.parentMenu)throw Error((0,a.default)(37));y.useSyncedValue("closeDelay",v);let D=j.parentMenu,B=y.useState("disabled"),F=D.useState("disabled"),L=b||B||F,U=D.useState("itemProps"),H=D.useState("isActive",x.index),_=r.useMemo(()=>({type:"submenu-trigger",setActive(){D.select("highlightItemOnHover")&&D.set("activeIndex",x.index)}}),[D,x.index]),{getItemProps:G,itemRef:z}=k({closeOnClick:!1,disabled:L,highlighted:H,id:R,store:y,typingRef:D.context.typingRef,nativeButton:g,itemMetadata:_,nodeId:S?.context.nodeId}),V=y.useState("hoverEnabled"),Y=(0,eV.useHoverReferenceInteraction)(C,{enabled:V&&f&&!L,handleClose:(0,e_.safePolygon)({blockPointerEvents:!0}),mouseOnly:!0,move:!0,restMs:m,delay:{open:m,close:v},shouldOpen:m>0?()=>D.select("allowMouseEnter"):void 0,triggerElementRef:N,externalTree:I,isClosing:()=>"ending"===y.select("transitionStatus")}),K=(0,eG.useClick)(C,{enabled:!L,event:"mousedown",toggle:!f,ignoreMouse:f,stickIfOpen:!1}).reference??eh.EMPTY_OBJECT,J=y.useState("triggerProps",!0);return delete J.id,(0,u.useRenderElement)("div",e,{state:{disabled:L,highlighted:H,open:E},stateAttributesMapping:c.triggerOpenStateMapping,props:[K,Y,J,U,{"aria-controls":O,tabIndex:E||H?0:-1,onBlur(){H&&D.set("activeIndex",null)}},h,G],ref:[t,x.ref,z,P,A]})});class e6{constructor(){this.store=new eD}open(e){let t=e?this.store.context.triggerElements.getById(e):void 0;if(e&&!t)throw Error((0,a.default)(83,e));this.store.setOpen(!0,(0,N.createChangeEventDetails)("imperative-action",void 0,t))}close(){this.store.setOpen(!1,(0,N.createChangeEventDetails)("imperative-action",void 0,void 0))}get isOpen(){return this.store.select("open")}}e.s(["Arrow",0,p,"Backdrop",0,h,"CheckboxItem",0,A,"CheckboxItemIndicator",0,B,"Group",0,L,"GroupLabel",0,H,"Handle",0,e6,"Item",0,_,"LinkItem",0,G,"Popup",0,$,"Portal",0,Z,"Positioner",0,eu,"RadioGroup",0,eg,"RadioItem",0,em,"RadioItemIndicator",0,ev,"Root",0,eU,"Separator",()=>e7.Separator,"SubmenuRoot",0,function(e){let t=d().store,n=r.useMemo(()=>({parentMenu:t}),[t]);return(0,o.jsx)(eF.Provider,{value:n,children:(0,o.jsx)(eU,{...e})})},"SubmenuTrigger",0,e9,"Trigger",0,e0,"Viewport",0,e2,"createHandle",0,function(){return new e6}],69879);var e3=e.i(69879),e3=e3,e8=e.i(152236),te=e.i(837733),te=te;function tt({align:e="start",alignOffset:t=0,side:n="bottom",sideOffset:r=4,className:a,...i}){return(0,o.jsx)(e3.Portal,{children:(0,o.jsx)(e3.Positioner,{className:"isolate z-50 outline-none",align:e,alignOffset:t,side:n,sideOffset:r,children:(0,o.jsx)(e3.Popup,{"data-slot":"dropdown-menu-content",className:(0,e8.cn)("z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-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-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95",a),...i})})})}e.i(347567),e.s(["DropdownMenu",0,function({...e}){return(0,o.jsx)(e3.Root,{"data-slot":"dropdown-menu",...e})},"DropdownMenuContent",0,tt,"DropdownMenuGroup",0,function({...e}){return(0,o.jsx)(e3.Group,{"data-slot":"dropdown-menu-group",...e})},"DropdownMenuItem",0,function({className:e,inset:t,variant:n="default",...r}){return(0,o.jsx)(e3.Item,{"data-slot":"dropdown-menu-item","data-inset":t,"data-variant":n,className:(0,e8.cn)("group/dropdown-menu-item relative flex cursor-pointer items-center gap-1.5 rounded-md px-1.5 py-1.5 text-sm outline-hidden select-none 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"," hover:bg-background ",e),...r})},"DropdownMenuLabel",0,function({className:e,inset:t,...n}){return(0,o.jsx)(e3.GroupLabel,{"data-slot":"dropdown-menu-label","data-inset":t,className:(0,e8.cn)("px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7",e),...n})},"DropdownMenuSeparator",0,function({className:e,...t}){return(0,o.jsx)(e3.Separator,{"data-slot":"dropdown-menu-separator",className:(0,e8.cn)("-mx-1 my-1 h-px bg-border",e),...t})},"DropdownMenuSub",0,function({...e}){return(0,o.jsx)(e3.SubmenuRoot,{"data-slot":"dropdown-menu-sub",...e})},"DropdownMenuSubContent",0,function({align:e="start",alignOffset:t=-3,side:n="right",sideOffset:r=0,className:a,...i}){return(0,o.jsx)(tt,{"data-slot":"dropdown-menu-sub-content",className:(0,e8.cn)("w-auto min-w-[196px]! rounded-md bg-popover p-1 text-popover-foreground 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-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","",a),align:e,alignOffset:t,side:n,sideOffset:r,...i})},"DropdownMenuSubTrigger",0,function({className:e,inset:t,children:n,...r}){return(0,o.jsxs)(e3.SubmenuTrigger,{"data-slot":"dropdown-menu-sub-trigger","data-inset":t,className:(0,e8.cn)("flex cursor-default items-center gap-1.5 rounded-md px-1.5 py-1 text-sm outline-hidden select-none not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-popup-open:bg-accent data-popup-open:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","h-8",e),...r,children:[n,(0,o.jsx)(te.default,{className:"ml-auto"})]})},"DropdownMenuTrigger",0,function({...e}){return(0,o.jsx)(e3.Trigger,{"data-slot":"dropdown-menu-trigger",...e,className:(0,e8.cn)("cursor-pointer",e.className)})}],440087)},562949,741445,e=>{"use strict";var t=e.i(874822);let n=(0,t.default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",0,n],562949);let o=(0,t.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);e.s(["EyeOff",0,o],741445)},856474,57555,266741,e=>{"use strict";var t=e.i(523829),n=e.i(152236);let o={vercel_ai_gateway:{label:"Vercel AI Gateway",iconSrc:"/icons/vercel.svg",pillBg:"bg-white dark:bg-white text-white dark:text-black"},openai:{label:"OpenAI",iconSrc:"/icons/openai.svg",pillBg:"bg-neutral-100 dark:bg-neutral-800"},anthropic:{label:"Anthropic",iconSrc:"https://models.dev/logos/anthropic.svg",pillBg:"bg-amber-50 dark:bg-amber-950/40"},google:{label:"Google",iconSrc:"/icons/gemini.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},meta:{label:"Meta",iconSrc:"https://models.dev/logos/meta.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},mistral:{label:"Mistral",iconSrc:"/icons/mistral.svg",pillBg:"bg-amber-50 dark:bg-amber-950/40"},cohere:{label:"Cohere",iconSrc:"/icons/cohere.svg",pillBg:"bg-orange-50 dark:bg-orange-950/40"},deepseek:{label:"DeepSeek",iconSrc:"https://models.dev/logos/deepseek.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},amazon:{label:"Amazon",iconSrc:"/icons/aws.svg",pillBg:"bg-orange-50 dark:bg-orange-950/40"},xai:{label:"xAI",iconSrc:"https://models.dev/logos/xai.svg",pillBg:"bg-neutral-100 dark:bg-neutral-800"},perplexity:{label:"Perplexity",iconSrc:"https://models.dev/logos/perplexity.svg",pillBg:"bg-teal-50 dark:bg-teal-950/40"},alibaba:{label:"Alibaba",iconSrc:"https://models.dev/logos/alibaba.svg",pillBg:"bg-orange-50 dark:bg-orange-950/40"},groq:{label:"Groq",iconSrc:"https://models.dev/logos/groq.svg",pillBg:"bg-orange-50 dark:bg-orange-950/40"},"together-ai":{label:"Together AI",iconSrc:"https://models.dev/logos/together-ai.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},fireworks:{label:"Fireworks",iconSrc:"https://models.dev/logos/fireworks.svg",pillBg:"bg-purple-50 dark:bg-purple-950/40"},cerebras:{label:"Cerebras",iconSrc:"https://models.dev/logos/cerebras.svg",pillBg:"bg-green-50 dark:bg-green-950/40"},voyage:{label:"Voyage AI",iconSrc:"/icons/voyage-light.png",pillBg:"bg-slate-100 dark:bg-slate-800"},jina:{label:"Jina AI",iconSrc:"/icons/jina.svg",pillBg:"bg-rose-50 dark:bg-rose-950/40"},nomic:{label:"Nomic",iconSrc:"/icons/nomic.png",pillBg:"bg-teal-50 dark:bg-teal-950/40"},minimax:{label:"MiniMax",iconSrc:"https://models.dev/logos/minimax.svg",pillBg:"bg-blue-50 dark:bg-blue-950/40"},elevenlabs:{label:"ElevenLabs",iconSrc:"https://models.dev/logos/elevenlabs.svg",pillBg:"bg-neutral-100 dark:bg-neutral-800"},custom:{label:"Custom",iconSrc:"/logo.png",pillBg:"bg-slate-100 dark:bg-slate-800"}};e.s(["PROVIDER_META",0,o,"ProviderIcon",0,function({src:e,alt:o,pillBg:r,size:a=20}){return(0,t.jsx)("span",{className:(0,n.cn)("inline-flex shrink-0 items-center justify-center rounded",r),style:{width:a,height:a},children:e?(0,t.jsx)("img",{src:e,alt:o,width:a-4,height:a-4,className:"object-contain",style:{maxWidth:a-4,maxHeight:a-4}}):null})},"getProviderMeta",0,function(e){return o[e]??{label:e.charAt(0).toUpperCase()+e.slice(1),iconSrc:`https://models.dev/logos/${e}.svg`,pillBg:"bg-slate-100 dark:bg-slate-800"}}],856474);var r=e.i(178328),a=e.i(746632),i=e.i(282879),s=e.i(466691),l=e.i(924911),d=e.i(925466),u=e.i(562949),c=e.i(741445),p=e.i(501706);let g=(0,e.i(874822).default)("cloud",[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]]);function f({onSave:e,type:n,onCancel:o}){let[i,m]=(0,r.useState)(""),[v,b]=(0,r.useState)(""),[h,x]=(0,r.useState)(!1),[S,y]=(0,r.useState)(""),[R,E]=(0,r.useState)(null),[C,I]=(0,r.useState)(!1),[O,k]=(0,r.useState)(!1),T=async()=>{if(!i||!S)return void a.toast.error("Base URL and Model Name are required");I(!0);try{if("embedding"===n){let e=await fetch("/api/config/test-embedding",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({baseUrl:i,apiKey:v,modelName:S})}),t=await e.json();if(!e.ok)throw Error(t.error||"Connection failed");E(t.dimensions),k(!0),a.toast.success(`Success! Detected ${t.dimensions} dimensions.`)}else{let e=await fetch("/api/config/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatProvider:"custom",chatApiKey:v,customChatModels:[{baseUrl:i,apiKey:v,modelName:S}]})}),t=await e.json();if(!e.ok)throw Error(t.error||"Connection failed");k(!0),a.toast.success("Success! Chat model connected.")}}catch(e){a.toast.error(e instanceof Error?e.message:"Test failed"),E(null),k(!1)}finally{I(!1)}};return(0,t.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(d.Label,{htmlFor:"baseUrl",children:"Base URL"}),(0,t.jsx)(l.Input,{id:"baseUrl",placeholder:"https://api.example.com/v1",value:i,onChange:e=>{m(e.target.value),k(!1)}})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(d.Label,{htmlFor:"apiKey",children:"API Key (Optional)"}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(l.Input,{id:"apiKey",type:h?"text":"password",placeholder:"sk-...",value:v,onChange:e=>{b(e.target.value),k(!1)},className:"pr-10"}),(0,t.jsx)("button",{type:"button",onClick:()=>x(!h),className:"absolute inset-y-0 right-0 flex items-center pr-3 text-muted-foreground hover:text-foreground",children:h?(0,t.jsx)(c.EyeOff,{className:"size-4"}):(0,t.jsx)(u.Eye,{className:"size-4"})})]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)(d.Label,{htmlFor:"modelName",children:"Model Name"}),(0,t.jsx)(l.Input,{id:"modelName",placeholder:"embedding"===n?"my-embedding-model":"my-chat-model",value:S,onChange:e=>{y(e.target.value),k(!1)}})]}),O&&(0,t.jsxs)("div",{className:"text-sm text-green-600 dark:text-green-400 font-medium",children:["✓ Connection verified ",R?`(${R} dimensions)`:""]})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between sm:justify-between items-center gap-2",children:[(0,t.jsxs)(s.Button,{variant:"outline",type:"button",onClick:T,disabled:C,children:[C?(0,t.jsx)(p.Loader2,{className:"size-4 animate-spin mr-2"}):(0,t.jsx)(g,{className:"size-4 mr-2"}),"Test Connection"]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[o&&(0,t.jsx)(s.Button,{variant:"ghost",type:"button",onClick:o,children:"Cancel"}),(0,t.jsx)(s.Button,{className:"px-5",type:"button",onClick:()=>{i&&S&&O?e({baseUrl:i,apiKey:v,modelName:S,dimensions:R??void 0}):a.toast.error("Please test the connection first.")},disabled:!O,children:"Add Model"})]})]})]})}e.s(["Cloud",0,g],57555),e.s(["CustomModelForm",0,f,"CustomModelModal",0,function({open:e,onOpenChange:n,onSave:o,type:r}){return(0,t.jsx)(i.Dialog,{open:e,onOpenChange:n,children:(0,t.jsxs)(i.DialogContent,{className:"max-w-xl",children:[(0,t.jsxs)(i.DialogHeader,{children:[(0,t.jsxs)(i.DialogTitle,{children:["Custom ","embedding"===r?"Embedding":"Chat"," Model"]}),(0,t.jsxs)(i.DialogDescription,{children:["Connect an OpenAI-compatible ","embedding"===r?"embedding":"chat"," model."]})]}),(0,t.jsx)(f,{type:r,onSave:e=>{o(e),n(!1)}})]})})}],266741)}]);
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# larkup
|
|
2
2
|
|
|
3
|
+
## 0.1.30
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fix Docker data persistence, Marketplace installs, crawler readiness, and workspace-aware RAG retrieval.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @larkup/core@0.2.3
|
|
10
|
+
- @larkup/marketplace@0.1.6
|
|
11
|
+
- @larkup/scraper@0.1.24
|
|
12
|
+
- @larkup/tool-doc-editor@0.2.4
|
|
13
|
+
- @larkup/tool-video-audio@0.2.1
|
|
14
|
+
|
|
15
|
+
## 0.1.29
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 19767f8: Fix isolated Marketplace tool loading in Docker, improve Video & Audio setup guidance, and reliably index PDF images.
|
|
20
|
+
- Updated dependencies [19767f8]
|
|
21
|
+
- @larkup/marketplace@0.1.5
|
|
22
|
+
- @larkup/tool-doc-editor@0.2.3
|
|
23
|
+
- @larkup/tool-video-audio@0.2.1
|
|
24
|
+
|
|
3
25
|
## 0.1.28
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/app/api/chat/route.ts
CHANGED
|
@@ -68,6 +68,7 @@ CONVERSATION, RETRIEVAL, AND MEDIA POLICY:
|
|
|
68
68
|
- Default to a short, direct answer. One to three sentences is usually enough; use structure only when the task is genuinely complex.
|
|
69
69
|
- Do not search for greetings, casual conversation, writing help, brainstorming, explanations you can answer reliably from general knowledge, or questions unrelated to the user's indexed data.
|
|
70
70
|
- Use searchKnowledgeBase only when the answer depends on the user's indexed/private content, an exact source-specific fact, or a topic that plausibly refers to something the user indexed.
|
|
71
|
+
- Treat questions about the user or their materials as knowledge-base questions: phrases such as "I", "my", "our", "you have", "the database", "the document", "the file", or "the diagram" require searchKnowledgeBase before answering whenever indexed content may contain the answer.
|
|
71
72
|
- Search at most once per user request unless the first search is clearly irrelevant. Never repeat a search when a prior tool result in this conversation already contains enough evidence.
|
|
72
73
|
- For a follow-up such as "show me that part", "play the clip", "show the image", or "let me hear it", reuse the mediaAssetId and timestamps already present in the earlier search result and call presentMedia directly. Do not search again just to rediscover the same media.
|
|
73
74
|
- Use presentMedia to embed exactly one best video, image, or audio citation when the user asks to see/hear it or when one compact preview materially supports the answer. Do not present every search result.
|
package/app/api/chat/tools.ts
CHANGED
|
@@ -78,7 +78,11 @@ export async function queryKnowledgeBase(query: string, topK: number, serverId:
|
|
|
78
78
|
timestamp: new Date().toISOString(),
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
// Generated servers from an older configuration can point at a
|
|
82
|
+
// different local table than the active workspace. An empty response
|
|
83
|
+
// must not hide the workspace index: fall back to direct retrieval,
|
|
84
|
+
// which resolves the active server's table consistently.
|
|
85
|
+
if (res.ok && Array.isArray(data.hits) && data.hits.length > 0) {
|
|
82
86
|
return formatKnowledgeHits(query, data.hits as any[], topK);
|
|
83
87
|
}
|
|
84
88
|
} catch {
|
|
@@ -1,36 +1,34 @@
|
|
|
1
|
-
import { NextResponse } from
|
|
2
|
-
import { embed } from
|
|
3
|
-
import { getAIModel } from
|
|
4
|
-
import type { RagConfig } from
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import { embed } from 'ai';
|
|
3
|
+
import { getAIModel } from '@larkup/core/embeddings/providers';
|
|
4
|
+
import type { RagConfig } from '@larkup/core/types';
|
|
5
|
+
import { formatErrorMessage } from '@/lib/error-formatter';
|
|
5
6
|
|
|
6
|
-
export const runtime =
|
|
7
|
+
export const runtime = 'nodejs';
|
|
7
8
|
|
|
8
9
|
export async function POST(request: Request) {
|
|
9
|
-
let body: Partial<RagConfig
|
|
10
|
+
let body: Partial<RagConfig>;
|
|
10
11
|
try {
|
|
11
|
-
body = await request.json()
|
|
12
|
+
body = await request.json();
|
|
12
13
|
} catch {
|
|
13
|
-
return NextResponse.json({ error:
|
|
14
|
+
return NextResponse.json({ error: 'Invalid JSON body' }, { status: 400 });
|
|
14
15
|
}
|
|
15
16
|
|
|
16
|
-
const { embeddingProvider, embeddingModelId } = body
|
|
17
|
+
const { embeddingProvider, embeddingModelId } = body;
|
|
17
18
|
|
|
18
19
|
if (!embeddingProvider || !embeddingModelId) {
|
|
19
20
|
return NextResponse.json(
|
|
20
|
-
{ error:
|
|
21
|
+
{ error: 'Missing required fields: embeddingProvider or embeddingModelId' },
|
|
21
22
|
{ status: 400 },
|
|
22
|
-
)
|
|
23
|
+
);
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
try {
|
|
26
|
-
const model = getAIModel(body as RagConfig)
|
|
27
|
-
const { embedding } = await embed({ model, value:
|
|
27
|
+
const model = getAIModel(body as RagConfig);
|
|
28
|
+
const { embedding } = await embed({ model, value: 'test connection' });
|
|
28
29
|
|
|
29
|
-
return NextResponse.json({ success: true, dimensions: embedding.length })
|
|
30
|
+
return NextResponse.json({ success: true, dimensions: embedding.length });
|
|
30
31
|
} catch (error) {
|
|
31
|
-
return NextResponse.json(
|
|
32
|
-
{ error: error instanceof Error ? error.message : "Connection failed. Please check your API key." },
|
|
33
|
-
{ status: 400 },
|
|
34
|
-
)
|
|
32
|
+
return NextResponse.json({ error: formatErrorMessage(error) }, { status: 400 });
|
|
35
33
|
}
|
|
36
34
|
}
|
|
@@ -11,6 +11,7 @@ import { createAnthropic } from '@ai-sdk/anthropic';
|
|
|
11
11
|
import { createGateway } from '@ai-sdk/gateway';
|
|
12
12
|
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
|
|
13
13
|
import type { CustomModelConfig } from '@larkup/core/types';
|
|
14
|
+
import { formatErrorMessage } from '@/lib/error-formatter';
|
|
14
15
|
|
|
15
16
|
export const runtime = 'nodejs';
|
|
16
17
|
|
|
@@ -178,13 +179,10 @@ export async function POST(request: Request) {
|
|
|
178
179
|
);
|
|
179
180
|
}
|
|
180
181
|
|
|
181
|
-
return NextResponse.json(
|
|
182
|
-
{ error: `Embedding verification failed: ${msg}` },
|
|
183
|
-
{ status: 400 },
|
|
184
|
-
);
|
|
182
|
+
return NextResponse.json({ error: formatErrorMessage(err) }, { status: 400 });
|
|
185
183
|
}
|
|
186
184
|
} catch (err: any) {
|
|
187
|
-
return NextResponse.json({ error:
|
|
185
|
+
return NextResponse.json({ error: formatErrorMessage(err) }, { status: 400 });
|
|
188
186
|
}
|
|
189
187
|
}
|
|
190
188
|
|
|
@@ -252,10 +250,10 @@ export async function POST(request: Request) {
|
|
|
252
250
|
);
|
|
253
251
|
}
|
|
254
252
|
|
|
255
|
-
return NextResponse.json({ error:
|
|
253
|
+
return NextResponse.json({ error: formatErrorMessage(err) }, { status: 400 });
|
|
256
254
|
}
|
|
257
255
|
} catch (err: any) {
|
|
258
|
-
return NextResponse.json({ error:
|
|
256
|
+
return NextResponse.json({ error: formatErrorMessage(err) }, { status: 400 });
|
|
259
257
|
}
|
|
260
258
|
}
|
|
261
259
|
|
|
@@ -50,10 +50,18 @@ async function describeImage(req: Request) {
|
|
|
50
50
|
type: 'text',
|
|
51
51
|
text: prompt || defaultPrompt,
|
|
52
52
|
},
|
|
53
|
-
...images.map((image) =>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
...images.map((image) => {
|
|
54
|
+
const data = image.startsWith('data:') ? image : `data:image/jpeg;base64,${image}`;
|
|
55
|
+
const mediaType = data.match(/^data:([^;,]+)/)?.[1] || 'image/jpeg';
|
|
56
|
+
return {
|
|
57
|
+
// AI SDK 6 uses file parts for every binary attachment. The
|
|
58
|
+
// legacy `image` part emits a deprecation warning on every
|
|
59
|
+
// PDF/image analysis request.
|
|
60
|
+
type: 'file' as const,
|
|
61
|
+
mediaType,
|
|
62
|
+
data,
|
|
63
|
+
};
|
|
64
|
+
}),
|
|
57
65
|
],
|
|
58
66
|
},
|
|
59
67
|
],
|
|
@@ -34,7 +34,7 @@ export async function GET() {
|
|
|
34
34
|
compose: sibling.available,
|
|
35
35
|
message: sibling.available
|
|
36
36
|
? 'Crawler service is running.'
|
|
37
|
-
: 'Crawler service is not
|
|
37
|
+
: 'Crawler service is not available for this Docker installation.',
|
|
38
38
|
},
|
|
39
39
|
runtimeEnv,
|
|
40
40
|
});
|
package/app/api/jobs/route.ts
CHANGED
|
@@ -23,8 +23,7 @@ export async function POST(req: Request) {
|
|
|
23
23
|
if (!(await isFirecrawlConfigured())) {
|
|
24
24
|
return NextResponse.json(
|
|
25
25
|
{
|
|
26
|
-
error:
|
|
27
|
-
'No Firecrawl available. Launch a local instance or set FIRECRAWL_API_KEY to run scraping jobs.',
|
|
26
|
+
error: 'No web crawler is available. Choose and configure a crawler provider in Settings.',
|
|
28
27
|
},
|
|
29
28
|
{ status: 401 },
|
|
30
29
|
);
|
|
@@ -74,7 +74,7 @@ function formatCost(cost: number): string {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
export function AnalyticsDashboard() {
|
|
77
|
-
const [activeTab, setActiveTab] = useState('
|
|
77
|
+
const [activeTab, setActiveTab] = useState('indexing');
|
|
78
78
|
const [timeframe, setTimeframe] = useState('14d');
|
|
79
79
|
|
|
80
80
|
const {
|