sparkecoder 0.1.39 → 0.1.40
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/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/web/.next/server/app/(main)/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/installation.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs/installation.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/installation.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/skills.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs/skills.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/skills.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs/tools.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs/tools.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs/tools.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.html +2 -2
- package/web/.next/standalone/web/.next/server/app/docs.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/docs.segments/docs.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.html +1 -1
- package/web/.next/standalone/web/.next/server/app/index.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/!KG1haW4p.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_src_app_(main)_page_tsx_5ac4794b._.js +1 -1
- package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/standalone/web/.next/static/chunks/3425251cd978da61.js +1 -0
- package/web/.next/standalone/web/.next/static/static/chunks/3425251cd978da61.js +1 -0
- package/web/.next/standalone/web/src/app/(main)/page.tsx +49 -3
- package/web/.next/static/chunks/3425251cd978da61.js +1 -0
- package/web/.next/standalone/web/.next/static/chunks/ad6b9dbb257d62cc.js +0 -1
- package/web/.next/standalone/web/.next/static/static/chunks/ad6b9dbb257d62cc.js +0 -1
- package/web/.next/static/chunks/ad6b9dbb257d62cc.js +0 -1
- /package/web/.next/standalone/web/.next/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_ssgManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_ssgManifest.js +0 -0
- /package/web/.next/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_buildManifest.js +0 -0
- /package/web/.next/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{R4igZ1SciVzjCAWYX0l99 → jybk5cjreBvhl2R6-xEEB}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
2
|
-
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/651e187cc15d66de.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[488287,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"default\"]\n3:I[174895,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"default\"]\n4:I[151858,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[151858,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"ViewportBoundary\"]\n9:I[151858,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"MetadataBoundary\"]\nb:I[552576,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
1
|
+
<!DOCTYPE html><!--jybk5cjreBvhl2R6_xEEB--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/651e187cc15d66de.js"/><script src="/_next/static/chunks/b9ad1584d4e11d12.js" async=""></script><script src="/_next/static/chunks/a14243261b055626.js" async=""></script><script src="/_next/static/chunks/186e0c1b3ff43c9c.js" async=""></script><script src="/_next/static/chunks/862ced58ce21a270.js" async=""></script><script src="/_next/static/chunks/turbopack-597558bb7b6982f6.js" async=""></script><script src="/_next/static/chunks/9b5512fb633ef95d.js" async=""></script><script src="/_next/static/chunks/0f1cf11540868e42.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><link rel="icon" href="/favicon.ico?favicon.e3cbed1b.ico" sizes="256x256" type="image/x-icon"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/651e187cc15d66de.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[488287,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"default\"]\n3:I[174895,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"default\"]\n4:I[151858,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[151858,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"ViewportBoundary\"]\n9:I[151858,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"MetadataBoundary\"]\nb:I[552576,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"jybk5cjreBvhl2R6-xEEB\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"c:I[349310,[\"/_next/static/chunks/9b5512fb633ef95d.js\",\"/_next/static/chunks/0f1cf11540868e42.js\"],\"IconMark\"]\n6:null\na:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.e3cbed1b.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$Lc\",\"1\",{}]]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"onHQtP+UceXIUzElrYtiDFqlj9s4nEHJIEA5gFOqbxM=\"\n}"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77589,e=>{"use strict";let t=(0,e.i(292511).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["default",()=>t])},416667,e=>{"use strict";let t=(0,e.i(292511).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["default",()=>t])},191729,772857,e=>{"use strict";let t=(0,e.i(292511).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["default",()=>t],191729);var r=e.i(414294),l=e.i(430878);e.i(773340);var o=e.i(309945),n=Symbol("radix.slottable");function s(e){return l.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===n}var i=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var n,i;let a,c,d,u=(i=n=`Primitive.${t}`,(a=l.forwardRef((e,t)=>{let{children:r,...n}=e;if(l.isValidElement(r)){var s;let e,i,a=(s=r,(i=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(i=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),c=function(e,t){let r={...t};for(let l in t){let o=e[l],n=t[l];/^on[A-Z]/.test(l)?o&&n?r[l]=(...e)=>{let t=n(...e);return o(...e),t}:o&&(r[l]=o):"style"===l?r[l]={...o,...n}:"className"===l&&(r[l]=[o,n].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props);return r.type!==l.Fragment&&(c.ref=t?(0,o.composeRefs)(t,a):a),l.cloneElement(r,c)}return l.Children.count(r)>1?l.Children.only(null):null})).displayName=`${i}.SlotClone`,c=a,(d=l.forwardRef((e,t)=>{let{children:o,...n}=e,i=l.Children.toArray(o),a=i.find(s);if(a){let e=a.props.children,o=i.map(t=>t!==a?t:l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null);return(0,r.jsx)(c,{...n,ref:t,children:l.isValidElement(e)?l.cloneElement(e,void 0,o):null})}return(0,r.jsx)(c,{...n,ref:t,children:o})})).displayName=`${n}.Slot`,d),p=l.forwardRef((e,l)=>{let{asChild:o,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,r.jsx)(o?u:t,{...n,ref:l})});return p.displayName=`Primitive.${t}`,{...e,[t]:p}},{}),a=e.i(395509),c=e.i(897462),d=e.i(542899),u=e.i(995945),p=e.i(992421),f=e.i(241416),m="ScrollArea",[h,x]=function(e,t=[]){let o=[],n=()=>{let t=o.map(e=>l.createContext(e));return function(r){let o=r?.[e]||t;return l.useMemo(()=>({[`__scope${e}`]:{...r,[e]:o}}),[r,o])}};return n.scopeName=e,[function(t,n){let s=l.createContext(n),i=o.length;o=[...o,n];let a=t=>{let{scope:o,children:n,...a}=t,c=o?.[e]?.[i]||s,d=l.useMemo(()=>a,Object.values(a));return(0,r.jsx)(c.Provider,{value:d,children:n})};return a.displayName=t+"Provider",[a,function(r,o){let a=o?.[e]?.[i]||s,c=l.useContext(a);if(c)return c;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=r.reduce((t,{useScope:r,scopeName:l})=>{let o=r(e)[`__scope${l}`];return{...t,...o}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return r.scopeName=t.scopeName,r}(n,...t)]}(m),[v,g]=h(m),w=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:s="hover",dir:a,scrollHideDelay:c=600,...u}=e,[p,f]=l.useState(null),[m,h]=l.useState(null),[x,g]=l.useState(null),[w,b]=l.useState(null),[y,j]=l.useState(null),[S,C]=l.useState(0),[N,E]=l.useState(0),[R,T]=l.useState(!1),[P,k]=l.useState(!1),A=(0,o.useComposedRefs)(t,e=>f(e)),L=(0,d.useDirection)(a);return(0,r.jsx)(v,{scope:n,type:s,dir:L,scrollHideDelay:c,scrollArea:p,viewport:m,onViewportChange:h,content:x,onContentChange:g,scrollbarX:w,onScrollbarXChange:b,scrollbarXEnabled:R,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:j,scrollbarYEnabled:P,onScrollbarYEnabledChange:k,onCornerWidthChange:C,onCornerHeightChange:E,children:(0,r.jsx)(i.div,{dir:L,...u,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":N+"px",...e.style}})})});w.displayName=m;var b="ScrollAreaViewport",y=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:s,nonce:a,...c}=e,d=g(b,n),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,d.onViewportChange);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,r.jsx)(i.div,{"data-radix-scroll-area-viewport":"",...c,ref:p,style:{overflowX:d.scrollbarXEnabled?"scroll":"hidden",overflowY:d.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,r.jsx)("div",{ref:d.onContentChange,style:{minWidth:"100%",display:"table"},children:s})})]})});y.displayName=b;var j="ScrollAreaScrollbar",S=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,s=g(j,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,c="horizontal"===e.orientation;return l.useEffect(()=>(c?i(!0):a(!0),()=>{c?i(!1):a(!1)}),[c,i,a]),"hover"===s.type?(0,r.jsx)(C,{...n,ref:t,forceMount:o}):"scroll"===s.type?(0,r.jsx)(N,{...n,ref:t,forceMount:o}):"auto"===s.type?(0,r.jsx)(E,{...n,ref:t,forceMount:o}):"always"===s.type?(0,r.jsx)(R,{...n,ref:t}):null});S.displayName=j;var C=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,s=g(j,e.__scopeScrollArea),[i,c]=l.useState(!1);return l.useEffect(()=>{let e=s.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),c(!0)},l=()=>{t=window.setTimeout(()=>c(!1),s.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",l),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",l)}}},[s.scrollArea,s.scrollHideDelay]),(0,r.jsx)(a.Presence,{present:o||i,children:(0,r.jsx)(E,{"data-state":i?"visible":"hidden",...n,ref:t})})}),N=l.forwardRef((e,t)=>{var o;let{forceMount:n,...s}=e,i=g(j,e.__scopeScrollArea),c="horizontal"===e.orientation,d=V(()=>p("SCROLL_END"),100),[u,p]=(o={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},l.useReducer((e,t)=>o[e][t]??e,"hidden"));return l.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>p("HIDE"),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,i.scrollHideDelay,p]),l.useEffect(()=>{let e=i.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],l=()=>{let l=e[t];r!==l&&(p("SCROLL"),d()),r=l};return e.addEventListener("scroll",l),()=>e.removeEventListener("scroll",l)}},[i.viewport,c,p,d]),(0,r.jsx)(a.Presence,{present:n||"hidden"!==u,children:(0,r.jsx)(R,{"data-state":"hidden"===u?"hidden":"visible",...s,ref:t,onPointerEnter:(0,f.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,f.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),E=l.forwardRef((e,t)=>{let o=g(j,e.__scopeScrollArea),{forceMount:n,...s}=e,[i,c]=l.useState(!1),d="horizontal"===e.orientation,u=V(()=>{if(o.viewport){let e=o.viewport.offsetWidth<o.viewport.scrollWidth,t=o.viewport.offsetHeight<o.viewport.scrollHeight;c(d?e:t)}},10);return Y(o.viewport,u),Y(o.content,u),(0,r.jsx)(a.Presence,{present:n||i,children:(0,r.jsx)(R,{"data-state":i?"visible":"hidden",...s,ref:t})})}),R=l.forwardRef((e,t)=>{let{orientation:o="vertical",...n}=e,s=g(j,e.__scopeScrollArea),i=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=$(c.viewport,c.content),p={...n,sizes:c,onSizesChange:d,hasThumb:!!(u>0&&u<1),onThumbChange:e=>i.current=e,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:e=>a.current=e};function f(e,t){return function(e,t,r,l="ltr"){let o=O(r),n=t||o/2,s=r.scrollbar.paddingStart+n,i=r.scrollbar.size-r.scrollbar.paddingEnd-(o-n),a=r.content-r.viewport;return B([s,i],"ltr"===l?[0,a]:[-1*a,0])(e)}(e,a.current,c,t)}return"horizontal"===o?(0,r.jsx)(T,{...p,ref:t,onThumbPositionChange:()=>{if(s.viewport&&i.current){let e=F(s.viewport.scrollLeft,c,s.dir);i.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollLeft=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollLeft=f(e,s.dir))}}):"vertical"===o?(0,r.jsx)(P,{...p,ref:t,onThumbPositionChange:()=>{if(s.viewport&&i.current){let e=F(s.viewport.scrollTop,c);i.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollTop=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollTop=f(e))}}):null}),T=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:s,...i}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarXChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"horizontal",...i,ref:p,sizes:n,style:{bottom:0,left:"rtl"===a.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===a.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":O(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&s({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:W(c.paddingLeft),paddingEnd:W(c.paddingRight)}})}})}),P=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:s,...i}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarYChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"vertical",...i,ref:p,sizes:n,style:{top:0,right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":O(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&s({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:W(c.paddingTop),paddingEnd:W(c.paddingBottom)}})}})}),[k,A]=h(j),L=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:s,hasThumb:a,onThumbChange:d,onThumbPointerUp:u,onThumbPointerDown:p,onThumbPositionChange:m,onDragScroll:h,onWheelScroll:x,onResize:v,...w}=e,b=g(j,n),[y,S]=l.useState(null),C=(0,o.useComposedRefs)(t,e=>S(e)),N=l.useRef(null),E=l.useRef(""),R=b.viewport,T=s.content-s.viewport,P=(0,c.useCallbackRef)(x),A=(0,c.useCallbackRef)(m),L=V(v,10);function _(e){N.current&&h({x:e.clientX-N.current.left,y:e.clientY-N.current.top})}return l.useEffect(()=>{let e=e=>{let t=e.target;y?.contains(t)&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[R,y,T,P]),l.useEffect(A,[s,A]),Y(y,L),Y(b.content,L),(0,r.jsx)(k,{scope:n,scrollbar:y,hasThumb:a,onThumbChange:(0,c.useCallbackRef)(d),onThumbPointerUp:(0,c.useCallbackRef)(u),onThumbPositionChange:A,onThumbPointerDown:(0,c.useCallbackRef)(p),children:(0,r.jsx)(i.div,{...w,ref:C,style:{position:"absolute",...w.style},onPointerDown:(0,f.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),N.current=y.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",b.viewport&&(b.viewport.style.scrollBehavior="auto"),_(e))}),onPointerMove:(0,f.composeEventHandlers)(e.onPointerMove,_),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,b.viewport&&(b.viewport.style.scrollBehavior=""),N.current=null})})})}),_="ScrollAreaThumb",D=l.forwardRef((e,t)=>{let{forceMount:l,...o}=e,n=A(_,e.__scopeScrollArea);return(0,r.jsx)(a.Presence,{present:l||n.hasThumb,children:(0,r.jsx)(z,{ref:t,...o})})}),z=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:s,...a}=e,c=g(_,n),d=A(_,n),{onThumbPositionChange:u}=d,p=(0,o.useComposedRefs)(t,e=>d.onThumbChange(e)),m=l.useRef(void 0),h=V(()=>{m.current&&(m.current(),m.current=void 0)},100);return l.useEffect(()=>{let e=c.viewport;if(e){let t=()=>{h(),m.current||(m.current=U(e,u),u())};return u(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[c.viewport,h,u]),(0,r.jsx)(i.div,{"data-state":d.hasThumb?"visible":"hidden",...a,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...s},onPointerDownCapture:(0,f.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,l=e.clientY-t.top;d.onThumbPointerDown({x:r,y:l})}),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,d.onThumbPointerUp)})});D.displayName=_;var I="ScrollAreaCorner",H=l.forwardRef((e,t)=>{let l=g(I,e.__scopeScrollArea),o=!!(l.scrollbarX&&l.scrollbarY);return"scroll"!==l.type&&o?(0,r.jsx)(M,{...e,ref:t}):null});H.displayName=I;var M=l.forwardRef((e,t)=>{let{__scopeScrollArea:o,...n}=e,s=g(I,o),[a,c]=l.useState(0),[d,u]=l.useState(0),p=!!(a&&d);return Y(s.scrollbarX,()=>{let e=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(e),u(e)}),Y(s.scrollbarY,()=>{let e=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(e),c(e)}),p?(0,r.jsx)(i.div,{...n,ref:t,style:{width:a,height:d,position:"absolute",right:"ltr"===s.dir?0:void 0,left:"rtl"===s.dir?0:void 0,bottom:0,...e.style}}):null});function W(e){return e?parseInt(e,10):0}function $(e,t){let r=e/t;return isNaN(r)?0:r}function O(e){let t=$(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function F(e,t,r="ltr"){let l=O(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-o,s=t.content-t.viewport,i=(0,p.clamp)(e,"ltr"===r?[0,s]:[-1*s,0]);return B([0,s],[0,n-l])(i)}function B(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let l=(t[1]-t[0])/(e[1]-e[0]);return t[0]+l*(r-e[0])}}var U=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},l=0;return!function o(){let n={left:e.scrollLeft,top:e.scrollTop},s=r.left!==n.left,i=r.top!==n.top;(s||i)&&t(),r=n,l=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(l)};function V(e,t){let r=(0,c.useCallbackRef)(e),o=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(o.current),[]),l.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(r,t)},[r,t])}function Y(e,t){let r=(0,c.useCallbackRef)(t);(0,u.useLayoutEffect)(()=>{let t=0;if(e){let l=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return l.observe(e),()=>{window.cancelAnimationFrame(t),l.unobserve(e)}}},[e,r])}var X=e.i(555552);function K({className:e,children:t,...l}){return(0,r.jsxs)(w,{"data-slot":"scroll-area",className:(0,X.cn)("relative",e),...l,children:[(0,r.jsx)(y,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,r.jsx)(q,{}),(0,r.jsx)(H,{})]})}function q({className:e,orientation:t="vertical",...l}){return(0,r.jsx)(S,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,X.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...l,children:(0,r.jsx)(D,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}e.s(["ScrollArea",()=>K,"ScrollBar",()=>q],772857)},375635,e=>{"use strict";var t=e.i(414294),r=e.i(430878),l=e.i(353913),o=e.i(292623),n=e.i(504561),s=e.i(996720),i=e.i(461957),a=e.i(846193),c=e.i(77589),c=c,d=e.i(416667),d=d,u=e.i(667249),p=e.i(191729),p=p,f=e.i(904781),m=e.i(87614),h=e.i(666904),x=e.i(77982),v=e.i(772857),g=e.i(524741),w=e.i(739963),b=e.i(300739),y=e.i(555552);function j(){let e=(0,l.useRouter)(),j=(0,l.useSearchParams)(),{sessions:S,isLoading:C}=(0,b.useSessions)(),[N,E]=(0,r.useState)(!1),[R,T]=(0,r.useState)(null),[P,k]=(0,r.useState)(""),[A,L]=(0,r.useState)(!1),[_,D]=(0,r.useState)(null),[z,I]=(0,r.useState)(null),H=(0,r.useRef)(!1),M=async(e,t)=>{e.preventDefault(),e.stopPropagation();try{await (0,g.deleteSession)(t),(0,b.mutateSessions)()}catch(e){console.error("Failed to delete session:",e)}};(0,r.useEffect)(()=>{(0,w.getConfig)().then(T)},[]),(0,r.useEffect)(()=>{j.has("new")&&R&&R.apiKeyConfigured&&!H.current&&!N&&(H.current=!0,(async()=>{E(!0);try{let t=await (0,g.createSession)({name:`Session ${S.length+1}`,model:R.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:R.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.replace(`/session/${t.id}`)}catch(e){console.error("Failed to auto-create session:",e),E(!1)}})())},[j,R,S.length,N,e]),(0,r.useEffect)(()=>{j.has("latest")&&!C&&S.length>0&&e.replace(`/session/${S[0].id}`)},[j,C,S,e]);let W=async()=>{if(P.trim()&&!A){L(!0),D(null);try{if((await (0,g.setApiKey)("ai-gateway",P.trim())).success){let e=await (0,w.getConfig)();T(e),k("")}else D("Failed to save API key. Please try again.")}catch(e){D("Failed to save API key. Please try again.")}finally{L(!1)}}},$=async()=>{if(!N){E(!0);try{let t=await (0,g.createSession)({name:`Session ${S.length+1}`,model:R?.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:R?.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.push(`/session/${t.id}`)}catch(e){console.error("Failed to create session:",e)}finally{E(!1)}}};return((0,r.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"t"===e.key&&(e.preventDefault(),$())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[N,S.length,R]),R&&!R.apiKeyConfigured)?(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover",priority:!0})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsxs)("div",{className:"bg-muted/50 rounded-lg p-6 mb-6 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(a.Key,{className:"size-5 text-amber-500"}),(0,t.jsx)("h2",{className:"font-semibold",children:"API Key Required"})]}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"SparkECoder uses the Vercel AI Gateway. Enter your API key to get started."}),(0,t.jsxs)("div",{className:"flex gap-2 mb-3",children:[(0,t.jsx)(x.Input,{type:"password",placeholder:"Enter your AI Gateway API key",value:P,onChange:e=>k(e.target.value),onKeyDown:e=>"Enter"===e.key&&W(),className:"flex-1"}),(0,t.jsx)(h.Button,{onClick:W,disabled:!P.trim()||A,children:A?(0,t.jsx)(i.Loader2,{className:"size-4 animate-spin"}):"Save"})]}),_&&(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-destructive mb-3",children:[(0,t.jsx)(d.default,{className:"size-4"}),_]}),(0,t.jsxs)("a",{href:"https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-sm text-primary hover:underline",children:["Get an API key from Vercel",(0,t.jsx)(c.default,{className:"size-3"})]})]})]})}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20 overflow-auto",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"relative group cursor-pointer",children:[(0,t.jsx)("div",{className:"absolute inset-0 rounded-3xl blur-2xl opacity-40 group-hover:opacity-60 transition-opacity bg-primary/30"}),(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10 hover-lift",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover sparke-idle",priority:!0})})]})}),(0,t.jsx)(m.TooltipContent,{children:"Meet Sparke, your coding companion!"})]})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsx)("p",{className:"text-muted-foreground mb-8 leading-relaxed",children:"Your AI-powered coding assistant. Start a new session to begin building amazing things."}),(0,t.jsx)(h.Button,{size:"lg",onClick:$,disabled:N,className:"gap-2 px-8",children:N?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Loader2,{className:"size-4 animate-spin"}),"Creating..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Plus,{className:"size-4"}),"Start a Session"]})}),(0,t.jsxs)("p",{className:"mt-6 text-xs text-muted-foreground/70",children:["Press ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"⌘"})," + ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"T"})," to create a new session"]}),!C&&S.length>0&&(0,t.jsxs)("div",{className:"mt-10 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(p.default,{className:"size-4 text-muted-foreground"}),(0,t.jsx)("h2",{className:"text-sm font-medium text-muted-foreground",children:"Recent Sessions"})]}),(0,t.jsx)("div",{className:"rounded-xl border border-border/60 bg-card/50 backdrop-blur-sm overflow-hidden",children:(0,t.jsx)(v.ScrollArea,{className:(0,y.cn)(S.length>5?"h-[280px]":""),children:(0,t.jsx)("div",{className:"divide-y divide-border/40",children:S.map(e=>{let r,l,o,s,i=z===e.id,a=!0===e.isStreaming;return(0,t.jsxs)(n.default,{href:`/session/${e.id}`,className:(0,y.cn)("flex items-center gap-3 p-3 transition-colors hover:bg-accent/50 group",a&&"bg-emerald-500/5"),onMouseEnter:()=>I(e.id),onMouseLeave:()=>I(null),children:[(0,t.jsx)("div",{className:(0,y.cn)("size-9 rounded-lg flex items-center justify-center shrink-0 transition-colors",a?"bg-emerald-500/10":"bg-muted/60 group-hover:bg-muted"),children:a?(0,t.jsx)("span",{className:"size-2.5 rounded-full bg-emerald-500 animate-pulse"}):(0,t.jsx)(u.MessageSquare,{className:"size-4 text-muted-foreground"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:(0,y.cn)("text-sm font-medium truncate",a&&"text-emerald-600 dark:text-emerald-400"),children:e.name||"Untitled Session"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a?(0,t.jsx)("span",{className:"text-emerald-600 dark:text-emerald-400",children:"Active now"}):"waiting"===e.status?(0,t.jsx)("span",{className:"text-amber-600 dark:text-amber-400",children:"Waiting for input"}):(r=new Date(e.updatedAt||e.createdAt),s=Math.floor((o=Math.floor((l=Math.floor(Math.floor((new Date().getTime()-r.getTime())/1e3)/60))/60))/24),l<1?"just now":1===l?"1 minute ago":l<60?`${l} minutes ago`:1===o?"1 hour ago":o<24?`${o} hours ago`:1===s?"yesterday":s<7?`${s} days ago`:`${Math.floor(s/7)} weeks ago`)})]}),i&&(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(h.Button,{size:"icon",variant:"ghost",className:"size-7 shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors",onClick:t=>M(t,e.id),children:(0,t.jsx)(f.Trash2,{className:"size-3.5"})})}),(0,t.jsx)(m.TooltipContent,{children:"Delete session"})]})})]},e.id)})})})})]})]})})}function S(){return(0,t.jsx)(r.Suspense,{fallback:(0,t.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,t.jsx)(i.Loader2,{className:"size-6 animate-spin text-muted-foreground"})}),children:(0,t.jsx)(j,{})})}e.s(["default",()=>S],375635)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77589,e=>{"use strict";let t=(0,e.i(292511).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["default",()=>t])},416667,e=>{"use strict";let t=(0,e.i(292511).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["default",()=>t])},191729,772857,e=>{"use strict";let t=(0,e.i(292511).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["default",()=>t],191729);var r=e.i(414294),l=e.i(430878);e.i(773340);var o=e.i(309945),n=Symbol("radix.slottable");function s(e){return l.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===n}var i=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var n,i;let a,c,d,u=(i=n=`Primitive.${t}`,(a=l.forwardRef((e,t)=>{let{children:r,...n}=e;if(l.isValidElement(r)){var s;let e,i,a=(s=r,(i=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(i=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),c=function(e,t){let r={...t};for(let l in t){let o=e[l],n=t[l];/^on[A-Z]/.test(l)?o&&n?r[l]=(...e)=>{let t=n(...e);return o(...e),t}:o&&(r[l]=o):"style"===l?r[l]={...o,...n}:"className"===l&&(r[l]=[o,n].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props);return r.type!==l.Fragment&&(c.ref=t?(0,o.composeRefs)(t,a):a),l.cloneElement(r,c)}return l.Children.count(r)>1?l.Children.only(null):null})).displayName=`${i}.SlotClone`,c=a,(d=l.forwardRef((e,t)=>{let{children:o,...n}=e,i=l.Children.toArray(o),a=i.find(s);if(a){let e=a.props.children,o=i.map(t=>t!==a?t:l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null);return(0,r.jsx)(c,{...n,ref:t,children:l.isValidElement(e)?l.cloneElement(e,void 0,o):null})}return(0,r.jsx)(c,{...n,ref:t,children:o})})).displayName=`${n}.Slot`,d),p=l.forwardRef((e,l)=>{let{asChild:o,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,r.jsx)(o?u:t,{...n,ref:l})});return p.displayName=`Primitive.${t}`,{...e,[t]:p}},{}),a=e.i(395509),c=e.i(897462),d=e.i(542899),u=e.i(995945),p=e.i(992421),f=e.i(241416),m="ScrollArea",[h,x]=function(e,t=[]){let o=[],n=()=>{let t=o.map(e=>l.createContext(e));return function(r){let o=r?.[e]||t;return l.useMemo(()=>({[`__scope${e}`]:{...r,[e]:o}}),[r,o])}};return n.scopeName=e,[function(t,n){let s=l.createContext(n),i=o.length;o=[...o,n];let a=t=>{let{scope:o,children:n,...a}=t,c=o?.[e]?.[i]||s,d=l.useMemo(()=>a,Object.values(a));return(0,r.jsx)(c.Provider,{value:d,children:n})};return a.displayName=t+"Provider",[a,function(r,o){let a=o?.[e]?.[i]||s,c=l.useContext(a);if(c)return c;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=r.reduce((t,{useScope:r,scopeName:l})=>{let o=r(e)[`__scope${l}`];return{...t,...o}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return r.scopeName=t.scopeName,r}(n,...t)]}(m),[v,g]=h(m),w=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:s="hover",dir:a,scrollHideDelay:c=600,...u}=e,[p,f]=l.useState(null),[m,h]=l.useState(null),[x,g]=l.useState(null),[w,b]=l.useState(null),[y,j]=l.useState(null),[S,C]=l.useState(0),[N,E]=l.useState(0),[R,T]=l.useState(!1),[P,k]=l.useState(!1),A=(0,o.useComposedRefs)(t,e=>f(e)),L=(0,d.useDirection)(a);return(0,r.jsx)(v,{scope:n,type:s,dir:L,scrollHideDelay:c,scrollArea:p,viewport:m,onViewportChange:h,content:x,onContentChange:g,scrollbarX:w,onScrollbarXChange:b,scrollbarXEnabled:R,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:j,scrollbarYEnabled:P,onScrollbarYEnabledChange:k,onCornerWidthChange:C,onCornerHeightChange:E,children:(0,r.jsx)(i.div,{dir:L,...u,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":N+"px",...e.style}})})});w.displayName=m;var b="ScrollAreaViewport",y=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:s,nonce:a,...c}=e,d=g(b,n),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,d.onViewportChange);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,r.jsx)(i.div,{"data-radix-scroll-area-viewport":"",...c,ref:p,style:{overflowX:d.scrollbarXEnabled?"scroll":"hidden",overflowY:d.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,r.jsx)("div",{ref:d.onContentChange,style:{minWidth:"100%",display:"table"},children:s})})]})});y.displayName=b;var j="ScrollAreaScrollbar",S=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,s=g(j,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,c="horizontal"===e.orientation;return l.useEffect(()=>(c?i(!0):a(!0),()=>{c?i(!1):a(!1)}),[c,i,a]),"hover"===s.type?(0,r.jsx)(C,{...n,ref:t,forceMount:o}):"scroll"===s.type?(0,r.jsx)(N,{...n,ref:t,forceMount:o}):"auto"===s.type?(0,r.jsx)(E,{...n,ref:t,forceMount:o}):"always"===s.type?(0,r.jsx)(R,{...n,ref:t}):null});S.displayName=j;var C=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,s=g(j,e.__scopeScrollArea),[i,c]=l.useState(!1);return l.useEffect(()=>{let e=s.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),c(!0)},l=()=>{t=window.setTimeout(()=>c(!1),s.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",l),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",l)}}},[s.scrollArea,s.scrollHideDelay]),(0,r.jsx)(a.Presence,{present:o||i,children:(0,r.jsx)(E,{"data-state":i?"visible":"hidden",...n,ref:t})})}),N=l.forwardRef((e,t)=>{var o;let{forceMount:n,...s}=e,i=g(j,e.__scopeScrollArea),c="horizontal"===e.orientation,d=V(()=>p("SCROLL_END"),100),[u,p]=(o={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},l.useReducer((e,t)=>o[e][t]??e,"hidden"));return l.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>p("HIDE"),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,i.scrollHideDelay,p]),l.useEffect(()=>{let e=i.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],l=()=>{let l=e[t];r!==l&&(p("SCROLL"),d()),r=l};return e.addEventListener("scroll",l),()=>e.removeEventListener("scroll",l)}},[i.viewport,c,p,d]),(0,r.jsx)(a.Presence,{present:n||"hidden"!==u,children:(0,r.jsx)(R,{"data-state":"hidden"===u?"hidden":"visible",...s,ref:t,onPointerEnter:(0,f.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,f.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),E=l.forwardRef((e,t)=>{let o=g(j,e.__scopeScrollArea),{forceMount:n,...s}=e,[i,c]=l.useState(!1),d="horizontal"===e.orientation,u=V(()=>{if(o.viewport){let e=o.viewport.offsetWidth<o.viewport.scrollWidth,t=o.viewport.offsetHeight<o.viewport.scrollHeight;c(d?e:t)}},10);return Y(o.viewport,u),Y(o.content,u),(0,r.jsx)(a.Presence,{present:n||i,children:(0,r.jsx)(R,{"data-state":i?"visible":"hidden",...s,ref:t})})}),R=l.forwardRef((e,t)=>{let{orientation:o="vertical",...n}=e,s=g(j,e.__scopeScrollArea),i=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=$(c.viewport,c.content),p={...n,sizes:c,onSizesChange:d,hasThumb:!!(u>0&&u<1),onThumbChange:e=>i.current=e,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:e=>a.current=e};function f(e,t){return function(e,t,r,l="ltr"){let o=O(r),n=t||o/2,s=r.scrollbar.paddingStart+n,i=r.scrollbar.size-r.scrollbar.paddingEnd-(o-n),a=r.content-r.viewport;return B([s,i],"ltr"===l?[0,a]:[-1*a,0])(e)}(e,a.current,c,t)}return"horizontal"===o?(0,r.jsx)(T,{...p,ref:t,onThumbPositionChange:()=>{if(s.viewport&&i.current){let e=F(s.viewport.scrollLeft,c,s.dir);i.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollLeft=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollLeft=f(e,s.dir))}}):"vertical"===o?(0,r.jsx)(P,{...p,ref:t,onThumbPositionChange:()=>{if(s.viewport&&i.current){let e=F(s.viewport.scrollTop,c);i.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollTop=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollTop=f(e))}}):null}),T=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:s,...i}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarXChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"horizontal",...i,ref:p,sizes:n,style:{bottom:0,left:"rtl"===a.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===a.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":O(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&s({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:W(c.paddingLeft),paddingEnd:W(c.paddingRight)}})}})}),P=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:s,...i}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarYChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"vertical",...i,ref:p,sizes:n,style:{top:0,right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":O(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&s({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:W(c.paddingTop),paddingEnd:W(c.paddingBottom)}})}})}),[k,A]=h(j),L=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:s,hasThumb:a,onThumbChange:d,onThumbPointerUp:u,onThumbPointerDown:p,onThumbPositionChange:m,onDragScroll:h,onWheelScroll:x,onResize:v,...w}=e,b=g(j,n),[y,S]=l.useState(null),C=(0,o.useComposedRefs)(t,e=>S(e)),N=l.useRef(null),E=l.useRef(""),R=b.viewport,T=s.content-s.viewport,P=(0,c.useCallbackRef)(x),A=(0,c.useCallbackRef)(m),L=V(v,10);function _(e){N.current&&h({x:e.clientX-N.current.left,y:e.clientY-N.current.top})}return l.useEffect(()=>{let e=e=>{let t=e.target;y?.contains(t)&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[R,y,T,P]),l.useEffect(A,[s,A]),Y(y,L),Y(b.content,L),(0,r.jsx)(k,{scope:n,scrollbar:y,hasThumb:a,onThumbChange:(0,c.useCallbackRef)(d),onThumbPointerUp:(0,c.useCallbackRef)(u),onThumbPositionChange:A,onThumbPointerDown:(0,c.useCallbackRef)(p),children:(0,r.jsx)(i.div,{...w,ref:C,style:{position:"absolute",...w.style},onPointerDown:(0,f.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),N.current=y.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",b.viewport&&(b.viewport.style.scrollBehavior="auto"),_(e))}),onPointerMove:(0,f.composeEventHandlers)(e.onPointerMove,_),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,b.viewport&&(b.viewport.style.scrollBehavior=""),N.current=null})})})}),_="ScrollAreaThumb",D=l.forwardRef((e,t)=>{let{forceMount:l,...o}=e,n=A(_,e.__scopeScrollArea);return(0,r.jsx)(a.Presence,{present:l||n.hasThumb,children:(0,r.jsx)(z,{ref:t,...o})})}),z=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:s,...a}=e,c=g(_,n),d=A(_,n),{onThumbPositionChange:u}=d,p=(0,o.useComposedRefs)(t,e=>d.onThumbChange(e)),m=l.useRef(void 0),h=V(()=>{m.current&&(m.current(),m.current=void 0)},100);return l.useEffect(()=>{let e=c.viewport;if(e){let t=()=>{h(),m.current||(m.current=U(e,u),u())};return u(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[c.viewport,h,u]),(0,r.jsx)(i.div,{"data-state":d.hasThumb?"visible":"hidden",...a,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...s},onPointerDownCapture:(0,f.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,l=e.clientY-t.top;d.onThumbPointerDown({x:r,y:l})}),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,d.onThumbPointerUp)})});D.displayName=_;var I="ScrollAreaCorner",H=l.forwardRef((e,t)=>{let l=g(I,e.__scopeScrollArea),o=!!(l.scrollbarX&&l.scrollbarY);return"scroll"!==l.type&&o?(0,r.jsx)(M,{...e,ref:t}):null});H.displayName=I;var M=l.forwardRef((e,t)=>{let{__scopeScrollArea:o,...n}=e,s=g(I,o),[a,c]=l.useState(0),[d,u]=l.useState(0),p=!!(a&&d);return Y(s.scrollbarX,()=>{let e=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(e),u(e)}),Y(s.scrollbarY,()=>{let e=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(e),c(e)}),p?(0,r.jsx)(i.div,{...n,ref:t,style:{width:a,height:d,position:"absolute",right:"ltr"===s.dir?0:void 0,left:"rtl"===s.dir?0:void 0,bottom:0,...e.style}}):null});function W(e){return e?parseInt(e,10):0}function $(e,t){let r=e/t;return isNaN(r)?0:r}function O(e){let t=$(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function F(e,t,r="ltr"){let l=O(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-o,s=t.content-t.viewport,i=(0,p.clamp)(e,"ltr"===r?[0,s]:[-1*s,0]);return B([0,s],[0,n-l])(i)}function B(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let l=(t[1]-t[0])/(e[1]-e[0]);return t[0]+l*(r-e[0])}}var U=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},l=0;return!function o(){let n={left:e.scrollLeft,top:e.scrollTop},s=r.left!==n.left,i=r.top!==n.top;(s||i)&&t(),r=n,l=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(l)};function V(e,t){let r=(0,c.useCallbackRef)(e),o=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(o.current),[]),l.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(r,t)},[r,t])}function Y(e,t){let r=(0,c.useCallbackRef)(t);(0,u.useLayoutEffect)(()=>{let t=0;if(e){let l=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return l.observe(e),()=>{window.cancelAnimationFrame(t),l.unobserve(e)}}},[e,r])}var X=e.i(555552);function K({className:e,children:t,...l}){return(0,r.jsxs)(w,{"data-slot":"scroll-area",className:(0,X.cn)("relative",e),...l,children:[(0,r.jsx)(y,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,r.jsx)(q,{}),(0,r.jsx)(H,{})]})}function q({className:e,orientation:t="vertical",...l}){return(0,r.jsx)(S,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,X.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...l,children:(0,r.jsx)(D,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}e.s(["ScrollArea",()=>K,"ScrollBar",()=>q],772857)},375635,e=>{"use strict";var t=e.i(414294),r=e.i(430878),l=e.i(353913),o=e.i(292623),n=e.i(504561),s=e.i(996720),i=e.i(461957),a=e.i(846193),c=e.i(77589),c=c,d=e.i(416667),d=d,u=e.i(667249),p=e.i(191729),p=p,f=e.i(904781),m=e.i(87614),h=e.i(666904),x=e.i(77982),v=e.i(772857),g=e.i(524741),w=e.i(739963),b=e.i(300739),y=e.i(555552);function j(){let e=(0,l.useRouter)(),j=(0,l.useSearchParams)(),{sessions:S,isLoading:C}=(0,b.useSessions)(),[N,E]=(0,r.useState)(!1),[R,T]=(0,r.useState)(null),[P,k]=(0,r.useState)(""),[A,L]=(0,r.useState)(!1),[_,D]=(0,r.useState)(null),[z,I]=(0,r.useState)(null),H=(0,r.useRef)(!1),M=async(e,t)=>{e.preventDefault(),e.stopPropagation();try{await (0,g.deleteSession)(t),(0,b.mutateSessions)()}catch(e){console.error("Failed to delete session:",e)}};(0,r.useEffect)(()=>{(0,w.getConfig)().then(T)},[]),(0,r.useEffect)(()=>{j.has("new")&&R&&R.apiKeyConfigured&&!H.current&&!N&&(H.current=!0,(async()=>{E(!0);try{let t=await (0,g.createSession)({name:`Session ${S.length+1}`,model:R.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:R.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.replace(`/session/${t.id}`)}catch(e){console.error("Failed to auto-create session:",e),E(!1)}})())},[j,R,S.length,N,e]),(0,r.useEffect)(()=>{j.has("latest")&&!C&&S.length>0&&e.replace(`/session/${S[0].id}`)},[j,C,S,e]);let W=async()=>{if(P.trim()&&!A){L(!0),D(null);try{if((await (0,g.setApiKey)("ai-gateway",P.trim())).success){let e=await (0,w.getConfig)();T(e),k("")}else D("Failed to save API key. Please try again.")}catch(e){D("Failed to save API key. Please try again.")}finally{L(!1)}}},$=async()=>{if(!N){E(!0);try{let t=await (0,g.createSession)({name:`Session ${S.length+1}`,model:R?.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:R?.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.push(`/session/${t.id}`)}catch(e){console.error("Failed to create session:",e)}finally{E(!1)}}};return((0,r.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"t"===e.key&&(e.preventDefault(),$())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[N,S.length,R]),R&&!R.apiKeyConfigured)?(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover",priority:!0})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsxs)("div",{className:"bg-muted/50 rounded-lg p-6 mb-6 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(a.Key,{className:"size-5 text-amber-500"}),(0,t.jsx)("h2",{className:"font-semibold",children:"API Key Required"})]}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"SparkECoder uses the Vercel AI Gateway. Enter your API key to get started."}),(0,t.jsxs)("div",{className:"flex gap-2 mb-3",children:[(0,t.jsx)(x.Input,{type:"password",placeholder:"Enter your AI Gateway API key",value:P,onChange:e=>k(e.target.value),onKeyDown:e=>"Enter"===e.key&&W(),className:"flex-1"}),(0,t.jsx)(h.Button,{onClick:W,disabled:!P.trim()||A,children:A?(0,t.jsx)(i.Loader2,{className:"size-4 animate-spin"}):"Save"})]}),_&&(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-destructive mb-3",children:[(0,t.jsx)(d.default,{className:"size-4"}),_]}),(0,t.jsxs)("a",{href:"https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-sm text-primary hover:underline",children:["Get an API key from Vercel",(0,t.jsx)(c.default,{className:"size-3"})]})]})]})}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20 overflow-auto",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"relative group cursor-pointer",children:[(0,t.jsx)("div",{className:"absolute inset-0 rounded-3xl blur-2xl opacity-40 group-hover:opacity-60 transition-opacity bg-primary/30"}),(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10 hover-lift",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover sparke-idle",priority:!0})})]})}),(0,t.jsx)(m.TooltipContent,{children:"Meet Sparke, your coding companion!"})]})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsx)("p",{className:"text-muted-foreground mb-8 leading-relaxed",children:"Your AI-powered coding assistant. Start a new session to begin building amazing things."}),(0,t.jsx)(h.Button,{size:"lg",onClick:$,disabled:N,className:"gap-2 px-8",children:N?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Loader2,{className:"size-4 animate-spin"}),"Creating..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Plus,{className:"size-4"}),"Start a Session"]})}),(0,t.jsxs)("p",{className:"mt-6 text-xs text-muted-foreground/70",children:["Press ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"⌘"})," + ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"T"})," to create a new session"]}),!C&&S.length>0&&(0,t.jsxs)("div",{className:"mt-10 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(p.default,{className:"size-4 text-muted-foreground"}),(0,t.jsx)("h2",{className:"text-sm font-medium text-muted-foreground",children:"Recent Sessions"})]}),(0,t.jsx)("div",{className:"rounded-xl border border-border/60 bg-card/50 backdrop-blur-sm overflow-hidden",children:(0,t.jsx)(v.ScrollArea,{className:(0,y.cn)(S.length>5?"h-[280px]":""),children:(0,t.jsx)("div",{className:"divide-y divide-border/40",children:S.map(e=>{let r,l,o,s,i=z===e.id,a=!0===e.isStreaming;return(0,t.jsxs)(n.default,{href:`/session/${e.id}`,className:(0,y.cn)("flex items-center gap-3 p-3 transition-colors hover:bg-accent/50 group",a&&"bg-emerald-500/5"),onMouseEnter:()=>I(e.id),onMouseLeave:()=>I(null),children:[(0,t.jsx)("div",{className:(0,y.cn)("size-9 rounded-lg flex items-center justify-center shrink-0 transition-colors",a?"bg-emerald-500/10":"bg-muted/60 group-hover:bg-muted"),children:a?(0,t.jsx)("span",{className:"size-2.5 rounded-full bg-emerald-500 animate-pulse"}):(0,t.jsx)(u.MessageSquare,{className:"size-4 text-muted-foreground"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:(0,y.cn)("text-sm font-medium truncate",a&&"text-emerald-600 dark:text-emerald-400"),children:e.name||"Untitled Session"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a?(0,t.jsx)("span",{className:"text-emerald-600 dark:text-emerald-400",children:"Active now"}):"waiting"===e.status?(0,t.jsx)("span",{className:"text-amber-600 dark:text-amber-400",children:"Waiting for input"}):(r=new Date(e.updatedAt||e.createdAt),s=Math.floor((o=Math.floor((l=Math.floor(Math.floor((new Date().getTime()-r.getTime())/1e3)/60))/60))/24),l<1?"just now":1===l?"1 minute ago":l<60?`${l} minutes ago`:1===o?"1 hour ago":o<24?`${o} hours ago`:1===s?"yesterday":s<7?`${s} days ago`:`${Math.floor(s/7)} weeks ago`)})]}),i&&(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(h.Button,{size:"icon",variant:"ghost",className:"size-7 shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors",onClick:t=>M(t,e.id),children:(0,t.jsx)(f.Trash2,{className:"size-3.5"})})}),(0,t.jsx)(m.TooltipContent,{children:"Delete session"})]})})]},e.id)})})})})]})]})})}function S(){return(0,t.jsx)(r.Suspense,{fallback:(0,t.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,t.jsx)(i.Loader2,{className:"size-6 animate-spin text-muted-foreground"})}),children:(0,t.jsx)(j,{})})}e.s(["default",()=>S],375635)}]);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { useState, useEffect } from 'react';
|
|
4
|
-
import { useRouter } from 'next/navigation';
|
|
3
|
+
import { useState, useEffect, useRef, Suspense } from 'react';
|
|
4
|
+
import { useRouter, useSearchParams } from 'next/navigation';
|
|
5
5
|
import Image from 'next/image';
|
|
6
6
|
import Link from 'next/link';
|
|
7
7
|
import { Plus, Loader2, Key, ExternalLink, AlertCircle, MessageSquare, Clock, Trash2 } from 'lucide-react';
|
|
@@ -39,8 +39,9 @@ function formatRelativeTime(dateString: string): string {
|
|
|
39
39
|
return `${Math.floor(diffDays / 7)} weeks ago`;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
function HomeContent() {
|
|
43
43
|
const router = useRouter();
|
|
44
|
+
const searchParams = useSearchParams();
|
|
44
45
|
const { sessions, isLoading: loadingSessions } = useSessions();
|
|
45
46
|
const [creating, setCreating] = useState(false);
|
|
46
47
|
const [config, setConfig] = useState<AppConfig | null>(null);
|
|
@@ -48,6 +49,7 @@ export default function Home() {
|
|
|
48
49
|
const [savingKey, setSavingKey] = useState(false);
|
|
49
50
|
const [keyError, setKeyError] = useState<string | null>(null);
|
|
50
51
|
const [hoveredSession, setHoveredSession] = useState<string | null>(null);
|
|
52
|
+
const autoStartTriggered = useRef(false);
|
|
51
53
|
|
|
52
54
|
// Handle deleting a session
|
|
53
55
|
const handleDelete = async (e: React.MouseEvent, id: string) => {
|
|
@@ -66,6 +68,38 @@ export default function Home() {
|
|
|
66
68
|
getConfig().then(setConfig);
|
|
67
69
|
}, []);
|
|
68
70
|
|
|
71
|
+
// Handle ?new query param to auto-start a new session
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
const shouldAutoStart = searchParams.has('new');
|
|
74
|
+
if (shouldAutoStart && config && config.apiKeyConfigured && !autoStartTriggered.current && !creating) {
|
|
75
|
+
autoStartTriggered.current = true;
|
|
76
|
+
(async () => {
|
|
77
|
+
setCreating(true);
|
|
78
|
+
try {
|
|
79
|
+
const session = await createSession({
|
|
80
|
+
name: `Session ${sessions.length + 1}`,
|
|
81
|
+
model: config.defaultModel || 'anthropic/claude-opus-4-5',
|
|
82
|
+
toolApprovals: config.defaultToolApprovals || {},
|
|
83
|
+
});
|
|
84
|
+
mutateSessions();
|
|
85
|
+
router.replace(`/session/${session.id}`);
|
|
86
|
+
} catch (err) {
|
|
87
|
+
console.error('Failed to auto-create session:', err);
|
|
88
|
+
setCreating(false);
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
91
|
+
}
|
|
92
|
+
}, [searchParams, config, sessions.length, creating, router]);
|
|
93
|
+
|
|
94
|
+
// Handle ?latest query param to redirect to the most recent session
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
const shouldGoToLatest = searchParams.has('latest');
|
|
97
|
+
if (shouldGoToLatest && !loadingSessions && sessions.length > 0) {
|
|
98
|
+
// Sessions are sorted by createdAt desc, so first is most recent
|
|
99
|
+
router.replace(`/session/${sessions[0].id}`);
|
|
100
|
+
}
|
|
101
|
+
}, [searchParams, loadingSessions, sessions, router]);
|
|
102
|
+
|
|
69
103
|
// Handle saving API key
|
|
70
104
|
const handleSaveApiKey = async () => {
|
|
71
105
|
if (!apiKeyInput.trim() || savingKey) return;
|
|
@@ -350,3 +384,15 @@ export default function Home() {
|
|
|
350
384
|
</div>
|
|
351
385
|
);
|
|
352
386
|
}
|
|
387
|
+
|
|
388
|
+
export default function Home() {
|
|
389
|
+
return (
|
|
390
|
+
<Suspense fallback={
|
|
391
|
+
<div className="flex items-center justify-center h-full">
|
|
392
|
+
<Loader2 className="size-6 animate-spin text-muted-foreground" />
|
|
393
|
+
</div>
|
|
394
|
+
}>
|
|
395
|
+
<HomeContent />
|
|
396
|
+
</Suspense>
|
|
397
|
+
);
|
|
398
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77589,e=>{"use strict";let t=(0,e.i(292511).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["default",()=>t])},416667,e=>{"use strict";let t=(0,e.i(292511).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["default",()=>t])},191729,772857,e=>{"use strict";let t=(0,e.i(292511).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["default",()=>t],191729);var r=e.i(414294),l=e.i(430878);e.i(773340);var o=e.i(309945),n=Symbol("radix.slottable");function s(e){return l.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===n}var i=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var n,i;let a,c,d,u=(i=n=`Primitive.${t}`,(a=l.forwardRef((e,t)=>{let{children:r,...n}=e;if(l.isValidElement(r)){var s;let e,i,a=(s=r,(i=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(i=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),c=function(e,t){let r={...t};for(let l in t){let o=e[l],n=t[l];/^on[A-Z]/.test(l)?o&&n?r[l]=(...e)=>{let t=n(...e);return o(...e),t}:o&&(r[l]=o):"style"===l?r[l]={...o,...n}:"className"===l&&(r[l]=[o,n].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props);return r.type!==l.Fragment&&(c.ref=t?(0,o.composeRefs)(t,a):a),l.cloneElement(r,c)}return l.Children.count(r)>1?l.Children.only(null):null})).displayName=`${i}.SlotClone`,c=a,(d=l.forwardRef((e,t)=>{let{children:o,...n}=e,i=l.Children.toArray(o),a=i.find(s);if(a){let e=a.props.children,o=i.map(t=>t!==a?t:l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null);return(0,r.jsx)(c,{...n,ref:t,children:l.isValidElement(e)?l.cloneElement(e,void 0,o):null})}return(0,r.jsx)(c,{...n,ref:t,children:o})})).displayName=`${n}.Slot`,d),p=l.forwardRef((e,l)=>{let{asChild:o,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,r.jsx)(o?u:t,{...n,ref:l})});return p.displayName=`Primitive.${t}`,{...e,[t]:p}},{}),a=e.i(395509),c=e.i(897462),d=e.i(542899),u=e.i(995945),p=e.i(992421),f=e.i(241416),m="ScrollArea",[h,x]=function(e,t=[]){let o=[],n=()=>{let t=o.map(e=>l.createContext(e));return function(r){let o=r?.[e]||t;return l.useMemo(()=>({[`__scope${e}`]:{...r,[e]:o}}),[r,o])}};return n.scopeName=e,[function(t,n){let s=l.createContext(n),i=o.length;o=[...o,n];let a=t=>{let{scope:o,children:n,...a}=t,c=o?.[e]?.[i]||s,d=l.useMemo(()=>a,Object.values(a));return(0,r.jsx)(c.Provider,{value:d,children:n})};return a.displayName=t+"Provider",[a,function(r,o){let a=o?.[e]?.[i]||s,c=l.useContext(a);if(c)return c;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=r.reduce((t,{useScope:r,scopeName:l})=>{let o=r(e)[`__scope${l}`];return{...t,...o}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return r.scopeName=t.scopeName,r}(n,...t)]}(m),[v,g]=h(m),w=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:s="hover",dir:a,scrollHideDelay:c=600,...u}=e,[p,f]=l.useState(null),[m,h]=l.useState(null),[x,g]=l.useState(null),[w,b]=l.useState(null),[y,j]=l.useState(null),[S,C]=l.useState(0),[N,E]=l.useState(0),[R,T]=l.useState(!1),[P,k]=l.useState(!1),A=(0,o.useComposedRefs)(t,e=>f(e)),L=(0,d.useDirection)(a);return(0,r.jsx)(v,{scope:n,type:s,dir:L,scrollHideDelay:c,scrollArea:p,viewport:m,onViewportChange:h,content:x,onContentChange:g,scrollbarX:w,onScrollbarXChange:b,scrollbarXEnabled:R,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:j,scrollbarYEnabled:P,onScrollbarYEnabledChange:k,onCornerWidthChange:C,onCornerHeightChange:E,children:(0,r.jsx)(i.div,{dir:L,...u,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":N+"px",...e.style}})})});w.displayName=m;var b="ScrollAreaViewport",y=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:s,nonce:a,...c}=e,d=g(b,n),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,d.onViewportChange);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,r.jsx)(i.div,{"data-radix-scroll-area-viewport":"",...c,ref:p,style:{overflowX:d.scrollbarXEnabled?"scroll":"hidden",overflowY:d.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,r.jsx)("div",{ref:d.onContentChange,style:{minWidth:"100%",display:"table"},children:s})})]})});y.displayName=b;var j="ScrollAreaScrollbar",S=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,s=g(j,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,c="horizontal"===e.orientation;return l.useEffect(()=>(c?i(!0):a(!0),()=>{c?i(!1):a(!1)}),[c,i,a]),"hover"===s.type?(0,r.jsx)(C,{...n,ref:t,forceMount:o}):"scroll"===s.type?(0,r.jsx)(N,{...n,ref:t,forceMount:o}):"auto"===s.type?(0,r.jsx)(E,{...n,ref:t,forceMount:o}):"always"===s.type?(0,r.jsx)(R,{...n,ref:t}):null});S.displayName=j;var C=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,s=g(j,e.__scopeScrollArea),[i,c]=l.useState(!1);return l.useEffect(()=>{let e=s.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),c(!0)},l=()=>{t=window.setTimeout(()=>c(!1),s.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",l),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",l)}}},[s.scrollArea,s.scrollHideDelay]),(0,r.jsx)(a.Presence,{present:o||i,children:(0,r.jsx)(E,{"data-state":i?"visible":"hidden",...n,ref:t})})}),N=l.forwardRef((e,t)=>{var o;let{forceMount:n,...s}=e,i=g(j,e.__scopeScrollArea),c="horizontal"===e.orientation,d=V(()=>p("SCROLL_END"),100),[u,p]=(o={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},l.useReducer((e,t)=>o[e][t]??e,"hidden"));return l.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>p("HIDE"),i.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,i.scrollHideDelay,p]),l.useEffect(()=>{let e=i.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],l=()=>{let l=e[t];r!==l&&(p("SCROLL"),d()),r=l};return e.addEventListener("scroll",l),()=>e.removeEventListener("scroll",l)}},[i.viewport,c,p,d]),(0,r.jsx)(a.Presence,{present:n||"hidden"!==u,children:(0,r.jsx)(R,{"data-state":"hidden"===u?"hidden":"visible",...s,ref:t,onPointerEnter:(0,f.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,f.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),E=l.forwardRef((e,t)=>{let o=g(j,e.__scopeScrollArea),{forceMount:n,...s}=e,[i,c]=l.useState(!1),d="horizontal"===e.orientation,u=V(()=>{if(o.viewport){let e=o.viewport.offsetWidth<o.viewport.scrollWidth,t=o.viewport.offsetHeight<o.viewport.scrollHeight;c(d?e:t)}},10);return Y(o.viewport,u),Y(o.content,u),(0,r.jsx)(a.Presence,{present:n||i,children:(0,r.jsx)(R,{"data-state":i?"visible":"hidden",...s,ref:t})})}),R=l.forwardRef((e,t)=>{let{orientation:o="vertical",...n}=e,s=g(j,e.__scopeScrollArea),i=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=$(c.viewport,c.content),p={...n,sizes:c,onSizesChange:d,hasThumb:!!(u>0&&u<1),onThumbChange:e=>i.current=e,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:e=>a.current=e};function f(e,t){return function(e,t,r,l="ltr"){let o=O(r),n=t||o/2,s=r.scrollbar.paddingStart+n,i=r.scrollbar.size-r.scrollbar.paddingEnd-(o-n),a=r.content-r.viewport;return B([s,i],"ltr"===l?[0,a]:[-1*a,0])(e)}(e,a.current,c,t)}return"horizontal"===o?(0,r.jsx)(T,{...p,ref:t,onThumbPositionChange:()=>{if(s.viewport&&i.current){let e=F(s.viewport.scrollLeft,c,s.dir);i.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollLeft=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollLeft=f(e,s.dir))}}):"vertical"===o?(0,r.jsx)(P,{...p,ref:t,onThumbPositionChange:()=>{if(s.viewport&&i.current){let e=F(s.viewport.scrollTop,c);i.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollTop=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollTop=f(e))}}):null}),T=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:s,...i}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarXChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"horizontal",...i,ref:p,sizes:n,style:{bottom:0,left:"rtl"===a.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===a.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":O(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&s({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:W(c.paddingLeft),paddingEnd:W(c.paddingRight)}})}})}),P=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:s,...i}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarYChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"vertical",...i,ref:p,sizes:n,style:{top:0,right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":O(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&s({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:W(c.paddingTop),paddingEnd:W(c.paddingBottom)}})}})}),[k,A]=h(j),L=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:s,hasThumb:a,onThumbChange:d,onThumbPointerUp:u,onThumbPointerDown:p,onThumbPositionChange:m,onDragScroll:h,onWheelScroll:x,onResize:v,...w}=e,b=g(j,n),[y,S]=l.useState(null),C=(0,o.useComposedRefs)(t,e=>S(e)),N=l.useRef(null),E=l.useRef(""),R=b.viewport,T=s.content-s.viewport,P=(0,c.useCallbackRef)(x),A=(0,c.useCallbackRef)(m),L=V(v,10);function _(e){N.current&&h({x:e.clientX-N.current.left,y:e.clientY-N.current.top})}return l.useEffect(()=>{let e=e=>{let t=e.target;y?.contains(t)&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[R,y,T,P]),l.useEffect(A,[s,A]),Y(y,L),Y(b.content,L),(0,r.jsx)(k,{scope:n,scrollbar:y,hasThumb:a,onThumbChange:(0,c.useCallbackRef)(d),onThumbPointerUp:(0,c.useCallbackRef)(u),onThumbPositionChange:A,onThumbPointerDown:(0,c.useCallbackRef)(p),children:(0,r.jsx)(i.div,{...w,ref:C,style:{position:"absolute",...w.style},onPointerDown:(0,f.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),N.current=y.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",b.viewport&&(b.viewport.style.scrollBehavior="auto"),_(e))}),onPointerMove:(0,f.composeEventHandlers)(e.onPointerMove,_),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,b.viewport&&(b.viewport.style.scrollBehavior=""),N.current=null})})})}),_="ScrollAreaThumb",D=l.forwardRef((e,t)=>{let{forceMount:l,...o}=e,n=A(_,e.__scopeScrollArea);return(0,r.jsx)(a.Presence,{present:l||n.hasThumb,children:(0,r.jsx)(z,{ref:t,...o})})}),z=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:s,...a}=e,c=g(_,n),d=A(_,n),{onThumbPositionChange:u}=d,p=(0,o.useComposedRefs)(t,e=>d.onThumbChange(e)),m=l.useRef(void 0),h=V(()=>{m.current&&(m.current(),m.current=void 0)},100);return l.useEffect(()=>{let e=c.viewport;if(e){let t=()=>{h(),m.current||(m.current=U(e,u),u())};return u(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[c.viewport,h,u]),(0,r.jsx)(i.div,{"data-state":d.hasThumb?"visible":"hidden",...a,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...s},onPointerDownCapture:(0,f.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,l=e.clientY-t.top;d.onThumbPointerDown({x:r,y:l})}),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,d.onThumbPointerUp)})});D.displayName=_;var I="ScrollAreaCorner",H=l.forwardRef((e,t)=>{let l=g(I,e.__scopeScrollArea),o=!!(l.scrollbarX&&l.scrollbarY);return"scroll"!==l.type&&o?(0,r.jsx)(M,{...e,ref:t}):null});H.displayName=I;var M=l.forwardRef((e,t)=>{let{__scopeScrollArea:o,...n}=e,s=g(I,o),[a,c]=l.useState(0),[d,u]=l.useState(0),p=!!(a&&d);return Y(s.scrollbarX,()=>{let e=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(e),u(e)}),Y(s.scrollbarY,()=>{let e=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(e),c(e)}),p?(0,r.jsx)(i.div,{...n,ref:t,style:{width:a,height:d,position:"absolute",right:"ltr"===s.dir?0:void 0,left:"rtl"===s.dir?0:void 0,bottom:0,...e.style}}):null});function W(e){return e?parseInt(e,10):0}function $(e,t){let r=e/t;return isNaN(r)?0:r}function O(e){let t=$(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function F(e,t,r="ltr"){let l=O(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-o,s=t.content-t.viewport,i=(0,p.clamp)(e,"ltr"===r?[0,s]:[-1*s,0]);return B([0,s],[0,n-l])(i)}function B(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let l=(t[1]-t[0])/(e[1]-e[0]);return t[0]+l*(r-e[0])}}var U=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},l=0;return!function o(){let n={left:e.scrollLeft,top:e.scrollTop},s=r.left!==n.left,i=r.top!==n.top;(s||i)&&t(),r=n,l=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(l)};function V(e,t){let r=(0,c.useCallbackRef)(e),o=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(o.current),[]),l.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(r,t)},[r,t])}function Y(e,t){let r=(0,c.useCallbackRef)(t);(0,u.useLayoutEffect)(()=>{let t=0;if(e){let l=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return l.observe(e),()=>{window.cancelAnimationFrame(t),l.unobserve(e)}}},[e,r])}var X=e.i(555552);function K({className:e,children:t,...l}){return(0,r.jsxs)(w,{"data-slot":"scroll-area",className:(0,X.cn)("relative",e),...l,children:[(0,r.jsx)(y,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,r.jsx)(q,{}),(0,r.jsx)(H,{})]})}function q({className:e,orientation:t="vertical",...l}){return(0,r.jsx)(S,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,X.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...l,children:(0,r.jsx)(D,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}e.s(["ScrollArea",()=>K,"ScrollBar",()=>q],772857)},375635,e=>{"use strict";var t=e.i(414294),r=e.i(430878),l=e.i(353913),o=e.i(292623),n=e.i(504561),s=e.i(996720),i=e.i(461957),a=e.i(846193),c=e.i(77589),c=c,d=e.i(416667),d=d,u=e.i(667249),p=e.i(191729),p=p,f=e.i(904781),m=e.i(87614),h=e.i(666904),x=e.i(77982),v=e.i(772857),g=e.i(524741),w=e.i(739963),b=e.i(300739),y=e.i(555552);function j(){let e=(0,l.useRouter)(),j=(0,l.useSearchParams)(),{sessions:S,isLoading:C}=(0,b.useSessions)(),[N,E]=(0,r.useState)(!1),[R,T]=(0,r.useState)(null),[P,k]=(0,r.useState)(""),[A,L]=(0,r.useState)(!1),[_,D]=(0,r.useState)(null),[z,I]=(0,r.useState)(null),H=(0,r.useRef)(!1),M=async(e,t)=>{e.preventDefault(),e.stopPropagation();try{await (0,g.deleteSession)(t),(0,b.mutateSessions)()}catch(e){console.error("Failed to delete session:",e)}};(0,r.useEffect)(()=>{(0,w.getConfig)().then(T)},[]),(0,r.useEffect)(()=>{j.has("new")&&R&&R.apiKeyConfigured&&!H.current&&!N&&(H.current=!0,(async()=>{E(!0);try{let t=await (0,g.createSession)({name:`Session ${S.length+1}`,model:R.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:R.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.replace(`/session/${t.id}`)}catch(e){console.error("Failed to auto-create session:",e),E(!1)}})())},[j,R,S.length,N,e]),(0,r.useEffect)(()=>{j.has("latest")&&!C&&S.length>0&&e.replace(`/session/${S[0].id}`)},[j,C,S,e]);let W=async()=>{if(P.trim()&&!A){L(!0),D(null);try{if((await (0,g.setApiKey)("ai-gateway",P.trim())).success){let e=await (0,w.getConfig)();T(e),k("")}else D("Failed to save API key. Please try again.")}catch(e){D("Failed to save API key. Please try again.")}finally{L(!1)}}},$=async()=>{if(!N){E(!0);try{let t=await (0,g.createSession)({name:`Session ${S.length+1}`,model:R?.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:R?.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.push(`/session/${t.id}`)}catch(e){console.error("Failed to create session:",e)}finally{E(!1)}}};return((0,r.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"t"===e.key&&(e.preventDefault(),$())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[N,S.length,R]),R&&!R.apiKeyConfigured)?(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover",priority:!0})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsxs)("div",{className:"bg-muted/50 rounded-lg p-6 mb-6 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(a.Key,{className:"size-5 text-amber-500"}),(0,t.jsx)("h2",{className:"font-semibold",children:"API Key Required"})]}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"SparkECoder uses the Vercel AI Gateway. Enter your API key to get started."}),(0,t.jsxs)("div",{className:"flex gap-2 mb-3",children:[(0,t.jsx)(x.Input,{type:"password",placeholder:"Enter your AI Gateway API key",value:P,onChange:e=>k(e.target.value),onKeyDown:e=>"Enter"===e.key&&W(),className:"flex-1"}),(0,t.jsx)(h.Button,{onClick:W,disabled:!P.trim()||A,children:A?(0,t.jsx)(i.Loader2,{className:"size-4 animate-spin"}):"Save"})]}),_&&(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-destructive mb-3",children:[(0,t.jsx)(d.default,{className:"size-4"}),_]}),(0,t.jsxs)("a",{href:"https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-sm text-primary hover:underline",children:["Get an API key from Vercel",(0,t.jsx)(c.default,{className:"size-3"})]})]})]})}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20 overflow-auto",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"relative group cursor-pointer",children:[(0,t.jsx)("div",{className:"absolute inset-0 rounded-3xl blur-2xl opacity-40 group-hover:opacity-60 transition-opacity bg-primary/30"}),(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10 hover-lift",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover sparke-idle",priority:!0})})]})}),(0,t.jsx)(m.TooltipContent,{children:"Meet Sparke, your coding companion!"})]})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsx)("p",{className:"text-muted-foreground mb-8 leading-relaxed",children:"Your AI-powered coding assistant. Start a new session to begin building amazing things."}),(0,t.jsx)(h.Button,{size:"lg",onClick:$,disabled:N,className:"gap-2 px-8",children:N?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Loader2,{className:"size-4 animate-spin"}),"Creating..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Plus,{className:"size-4"}),"Start a Session"]})}),(0,t.jsxs)("p",{className:"mt-6 text-xs text-muted-foreground/70",children:["Press ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"⌘"})," + ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"T"})," to create a new session"]}),!C&&S.length>0&&(0,t.jsxs)("div",{className:"mt-10 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(p.default,{className:"size-4 text-muted-foreground"}),(0,t.jsx)("h2",{className:"text-sm font-medium text-muted-foreground",children:"Recent Sessions"})]}),(0,t.jsx)("div",{className:"rounded-xl border border-border/60 bg-card/50 backdrop-blur-sm overflow-hidden",children:(0,t.jsx)(v.ScrollArea,{className:(0,y.cn)(S.length>5?"h-[280px]":""),children:(0,t.jsx)("div",{className:"divide-y divide-border/40",children:S.map(e=>{let r,l,o,s,i=z===e.id,a=!0===e.isStreaming;return(0,t.jsxs)(n.default,{href:`/session/${e.id}`,className:(0,y.cn)("flex items-center gap-3 p-3 transition-colors hover:bg-accent/50 group",a&&"bg-emerald-500/5"),onMouseEnter:()=>I(e.id),onMouseLeave:()=>I(null),children:[(0,t.jsx)("div",{className:(0,y.cn)("size-9 rounded-lg flex items-center justify-center shrink-0 transition-colors",a?"bg-emerald-500/10":"bg-muted/60 group-hover:bg-muted"),children:a?(0,t.jsx)("span",{className:"size-2.5 rounded-full bg-emerald-500 animate-pulse"}):(0,t.jsx)(u.MessageSquare,{className:"size-4 text-muted-foreground"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:(0,y.cn)("text-sm font-medium truncate",a&&"text-emerald-600 dark:text-emerald-400"),children:e.name||"Untitled Session"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a?(0,t.jsx)("span",{className:"text-emerald-600 dark:text-emerald-400",children:"Active now"}):"waiting"===e.status?(0,t.jsx)("span",{className:"text-amber-600 dark:text-amber-400",children:"Waiting for input"}):(r=new Date(e.updatedAt||e.createdAt),s=Math.floor((o=Math.floor((l=Math.floor(Math.floor((new Date().getTime()-r.getTime())/1e3)/60))/60))/24),l<1?"just now":1===l?"1 minute ago":l<60?`${l} minutes ago`:1===o?"1 hour ago":o<24?`${o} hours ago`:1===s?"yesterday":s<7?`${s} days ago`:`${Math.floor(s/7)} weeks ago`)})]}),i&&(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(h.Button,{size:"icon",variant:"ghost",className:"size-7 shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors",onClick:t=>M(t,e.id),children:(0,t.jsx)(f.Trash2,{className:"size-3.5"})})}),(0,t.jsx)(m.TooltipContent,{children:"Delete session"})]})})]},e.id)})})})})]})]})})}function S(){return(0,t.jsx)(r.Suspense,{fallback:(0,t.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,t.jsx)(i.Loader2,{className:"size-6 animate-spin text-muted-foreground"})}),children:(0,t.jsx)(j,{})})}e.s(["default",()=>S],375635)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77589,e=>{"use strict";let t=(0,e.i(292511).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["default",()=>t])},416667,e=>{"use strict";let t=(0,e.i(292511).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["default",()=>t])},191729,772857,e=>{"use strict";let t=(0,e.i(292511).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["default",()=>t],191729);var r=e.i(414294),l=e.i(430878);e.i(773340);var o=e.i(309945),n=Symbol("radix.slottable");function i(e){return l.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===n}var s=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var n,s;let a,c,d,u=(s=n=`Primitive.${t}`,(a=l.forwardRef((e,t)=>{let{children:r,...n}=e;if(l.isValidElement(r)){var i;let e,s,a=(i=r,(s=(e=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.ref:(s=(e=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.props.ref:i.props.ref||i.ref),c=function(e,t){let r={...t};for(let l in t){let o=e[l],n=t[l];/^on[A-Z]/.test(l)?o&&n?r[l]=(...e)=>{let t=n(...e);return o(...e),t}:o&&(r[l]=o):"style"===l?r[l]={...o,...n}:"className"===l&&(r[l]=[o,n].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props);return r.type!==l.Fragment&&(c.ref=t?(0,o.composeRefs)(t,a):a),l.cloneElement(r,c)}return l.Children.count(r)>1?l.Children.only(null):null})).displayName=`${s}.SlotClone`,c=a,(d=l.forwardRef((e,t)=>{let{children:o,...n}=e,s=l.Children.toArray(o),a=s.find(i);if(a){let e=a.props.children,o=s.map(t=>t!==a?t:l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null);return(0,r.jsx)(c,{...n,ref:t,children:l.isValidElement(e)?l.cloneElement(e,void 0,o):null})}return(0,r.jsx)(c,{...n,ref:t,children:o})})).displayName=`${n}.Slot`,d),p=l.forwardRef((e,l)=>{let{asChild:o,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,r.jsx)(o?u:t,{...n,ref:l})});return p.displayName=`Primitive.${t}`,{...e,[t]:p}},{}),a=e.i(395509),c=e.i(897462),d=e.i(542899),u=e.i(995945),p=e.i(992421),f=e.i(241416),m="ScrollArea",[h,v]=function(e,t=[]){let o=[],n=()=>{let t=o.map(e=>l.createContext(e));return function(r){let o=r?.[e]||t;return l.useMemo(()=>({[`__scope${e}`]:{...r,[e]:o}}),[r,o])}};return n.scopeName=e,[function(t,n){let i=l.createContext(n),s=o.length;o=[...o,n];let a=t=>{let{scope:o,children:n,...a}=t,c=o?.[e]?.[s]||i,d=l.useMemo(()=>a,Object.values(a));return(0,r.jsx)(c.Provider,{value:d,children:n})};return a.displayName=t+"Provider",[a,function(r,o){let a=o?.[e]?.[s]||i,c=l.useContext(a);if(c)return c;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=r.reduce((t,{useScope:r,scopeName:l})=>{let o=r(e)[`__scope${l}`];return{...t,...o}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return r.scopeName=t.scopeName,r}(n,...t)]}(m),[x,g]=h(m),w=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:i="hover",dir:a,scrollHideDelay:c=600,...u}=e,[p,f]=l.useState(null),[m,h]=l.useState(null),[v,g]=l.useState(null),[w,b]=l.useState(null),[y,j]=l.useState(null),[S,C]=l.useState(0),[N,E]=l.useState(0),[R,T]=l.useState(!1),[P,k]=l.useState(!1),A=(0,o.useComposedRefs)(t,e=>f(e)),L=(0,d.useDirection)(a);return(0,r.jsx)(x,{scope:n,type:i,dir:L,scrollHideDelay:c,scrollArea:p,viewport:m,onViewportChange:h,content:v,onContentChange:g,scrollbarX:w,onScrollbarXChange:b,scrollbarXEnabled:R,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:j,scrollbarYEnabled:P,onScrollbarYEnabledChange:k,onCornerWidthChange:C,onCornerHeightChange:E,children:(0,r.jsx)(s.div,{dir:L,...u,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":N+"px",...e.style}})})});w.displayName=m;var b="ScrollAreaViewport",y=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:i,nonce:a,...c}=e,d=g(b,n),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,d.onViewportChange);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,r.jsx)(s.div,{"data-radix-scroll-area-viewport":"",...c,ref:p,style:{overflowX:d.scrollbarXEnabled?"scroll":"hidden",overflowY:d.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,r.jsx)("div",{ref:d.onContentChange,style:{minWidth:"100%",display:"table"},children:i})})]})});y.displayName=b;var j="ScrollAreaScrollbar",S=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,i=g(j,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:a}=i,c="horizontal"===e.orientation;return l.useEffect(()=>(c?s(!0):a(!0),()=>{c?s(!1):a(!1)}),[c,s,a]),"hover"===i.type?(0,r.jsx)(C,{...n,ref:t,forceMount:o}):"scroll"===i.type?(0,r.jsx)(N,{...n,ref:t,forceMount:o}):"auto"===i.type?(0,r.jsx)(E,{...n,ref:t,forceMount:o}):"always"===i.type?(0,r.jsx)(R,{...n,ref:t}):null});S.displayName=j;var C=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,i=g(j,e.__scopeScrollArea),[s,c]=l.useState(!1);return l.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),c(!0)},l=()=>{t=window.setTimeout(()=>c(!1),i.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",l),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",l)}}},[i.scrollArea,i.scrollHideDelay]),(0,r.jsx)(a.Presence,{present:o||s,children:(0,r.jsx)(E,{"data-state":s?"visible":"hidden",...n,ref:t})})}),N=l.forwardRef((e,t)=>{var o;let{forceMount:n,...i}=e,s=g(j,e.__scopeScrollArea),c="horizontal"===e.orientation,d=V(()=>p("SCROLL_END"),100),[u,p]=(o={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},l.useReducer((e,t)=>o[e][t]??e,"hidden"));return l.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>p("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,s.scrollHideDelay,p]),l.useEffect(()=>{let e=s.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],l=()=>{let l=e[t];r!==l&&(p("SCROLL"),d()),r=l};return e.addEventListener("scroll",l),()=>e.removeEventListener("scroll",l)}},[s.viewport,c,p,d]),(0,r.jsx)(a.Presence,{present:n||"hidden"!==u,children:(0,r.jsx)(R,{"data-state":"hidden"===u?"hidden":"visible",...i,ref:t,onPointerEnter:(0,f.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,f.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),E=l.forwardRef((e,t)=>{let o=g(j,e.__scopeScrollArea),{forceMount:n,...i}=e,[s,c]=l.useState(!1),d="horizontal"===e.orientation,u=V(()=>{if(o.viewport){let e=o.viewport.offsetWidth<o.viewport.scrollWidth,t=o.viewport.offsetHeight<o.viewport.scrollHeight;c(d?e:t)}},10);return Y(o.viewport,u),Y(o.content,u),(0,r.jsx)(a.Presence,{present:n||s,children:(0,r.jsx)(R,{"data-state":s?"visible":"hidden",...i,ref:t})})}),R=l.forwardRef((e,t)=>{let{orientation:o="vertical",...n}=e,i=g(j,e.__scopeScrollArea),s=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=O(c.viewport,c.content),p={...n,sizes:c,onSizesChange:d,hasThumb:!!(u>0&&u<1),onThumbChange:e=>s.current=e,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:e=>a.current=e};function f(e,t){return function(e,t,r,l="ltr"){let o=$(r),n=t||o/2,i=r.scrollbar.paddingStart+n,s=r.scrollbar.size-r.scrollbar.paddingEnd-(o-n),a=r.content-r.viewport;return B([i,s],"ltr"===l?[0,a]:[-1*a,0])(e)}(e,a.current,c,t)}return"horizontal"===o?(0,r.jsx)(T,{...p,ref:t,onThumbPositionChange:()=>{if(i.viewport&&s.current){let e=F(i.viewport.scrollLeft,c,i.dir);s.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=f(e,i.dir))}}):"vertical"===o?(0,r.jsx)(P,{...p,ref:t,onThumbPositionChange:()=>{if(i.viewport&&s.current){let e=F(i.viewport.scrollTop,c);s.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=f(e))}}):null}),T=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:i,...s}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarXChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"horizontal",...s,ref:p,sizes:n,style:{bottom:0,left:"rtl"===a.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===a.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":$(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&i({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:M(c.paddingLeft),paddingEnd:M(c.paddingRight)}})}})}),P=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:i,...s}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarYChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"vertical",...s,ref:p,sizes:n,style:{top:0,right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":$(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&i({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:M(c.paddingTop),paddingEnd:M(c.paddingBottom)}})}})}),[k,A]=h(j),L=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:i,hasThumb:a,onThumbChange:d,onThumbPointerUp:u,onThumbPointerDown:p,onThumbPositionChange:m,onDragScroll:h,onWheelScroll:v,onResize:x,...w}=e,b=g(j,n),[y,S]=l.useState(null),C=(0,o.useComposedRefs)(t,e=>S(e)),N=l.useRef(null),E=l.useRef(""),R=b.viewport,T=i.content-i.viewport,P=(0,c.useCallbackRef)(v),A=(0,c.useCallbackRef)(m),L=V(x,10);function _(e){N.current&&h({x:e.clientX-N.current.left,y:e.clientY-N.current.top})}return l.useEffect(()=>{let e=e=>{let t=e.target;y?.contains(t)&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[R,y,T,P]),l.useEffect(A,[i,A]),Y(y,L),Y(b.content,L),(0,r.jsx)(k,{scope:n,scrollbar:y,hasThumb:a,onThumbChange:(0,c.useCallbackRef)(d),onThumbPointerUp:(0,c.useCallbackRef)(u),onThumbPositionChange:A,onThumbPointerDown:(0,c.useCallbackRef)(p),children:(0,r.jsx)(s.div,{...w,ref:C,style:{position:"absolute",...w.style},onPointerDown:(0,f.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),N.current=y.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",b.viewport&&(b.viewport.style.scrollBehavior="auto"),_(e))}),onPointerMove:(0,f.composeEventHandlers)(e.onPointerMove,_),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,b.viewport&&(b.viewport.style.scrollBehavior=""),N.current=null})})})}),_="ScrollAreaThumb",D=l.forwardRef((e,t)=>{let{forceMount:l,...o}=e,n=A(_,e.__scopeScrollArea);return(0,r.jsx)(a.Presence,{present:l||n.hasThumb,children:(0,r.jsx)(z,{ref:t,...o})})}),z=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:i,...a}=e,c=g(_,n),d=A(_,n),{onThumbPositionChange:u}=d,p=(0,o.useComposedRefs)(t,e=>d.onThumbChange(e)),m=l.useRef(void 0),h=V(()=>{m.current&&(m.current(),m.current=void 0)},100);return l.useEffect(()=>{let e=c.viewport;if(e){let t=()=>{h(),m.current||(m.current=U(e,u),u())};return u(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[c.viewport,h,u]),(0,r.jsx)(s.div,{"data-state":d.hasThumb?"visible":"hidden",...a,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...i},onPointerDownCapture:(0,f.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,l=e.clientY-t.top;d.onThumbPointerDown({x:r,y:l})}),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,d.onThumbPointerUp)})});D.displayName=_;var I="ScrollAreaCorner",H=l.forwardRef((e,t)=>{let l=g(I,e.__scopeScrollArea),o=!!(l.scrollbarX&&l.scrollbarY);return"scroll"!==l.type&&o?(0,r.jsx)(W,{...e,ref:t}):null});H.displayName=I;var W=l.forwardRef((e,t)=>{let{__scopeScrollArea:o,...n}=e,i=g(I,o),[a,c]=l.useState(0),[d,u]=l.useState(0),p=!!(a&&d);return Y(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),u(e)}),Y(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),c(e)}),p?(0,r.jsx)(s.div,{...n,ref:t,style:{width:a,height:d,position:"absolute",right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:0,...e.style}}):null});function M(e){return e?parseInt(e,10):0}function O(e,t){let r=e/t;return isNaN(r)?0:r}function $(e){let t=O(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function F(e,t,r="ltr"){let l=$(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-o,i=t.content-t.viewport,s=(0,p.clamp)(e,"ltr"===r?[0,i]:[-1*i,0]);return B([0,i],[0,n-l])(s)}function B(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let l=(t[1]-t[0])/(e[1]-e[0]);return t[0]+l*(r-e[0])}}var U=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},l=0;return!function o(){let n={left:e.scrollLeft,top:e.scrollTop},i=r.left!==n.left,s=r.top!==n.top;(i||s)&&t(),r=n,l=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(l)};function V(e,t){let r=(0,c.useCallbackRef)(e),o=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(o.current),[]),l.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(r,t)},[r,t])}function Y(e,t){let r=(0,c.useCallbackRef)(t);(0,u.useLayoutEffect)(()=>{let t=0;if(e){let l=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return l.observe(e),()=>{window.cancelAnimationFrame(t),l.unobserve(e)}}},[e,r])}var X=e.i(555552);function K({className:e,children:t,...l}){return(0,r.jsxs)(w,{"data-slot":"scroll-area",className:(0,X.cn)("relative",e),...l,children:[(0,r.jsx)(y,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,r.jsx)(q,{}),(0,r.jsx)(H,{})]})}function q({className:e,orientation:t="vertical",...l}){return(0,r.jsx)(S,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,X.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...l,children:(0,r.jsx)(D,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}e.s(["ScrollArea",()=>K,"ScrollBar",()=>q],772857)},375635,e=>{"use strict";var t=e.i(414294),r=e.i(430878),l=e.i(353913),o=e.i(292623),n=e.i(504561),i=e.i(996720),s=e.i(461957),a=e.i(846193),c=e.i(77589),c=c,d=e.i(416667),d=d,u=e.i(667249),p=e.i(191729),p=p,f=e.i(904781),m=e.i(87614),h=e.i(666904),v=e.i(77982),x=e.i(772857),g=e.i(524741),w=e.i(739963),b=e.i(300739),y=e.i(555552);function j(){let e=(0,l.useRouter)(),{sessions:j,isLoading:S}=(0,b.useSessions)(),[C,N]=(0,r.useState)(!1),[E,R]=(0,r.useState)(null),[T,P]=(0,r.useState)(""),[k,A]=(0,r.useState)(!1),[L,_]=(0,r.useState)(null),[D,z]=(0,r.useState)(null),I=async(e,t)=>{e.preventDefault(),e.stopPropagation();try{await (0,g.deleteSession)(t),(0,b.mutateSessions)()}catch(e){console.error("Failed to delete session:",e)}};(0,r.useEffect)(()=>{(0,w.getConfig)().then(R)},[]);let H=async()=>{if(T.trim()&&!k){A(!0),_(null);try{if((await (0,g.setApiKey)("ai-gateway",T.trim())).success){let e=await (0,w.getConfig)();R(e),P("")}else _("Failed to save API key. Please try again.")}catch(e){_("Failed to save API key. Please try again.")}finally{A(!1)}}},W=async()=>{if(!C){N(!0);try{let t=await (0,g.createSession)({name:`Session ${j.length+1}`,model:E?.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:E?.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.push(`/session/${t.id}`)}catch(e){console.error("Failed to create session:",e)}finally{N(!1)}}};return((0,r.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"t"===e.key&&(e.preventDefault(),W())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[C,j.length,E]),E&&!E.apiKeyConfigured)?(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover",priority:!0})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsxs)("div",{className:"bg-muted/50 rounded-lg p-6 mb-6 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(a.Key,{className:"size-5 text-amber-500"}),(0,t.jsx)("h2",{className:"font-semibold",children:"API Key Required"})]}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"SparkECoder uses the Vercel AI Gateway. Enter your API key to get started."}),(0,t.jsxs)("div",{className:"flex gap-2 mb-3",children:[(0,t.jsx)(v.Input,{type:"password",placeholder:"Enter your AI Gateway API key",value:T,onChange:e=>P(e.target.value),onKeyDown:e=>"Enter"===e.key&&H(),className:"flex-1"}),(0,t.jsx)(h.Button,{onClick:H,disabled:!T.trim()||k,children:k?(0,t.jsx)(s.Loader2,{className:"size-4 animate-spin"}):"Save"})]}),L&&(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-destructive mb-3",children:[(0,t.jsx)(d.default,{className:"size-4"}),L]}),(0,t.jsxs)("a",{href:"https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-sm text-primary hover:underline",children:["Get an API key from Vercel",(0,t.jsx)(c.default,{className:"size-3"})]})]})]})}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20 overflow-auto",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"relative group cursor-pointer",children:[(0,t.jsx)("div",{className:"absolute inset-0 rounded-3xl blur-2xl opacity-40 group-hover:opacity-60 transition-opacity bg-primary/30"}),(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10 hover-lift",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover sparke-idle",priority:!0})})]})}),(0,t.jsx)(m.TooltipContent,{children:"Meet Sparke, your coding companion!"})]})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsx)("p",{className:"text-muted-foreground mb-8 leading-relaxed",children:"Your AI-powered coding assistant. Start a new session to begin building amazing things."}),(0,t.jsx)(h.Button,{size:"lg",onClick:W,disabled:C,className:"gap-2 px-8",children:C?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Loader2,{className:"size-4 animate-spin"}),"Creating..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Plus,{className:"size-4"}),"Start a Session"]})}),(0,t.jsxs)("p",{className:"mt-6 text-xs text-muted-foreground/70",children:["Press ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"⌘"})," + ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"T"})," to create a new session"]}),!S&&j.length>0&&(0,t.jsxs)("div",{className:"mt-10 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(p.default,{className:"size-4 text-muted-foreground"}),(0,t.jsx)("h2",{className:"text-sm font-medium text-muted-foreground",children:"Recent Sessions"})]}),(0,t.jsx)("div",{className:"rounded-xl border border-border/60 bg-card/50 backdrop-blur-sm overflow-hidden",children:(0,t.jsx)(x.ScrollArea,{className:(0,y.cn)(j.length>5?"h-[280px]":""),children:(0,t.jsx)("div",{className:"divide-y divide-border/40",children:j.map(e=>{let r,l,o,i,s=D===e.id,a=!0===e.isStreaming;return(0,t.jsxs)(n.default,{href:`/session/${e.id}`,className:(0,y.cn)("flex items-center gap-3 p-3 transition-colors hover:bg-accent/50 group",a&&"bg-emerald-500/5"),onMouseEnter:()=>z(e.id),onMouseLeave:()=>z(null),children:[(0,t.jsx)("div",{className:(0,y.cn)("size-9 rounded-lg flex items-center justify-center shrink-0 transition-colors",a?"bg-emerald-500/10":"bg-muted/60 group-hover:bg-muted"),children:a?(0,t.jsx)("span",{className:"size-2.5 rounded-full bg-emerald-500 animate-pulse"}):(0,t.jsx)(u.MessageSquare,{className:"size-4 text-muted-foreground"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:(0,y.cn)("text-sm font-medium truncate",a&&"text-emerald-600 dark:text-emerald-400"),children:e.name||"Untitled Session"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a?(0,t.jsx)("span",{className:"text-emerald-600 dark:text-emerald-400",children:"Active now"}):"waiting"===e.status?(0,t.jsx)("span",{className:"text-amber-600 dark:text-amber-400",children:"Waiting for input"}):(r=new Date(e.updatedAt||e.createdAt),i=Math.floor((o=Math.floor((l=Math.floor(Math.floor((new Date().getTime()-r.getTime())/1e3)/60))/60))/24),l<1?"just now":1===l?"1 minute ago":l<60?`${l} minutes ago`:1===o?"1 hour ago":o<24?`${o} hours ago`:1===i?"yesterday":i<7?`${i} days ago`:`${Math.floor(i/7)} weeks ago`)})]}),s&&(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(h.Button,{size:"icon",variant:"ghost",className:"size-7 shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors",onClick:t=>I(t,e.id),children:(0,t.jsx)(f.Trash2,{className:"size-3.5"})})}),(0,t.jsx)(m.TooltipContent,{children:"Delete session"})]})})]},e.id)})})})})]})]})})}e.s(["default",()=>j],375635)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77589,e=>{"use strict";let t=(0,e.i(292511).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["default",()=>t])},416667,e=>{"use strict";let t=(0,e.i(292511).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["default",()=>t])},191729,772857,e=>{"use strict";let t=(0,e.i(292511).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["default",()=>t],191729);var r=e.i(414294),l=e.i(430878);e.i(773340);var o=e.i(309945),n=Symbol("radix.slottable");function i(e){return l.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===n}var s=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var n,s;let a,c,d,u=(s=n=`Primitive.${t}`,(a=l.forwardRef((e,t)=>{let{children:r,...n}=e;if(l.isValidElement(r)){var i;let e,s,a=(i=r,(s=(e=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.ref:(s=(e=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.props.ref:i.props.ref||i.ref),c=function(e,t){let r={...t};for(let l in t){let o=e[l],n=t[l];/^on[A-Z]/.test(l)?o&&n?r[l]=(...e)=>{let t=n(...e);return o(...e),t}:o&&(r[l]=o):"style"===l?r[l]={...o,...n}:"className"===l&&(r[l]=[o,n].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props);return r.type!==l.Fragment&&(c.ref=t?(0,o.composeRefs)(t,a):a),l.cloneElement(r,c)}return l.Children.count(r)>1?l.Children.only(null):null})).displayName=`${s}.SlotClone`,c=a,(d=l.forwardRef((e,t)=>{let{children:o,...n}=e,s=l.Children.toArray(o),a=s.find(i);if(a){let e=a.props.children,o=s.map(t=>t!==a?t:l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null);return(0,r.jsx)(c,{...n,ref:t,children:l.isValidElement(e)?l.cloneElement(e,void 0,o):null})}return(0,r.jsx)(c,{...n,ref:t,children:o})})).displayName=`${n}.Slot`,d),p=l.forwardRef((e,l)=>{let{asChild:o,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,r.jsx)(o?u:t,{...n,ref:l})});return p.displayName=`Primitive.${t}`,{...e,[t]:p}},{}),a=e.i(395509),c=e.i(897462),d=e.i(542899),u=e.i(995945),p=e.i(992421),f=e.i(241416),m="ScrollArea",[h,v]=function(e,t=[]){let o=[],n=()=>{let t=o.map(e=>l.createContext(e));return function(r){let o=r?.[e]||t;return l.useMemo(()=>({[`__scope${e}`]:{...r,[e]:o}}),[r,o])}};return n.scopeName=e,[function(t,n){let i=l.createContext(n),s=o.length;o=[...o,n];let a=t=>{let{scope:o,children:n,...a}=t,c=o?.[e]?.[s]||i,d=l.useMemo(()=>a,Object.values(a));return(0,r.jsx)(c.Provider,{value:d,children:n})};return a.displayName=t+"Provider",[a,function(r,o){let a=o?.[e]?.[s]||i,c=l.useContext(a);if(c)return c;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=r.reduce((t,{useScope:r,scopeName:l})=>{let o=r(e)[`__scope${l}`];return{...t,...o}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return r.scopeName=t.scopeName,r}(n,...t)]}(m),[x,g]=h(m),w=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:i="hover",dir:a,scrollHideDelay:c=600,...u}=e,[p,f]=l.useState(null),[m,h]=l.useState(null),[v,g]=l.useState(null),[w,b]=l.useState(null),[y,j]=l.useState(null),[S,C]=l.useState(0),[N,E]=l.useState(0),[R,T]=l.useState(!1),[P,k]=l.useState(!1),A=(0,o.useComposedRefs)(t,e=>f(e)),L=(0,d.useDirection)(a);return(0,r.jsx)(x,{scope:n,type:i,dir:L,scrollHideDelay:c,scrollArea:p,viewport:m,onViewportChange:h,content:v,onContentChange:g,scrollbarX:w,onScrollbarXChange:b,scrollbarXEnabled:R,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:j,scrollbarYEnabled:P,onScrollbarYEnabledChange:k,onCornerWidthChange:C,onCornerHeightChange:E,children:(0,r.jsx)(s.div,{dir:L,...u,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":N+"px",...e.style}})})});w.displayName=m;var b="ScrollAreaViewport",y=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:i,nonce:a,...c}=e,d=g(b,n),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,d.onViewportChange);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,r.jsx)(s.div,{"data-radix-scroll-area-viewport":"",...c,ref:p,style:{overflowX:d.scrollbarXEnabled?"scroll":"hidden",overflowY:d.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,r.jsx)("div",{ref:d.onContentChange,style:{minWidth:"100%",display:"table"},children:i})})]})});y.displayName=b;var j="ScrollAreaScrollbar",S=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,i=g(j,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:a}=i,c="horizontal"===e.orientation;return l.useEffect(()=>(c?s(!0):a(!0),()=>{c?s(!1):a(!1)}),[c,s,a]),"hover"===i.type?(0,r.jsx)(C,{...n,ref:t,forceMount:o}):"scroll"===i.type?(0,r.jsx)(N,{...n,ref:t,forceMount:o}):"auto"===i.type?(0,r.jsx)(E,{...n,ref:t,forceMount:o}):"always"===i.type?(0,r.jsx)(R,{...n,ref:t}):null});S.displayName=j;var C=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,i=g(j,e.__scopeScrollArea),[s,c]=l.useState(!1);return l.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),c(!0)},l=()=>{t=window.setTimeout(()=>c(!1),i.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",l),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",l)}}},[i.scrollArea,i.scrollHideDelay]),(0,r.jsx)(a.Presence,{present:o||s,children:(0,r.jsx)(E,{"data-state":s?"visible":"hidden",...n,ref:t})})}),N=l.forwardRef((e,t)=>{var o;let{forceMount:n,...i}=e,s=g(j,e.__scopeScrollArea),c="horizontal"===e.orientation,d=V(()=>p("SCROLL_END"),100),[u,p]=(o={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},l.useReducer((e,t)=>o[e][t]??e,"hidden"));return l.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>p("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,s.scrollHideDelay,p]),l.useEffect(()=>{let e=s.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],l=()=>{let l=e[t];r!==l&&(p("SCROLL"),d()),r=l};return e.addEventListener("scroll",l),()=>e.removeEventListener("scroll",l)}},[s.viewport,c,p,d]),(0,r.jsx)(a.Presence,{present:n||"hidden"!==u,children:(0,r.jsx)(R,{"data-state":"hidden"===u?"hidden":"visible",...i,ref:t,onPointerEnter:(0,f.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,f.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),E=l.forwardRef((e,t)=>{let o=g(j,e.__scopeScrollArea),{forceMount:n,...i}=e,[s,c]=l.useState(!1),d="horizontal"===e.orientation,u=V(()=>{if(o.viewport){let e=o.viewport.offsetWidth<o.viewport.scrollWidth,t=o.viewport.offsetHeight<o.viewport.scrollHeight;c(d?e:t)}},10);return Y(o.viewport,u),Y(o.content,u),(0,r.jsx)(a.Presence,{present:n||s,children:(0,r.jsx)(R,{"data-state":s?"visible":"hidden",...i,ref:t})})}),R=l.forwardRef((e,t)=>{let{orientation:o="vertical",...n}=e,i=g(j,e.__scopeScrollArea),s=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=O(c.viewport,c.content),p={...n,sizes:c,onSizesChange:d,hasThumb:!!(u>0&&u<1),onThumbChange:e=>s.current=e,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:e=>a.current=e};function f(e,t){return function(e,t,r,l="ltr"){let o=$(r),n=t||o/2,i=r.scrollbar.paddingStart+n,s=r.scrollbar.size-r.scrollbar.paddingEnd-(o-n),a=r.content-r.viewport;return B([i,s],"ltr"===l?[0,a]:[-1*a,0])(e)}(e,a.current,c,t)}return"horizontal"===o?(0,r.jsx)(T,{...p,ref:t,onThumbPositionChange:()=>{if(i.viewport&&s.current){let e=F(i.viewport.scrollLeft,c,i.dir);s.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=f(e,i.dir))}}):"vertical"===o?(0,r.jsx)(P,{...p,ref:t,onThumbPositionChange:()=>{if(i.viewport&&s.current){let e=F(i.viewport.scrollTop,c);s.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=f(e))}}):null}),T=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:i,...s}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarXChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"horizontal",...s,ref:p,sizes:n,style:{bottom:0,left:"rtl"===a.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===a.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":$(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&i({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:M(c.paddingLeft),paddingEnd:M(c.paddingRight)}})}})}),P=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:i,...s}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarYChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"vertical",...s,ref:p,sizes:n,style:{top:0,right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":$(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&i({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:M(c.paddingTop),paddingEnd:M(c.paddingBottom)}})}})}),[k,A]=h(j),L=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:i,hasThumb:a,onThumbChange:d,onThumbPointerUp:u,onThumbPointerDown:p,onThumbPositionChange:m,onDragScroll:h,onWheelScroll:v,onResize:x,...w}=e,b=g(j,n),[y,S]=l.useState(null),C=(0,o.useComposedRefs)(t,e=>S(e)),N=l.useRef(null),E=l.useRef(""),R=b.viewport,T=i.content-i.viewport,P=(0,c.useCallbackRef)(v),A=(0,c.useCallbackRef)(m),L=V(x,10);function _(e){N.current&&h({x:e.clientX-N.current.left,y:e.clientY-N.current.top})}return l.useEffect(()=>{let e=e=>{let t=e.target;y?.contains(t)&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[R,y,T,P]),l.useEffect(A,[i,A]),Y(y,L),Y(b.content,L),(0,r.jsx)(k,{scope:n,scrollbar:y,hasThumb:a,onThumbChange:(0,c.useCallbackRef)(d),onThumbPointerUp:(0,c.useCallbackRef)(u),onThumbPositionChange:A,onThumbPointerDown:(0,c.useCallbackRef)(p),children:(0,r.jsx)(s.div,{...w,ref:C,style:{position:"absolute",...w.style},onPointerDown:(0,f.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),N.current=y.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",b.viewport&&(b.viewport.style.scrollBehavior="auto"),_(e))}),onPointerMove:(0,f.composeEventHandlers)(e.onPointerMove,_),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,b.viewport&&(b.viewport.style.scrollBehavior=""),N.current=null})})})}),_="ScrollAreaThumb",D=l.forwardRef((e,t)=>{let{forceMount:l,...o}=e,n=A(_,e.__scopeScrollArea);return(0,r.jsx)(a.Presence,{present:l||n.hasThumb,children:(0,r.jsx)(z,{ref:t,...o})})}),z=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:i,...a}=e,c=g(_,n),d=A(_,n),{onThumbPositionChange:u}=d,p=(0,o.useComposedRefs)(t,e=>d.onThumbChange(e)),m=l.useRef(void 0),h=V(()=>{m.current&&(m.current(),m.current=void 0)},100);return l.useEffect(()=>{let e=c.viewport;if(e){let t=()=>{h(),m.current||(m.current=U(e,u),u())};return u(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[c.viewport,h,u]),(0,r.jsx)(s.div,{"data-state":d.hasThumb?"visible":"hidden",...a,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...i},onPointerDownCapture:(0,f.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,l=e.clientY-t.top;d.onThumbPointerDown({x:r,y:l})}),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,d.onThumbPointerUp)})});D.displayName=_;var I="ScrollAreaCorner",H=l.forwardRef((e,t)=>{let l=g(I,e.__scopeScrollArea),o=!!(l.scrollbarX&&l.scrollbarY);return"scroll"!==l.type&&o?(0,r.jsx)(W,{...e,ref:t}):null});H.displayName=I;var W=l.forwardRef((e,t)=>{let{__scopeScrollArea:o,...n}=e,i=g(I,o),[a,c]=l.useState(0),[d,u]=l.useState(0),p=!!(a&&d);return Y(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),u(e)}),Y(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),c(e)}),p?(0,r.jsx)(s.div,{...n,ref:t,style:{width:a,height:d,position:"absolute",right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:0,...e.style}}):null});function M(e){return e?parseInt(e,10):0}function O(e,t){let r=e/t;return isNaN(r)?0:r}function $(e){let t=O(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function F(e,t,r="ltr"){let l=$(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-o,i=t.content-t.viewport,s=(0,p.clamp)(e,"ltr"===r?[0,i]:[-1*i,0]);return B([0,i],[0,n-l])(s)}function B(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let l=(t[1]-t[0])/(e[1]-e[0]);return t[0]+l*(r-e[0])}}var U=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},l=0;return!function o(){let n={left:e.scrollLeft,top:e.scrollTop},i=r.left!==n.left,s=r.top!==n.top;(i||s)&&t(),r=n,l=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(l)};function V(e,t){let r=(0,c.useCallbackRef)(e),o=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(o.current),[]),l.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(r,t)},[r,t])}function Y(e,t){let r=(0,c.useCallbackRef)(t);(0,u.useLayoutEffect)(()=>{let t=0;if(e){let l=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return l.observe(e),()=>{window.cancelAnimationFrame(t),l.unobserve(e)}}},[e,r])}var X=e.i(555552);function K({className:e,children:t,...l}){return(0,r.jsxs)(w,{"data-slot":"scroll-area",className:(0,X.cn)("relative",e),...l,children:[(0,r.jsx)(y,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,r.jsx)(q,{}),(0,r.jsx)(H,{})]})}function q({className:e,orientation:t="vertical",...l}){return(0,r.jsx)(S,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,X.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...l,children:(0,r.jsx)(D,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}e.s(["ScrollArea",()=>K,"ScrollBar",()=>q],772857)},375635,e=>{"use strict";var t=e.i(414294),r=e.i(430878),l=e.i(353913),o=e.i(292623),n=e.i(504561),i=e.i(996720),s=e.i(461957),a=e.i(846193),c=e.i(77589),c=c,d=e.i(416667),d=d,u=e.i(667249),p=e.i(191729),p=p,f=e.i(904781),m=e.i(87614),h=e.i(666904),v=e.i(77982),x=e.i(772857),g=e.i(524741),w=e.i(739963),b=e.i(300739),y=e.i(555552);function j(){let e=(0,l.useRouter)(),{sessions:j,isLoading:S}=(0,b.useSessions)(),[C,N]=(0,r.useState)(!1),[E,R]=(0,r.useState)(null),[T,P]=(0,r.useState)(""),[k,A]=(0,r.useState)(!1),[L,_]=(0,r.useState)(null),[D,z]=(0,r.useState)(null),I=async(e,t)=>{e.preventDefault(),e.stopPropagation();try{await (0,g.deleteSession)(t),(0,b.mutateSessions)()}catch(e){console.error("Failed to delete session:",e)}};(0,r.useEffect)(()=>{(0,w.getConfig)().then(R)},[]);let H=async()=>{if(T.trim()&&!k){A(!0),_(null);try{if((await (0,g.setApiKey)("ai-gateway",T.trim())).success){let e=await (0,w.getConfig)();R(e),P("")}else _("Failed to save API key. Please try again.")}catch(e){_("Failed to save API key. Please try again.")}finally{A(!1)}}},W=async()=>{if(!C){N(!0);try{let t=await (0,g.createSession)({name:`Session ${j.length+1}`,model:E?.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:E?.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.push(`/session/${t.id}`)}catch(e){console.error("Failed to create session:",e)}finally{N(!1)}}};return((0,r.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"t"===e.key&&(e.preventDefault(),W())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[C,j.length,E]),E&&!E.apiKeyConfigured)?(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover",priority:!0})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsxs)("div",{className:"bg-muted/50 rounded-lg p-6 mb-6 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(a.Key,{className:"size-5 text-amber-500"}),(0,t.jsx)("h2",{className:"font-semibold",children:"API Key Required"})]}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"SparkECoder uses the Vercel AI Gateway. Enter your API key to get started."}),(0,t.jsxs)("div",{className:"flex gap-2 mb-3",children:[(0,t.jsx)(v.Input,{type:"password",placeholder:"Enter your AI Gateway API key",value:T,onChange:e=>P(e.target.value),onKeyDown:e=>"Enter"===e.key&&H(),className:"flex-1"}),(0,t.jsx)(h.Button,{onClick:H,disabled:!T.trim()||k,children:k?(0,t.jsx)(s.Loader2,{className:"size-4 animate-spin"}):"Save"})]}),L&&(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-destructive mb-3",children:[(0,t.jsx)(d.default,{className:"size-4"}),L]}),(0,t.jsxs)("a",{href:"https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-sm text-primary hover:underline",children:["Get an API key from Vercel",(0,t.jsx)(c.default,{className:"size-3"})]})]})]})}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20 overflow-auto",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"relative group cursor-pointer",children:[(0,t.jsx)("div",{className:"absolute inset-0 rounded-3xl blur-2xl opacity-40 group-hover:opacity-60 transition-opacity bg-primary/30"}),(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10 hover-lift",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover sparke-idle",priority:!0})})]})}),(0,t.jsx)(m.TooltipContent,{children:"Meet Sparke, your coding companion!"})]})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsx)("p",{className:"text-muted-foreground mb-8 leading-relaxed",children:"Your AI-powered coding assistant. Start a new session to begin building amazing things."}),(0,t.jsx)(h.Button,{size:"lg",onClick:W,disabled:C,className:"gap-2 px-8",children:C?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Loader2,{className:"size-4 animate-spin"}),"Creating..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Plus,{className:"size-4"}),"Start a Session"]})}),(0,t.jsxs)("p",{className:"mt-6 text-xs text-muted-foreground/70",children:["Press ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"⌘"})," + ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"T"})," to create a new session"]}),!S&&j.length>0&&(0,t.jsxs)("div",{className:"mt-10 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(p.default,{className:"size-4 text-muted-foreground"}),(0,t.jsx)("h2",{className:"text-sm font-medium text-muted-foreground",children:"Recent Sessions"})]}),(0,t.jsx)("div",{className:"rounded-xl border border-border/60 bg-card/50 backdrop-blur-sm overflow-hidden",children:(0,t.jsx)(x.ScrollArea,{className:(0,y.cn)(j.length>5?"h-[280px]":""),children:(0,t.jsx)("div",{className:"divide-y divide-border/40",children:j.map(e=>{let r,l,o,i,s=D===e.id,a=!0===e.isStreaming;return(0,t.jsxs)(n.default,{href:`/session/${e.id}`,className:(0,y.cn)("flex items-center gap-3 p-3 transition-colors hover:bg-accent/50 group",a&&"bg-emerald-500/5"),onMouseEnter:()=>z(e.id),onMouseLeave:()=>z(null),children:[(0,t.jsx)("div",{className:(0,y.cn)("size-9 rounded-lg flex items-center justify-center shrink-0 transition-colors",a?"bg-emerald-500/10":"bg-muted/60 group-hover:bg-muted"),children:a?(0,t.jsx)("span",{className:"size-2.5 rounded-full bg-emerald-500 animate-pulse"}):(0,t.jsx)(u.MessageSquare,{className:"size-4 text-muted-foreground"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:(0,y.cn)("text-sm font-medium truncate",a&&"text-emerald-600 dark:text-emerald-400"),children:e.name||"Untitled Session"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a?(0,t.jsx)("span",{className:"text-emerald-600 dark:text-emerald-400",children:"Active now"}):"waiting"===e.status?(0,t.jsx)("span",{className:"text-amber-600 dark:text-amber-400",children:"Waiting for input"}):(r=new Date(e.updatedAt||e.createdAt),i=Math.floor((o=Math.floor((l=Math.floor(Math.floor((new Date().getTime()-r.getTime())/1e3)/60))/60))/24),l<1?"just now":1===l?"1 minute ago":l<60?`${l} minutes ago`:1===o?"1 hour ago":o<24?`${o} hours ago`:1===i?"yesterday":i<7?`${i} days ago`:`${Math.floor(i/7)} weeks ago`)})]}),s&&(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(h.Button,{size:"icon",variant:"ghost",className:"size-7 shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors",onClick:t=>I(t,e.id),children:(0,t.jsx)(f.Trash2,{className:"size-3.5"})})}),(0,t.jsx)(m.TooltipContent,{children:"Delete session"})]})})]},e.id)})})})})]})]})})}e.s(["default",()=>j],375635)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77589,e=>{"use strict";let t=(0,e.i(292511).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["default",()=>t])},416667,e=>{"use strict";let t=(0,e.i(292511).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["default",()=>t])},191729,772857,e=>{"use strict";let t=(0,e.i(292511).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["default",()=>t],191729);var r=e.i(414294),l=e.i(430878);e.i(773340);var o=e.i(309945),n=Symbol("radix.slottable");function i(e){return l.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===n}var s=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var n,s;let a,c,d,u=(s=n=`Primitive.${t}`,(a=l.forwardRef((e,t)=>{let{children:r,...n}=e;if(l.isValidElement(r)){var i;let e,s,a=(i=r,(s=(e=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.ref:(s=(e=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.props.ref:i.props.ref||i.ref),c=function(e,t){let r={...t};for(let l in t){let o=e[l],n=t[l];/^on[A-Z]/.test(l)?o&&n?r[l]=(...e)=>{let t=n(...e);return o(...e),t}:o&&(r[l]=o):"style"===l?r[l]={...o,...n}:"className"===l&&(r[l]=[o,n].filter(Boolean).join(" "))}return{...e,...r}}(n,r.props);return r.type!==l.Fragment&&(c.ref=t?(0,o.composeRefs)(t,a):a),l.cloneElement(r,c)}return l.Children.count(r)>1?l.Children.only(null):null})).displayName=`${s}.SlotClone`,c=a,(d=l.forwardRef((e,t)=>{let{children:o,...n}=e,s=l.Children.toArray(o),a=s.find(i);if(a){let e=a.props.children,o=s.map(t=>t!==a?t:l.Children.count(e)>1?l.Children.only(null):l.isValidElement(e)?e.props.children:null);return(0,r.jsx)(c,{...n,ref:t,children:l.isValidElement(e)?l.cloneElement(e,void 0,o):null})}return(0,r.jsx)(c,{...n,ref:t,children:o})})).displayName=`${n}.Slot`,d),p=l.forwardRef((e,l)=>{let{asChild:o,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,r.jsx)(o?u:t,{...n,ref:l})});return p.displayName=`Primitive.${t}`,{...e,[t]:p}},{}),a=e.i(395509),c=e.i(897462),d=e.i(542899),u=e.i(995945),p=e.i(992421),f=e.i(241416),m="ScrollArea",[h,v]=function(e,t=[]){let o=[],n=()=>{let t=o.map(e=>l.createContext(e));return function(r){let o=r?.[e]||t;return l.useMemo(()=>({[`__scope${e}`]:{...r,[e]:o}}),[r,o])}};return n.scopeName=e,[function(t,n){let i=l.createContext(n),s=o.length;o=[...o,n];let a=t=>{let{scope:o,children:n,...a}=t,c=o?.[e]?.[s]||i,d=l.useMemo(()=>a,Object.values(a));return(0,r.jsx)(c.Provider,{value:d,children:n})};return a.displayName=t+"Provider",[a,function(r,o){let a=o?.[e]?.[s]||i,c=l.useContext(a);if(c)return c;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=r.reduce((t,{useScope:r,scopeName:l})=>{let o=r(e)[`__scope${l}`];return{...t,...o}},{});return l.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return r.scopeName=t.scopeName,r}(n,...t)]}(m),[x,g]=h(m),w=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,type:i="hover",dir:a,scrollHideDelay:c=600,...u}=e,[p,f]=l.useState(null),[m,h]=l.useState(null),[v,g]=l.useState(null),[w,b]=l.useState(null),[y,j]=l.useState(null),[S,C]=l.useState(0),[N,E]=l.useState(0),[R,T]=l.useState(!1),[P,k]=l.useState(!1),A=(0,o.useComposedRefs)(t,e=>f(e)),L=(0,d.useDirection)(a);return(0,r.jsx)(x,{scope:n,type:i,dir:L,scrollHideDelay:c,scrollArea:p,viewport:m,onViewportChange:h,content:v,onContentChange:g,scrollbarX:w,onScrollbarXChange:b,scrollbarXEnabled:R,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:j,scrollbarYEnabled:P,onScrollbarYEnabledChange:k,onCornerWidthChange:C,onCornerHeightChange:E,children:(0,r.jsx)(s.div,{dir:L,...u,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":N+"px",...e.style}})})});w.displayName=m;var b="ScrollAreaViewport",y=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,children:i,nonce:a,...c}=e,d=g(b,n),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,d.onViewportChange);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,r.jsx)(s.div,{"data-radix-scroll-area-viewport":"",...c,ref:p,style:{overflowX:d.scrollbarXEnabled?"scroll":"hidden",overflowY:d.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,r.jsx)("div",{ref:d.onContentChange,style:{minWidth:"100%",display:"table"},children:i})})]})});y.displayName=b;var j="ScrollAreaScrollbar",S=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,i=g(j,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:a}=i,c="horizontal"===e.orientation;return l.useEffect(()=>(c?s(!0):a(!0),()=>{c?s(!1):a(!1)}),[c,s,a]),"hover"===i.type?(0,r.jsx)(C,{...n,ref:t,forceMount:o}):"scroll"===i.type?(0,r.jsx)(N,{...n,ref:t,forceMount:o}):"auto"===i.type?(0,r.jsx)(E,{...n,ref:t,forceMount:o}):"always"===i.type?(0,r.jsx)(R,{...n,ref:t}):null});S.displayName=j;var C=l.forwardRef((e,t)=>{let{forceMount:o,...n}=e,i=g(j,e.__scopeScrollArea),[s,c]=l.useState(!1);return l.useEffect(()=>{let e=i.scrollArea,t=0;if(e){let r=()=>{window.clearTimeout(t),c(!0)},l=()=>{t=window.setTimeout(()=>c(!1),i.scrollHideDelay)};return e.addEventListener("pointerenter",r),e.addEventListener("pointerleave",l),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",r),e.removeEventListener("pointerleave",l)}}},[i.scrollArea,i.scrollHideDelay]),(0,r.jsx)(a.Presence,{present:o||s,children:(0,r.jsx)(E,{"data-state":s?"visible":"hidden",...n,ref:t})})}),N=l.forwardRef((e,t)=>{var o;let{forceMount:n,...i}=e,s=g(j,e.__scopeScrollArea),c="horizontal"===e.orientation,d=V(()=>p("SCROLL_END"),100),[u,p]=(o={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},l.useReducer((e,t)=>o[e][t]??e,"hidden"));return l.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>p("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,s.scrollHideDelay,p]),l.useEffect(()=>{let e=s.viewport,t=c?"scrollLeft":"scrollTop";if(e){let r=e[t],l=()=>{let l=e[t];r!==l&&(p("SCROLL"),d()),r=l};return e.addEventListener("scroll",l),()=>e.removeEventListener("scroll",l)}},[s.viewport,c,p,d]),(0,r.jsx)(a.Presence,{present:n||"hidden"!==u,children:(0,r.jsx)(R,{"data-state":"hidden"===u?"hidden":"visible",...i,ref:t,onPointerEnter:(0,f.composeEventHandlers)(e.onPointerEnter,()=>p("POINTER_ENTER")),onPointerLeave:(0,f.composeEventHandlers)(e.onPointerLeave,()=>p("POINTER_LEAVE"))})})}),E=l.forwardRef((e,t)=>{let o=g(j,e.__scopeScrollArea),{forceMount:n,...i}=e,[s,c]=l.useState(!1),d="horizontal"===e.orientation,u=V(()=>{if(o.viewport){let e=o.viewport.offsetWidth<o.viewport.scrollWidth,t=o.viewport.offsetHeight<o.viewport.scrollHeight;c(d?e:t)}},10);return Y(o.viewport,u),Y(o.content,u),(0,r.jsx)(a.Presence,{present:n||s,children:(0,r.jsx)(R,{"data-state":s?"visible":"hidden",...i,ref:t})})}),R=l.forwardRef((e,t)=>{let{orientation:o="vertical",...n}=e,i=g(j,e.__scopeScrollArea),s=l.useRef(null),a=l.useRef(0),[c,d]=l.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=O(c.viewport,c.content),p={...n,sizes:c,onSizesChange:d,hasThumb:!!(u>0&&u<1),onThumbChange:e=>s.current=e,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:e=>a.current=e};function f(e,t){return function(e,t,r,l="ltr"){let o=$(r),n=t||o/2,i=r.scrollbar.paddingStart+n,s=r.scrollbar.size-r.scrollbar.paddingEnd-(o-n),a=r.content-r.viewport;return B([i,s],"ltr"===l?[0,a]:[-1*a,0])(e)}(e,a.current,c,t)}return"horizontal"===o?(0,r.jsx)(T,{...p,ref:t,onThumbPositionChange:()=>{if(i.viewport&&s.current){let e=F(i.viewport.scrollLeft,c,i.dir);s.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollLeft=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollLeft=f(e,i.dir))}}):"vertical"===o?(0,r.jsx)(P,{...p,ref:t,onThumbPositionChange:()=>{if(i.viewport&&s.current){let e=F(i.viewport.scrollTop,c);s.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{i.viewport&&(i.viewport.scrollTop=e)},onDragScroll:e=>{i.viewport&&(i.viewport.scrollTop=f(e))}}):null}),T=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:i,...s}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarXChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"horizontal",...s,ref:p,sizes:n,style:{bottom:0,left:"rtl"===a.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===a.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":$(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&i({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:M(c.paddingLeft),paddingEnd:M(c.paddingRight)}})}})}),P=l.forwardRef((e,t)=>{let{sizes:n,onSizesChange:i,...s}=e,a=g(j,e.__scopeScrollArea),[c,d]=l.useState(),u=l.useRef(null),p=(0,o.useComposedRefs)(t,u,a.onScrollbarYChange);return l.useEffect(()=>{u.current&&d(getComputedStyle(u.current))},[u]),(0,r.jsx)(L,{"data-orientation":"vertical",...s,ref:p,sizes:n,style:{top:0,right:"ltr"===a.dir?0:void 0,left:"rtl"===a.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":$(n)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,r)=>{if(a.viewport){var l,o;let n=a.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),l=n,o=r,l>0&&l<o&&t.preventDefault()}},onResize:()=>{u.current&&a.viewport&&c&&i({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:M(c.paddingTop),paddingEnd:M(c.paddingBottom)}})}})}),[k,A]=h(j),L=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,sizes:i,hasThumb:a,onThumbChange:d,onThumbPointerUp:u,onThumbPointerDown:p,onThumbPositionChange:m,onDragScroll:h,onWheelScroll:v,onResize:x,...w}=e,b=g(j,n),[y,S]=l.useState(null),C=(0,o.useComposedRefs)(t,e=>S(e)),N=l.useRef(null),E=l.useRef(""),R=b.viewport,T=i.content-i.viewport,P=(0,c.useCallbackRef)(v),A=(0,c.useCallbackRef)(m),L=V(x,10);function _(e){N.current&&h({x:e.clientX-N.current.left,y:e.clientY-N.current.top})}return l.useEffect(()=>{let e=e=>{let t=e.target;y?.contains(t)&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[R,y,T,P]),l.useEffect(A,[i,A]),Y(y,L),Y(b.content,L),(0,r.jsx)(k,{scope:n,scrollbar:y,hasThumb:a,onThumbChange:(0,c.useCallbackRef)(d),onThumbPointerUp:(0,c.useCallbackRef)(u),onThumbPositionChange:A,onThumbPointerDown:(0,c.useCallbackRef)(p),children:(0,r.jsx)(s.div,{...w,ref:C,style:{position:"absolute",...w.style},onPointerDown:(0,f.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),N.current=y.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",b.viewport&&(b.viewport.style.scrollBehavior="auto"),_(e))}),onPointerMove:(0,f.composeEventHandlers)(e.onPointerMove,_),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,b.viewport&&(b.viewport.style.scrollBehavior=""),N.current=null})})})}),_="ScrollAreaThumb",D=l.forwardRef((e,t)=>{let{forceMount:l,...o}=e,n=A(_,e.__scopeScrollArea);return(0,r.jsx)(a.Presence,{present:l||n.hasThumb,children:(0,r.jsx)(z,{ref:t,...o})})}),z=l.forwardRef((e,t)=>{let{__scopeScrollArea:n,style:i,...a}=e,c=g(_,n),d=A(_,n),{onThumbPositionChange:u}=d,p=(0,o.useComposedRefs)(t,e=>d.onThumbChange(e)),m=l.useRef(void 0),h=V(()=>{m.current&&(m.current(),m.current=void 0)},100);return l.useEffect(()=>{let e=c.viewport;if(e){let t=()=>{h(),m.current||(m.current=U(e,u),u())};return u(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[c.viewport,h,u]),(0,r.jsx)(s.div,{"data-state":d.hasThumb?"visible":"hidden",...a,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...i},onPointerDownCapture:(0,f.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),r=e.clientX-t.left,l=e.clientY-t.top;d.onThumbPointerDown({x:r,y:l})}),onPointerUp:(0,f.composeEventHandlers)(e.onPointerUp,d.onThumbPointerUp)})});D.displayName=_;var I="ScrollAreaCorner",H=l.forwardRef((e,t)=>{let l=g(I,e.__scopeScrollArea),o=!!(l.scrollbarX&&l.scrollbarY);return"scroll"!==l.type&&o?(0,r.jsx)(W,{...e,ref:t}):null});H.displayName=I;var W=l.forwardRef((e,t)=>{let{__scopeScrollArea:o,...n}=e,i=g(I,o),[a,c]=l.useState(0),[d,u]=l.useState(0),p=!!(a&&d);return Y(i.scrollbarX,()=>{let e=i.scrollbarX?.offsetHeight||0;i.onCornerHeightChange(e),u(e)}),Y(i.scrollbarY,()=>{let e=i.scrollbarY?.offsetWidth||0;i.onCornerWidthChange(e),c(e)}),p?(0,r.jsx)(s.div,{...n,ref:t,style:{width:a,height:d,position:"absolute",right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:0,...e.style}}):null});function M(e){return e?parseInt(e,10):0}function O(e,t){let r=e/t;return isNaN(r)?0:r}function $(e){let t=O(e.viewport,e.content),r=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-r)*t,18)}function F(e,t,r="ltr"){let l=$(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-o,i=t.content-t.viewport,s=(0,p.clamp)(e,"ltr"===r?[0,i]:[-1*i,0]);return B([0,i],[0,n-l])(s)}function B(e,t){return r=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let l=(t[1]-t[0])/(e[1]-e[0]);return t[0]+l*(r-e[0])}}var U=(e,t=()=>{})=>{let r={left:e.scrollLeft,top:e.scrollTop},l=0;return!function o(){let n={left:e.scrollLeft,top:e.scrollTop},i=r.left!==n.left,s=r.top!==n.top;(i||s)&&t(),r=n,l=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(l)};function V(e,t){let r=(0,c.useCallbackRef)(e),o=l.useRef(0);return l.useEffect(()=>()=>window.clearTimeout(o.current),[]),l.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(r,t)},[r,t])}function Y(e,t){let r=(0,c.useCallbackRef)(t);(0,u.useLayoutEffect)(()=>{let t=0;if(e){let l=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(r)});return l.observe(e),()=>{window.cancelAnimationFrame(t),l.unobserve(e)}}},[e,r])}var X=e.i(555552);function K({className:e,children:t,...l}){return(0,r.jsxs)(w,{"data-slot":"scroll-area",className:(0,X.cn)("relative",e),...l,children:[(0,r.jsx)(y,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,r.jsx)(q,{}),(0,r.jsx)(H,{})]})}function q({className:e,orientation:t="vertical",...l}){return(0,r.jsx)(S,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,X.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...l,children:(0,r.jsx)(D,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}e.s(["ScrollArea",()=>K,"ScrollBar",()=>q],772857)},375635,e=>{"use strict";var t=e.i(414294),r=e.i(430878),l=e.i(353913),o=e.i(292623),n=e.i(504561),i=e.i(996720),s=e.i(461957),a=e.i(846193),c=e.i(77589),c=c,d=e.i(416667),d=d,u=e.i(667249),p=e.i(191729),p=p,f=e.i(904781),m=e.i(87614),h=e.i(666904),v=e.i(77982),x=e.i(772857),g=e.i(524741),w=e.i(739963),b=e.i(300739),y=e.i(555552);function j(){let e=(0,l.useRouter)(),{sessions:j,isLoading:S}=(0,b.useSessions)(),[C,N]=(0,r.useState)(!1),[E,R]=(0,r.useState)(null),[T,P]=(0,r.useState)(""),[k,A]=(0,r.useState)(!1),[L,_]=(0,r.useState)(null),[D,z]=(0,r.useState)(null),I=async(e,t)=>{e.preventDefault(),e.stopPropagation();try{await (0,g.deleteSession)(t),(0,b.mutateSessions)()}catch(e){console.error("Failed to delete session:",e)}};(0,r.useEffect)(()=>{(0,w.getConfig)().then(R)},[]);let H=async()=>{if(T.trim()&&!k){A(!0),_(null);try{if((await (0,g.setApiKey)("ai-gateway",T.trim())).success){let e=await (0,w.getConfig)();R(e),P("")}else _("Failed to save API key. Please try again.")}catch(e){_("Failed to save API key. Please try again.")}finally{A(!1)}}},W=async()=>{if(!C){N(!0);try{let t=await (0,g.createSession)({name:`Session ${j.length+1}`,model:E?.defaultModel||"anthropic/claude-opus-4-5",toolApprovals:E?.defaultToolApprovals||{}});(0,b.mutateSessions)(),e.push(`/session/${t.id}`)}catch(e){console.error("Failed to create session:",e)}finally{N(!1)}}};return((0,r.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"t"===e.key&&(e.preventDefault(),W())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[C,j.length,E]),E&&!E.apiKeyConfigured)?(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover",priority:!0})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsxs)("div",{className:"bg-muted/50 rounded-lg p-6 mb-6 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(a.Key,{className:"size-5 text-amber-500"}),(0,t.jsx)("h2",{className:"font-semibold",children:"API Key Required"})]}),(0,t.jsx)("p",{className:"text-sm text-muted-foreground mb-4",children:"SparkECoder uses the Vercel AI Gateway. Enter your API key to get started."}),(0,t.jsxs)("div",{className:"flex gap-2 mb-3",children:[(0,t.jsx)(v.Input,{type:"password",placeholder:"Enter your AI Gateway API key",value:T,onChange:e=>P(e.target.value),onKeyDown:e=>"Enter"===e.key&&H(),className:"flex-1"}),(0,t.jsx)(h.Button,{onClick:H,disabled:!T.trim()||k,children:k?(0,t.jsx)(s.Loader2,{className:"size-4 animate-spin"}):"Save"})]}),L&&(0,t.jsxs)("div",{className:"flex items-center gap-2 text-sm text-destructive mb-3",children:[(0,t.jsx)(d.default,{className:"size-4"}),L]}),(0,t.jsxs)("a",{href:"https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-sm text-primary hover:underline",children:["Get an API key from Vercel",(0,t.jsx)(c.default,{className:"size-3"})]})]})]})}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full bg-gradient-to-b from-background to-muted/20 overflow-auto",children:(0,t.jsxs)("div",{className:"text-center max-w-lg mx-auto p-8",children:[(0,t.jsx)("div",{className:"flex justify-center mb-8",children:(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)("div",{className:"relative group cursor-pointer",children:[(0,t.jsx)("div",{className:"absolute inset-0 rounded-3xl blur-2xl opacity-40 group-hover:opacity-60 transition-opacity bg-primary/30"}),(0,t.jsx)("div",{className:"relative size-28 rounded-2xl overflow-hidden shadow-xl ring-1 ring-white/10 hover-lift",children:(0,t.jsx)(o.default,{src:"/sparke-coder.png",alt:"Sparke - AI Coding Assistant",fill:!0,className:"object-cover sparke-idle",priority:!0})})]})}),(0,t.jsx)(m.TooltipContent,{children:"Meet Sparke, your coding companion!"})]})})}),(0,t.jsx)("h1",{className:"text-3xl font-bold mb-3 text-primary",children:"Welcome to SparkECoder"}),(0,t.jsx)("p",{className:"text-muted-foreground mb-8 leading-relaxed",children:"Your AI-powered coding assistant. Start a new session to begin building amazing things."}),(0,t.jsx)(h.Button,{size:"lg",onClick:W,disabled:C,className:"gap-2 px-8",children:C?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Loader2,{className:"size-4 animate-spin"}),"Creating..."]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.Plus,{className:"size-4"}),"Start a Session"]})}),(0,t.jsxs)("p",{className:"mt-6 text-xs text-muted-foreground/70",children:["Press ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"⌘"})," + ",(0,t.jsx)("kbd",{className:"px-1.5 py-0.5 bg-muted rounded text-[10px] font-mono",children:"T"})," to create a new session"]}),!S&&j.length>0&&(0,t.jsxs)("div",{className:"mt-10 text-left",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,t.jsx)(p.default,{className:"size-4 text-muted-foreground"}),(0,t.jsx)("h2",{className:"text-sm font-medium text-muted-foreground",children:"Recent Sessions"})]}),(0,t.jsx)("div",{className:"rounded-xl border border-border/60 bg-card/50 backdrop-blur-sm overflow-hidden",children:(0,t.jsx)(x.ScrollArea,{className:(0,y.cn)(j.length>5?"h-[280px]":""),children:(0,t.jsx)("div",{className:"divide-y divide-border/40",children:j.map(e=>{let r,l,o,i,s=D===e.id,a=!0===e.isStreaming;return(0,t.jsxs)(n.default,{href:`/session/${e.id}`,className:(0,y.cn)("flex items-center gap-3 p-3 transition-colors hover:bg-accent/50 group",a&&"bg-emerald-500/5"),onMouseEnter:()=>z(e.id),onMouseLeave:()=>z(null),children:[(0,t.jsx)("div",{className:(0,y.cn)("size-9 rounded-lg flex items-center justify-center shrink-0 transition-colors",a?"bg-emerald-500/10":"bg-muted/60 group-hover:bg-muted"),children:a?(0,t.jsx)("span",{className:"size-2.5 rounded-full bg-emerald-500 animate-pulse"}):(0,t.jsx)(u.MessageSquare,{className:"size-4 text-muted-foreground"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)("p",{className:(0,y.cn)("text-sm font-medium truncate",a&&"text-emerald-600 dark:text-emerald-400"),children:e.name||"Untitled Session"}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground truncate",children:a?(0,t.jsx)("span",{className:"text-emerald-600 dark:text-emerald-400",children:"Active now"}):"waiting"===e.status?(0,t.jsx)("span",{className:"text-amber-600 dark:text-amber-400",children:"Waiting for input"}):(r=new Date(e.updatedAt||e.createdAt),i=Math.floor((o=Math.floor((l=Math.floor(Math.floor((new Date().getTime()-r.getTime())/1e3)/60))/60))/24),l<1?"just now":1===l?"1 minute ago":l<60?`${l} minutes ago`:1===o?"1 hour ago":o<24?`${o} hours ago`:1===i?"yesterday":i<7?`${i} days ago`:`${Math.floor(i/7)} weeks ago`)})]}),s&&(0,t.jsx)(m.TooltipProvider,{children:(0,t.jsxs)(m.Tooltip,{children:[(0,t.jsx)(m.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(h.Button,{size:"icon",variant:"ghost",className:"size-7 shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors",onClick:t=>I(t,e.id),children:(0,t.jsx)(f.Trash2,{className:"size-3.5"})})}),(0,t.jsx)(m.TooltipContent,{children:"Delete session"})]})})]},e.id)})})})})]})]})})}e.s(["default",()=>j],375635)}]);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|