truecourse 0.1.1 → 0.1.4
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 +8 -8
- package/public/404.html +2 -2
- package/public/_next/static/chunks/app/_not-found/page-2f5b5dd68feb177e.js +1 -0
- package/public/_next/static/chunks/app/layout-f77cd77fe41bf255.js +1 -0
- package/public/_next/static/chunks/app/page-59b2858b3b17446e.js +1 -0
- package/public/_next/static/chunks/app/repos/[[...slug]]/{page-e5fdcbd6e95a0351.js → page-a9fc239dd01f7549.js} +1 -1
- package/public/_next/static/chunks/{main-app-6713e5440a400899.js → main-app-598d148dafd4bc32.js} +1 -1
- package/public/_next/static/css/49e7ab4429e483d4.css +1 -0
- package/public/index.html +2 -2
- package/public/index.txt +3 -3
- package/public/repos.html +1 -1
- package/public/repos.txt +3 -3
- package/server.mjs +14 -2
- package/public/_next/static/chunks/app/_not-found/page-fa912e0095c03faf.js +0 -1
- package/public/_next/static/chunks/app/layout-8b7c9093ed7416a9.js +0 -1
- package/public/_next/static/chunks/app/page-a584f9a9455d99db.js +0 -1
- package/public/_next/static/css/c3633533dd52bb7f.css +0 -1
- /package/public/_next/static/{1lUeio3wsR1e0vpd3038r → bPWCf-gzBKdFUdcy_Q1EJ}/_buildManifest.js +0 -0
- /package/public/_next/static/{1lUeio3wsR1e0vpd3038r → bPWCf-gzBKdFUdcy_Q1EJ}/_ssgManifest.js +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "truecourse",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Visualize your codebase architecture as an interactive graph",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
"node": ">=20"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"tree-sitter-javascript": "^0.21.4",
|
|
16
|
-
"embedded-postgres": "18.3.0-beta.16",
|
|
13
|
+
"@clack/prompts": "^0.9.0",
|
|
14
|
+
"commander": "^12.1.0",
|
|
17
15
|
"dotenv": "^16.4.0",
|
|
16
|
+
"embedded-postgres": "18.3.0-beta.16",
|
|
18
17
|
"postgres": "^3.4.0",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
18
|
+
"tree-sitter": "^0.21.1",
|
|
19
|
+
"tree-sitter-javascript": "^0.21.4",
|
|
20
|
+
"tree-sitter-typescript": "^0.21.2"
|
|
21
21
|
},
|
|
22
22
|
"license": "MIT",
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
25
|
-
"url": "https://github.com/
|
|
25
|
+
"url": "https://github.com/truecourse-ai/truecourse"
|
|
26
26
|
},
|
|
27
27
|
"keywords": [
|
|
28
28
|
"codebase",
|
package/public/404.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--bPWCf_gzBKdFUdcy_Q1EJ--><html lang="en" class="font-sans"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/49e7ab4429e483d4.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-2f0ed87fd33e9d1c.js"/><script src="/_next/static/chunks/a51c26f2-7912c8e37f20294d.js" async=""></script><script src="/_next/static/chunks/597-63908a91b482ecc2.js" async=""></script><script src="/_next/static/chunks/main-app-598d148dafd4bc32.js" async=""></script><meta name="robots" content="noindex"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><title>TrueCourse</title><meta name="description" content="Visualize your codebase architecture"/><link href="https://fonts.googleapis.com/css2?family=Geist:wght@100..900&family=Inter:wght@400..700&display=swap" rel="stylesheet"/><script>
|
|
2
2
|
(function() {
|
|
3
3
|
try {
|
|
4
4
|
var stored = localStorage.getItem('theme');
|
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
}
|
|
10
10
|
} catch (e) {}
|
|
11
11
|
})();
|
|
12
|
-
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="font-sans"><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>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@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:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-2f0ed87fd33e9d1c.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[2064,[],\"\"]\n3:I[982,[],\"\"]\n4:I[1597,[],\"OutletBoundary\"]\n6:I[7544,[],\"AsyncMetadataOutlet\"]\n8:I[1597,[],\"ViewportBoundary\"]\na:I[1597,[],\"MetadataBoundary\"]\nb:\"$Sreact.suspense\"\nd:I[2044,[],\"\"]\n:HL[\"/_next/static/css/
|
|
12
|
+
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="font-sans"><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>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@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:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-2f0ed87fd33e9d1c.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[2064,[],\"\"]\n3:I[982,[],\"\"]\n4:I[1597,[],\"OutletBoundary\"]\n6:I[7544,[],\"AsyncMetadataOutlet\"]\n8:I[1597,[],\"ViewportBoundary\"]\na:I[1597,[],\"MetadataBoundary\"]\nb:\"$Sreact.suspense\"\nd:I[2044,[],\"\"]\n:HL[\"/_next/static/css/49e7ab4429e483d4.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"bPWCf-gzBKdFUdcy_Q1EJ\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/49e7ab4429e483d4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"font-sans\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Geist:wght@100..900\u0026family=Inter:wght@400..700\u0026display=swap\",\"rel\":\"stylesheet\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n try {\\n var stored = localStorage.getItem('theme');\\n if (stored === 'dark' || (!stored \u0026\u0026 window.matchMedia('(prefers-color-scheme: dark)').matches)) {\\n document.documentElement.classList.add('dark');\\n } else {\\n document.documentElement.classList.remove('dark');\\n }\\n } catch (e) {}\\n })();\\n \"}}]]}],[\"$\",\"body\",null,{\"className\":\"font-sans\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$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\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"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,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@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\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$L5\",[\"$\",\"$L6\",null,{\"promise\":\"$@7\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null],[\"$\",\"$La\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$b\",null,{\"fallback\":null,\"children\":\"$Lc\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n5:null\n"])</script><script>self.__next_f.push([1,"7:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"TrueCourse\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize your codebase architecture\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"c:\"$7:metadata\"\n"])</script></body></html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{572:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(6409),n=l(6032);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4042:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(6409),n=l(572),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6032:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{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"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6949:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(4042)}])}},e=>{e.O(0,[429,597,358],()=>e(e.s=6949)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{5658:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,7013,23))},7013:()=>{}},e=>{e.O(0,[726,429,597,358],()=>e(e.s=5658)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{432:(e,t,a)=>{"use strict";a.d(t,{L8:()=>o,LY:()=>c,M2:()=>l,S:()=>m,Vl:()=>f,XT:()=>u,YN:()=>i,aE:()=>p,ge:()=>x,kP:()=>g,lS:()=>h,sv:()=>d});let r=(0,a(2011).T)();class s extends Error{constructor(e,t){super(t),this.status=e,this.name="ApiError"}}async function n(e,t){let a="".concat(r).concat(e),n=await fetch(a,{...t,headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!n.ok){let e=await n.text().catch(()=>"Unknown error");throw new s(n.status,e)}return n.json()}function i(){return n("/api/repos")}function o(e){return n("/api/repos/".concat(e))}function d(e){return n("/api/repos",{method:"POST",body:JSON.stringify({path:e})})}function l(e){return n("/api/repos/".concat(e),{method:"DELETE"})}function c(e,t){return n("/api/repos/".concat(e,"/analyze"),{method:"POST",body:JSON.stringify({branch:t})})}function u(e,t){let a=t?"?branch=".concat(encodeURIComponent(t)):"";return n("/api/repos/".concat(e,"/graph").concat(a))}function m(e,t,a){let r=a?"?branch=".concat(encodeURIComponent(a)):"";return n("/api/repos/".concat(e,"/graph/positions").concat(r),{method:"PUT",body:JSON.stringify({positions:t})})}function p(e,t){let a=t?"?branch=".concat(encodeURIComponent(t)):"";return n("/api/repos/".concat(e,"/graph/positions").concat(a),{method:"DELETE"})}function x(e){return n("/api/repos/".concat(e,"/insights"))}function h(e){return n("/api/repos/".concat(e,"/conversations"))}function g(e,t){return n("/api/repos/".concat(e,"/chat/").concat(t))}function f(e,t,a,n,i,o){let d=new AbortController;return fetch("".concat(r,"/api/repos/").concat(e,"/chat"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:t,nodeContext:null==o?void 0:o.nodeContext,conversationId:null==o?void 0:o.conversationId}),signal:d.signal}).then(async e=>{var t;if(!e.ok)throw new s(e.status,await e.text());let r=e.headers.get("X-Conversation-Id")||void 0,i=null==(t=e.body)?void 0:t.getReader();if(!i)throw Error("No response body");let o=new TextDecoder,d="";for(;;){let{done:e,value:t}=await i.read();if(e)break;let s=(d+=o.decode(t,{stream:!0})).split("\n");for(let e of(d=s.pop()||"",s))if(e.startsWith("data: ")){let t=e.slice(6);if("[DONE]"===t)return void n(r);try{let e=JSON.parse(t);e.content&&a(e.content)}catch(e){a(t)}}}n(r)}).catch(e=>{"AbortError"!==e.name&&i(e)}),d}},553:(e,t,a)=>{"use strict";a.d(t,{Y:()=>h});var r=a(6409),s=a(7367),n=a(8925),i=a(1540),o=a(7054),d=a(3218),l=a(2368),c=a(9235),u=a(7505),m=a.n(u),p=a(4669),x=a(4846);function h(e){let{repoName:t,branches:a,selectedBranch:u,onBranchChange:h,onAnalyze:g,isAnalyzing:f,showBack:v,backHref:b="/",isSidebarOpen:y,onToggleSidebar:j}=e,[N,w]=(0,p.useState)(!1);return(0,p.useEffect)(()=>{w(document.documentElement.classList.contains("dark"))},[]),(0,r.jsxs)("header",{className:"flex h-14 items-center justify-between border-b border-border bg-card px-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[v&&(0,r.jsx)(m(),{href:b,className:(0,x.r)({variant:"ghost",size:"icon-sm"}),children:(0,r.jsx)(s.A,{className:"h-5 w-5"})}),(0,r.jsx)(m(),{href:"/",className:"text-lg font-bold text-foreground",children:"TrueCourse"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[t&&(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t}),a&&a.length>0&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-md border border-border bg-muted px-2 py-1",children:[(0,r.jsx)(n.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,r.jsx)("select",{value:u||"",onChange:e=>null==h?void 0:h(e.target.value),className:"bg-transparent text-sm text-foreground outline-none",children:a.map(e=>(0,r.jsx)("option",{value:e,children:e},e))})]}),g&&(0,r.jsxs)(x.$,{size:"sm",onClick:g,disabled:f,children:[f&&(0,r.jsx)(i.A,{className:"h-3.5 w-3.5 animate-spin"}),f?"Analyzing...":"Analyze"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[j&&(0,r.jsx)(x.$,{variant:"ghost",size:"icon-sm",onClick:j,"aria-label":y?"Close panel":"Open panel",children:y?(0,r.jsx)(o.A,{className:"h-5 w-5"}):(0,r.jsx)(d.A,{className:"h-5 w-5"})}),(0,r.jsx)(x.$,{variant:"ghost",size:"icon-sm",onClick:()=>{let e=!N;w(e),document.documentElement.classList.toggle("dark",e),localStorage.setItem("theme",e?"dark":"light")},"aria-label":"Toggle theme",children:N?(0,r.jsx)(l.A,{className:"h-5 w-5"}):(0,r.jsx)(c.A,{className:"h-5 w-5"})})]})]})}},2011:(e,t,a)=>{"use strict";function r(){return""}a.d(t,{T:()=>r})},2054:(e,t,a)=>{"use strict";a.d(t,{p:()=>i});var r=a(6409);a(4669);var s=a(7350),n=a(6669);function i(e){let{className:t,type:a,...i}=e;return(0,r.jsx)(s.p,{type:a,"data-slot":"input",className:(0,n.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...i})}},3316:(e,t,a)=>{"use strict";a.d(t,{BT:()=>d,Wu:()=>l,ZB:()=>o,Zp:()=>n,aR:()=>i,wL:()=>c});var r=a(6409);a(4669);var s=a(6669);function n(e){let{className:t,size:a="default",...n}=e;return(0,r.jsx)("div",{"data-slot":"card","data-size":a,className:(0,s.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function i(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,s.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...a})}function o(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,s.cn)("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,s.cn)("text-sm text-muted-foreground",t),...a})}function l(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,s.cn)("px-4 group-data-[size=sm]/card:px-3",t),...a})}function c(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-footer",className:(0,s.cn)("flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3",t),...a})}},3840:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>k});var r=a(6409),s=a(553),n=a(4669),i=a(9383);let o=(0,i.A)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);var d=a(1540),l=a(726),c=a(2054),u=a(4846);function m(e){let{onAdd:t}=e,[a,s]=(0,n.useState)(""),[i,m]=(0,n.useState)(!1),[p,x]=(0,n.useState)(null),h=async e=>{if(e.preventDefault(),a.trim()){m(!0),x(null);try{await t(a.trim()),s("")}catch(e){x(e instanceof Error?e.message:"Failed to add repository")}finally{m(!1)}}};return(0,r.jsxs)("form",{onSubmit:h,className:"w-full",children:[(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)(o,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)(c.p,{type:"text",value:a,onChange:e=>s(e.target.value),placeholder:"Paste repository path...",className:"pl-10"})]}),(0,r.jsxs)(u.$,{type:"submit",disabled:i||!a.trim(),children:[i?(0,r.jsx)(d.A,{className:"h-4 w-4 animate-spin"}):(0,r.jsx)(l.A,{className:"h-4 w-4"}),"Add Repository"]})]}),p&&(0,r.jsx)("p",{className:"mt-2 text-sm text-destructive",children:p})]})}var p=a(7505),x=a.n(p);let h=(0,i.A)("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),g=(0,i.A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);var f=a(1160);let v=(0,i.A)("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]),b=(0,i.A)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var y=a(3316);function j(e){let{repos:t,onAnalyze:a,onDelete:s}=e;return 0===t.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center rounded-lg border border-dashed border-border py-16",children:[(0,r.jsx)(h,{className:"mb-4 h-12 w-12 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-lg font-medium text-foreground",children:"No repositories yet"}),(0,r.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"Add a repository path above to get started"})]}):(0,r.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:t.map(e=>(0,r.jsxs)(y.Zp,{className:"flex flex-col transition-shadow hover:shadow-md",children:[(0,r.jsxs)(y.aR,{className:"flex flex-row items-start justify-between space-y-0 pb-2",children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)(y.ZB,{className:"truncate text-base",children:e.name}),(0,r.jsx)(y.BT,{className:"mt-0.5 truncate text-xs",children:e.path})]}),(0,r.jsx)(u.$,{variant:"ghost",size:"icon-xs",onClick:()=>s(e.id),className:"ml-2 flex-shrink-0 text-muted-foreground hover:text-destructive","aria-label":"Delete repository",children:(0,r.jsx)(g,{className:"h-4 w-4"})})]}),(0,r.jsx)(y.Wu,{className:"pb-2",children:e.lastAnalyzed&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[(0,r.jsx)(f.A,{className:"h-3 w-3"}),(0,r.jsxs)("span",{children:["Analyzed"," ",new Date(e.lastAnalyzed).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})]})]})}),(0,r.jsxs)(y.wL,{className:"mt-auto gap-2",children:[(0,r.jsxs)(u.$,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>a(e.id),children:[(0,r.jsx)(v,{className:"h-3.5 w-3.5"}),"Analyze"]}),(0,r.jsxs)(x(),{href:"/repos/".concat(e.id),className:(0,u.r)({size:"sm",className:"flex-1"}),children:[(0,r.jsx)(b,{className:"h-3.5 w-3.5"}),"View Graph"]})]})]},e.id))})}var N=a(432),w=a(5500);function k(){let{repos:e,isLoading:t,error:a,addRepo:i,deleteRepo:o,analyzeRepo:l}=function(){let[e,t]=(0,n.useState)([]),[a,r]=(0,n.useState)(!0),[s,i]=(0,n.useState)(null),o=(0,n.useCallback)(async()=>{r(!0),i(null);try{let e=await N.YN();t(e)}catch(e){i(e instanceof Error?e.message:"Failed to fetch repos")}finally{r(!1)}},[]);(0,n.useEffect)(()=>{o()},[o]);let d=(0,n.useCallback)(async e=>{try{let a=await N.sv(e);return t(e=>[...e,a]),a}catch(e){throw i(e instanceof Error?e.message:"Failed to add repo"),e}},[]);return{repos:e,isLoading:a,error:s,addRepo:d,deleteRepo:(0,n.useCallback)(async e=>{try{await N.M2(e),t(t=>t.filter(t=>t.id!==e))}catch(e){throw i(e instanceof Error?e.message:"Failed to delete repo"),e}},[]),analyzeRepo:(0,n.useCallback)(async(e,t)=>{try{return await N.LY(e,t)}catch(e){throw i(e instanceof Error?e.message:"Failed to start analysis"),e}},[]),refetch:o}}(),c=async e=>{try{await l(e)}catch(e){}},u=async e=>{try{await o(e)}catch(e){}};return(0,r.jsxs)("div",{className:"flex min-h-screen flex-col",children:[(0,r.jsx)(s.Y,{}),(0,r.jsxs)("main",{className:"mx-auto w-full max-w-5xl flex-1 px-4 py-8",children:[(0,r.jsxs)("div",{className:"mb-8 text-center",children:[(0,r.jsx)("h1",{className:"text-3xl font-bold text-foreground",children:"TrueCourse"}),(0,r.jsx)("p",{className:"mt-2 text-muted-foreground",children:"Visualize and understand your codebase architecture"})]}),(0,r.jsx)("div",{className:"mb-8",children:(0,r.jsx)(m,{onAdd:i})}),a&&(0,r.jsx)(w.Fc,{variant:"destructive",className:"mb-6",children:(0,r.jsx)(w.TN,{children:a})}),t?(0,r.jsx)("div",{className:"flex items-center justify-center py-16",children:(0,r.jsx)(d.A,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):(0,r.jsx)(j,{repos:e,onAnalyze:c,onDelete:u})]})]})}},4846:(e,t,a)=>{"use strict";a.d(t,{$:()=>d,r:()=>o});var r=a(6409),s=a(7248),n=a(268),i=a(6669);let o=(0,n.F)("group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:t,variant:a="default",size:n="default",...d}=e;return(0,r.jsx)(s.$,{"data-slot":"button",className:(0,i.cn)(o({variant:a,size:n,className:t})),...d})}},5500:(e,t,a)=>{"use strict";a.d(t,{Fc:()=>o,TN:()=>l,XL:()=>d});var r=a(6409);a(4669);var s=a(268),n=a(6669);let i=(0,s.F)("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});function o(e){let{className:t,variant:a,...s}=e;return(0,r.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,n.cn)(i({variant:a}),t),...s})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert-title",className:(0,n.cn)("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",t),...a})}function l(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert-description",className:(0,n.cn)("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",t),...a})}},6669:(e,t,a)=>{"use strict";a.d(t,{cn:()=>n});var r=a(1754),s=a(3225);function n(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,s.QP)((0,r.$)(t))}},8329:(e,t,a)=>{Promise.resolve().then(a.bind(a,3840))}},e=>{e.O(0,[414,429,597,358],()=>e(e.s=8329)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[302],{432:(e,t,a)=>{"use strict";a.d(t,{L8:()=>l,LY:()=>c,M2:()=>d,S:()=>x,Vl:()=>g,XT:()=>u,YN:()=>i,aE:()=>m,ge:()=>p,kP:()=>f,lS:()=>h,sv:()=>o});let r=(0,a(2011).T)();class s extends Error{constructor(e,t){super(t),this.status=e,this.name="ApiError"}}async function n(e,t){let a="".concat(r).concat(e),n=await fetch(a,{...t,headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!n.ok){let e=await n.text().catch(()=>"Unknown error");throw new s(n.status,e)}return n.json()}function i(){return n("/api/repos")}function l(e){return n("/api/repos/".concat(e))}function o(e){return n("/api/repos",{method:"POST",body:JSON.stringify({path:e})})}function d(e){return n("/api/repos/".concat(e),{method:"DELETE"})}function c(e,t){return n("/api/repos/".concat(e,"/analyze"),{method:"POST",body:JSON.stringify({branch:t})})}function u(e,t){let a=t?"?branch=".concat(encodeURIComponent(t)):"";return n("/api/repos/".concat(e,"/graph").concat(a))}function x(e,t,a){let r=a?"?branch=".concat(encodeURIComponent(a)):"";return n("/api/repos/".concat(e,"/graph/positions").concat(r),{method:"PUT",body:JSON.stringify({positions:t})})}function m(e,t){let a=t?"?branch=".concat(encodeURIComponent(t)):"";return n("/api/repos/".concat(e,"/graph/positions").concat(a),{method:"DELETE"})}function p(e){return n("/api/repos/".concat(e,"/insights"))}function h(e){return n("/api/repos/".concat(e,"/conversations"))}function f(e,t){return n("/api/repos/".concat(e,"/chat/").concat(t))}function g(e,t,a,n,i,l){let o=new AbortController;return fetch("".concat(r,"/api/repos/").concat(e,"/chat"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:t,nodeContext:null==l?void 0:l.nodeContext,conversationId:null==l?void 0:l.conversationId}),signal:o.signal}).then(async e=>{var t;if(!e.ok)throw new s(e.status,await e.text());let r=e.headers.get("X-Conversation-Id")||void 0,i=null==(t=e.body)?void 0:t.getReader();if(!i)throw Error("No response body");let l=new TextDecoder,o="";for(;;){let{done:e,value:t}=await i.read();if(e)break;let s=(o+=l.decode(t,{stream:!0})).split("\n");for(let e of(o=s.pop()||"",s))if(e.startsWith("data: ")){let t=e.slice(6);if("[DONE]"===t)return void n(r);try{let e=JSON.parse(t);e.content&&a(e.content)}catch(e){a(t)}}}n(r)}).catch(e=>{"AbortError"!==e.name&&i(e)}),o}},553:(e,t,a)=>{"use strict";a.d(t,{Y:()=>h});var r=a(6409),s=a(7367),n=a(8925),i=a(1540),l=a(7054),o=a(3218),d=a(2368),c=a(9235),u=a(7505),x=a.n(u),m=a(4669),p=a(4846);function h(e){let{repoName:t,branches:a,selectedBranch:u,onBranchChange:h,onAnalyze:f,isAnalyzing:g,showBack:v,backHref:b="/",isSidebarOpen:j,onToggleSidebar:y}=e,[N,w]=(0,m.useState)(!1);return(0,m.useEffect)(()=>{w(document.documentElement.classList.contains("dark"))},[]),(0,r.jsxs)("header",{className:"flex h-14 items-center justify-between border-b border-border bg-card px-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[v&&(0,r.jsx)(x(),{href:b,className:(0,p.r)({variant:"ghost",size:"icon-sm"}),children:(0,r.jsx)(s.A,{className:"h-5 w-5"})}),(0,r.jsx)(x(),{href:"/",className:"text-lg font-bold text-foreground",children:"TrueCourse"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[t&&(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t}),a&&a.length>0&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-md border border-border bg-muted px-2 py-1",children:[(0,r.jsx)(n.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,r.jsx)("select",{value:u||"",onChange:e=>null==h?void 0:h(e.target.value),className:"bg-transparent text-sm text-foreground outline-none",children:a.map(e=>(0,r.jsx)("option",{value:e,children:e},e))})]}),f&&(0,r.jsxs)(p.$,{size:"sm",onClick:f,disabled:g,children:[g&&(0,r.jsx)(i.A,{className:"h-3.5 w-3.5 animate-spin"}),g?"Analyzing...":"Analyze"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[y&&(0,r.jsx)(p.$,{variant:"ghost",size:"icon-sm",onClick:y,"aria-label":j?"Close panel":"Open panel",children:j?(0,r.jsx)(l.A,{className:"h-5 w-5"}):(0,r.jsx)(o.A,{className:"h-5 w-5"})}),(0,r.jsx)(p.$,{variant:"ghost",size:"icon-sm",onClick:()=>{let e=!N;w(e),document.documentElement.classList.toggle("dark",e),localStorage.setItem("theme",e?"dark":"light")},"aria-label":"Toggle theme",children:N?(0,r.jsx)(d.A,{className:"h-5 w-5"}):(0,r.jsx)(c.A,{className:"h-5 w-5"})})]})]})}},2011:(e,t,a)=>{"use strict";function r(){return""}a.d(t,{T:()=>r})},2054:(e,t,a)=>{"use strict";a.d(t,{p:()=>i});var r=a(6409);a(4669);var s=a(7350),n=a(6669);function i(e){let{className:t,type:a,...i}=e;return(0,r.jsx)(s.p,{type:a,"data-slot":"input",className:(0,n.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...i})}},3316:(e,t,a)=>{"use strict";a.d(t,{BT:()=>o,Wu:()=>d,ZB:()=>l,Zp:()=>n,aR:()=>i,wL:()=>c});var r=a(6409);a(4669);var s=a(6669);function n(e){let{className:t,size:a="default",...n}=e;return(0,r.jsx)("div",{"data-slot":"card","data-size":a,className:(0,s.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function i(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,s.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...a})}function l(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,s.cn)("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...a})}function o(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,s.cn)("text-sm text-muted-foreground",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,s.cn)("px-4 group-data-[size=sm]/card:px-3",t),...a})}function c(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-footer",className:(0,s.cn)("flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3",t),...a})}},4846:(e,t,a)=>{"use strict";a.d(t,{$:()=>o,r:()=>l});var r=a(6409),s=a(7248),n=a(268),i=a(6669);let l=(0,n.F)("group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function o(e){let{className:t,variant:a="default",size:n="default",...o}=e;return(0,r.jsx)(s.$,{"data-slot":"button",className:(0,i.cn)(l({variant:a,size:n,className:t})),...o})}},5111:(e,t,a)=>{"use strict";a.d(t,{default:()=>eH});var r=a(6409),s=a(4669),n=a(9730),i=a(1540),l=a(5847),o=a(1791),d=a(8485),c=a(553),u=a(8670),x=a(7832),m=a(6176),p=a(1264),h=a(5676),f=a(6669);function g(e){let{className:t,children:a,...s}=e;return(0,r.jsxs)(u.V,{"data-slot":"scroll-area",className:(0,f.cn)("relative",t),...s,children:[(0,r.jsx)(x.B,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:a}),(0,r.jsx)(v,{}),(0,r.jsx)(m.I,{})]})}function v(e){let{className:t,orientation:a="vertical",...s}=e;return(0,r.jsx)(p.V,{"data-slot":"scroll-area-scrollbar","data-orientation":a,orientation:a,className:(0,f.cn)("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...s,children:(0,r.jsx)(h.l,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function b(e){let{children:t,isOpen:a,defaultWidth:n=320,minWidth:i=260,maxWidth:l=600}=e,[o,d]=(0,s.useState)(n),c=(0,s.useRef)(!1),u=(0,s.useCallback)(e=>{e.preventDefault(),c.current=!0;let t=e.clientX,a=e=>{c.current&&d(Math.min(l,Math.max(i,o+(t-e.clientX))))},r=()=>{c.current=!1,document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",r)};document.addEventListener("mousemove",a),document.addEventListener("mouseup",r)},[o,i,l]);return a?(0,r.jsxs)("aside",{className:"relative flex-shrink-0 border-l border-border bg-card",style:{width:o},children:[(0,r.jsx)("div",{className:"absolute inset-y-0 left-0 z-10 w-1 cursor-col-resize hover:bg-primary/30 active:bg-primary/50",onMouseDown:u}),(0,r.jsx)(g,{className:"h-full",children:t})]}):null}var j=a(2759);a(5285);var y=a(4819),N=a(8984),w=a(5929),k=a(6661),C=a(7113),z=a(8197),S=a(5784),A=a(3316);let E={api:"Routes & Controllers",service:"Business Logic",data:"Database & ORM",external:"HTTP Clients"},T=[{layer:"api",color:"#3b82f6",label:E.api},{layer:"service",color:"#10b981",label:E.service},{layer:"data",color:"#8b5cf6",label:E.data},{layer:"external",color:"#f97316",label:E.external}],_={frontend:N.A,"api-server":w.A,worker:k.A,library:C.A,unknown:C.A},F=(0,s.memo)(function(e){let{id:t,data:a,selected:s}=e,{label:n,description:i,serviceInfo:l,insightCount:o,hasHighSeverity:d,onExplain:c}=a,u=_[l.type]||C.A,x=l.layers.map(e=>e.layer);return(0,r.jsxs)(A.Zp,{className:"relative min-w-[220px] !gap-0 !py-0 rounded-md shadow-md transition-all ".concat(s?"border-primary ring-2 ring-primary ring-opacity-30":""),children:[(0,r.jsx)(j.h7,{type:"target",position:y.yX.Top,className:"!invisible"}),(0,r.jsxs)(A.Wu,{className:"p-3",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("div",{className:"flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-lg bg-muted",children:(0,r.jsx)(u,{className:"h-5 w-5 text-primary"})}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("h3",{className:"truncate text-sm font-bold text-foreground",children:n}),l.framework&&(0,r.jsx)("p",{className:"mt-0.5 text-[10px] italic text-muted-foreground",children:l.framework})]}),d&&(0,r.jsx)("div",{className:"flex-shrink-0",children:(0,r.jsx)(z.A,{className:"h-4 w-4 text-amber-500"})})]}),(0,r.jsx)("div",{className:"mx-auto mt-2 w-2/3 border-t border-border"}),i&&(0,r.jsx)("p",{className:"mt-2 max-w-[240px] text-[10px] leading-tight text-muted-foreground",children:i}),x.length>0&&(0,r.jsx)("div",{className:"mt-2 flex flex-wrap gap-1",children:T.map(e=>{let{layer:t,label:a,color:s}=e;return x.includes(t)?(0,r.jsx)("span",{className:"inline-flex items-center rounded-sm border px-1.5 py-0.5 text-[9px] text-muted-foreground",style:{borderColor:s},children:a},t):null})}),o>0&&(0,r.jsxs)("div",{className:"mt-2 rounded-md bg-muted px-2 py-1 text-center text-[10px] text-muted-foreground",children:[o," insight",1!==o?"s":""]}),(0,r.jsx)("div",{className:"mx-auto mt-2 w-2/3 border-t border-border"}),(0,r.jsxs)("div",{className:"mt-2 flex items-center justify-between",children:[(0,r.jsxs)("span",{className:"text-[9px] text-muted-foreground",children:[l.fileCount," files"]}),c&&(0,r.jsxs)("button",{className:"flex cursor-pointer items-center gap-1 rounded-sm border border-border bg-muted px-1.5 py-0.5 text-[9px] text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",onClick:e=>{e.stopPropagation(),c(t)},children:[(0,r.jsx)(S.A,{className:"h-2.5 w-2.5"}),"Explain"]})]})]}),(0,r.jsx)(j.h7,{type:"source",position:y.yX.Bottom,className:"!invisible"})]})}),L=(0,s.memo)(function(e){var t,a;let{id:s,sourceX:n,sourceY:i,targetX:l,targetY:o,sourcePosition:d,targetPosition:c,data:u,selected:x}=e;null==u||u.dependencyCount;let m=null!=(t=null==u?void 0:u.hasHttpCalls)&&t,p=null!=(a=null==u?void 0:u.label)?a:"",[h,f,g]=(0,y.Fp)({sourceX:n,sourceY:i,targetX:l,targetY:o,sourcePosition:d,targetPosition:c});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("path",{id:s,d:h,fill:"none",stroke:x?"var(--primary)":"var(--muted-foreground)",strokeWidth:m?1.5:1,strokeDasharray:m?"8 4":"2 3",opacity:.6,className:"animate-edge-flow"}),p&&(0,r.jsx)(j.rV,{children:(0,r.jsx)("div",{style:{position:"absolute",transform:"translate(-50%, -50%) translate(".concat(f,"px, ").concat(g,"px)"),pointerEvents:"all"},className:"rounded bg-card px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground shadow-sm border border-border",children:p})})]})});var I=a(1047),R=a(5608),D=a(3503),P=a(3159),O=a(4846),$=a(6858);function V(e){let{className:t,orientation:a="horizontal",...s}=e;return(0,r.jsx)($.w,{"data-slot":"separator",orientation:a,className:(0,f.cn)("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...s})}function H(e){let{onAutoLayout:t}=e,{zoomIn:a,zoomOut:s,fitView:n}=(0,j.VH)();return(0,r.jsxs)("div",{className:"absolute bottom-4 left-4 z-10 flex flex-col gap-1 rounded-lg border border-border bg-card p-1 shadow-md",children:[(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>a(),"aria-label":"Zoom in",children:(0,r.jsx)(I.A,{className:"h-4 w-4"})}),(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>s(),"aria-label":"Zoom out",children:(0,r.jsx)(R.A,{className:"h-4 w-4"})}),(0,r.jsx)(V,{}),(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>n({padding:.3,duration:300}),"aria-label":"Fit view",children:(0,r.jsx)(D.A,{className:"h-4 w-4"})}),t&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(V,{}),(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>{t(),setTimeout(()=>n({padding:.3,duration:300}),50)},"aria-label":"Auto layout",children:(0,r.jsx)(P.A,{className:"h-4 w-4"})})]})]})}var M=a(432);let B={service:F},X={dependency:L};function Z(e){let{initialNodes:t,initialEdges:a,onNodeSelect:n,onExplainNode:i,selectedNodeId:l,repoId:o,branch:d,onRefetch:c}=e,[u,x]=(0,s.useState)(!1),m=(0,s.useRef)([]),[p,h,f]=(0,j.ck)(t),[g,v,b]=(0,j.fM)(a);m.current=p,(0,s.useMemo)(()=>{h(t.map(e=>({...e,selected:e.id===l,data:{...e.data,onExplain:i}}))),v(a)},[t,a,h,v,i,l]);let y=(0,s.useCallback)(()=>{let e={};for(let t of m.current)e[t.id]=t.position;x(!0),M.S(o,e,d).finally(()=>x(!1))},[o,d]),N=(0,s.useCallback)(()=>{M.aE(o,d).then(()=>null==c?void 0:c()).catch(()=>{})},[o,d,c]),w=(0,s.useCallback)((e,t)=>{null==n||n(t.id)},[n]),k=(0,s.useCallback)(()=>{null==n||n(null)},[n]);return(0,r.jsxs)("div",{className:"h-full w-full",children:[u&&(0,r.jsx)("div",{className:"absolute left-1/2 top-3 z-20 -translate-x-1/2 rounded-md border border-border bg-card px-3 py-1 text-xs text-muted-foreground shadow-sm",children:"Saving..."}),(0,r.jsxs)(j.Gc,{nodes:p,edges:g,onNodesChange:f,onEdgesChange:b,onNodeClick:w,onNodeDragStop:y,onPaneClick:k,nodeTypes:B,edgeTypes:X,nodesConnectable:!1,fitView:!0,fitViewOptions:{padding:.3},minZoom:.1,maxZoom:2,proOptions:{hideAttribution:!0},children:[(0,r.jsx)(j.VS,{variant:j._5.Dots,gap:20,size:1}),(0,r.jsx)(j.of,{nodeStrokeWidth:3,className:"!bg-card !border-border",maskColor:"rgba(0, 0, 0, 0.1)"}),(0,r.jsx)(H,{onAutoLayout:N})]})]})}var Q=a(3417),W=a(8974),J=a(1879),U=a(7033),Y=a(113),q=a(268);let K=(0,q.F)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function G(e){let{className:t,variant:a="default",render:r,...s}=e;return(0,Y.C)({defaultTagName:"span",props:(0,U.v6)({className:(0,f.cn)(K({variant:a}),t)},s),render:r,state:{slot:"badge",variant:a}})}let ee={info:"border-l-blue-500",low:"border-l-green-500",medium:"border-l-yellow-500",high:"border-l-orange-500",critical:"border-l-red-500"},et={info:"bg-blue-500/10 text-blue-600 dark:text-blue-400",low:"bg-green-500/10 text-green-600 dark:text-green-400",medium:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",high:"bg-orange-500/10 text-orange-600 dark:text-orange-400",critical:"bg-red-500/10 text-red-600 dark:text-red-400"};function ea(e){let{insight:t}=e,[a,n]=(0,s.useState)(!1),i=async()=>{t.fixPrompt&&(await navigator.clipboard.writeText(t.fixPrompt),n(!0),setTimeout(()=>n(!1),2e3))};return(0,r.jsx)(A.Zp,{className:"border-l-4 rounded-sm p-3 ".concat(ee[t.severity]||"border-l-gray-500"),children:(0,r.jsxs)(A.Wu,{className:"p-0",children:[(0,r.jsxs)("div",{className:"mb-1.5 flex items-center gap-2",children:[(0,r.jsx)(G,{className:"rounded-sm px-2 py-0.5 text-[10px] font-semibold uppercase ".concat(et[t.severity]||""),children:t.type}),(0,r.jsx)(G,{className:"rounded-sm px-1.5 py-0.5 text-[10px] font-medium ".concat(et[t.severity]||""),children:t.severity})]}),(0,r.jsx)("h4",{className:"text-sm font-bold text-foreground",children:t.title}),(0,r.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:t.content}),t.targetServiceName&&(0,r.jsxs)("p",{className:"mt-2 text-[10px] text-muted-foreground",children:["Target:"," ",(0,r.jsx)("span",{className:"font-medium text-foreground",children:t.targetServiceName})]}),t.fixPrompt&&(0,r.jsx)(O.$,{variant:"outline",size:"xs",onClick:i,className:"mt-2 text-[10px] text-muted-foreground hover:text-foreground",children:a?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(W.A,{className:"h-3 w-3 text-emerald-500"}),"Copied!"]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(J.A,{className:"h-3 w-3"}),"Copy Fix Prompt"]})})]})})}var er=a(7367),es=a(1160),en=a(726),ei=a(3418),el=a(8713);function eo(e){let{message:t}=e;if("system"===t.role)return(0,r.jsxs)("div",{className:"flex items-center justify-center gap-1.5 py-2",children:[(0,r.jsx)(ei.A,{className:"h-3 w-3 text-muted-foreground"}),(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground",children:t.content})]});let a="user"===t.role;return a||t.content?a?(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("div",{className:"max-w-[85%] rounded-2xl bg-primary px-3 py-2 text-sm text-primary-foreground",children:(0,r.jsx)("p",{className:"whitespace-pre-wrap break-words leading-relaxed",children:t.content})})}):(0,r.jsx)("div",{className:"text-sm text-foreground",children:(0,r.jsx)("div",{className:"prose prose-sm dark:prose-invert max-w-none break-words leading-relaxed [&_p]:my-1 [&_ul]:my-1 [&_ol]:my-1 [&_li]:my-0 [&_h1]:text-base [&_h2]:text-sm [&_h3]:text-sm [&_pre]:text-xs [&_code]:text-xs",children:(0,r.jsx)(el.oz,{children:t.content})})}):null}var ed=a(4611);function ec(e){let{onSend:t,disabled:a}=e,[n,i]=(0,s.useState)(""),l=(0,s.useRef)(null),o=()=>{n.trim()&&!a&&(t(n.trim()),i(""),l.current&&(l.current.style.height="auto"))};return(0,r.jsx)("div",{className:"border-t border-border p-3",children:(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("textarea",{ref:l,value:n,onChange:e=>i(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),o())},onInput:()=>{let e=l.current;e&&(e.style.height="auto",e.style.height="".concat(Math.min(e.scrollHeight,150),"px"))},placeholder:"Ask about architecture...",rows:2,disabled:a,className:"w-full resize-none rounded-lg border border-border bg-muted px-3 py-2.5 pr-10 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none disabled:opacity-50",style:{maxHeight:150}}),(0,r.jsx)("button",{onClick:o,disabled:a||!n.trim(),"aria-label":"Send message",className:"absolute bottom-2.5 right-2.5 flex h-6 w-6 items-center justify-center rounded-full bg-primary text-primary-foreground transition-colors hover:bg-primary/90 disabled:opacity-30 disabled:cursor-not-allowed cursor-pointer",children:(0,r.jsx)(ed.A,{className:"h-3.5 w-3.5"})})]})})}function eu(e){let{repoId:t,explainRequest:a,onExplainHandled:n}=e,{messages:l,isStreaming:o,isLoadingHistory:d,conversationList:c,sendMessage:u,explainNode:x,newConversation:m,fetchConversations:p,loadConversation:h}=function(e){let[t,a]=(0,s.useState)([]),[r,n]=(0,s.useState)(!1),[i,l]=(0,s.useState)([]),[o,d]=(0,s.useState)(!1),c=(0,s.useRef)(null),u=(0,s.useRef)(void 0),x=(0,s.useRef)(0),m=()=>(x.current+=1,"msg-".concat(x.current)),p=(0,s.useCallback)(t=>{if(!t.trim()||r)return;let s={id:m(),role:"user",content:t,timestamp:new Date},i=m(),l={id:i,role:"assistant",content:"",timestamp:new Date};a(e=>[...e,s,l]),n(!0),c.current=(0,M.Vl)(e,t,e=>{a(t=>t.map(t=>t.id===i?{...t,content:t.content+e}:t))},e=>{e&&(u.current=e),n(!1)},e=>{a(t=>t.map(t=>t.id===i?{...t,content:"Error: ".concat(e.message)}:t)),n(!1)},{conversationId:u.current})},[e,r]),h=(0,s.useCallback)((e,t)=>{p('Explain the "'.concat(t,'" service — what does it do, how does it fit into the architecture, and are there any concerns?'))},[p]),f=(0,s.useCallback)(()=>{c.current&&c.current.abort(),a([]),n(!1),u.current=void 0},[]),g=(0,s.useCallback)(async()=>{try{let t=await (0,M.lS)(e);l(t)}catch(e){}},[e]),v=(0,s.useCallback)(async t=>{if(!r){d(!0);try{let r=await (0,M.kP)(e,t);u.current=t,a(r.messages.map(e=>({id:e.id,role:e.role,content:e.content,timestamp:new Date(e.createdAt)})))}catch(e){}finally{d(!1)}}},[e,r]);return{messages:t,isStreaming:r,isLoadingHistory:o,conversationList:i,sendMessage:p,explainNode:h,newConversation:f,fetchConversations:g,loadConversation:v}}(t),f=(0,s.useRef)(null),g=(0,s.useRef)(null),[v,b]=(0,s.useState)(!1),j=l[l.length-1];return((0,s.useEffect)(()=>{g.current&&(g.current.scrollTop=g.current.scrollHeight)},[null==j?void 0:j.content,l.length]),(0,s.useEffect)(()=>{a&&a.nodeId!==f.current&&(f.current=a.nodeId,x(a.nodeId,a.nodeName),null==n||n())},[a,x,n]),v)?(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[(0,r.jsx)("button",{onClick:()=>b(!1),className:"flex cursor-pointer items-center justify-center rounded-md p-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground","aria-label":"Back to chat",children:(0,r.jsx)(er.A,{className:"h-4 w-4"})}),(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Conversations"})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:0===c.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)(es.A,{className:"mb-3 h-8 w-8 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No conversations yet"})]}):(0,r.jsx)("div",{className:"divide-y divide-border",children:c.map(e=>(0,r.jsxs)("button",{onClick:()=>{h(e.id),b(!1)},className:"w-full cursor-pointer px-3 py-2.5 text-left transition-colors hover:bg-accent",children:[(0,r.jsx)("p",{className:"truncate text-sm text-foreground",children:e.preview}),(0,r.jsx)("p",{className:"mt-0.5 text-[10px] text-muted-foreground",children:new Date(e.updatedAt).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]},e.id))})})]}):(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-end gap-1 border-b border-border px-2 py-1.5",children:[(0,r.jsx)("button",{onClick:()=>{m(),b(!1)},className:"flex cursor-pointer items-center justify-center rounded-md p-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground","aria-label":"New conversation",title:"New conversation",children:(0,r.jsx)(en.A,{className:"h-4 w-4"})}),(0,r.jsx)("button",{onClick:()=>{p(),b(!0)},className:"flex cursor-pointer items-center justify-center rounded-md p-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground","aria-label":"Conversation history",title:"Conversation history",children:(0,r.jsx)(es.A,{className:"h-4 w-4"})})]}),(0,r.jsx)("div",{ref:g,className:"min-h-0 flex-1 overflow-y-auto",children:(0,r.jsxs)("div",{className:"space-y-3 p-3",children:[d?(0,r.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,r.jsx)(i.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):0===l.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)(S.A,{className:"mb-3 h-8 w-8 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Architecture Chat"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Ask questions about your codebase architecture"})]}):l.map(e=>(0,r.jsx)(eo,{message:e},e.id)),o&&(()=>{let e=[...l].reverse().find(e=>"assistant"===e.role),t=!!(null==e?void 0:e.content);return(0,r.jsx)("div",{className:"flex items-center gap-2 py-1 text-xs text-muted-foreground",children:t?(0,r.jsxs)("span",{className:"inline-flex gap-0.5",children:[(0,r.jsx)("span",{className:"h-1 w-1 animate-bounce rounded-full bg-muted-foreground [animation-delay:0ms]"}),(0,r.jsx)("span",{className:"h-1 w-1 animate-bounce rounded-full bg-muted-foreground [animation-delay:150ms]"}),(0,r.jsx)("span",{className:"h-1 w-1 animate-bounce rounded-full bg-muted-foreground [animation-delay:300ms]"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.A,{className:"h-3 w-3 animate-spin"}),"Thinking..."]})})})()]})}),(0,r.jsx)(ec,{onSend:e=>{u(e)},disabled:o})]})}var ex=a(5133),em=a(6333),ep=a(5468);function eh(e){let{className:t,orientation:a="horizontal",...s}=e;return(0,r.jsx)(ex.p,{"data-slot":"tabs","data-orientation":a,className:(0,f.cn)("group/tabs flex gap-2 data-horizontal:flex-col",t),...s})}let ef=(0,q.F)("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function eg(e){let{className:t,variant:a="default",...s}=e;return(0,r.jsx)(em.j,{"data-slot":"tabs-list","data-variant":a,className:(0,f.cn)(ef({variant:a}),t),...s})}function ev(e){let{className:t,...a}=e;return(0,r.jsx)(ep.M,{"data-slot":"tabs-trigger",className:(0,f.cn)("relative inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",t),...a})}function eb(e){let{insights:t,isLoading:a,repoId:s,selectedService:n,selectedServiceName:l,activeTab:o="insights",onTabChange:d,explainRequest:c,onExplainHandled:u}=e,x="chat"===o;return(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsx)(eh,{value:o,onValueChange:e=>null==d?void 0:d(String(e)),className:"flex flex-shrink-0 flex-col",children:(0,r.jsxs)(eg,{variant:"line",className:"w-full",children:[(0,r.jsxs)(ev,{value:"insights",children:[(0,r.jsx)(Q.A,{className:"h-4 w-4"}),"Insights"]}),(0,r.jsxs)(ev,{value:"chat",children:[(0,r.jsx)(S.A,{className:"h-4 w-4"}),"Chat"]})]})}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto ".concat(x?"hidden":""),children:(0,r.jsxs)("div",{className:"p-3",children:[n&&(0,r.jsxs)("div",{className:"mb-3 rounded-md bg-muted px-3 py-1.5 text-xs text-muted-foreground",children:["Filtered by:"," ",(0,r.jsx)("span",{className:"font-medium text-foreground",children:l||n})]}),a?(0,r.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,r.jsx)(i.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):0===t.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)(Q.A,{className:"mb-3 h-8 w-8 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:n?"No insights for this service":"No insights yet. Run an analysis to get insights."})]}):(0,r.jsx)("div",{className:"space-y-3",children:t.map(e=>(0,r.jsx)(ea,{insight:e},e.id))})]})}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden ".concat(x?"":"hidden"),children:(0,r.jsx)(eu,{repoId:s,selectedService:n,explainRequest:c,onExplainHandled:u})})]})}var ej=a(6540),ey=a(5694),eN=a(8682),ew=a(2054);function ek(e){let{serviceTypes:t,frameworks:a,onFilterChange:n}=e,[i,l]=(0,s.useState)(!1),[o,d]=(0,s.useState)({excludedTypes:new Set,excludedFrameworks:new Set,searchQuery:"",showLabels:!0}),c=e=>{d(e),n(e)},u=o.excludedTypes.size>0||o.excludedFrameworks.size>0||o.searchQuery.length>0;return(0,r.jsxs)("div",{className:"absolute left-4 top-4 z-10",children:[(0,r.jsxs)(O.$,{variant:"outline",onClick:()=>l(!i),className:"shadow-md",children:[(0,r.jsx)(ej.A,{className:"h-4 w-4"}),"Filters",u&&(0,r.jsx)("span",{className:"ml-1 flex h-4 w-4 items-center justify-center rounded-full bg-primary text-[10px] text-primary-foreground",children:o.excludedTypes.size+o.excludedFrameworks.size+ +!!o.searchQuery})]}),i&&(0,r.jsx)(A.Zp,{className:"mt-2 w-64 shadow-lg",children:(0,r.jsxs)(A.Wu,{className:"p-4",children:[(0,r.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Filters"}),(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>l(!1),children:(0,r.jsx)(ey.A,{className:"h-4 w-4"})})]}),(0,r.jsxs)("div",{className:"relative mb-3",children:[(0,r.jsx)(eN.A,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)(ew.p,{type:"text",value:o.searchQuery,onChange:e=>c({...o,searchQuery:e.target.value}),placeholder:"Search services...",className:"pl-8 text-xs"})]}),(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsx)("h4",{className:"mb-1.5 text-xs font-medium text-muted-foreground",children:"Service Type"}),(0,r.jsx)("div",{className:"space-y-1",children:t.map(e=>(0,r.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 text-xs text-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:!o.excludedTypes.has(e),onChange:()=>(e=>{let t=new Set(o.excludedTypes);t.has(e)?t.delete(e):t.add(e),c({...o,excludedTypes:t})})(e),className:"rounded border-border accent-primary"}),e]},e))})]}),a.length>0&&(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsx)("h4",{className:"mb-1.5 text-xs font-medium text-muted-foreground",children:"Framework"}),(0,r.jsx)("div",{className:"space-y-1",children:a.map(e=>(0,r.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 text-xs text-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:!o.excludedFrameworks.has(e),onChange:()=>(e=>{let t=new Set(o.excludedFrameworks);t.has(e)?t.delete(e):t.add(e),c({...o,excludedFrameworks:t})})(e),className:"rounded border-border accent-primary"}),e]},e))})]}),(0,r.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 text-xs text-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:o.showLabels,onChange:()=>c({...o,showLabels:!o.showLabels}),className:"rounded border-border accent-primary"}),"Show dependency labels"]})]})})]})}var eC=a(1010);let ez=(0,a(2011).T)()||window.location.origin,eS=null;function eA(){return eS||(eS=(0,eC.io)(ez,{autoConnect:!1,reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,reconnectionDelayMax:5e3,transports:["websocket","polling"]})),eS}function eE(e){let t=eA();t.connected&&t.emit("joinRepo",e)}var eT=a(5500),e_=a(4274),eF=a(1393),eL=a(9663),eI=a(3714),eR=a(4113);function eD(e){let{className:t,children:a,value:s,...n}=e;return(0,r.jsxs)(e_.w,{value:s,"data-slot":"progress",className:(0,f.cn)("flex flex-wrap gap-3",t),...n,children:[a,(0,r.jsx)(eP,{children:(0,r.jsx)(eO,{})})]})}function eP(e){let{className:t,...a}=e;return(0,r.jsx)(eF.X,{className:(0,f.cn)("relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted",t),"data-slot":"progress-track",...a})}function eO(e){let{className:t,...a}=e;return(0,r.jsx)(eL.Z,{"data-slot":"progress-indicator",className:(0,f.cn)("h-full bg-primary transition-all",t),...a})}function e$(e){let{className:t,...a}=e;return(0,r.jsx)(eI.u,{className:(0,f.cn)("text-sm font-medium",t),"data-slot":"progress-label",...a})}function eV(e){let{className:t,...a}=e;return(0,r.jsx)(eR.D,{className:(0,f.cn)("ml-auto text-sm text-muted-foreground tabular-nums",t),"data-slot":"progress-value",...a})}function eH(){var e,t;let a=(0,n.useParams)(),u=Array.isArray(a.slug)?a.slug[0]:"",[x,m]=(0,s.useState)(null),[p,h]=(0,s.useState)(),[f,g]=(0,s.useState)(null),[v,j]=(0,s.useState)([]),[y,N]=(0,s.useState)([]),[w,k]=(0,s.useState)(!1),[C,z]=(0,s.useState)("insights"),[S,A]=(0,s.useState)(null),[E,T]=(0,s.useState)(!0),{nodes:_,edges:F,isLoading:L,error:I,refetch:R}=function(e,t){let[a,r]=(0,s.useState)([]),[n,i]=(0,s.useState)([]),[l,o]=(0,s.useState)(!0),[d,c]=(0,s.useState)(null),u=(0,s.useCallback)(async()=>{if(e){o(!0),c(null);try{let a=await M.XT(e,t),s=a.nodes.map(e=>({id:e.id,type:"service",position:e.position,data:{label:e.data.label,description:e.data.description,serviceInfo:{type:e.data.serviceType||"unknown",framework:e.data.framework||null,fileCount:e.data.fileCount||0,layers:(e.data.layers||[]).map(e=>({layer:e,confidence:1,evidence:[]})),rootPath:e.data.rootPath||""},insightCount:0,hasHighSeverity:!1}})),n=a.edges.map(e=>({id:e.id,source:e.source,target:e.target,type:"dependency",data:{label:"http"===e.data.dependencyType?"".concat(e.data.dependencyCount||0," HTTP call").concat(1!==(e.data.dependencyCount||0)?"s":""):"".concat(e.data.dependencyCount||0," import").concat(1!==(e.data.dependencyCount||0)?"s":""),dependencyCount:e.data.dependencyCount||0,hasHttpCalls:"http"===e.data.dependencyType}}));r(s),i(n)}catch(e){c(e instanceof Error?e.message:"Failed to fetch graph")}finally{o(!1)}}},[e,t]);return(0,s.useEffect)(()=>{u()},[u]),{nodes:a,edges:n,isLoading:l,error:d,refetch:u,setNodes:r,setEdges:i}}(u,p),{isConnected:D,analysisProgress:P,onEvent:$}=function(e){let[t,a]=(0,s.useState)(!1),[r,n]=(0,s.useState)(null),i=(0,s.useRef)(new Map);return(0,s.useEffect)(()=>{let t=function(){let e=eA();return e.connected||e.connect(),e}();function r(){a(!0),e&&eE(e)}function s(){a(!1)}function l(e){n(e)}function o(e){var t;n(null),null==(t=i.current.get("analysis:complete"))||t.forEach(t=>t(e))}return t.on("connect",r),t.on("disconnect",s),t.on("analysis:progress",l),t.on("analysis:complete",o),t.on("files:changed",e=>{var t;null==(t=i.current.get("files:changed"))||t.forEach(t=>t(e))}),t.on("insights:ready",e=>{var t;n(null),null==(t=i.current.get("insights:ready"))||t.forEach(t=>t(e))}),t.connected&&e&&eE(e),()=>{e&&function(e){let t=eA();t.connected&&t.emit("leaveRepo",e)}(e),t.off("connect",r),t.off("disconnect",s),t.off("analysis:progress",l),t.off("analysis:complete",o),(null==eS?void 0:eS.connected)&&eS.disconnect()}},[e]),{isConnected:t,analysisProgress:r,onEvent:(0,s.useCallback)((e,t)=>{let a=i.current.get(e)||[];return a.push(t),i.current.set(e,a),()=>{let a=i.current.get(e)||[];i.current.set(e,a.filter(e=>e!==t))}},[])}}(u),{insights:V,isLoading:H,refetch:B}=function(e,t){let[a,r]=(0,s.useState)([]),[n,i]=(0,s.useState)(!0),[l,o]=(0,s.useState)(null),d=(0,s.useCallback)(async()=>{if(e){i(!0),o(null);try{let t=await M.ge(e);r(t)}catch(e){o(e instanceof Error?e.message:"Failed to fetch insights")}finally{i(!1)}}},[e]);return(0,s.useEffect)(()=>{d()},[d]),{insights:(0,s.useMemo)(()=>{let e={critical:0,high:1,medium:2,low:3,info:4},r=[...a].sort((t,a)=>{var r,s;return(null!=(r=e[t.severity])?r:5)-(null!=(s=e[a.severity])?s:5)});return t?r.filter(e=>e.targetServiceId===t):r},[a,t]),allInsights:a,isLoading:n,error:l,refetch:d}}(u,null!=f?f:void 0);(0,s.useEffect)(()=>{u&&M.L8(u).then(m).catch(()=>{})},[u]),(0,s.useEffect)(()=>{(null==x?void 0:x.defaultBranch)&&!p&&h(x.defaultBranch)},[x,p]),(0,s.useEffect)(()=>{j(_),N(F)},[_,F]),(0,s.useEffect)(()=>$("analysis:complete",()=>{k(!1),R()}),[$,R]),(0,s.useEffect)(()=>$("insights:ready",()=>{B()}),[$,B]);let X=async()=>{try{k(!0),await M.LY(u,p)}catch(e){k(!1)}},Q=(0,s.useCallback)(e=>{g(e)},[]),W=(0,s.useCallback)(e=>{var t;let a=(null==(t=_.find(t=>t.id===e))?void 0:t.data.label)||e;g(e),z("chat"),A({nodeId:e,nodeName:a})},[_]),J=(0,s.useCallback)(e=>{let t=_;if(e.excludedTypes.size>0&&(t=t.filter(t=>!e.excludedTypes.has(t.data.serviceInfo.type))),e.excludedFrameworks.size>0&&(t=t.filter(t=>{let a=t.data.serviceInfo.framework;return!a||!e.excludedFrameworks.has(a)})),e.searchQuery){let a=e.searchQuery.toLowerCase();t=t.filter(e=>e.data.label.toLowerCase().includes(a))}let a=new Set(t.map(e=>e.id)),r=F.filter(e=>a.has(e.source)&&a.has(e.target));j(t),N(r)},[_,F]);u||(0,n.redirect)("/");let U=f&&null!=(t=null==(e=_.find(e=>e.id===f))?void 0:e.data.label)?t:null,Y=[...new Set(_.map(e=>e.data.serviceInfo.type))],q=[...new Set(_.map(e=>e.data.serviceInfo.framework).filter(e=>!!e))];return(0,r.jsxs)("div",{className:"flex h-screen flex-col",children:[(0,r.jsx)(c.Y,{repoName:null==x?void 0:x.name,branches:null==x?void 0:x.branches,selectedBranch:p,onBranchChange:h,onAnalyze:X,isAnalyzing:w,showBack:!0,backHref:"/",isSidebarOpen:E,onToggleSidebar:()=>T(e=>!e)}),(0,r.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[P&&(0,r.jsxs)("div",{className:"absolute bottom-4 left-1/2 z-20 w-72 -translate-x-1/2 rounded-lg border border-border bg-card p-3 shadow-lg",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,r.jsx)(i.A,{className:"h-3.5 w-3.5 shrink-0 animate-spin text-primary"}),(0,r.jsx)(eD,{value:P.percent,className:"flex-1 gap-1",children:(0,r.jsxs)("div",{className:"flex w-full items-center justify-between",children:[(0,r.jsx)(e$,{className:"text-[11px] font-medium capitalize",children:P.step}),(0,r.jsx)(eV,{className:"text-[11px]"})]})})]}),P.detail&&(0,r.jsx)("p",{className:"mt-1.5 pl-6 text-[10px] text-muted-foreground",children:P.detail})]}),(0,r.jsx)("div",{className:"absolute right-3 top-2 z-20 flex items-center gap-1.5 rounded-full bg-card px-2 py-1 text-[10px] shadow-sm border border-border",children:D?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l.A,{className:"h-3 w-3 text-emerald-500"}),(0,r.jsx)("span",{className:"text-emerald-500",children:"Live"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{className:"h-3 w-3 text-muted-foreground"}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"Offline"})]})}),L?(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,r.jsx)(i.A,{className:"h-10 w-10 animate-spin text-primary"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading graph..."})]})}):I?(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3 text-center",children:[(0,r.jsx)(d.A,{className:"h-10 w-10 text-destructive"}),(0,r.jsxs)(eT.Fc,{variant:"destructive",className:"max-w-sm",children:[(0,r.jsx)(eT.XL,{children:"Failed to load graph"}),(0,r.jsx)(eT.TN,{children:I})]}),(0,r.jsx)(O.$,{onClick:()=>R(),className:"mt-2",children:"Retry"})]})}):0===v.length&&0===_.length?(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3 text-center",children:[(0,r.jsx)(d.A,{className:"h-10 w-10 text-muted-foreground"}),(0,r.jsxs)(eT.Fc,{className:"max-w-sm",children:[(0,r.jsx)(eT.XL,{children:"No graph data"}),(0,r.jsx)(eT.TN,{children:"Run an analysis to generate the architecture graph"})]}),(0,r.jsxs)(O.$,{onClick:X,disabled:w,className:"mt-2",children:[w&&(0,r.jsx)(i.A,{className:"h-4 w-4 animate-spin"}),w?"Analyzing...":"Analyze Repository"]})]})}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(ek,{serviceTypes:Y,frameworks:q,onFilterChange:J}),(0,r.jsx)(Z,{initialNodes:v,initialEdges:y,onNodeSelect:Q,onExplainNode:W,selectedNodeId:f,repoId:u,branch:p,onRefetch:R})]})]}),(0,r.jsx)(b,{isOpen:E,children:(0,r.jsx)(eb,{insights:V,isLoading:H,repoId:u,selectedService:f,selectedServiceName:U,activeTab:C,onTabChange:z,explainRequest:S,onExplainHandled:()=>A(null)})})]})]})}},5500:(e,t,a)=>{"use strict";a.d(t,{Fc:()=>l,TN:()=>d,XL:()=>o});var r=a(6409);a(4669);var s=a(268),n=a(6669);let i=(0,s.F)("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:a,...s}=e;return(0,r.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,n.cn)(i({variant:a}),t),...s})}function o(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert-title",className:(0,n.cn)("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert-description",className:(0,n.cn)("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",t),...a})}},6669:(e,t,a)=>{"use strict";a.d(t,{cn:()=>n});var r=a(1754),s=a(3225);function n(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,s.QP)((0,r.$)(t))}},6916:(e,t,a)=>{Promise.resolve().then(a.bind(a,5111))}},e=>{e.O(0,[206,763,414,728,429,597,358],()=>e(e.s=6916)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[302],{432:(e,t,a)=>{"use strict";a.d(t,{L8:()=>l,LY:()=>c,M2:()=>d,S:()=>x,Vl:()=>g,XT:()=>u,YN:()=>i,aE:()=>m,ge:()=>p,kP:()=>f,lS:()=>h,sv:()=>o});let r=(0,a(2011).T)();class s extends Error{constructor(e,t){super(t),this.status=e,this.name="ApiError"}}async function n(e,t){let a="".concat(r).concat(e),n=await fetch(a,{...t,headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!n.ok){let e=await n.text().catch(()=>"Unknown error");throw new s(n.status,e)}return n.json()}function i(){return n("/api/repos")}function l(e){return n("/api/repos/".concat(e))}function o(e){return n("/api/repos",{method:"POST",body:JSON.stringify({path:e})})}function d(e){return n("/api/repos/".concat(e),{method:"DELETE"})}function c(e,t){return n("/api/repos/".concat(e,"/analyze"),{method:"POST",body:JSON.stringify({branch:t})})}function u(e,t){let a=t?"?branch=".concat(encodeURIComponent(t)):"";return n("/api/repos/".concat(e,"/graph").concat(a))}function x(e,t,a){let r=a?"?branch=".concat(encodeURIComponent(a)):"";return n("/api/repos/".concat(e,"/graph/positions").concat(r),{method:"PUT",body:JSON.stringify({positions:t})})}function m(e,t){let a=t?"?branch=".concat(encodeURIComponent(t)):"";return n("/api/repos/".concat(e,"/graph/positions").concat(a),{method:"DELETE"})}function p(e){return n("/api/repos/".concat(e,"/insights"))}function h(e){return n("/api/repos/".concat(e,"/conversations"))}function f(e,t){return n("/api/repos/".concat(e,"/chat/").concat(t))}function g(e,t,a,n,i,l){let o=new AbortController;return fetch("".concat(r,"/api/repos/").concat(e,"/chat"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:t,nodeContext:null==l?void 0:l.nodeContext,conversationId:null==l?void 0:l.conversationId}),signal:o.signal}).then(async e=>{var t;if(!e.ok)throw new s(e.status,await e.text());let r=e.headers.get("X-Conversation-Id")||void 0,i=null==(t=e.body)?void 0:t.getReader();if(!i)throw Error("No response body");let l=new TextDecoder,o="";for(;;){let{done:e,value:t}=await i.read();if(e)break;let s=(o+=l.decode(t,{stream:!0})).split("\n");for(let e of(o=s.pop()||"",s))if(e.startsWith("data: ")){let t=e.slice(6);if("[DONE]"===t)return void n(r);try{let e=JSON.parse(t);e.content&&a(e.content)}catch(e){a(t)}}}n(r)}).catch(e=>{"AbortError"!==e.name&&i(e)}),o}},553:(e,t,a)=>{"use strict";a.d(t,{Y:()=>h});var r=a(6409),s=a(7367),n=a(8925),i=a(1540),l=a(7054),o=a(3218),d=a(2368),c=a(9235),u=a(7505),x=a.n(u),m=a(4669),p=a(4846);function h(e){let{repoName:t,branches:a,selectedBranch:u,onBranchChange:h,onAnalyze:f,isAnalyzing:g,showBack:v,backHref:b="/",isSidebarOpen:j,onToggleSidebar:y}=e,[N,w]=(0,m.useState)(!1);return(0,m.useEffect)(()=>{w(document.documentElement.classList.contains("dark"))},[]),(0,r.jsxs)("header",{className:"flex h-14 items-center justify-between border-b border-border bg-card px-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[v&&(0,r.jsx)(x(),{href:b,className:(0,p.r)({variant:"ghost",size:"icon-sm"}),children:(0,r.jsx)(s.A,{className:"h-5 w-5"})}),(0,r.jsx)(x(),{href:"/",className:"text-lg font-bold text-foreground",children:"TrueCourse"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[t&&(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t}),a&&a.length>0&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-md border border-border bg-muted px-2 py-1",children:[(0,r.jsx)(n.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,r.jsx)("select",{value:u||"",onChange:e=>null==h?void 0:h(e.target.value),className:"bg-transparent text-sm text-foreground outline-none",children:a.map(e=>(0,r.jsx)("option",{value:e,children:e},e))})]}),f&&(0,r.jsxs)(p.$,{size:"sm",onClick:f,disabled:g,children:[g&&(0,r.jsx)(i.A,{className:"h-3.5 w-3.5 animate-spin"}),g?"Analyzing...":"Analyze"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[y&&(0,r.jsx)(p.$,{variant:"ghost",size:"icon-sm",onClick:y,"aria-label":j?"Close panel":"Open panel",children:j?(0,r.jsx)(l.A,{className:"h-5 w-5"}):(0,r.jsx)(o.A,{className:"h-5 w-5"})}),(0,r.jsx)(p.$,{variant:"ghost",size:"icon-sm",onClick:()=>{let e=!N;w(e),document.documentElement.classList.toggle("dark",e),localStorage.setItem("theme",e?"dark":"light")},"aria-label":"Toggle theme",children:N?(0,r.jsx)(d.A,{className:"h-5 w-5"}):(0,r.jsx)(c.A,{className:"h-5 w-5"})})]})]})}},2011:(e,t,a)=>{"use strict";function r(){return""}a.d(t,{T:()=>r})},2054:(e,t,a)=>{"use strict";a.d(t,{p:()=>i});var r=a(6409);a(4669);var s=a(7350),n=a(6669);function i(e){let{className:t,type:a,...i}=e;return(0,r.jsx)(s.p,{type:a,"data-slot":"input",className:(0,n.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...i})}},3316:(e,t,a)=>{"use strict";a.d(t,{BT:()=>o,Wu:()=>d,ZB:()=>l,Zp:()=>n,aR:()=>i,wL:()=>c});var r=a(6409);a(4669);var s=a(6669);function n(e){let{className:t,size:a="default",...n}=e;return(0,r.jsx)("div",{"data-slot":"card","data-size":a,className:(0,s.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function i(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,s.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...a})}function l(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,s.cn)("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...a})}function o(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,s.cn)("text-sm text-muted-foreground",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,s.cn)("px-4 group-data-[size=sm]/card:px-3",t),...a})}function c(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-footer",className:(0,s.cn)("flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3",t),...a})}},4846:(e,t,a)=>{"use strict";a.d(t,{$:()=>o,r:()=>l});var r=a(6409),s=a(7248),n=a(268),i=a(6669);let l=(0,n.F)("group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function o(e){let{className:t,variant:a="default",size:n="default",...o}=e;return(0,r.jsx)(s.$,{"data-slot":"button",className:(0,i.cn)(l({variant:a,size:n,className:t})),...o})}},5111:(e,t,a)=>{"use strict";a.d(t,{default:()=>eH});var r=a(6409),s=a(4669),n=a(9730),i=a(1540),l=a(5847),o=a(1791),d=a(8485),c=a(553),u=a(8670),x=a(7832),m=a(6176),p=a(1264),h=a(5676),f=a(6669);function g(e){let{className:t,children:a,...s}=e;return(0,r.jsxs)(u.V,{"data-slot":"scroll-area",className:(0,f.cn)("relative",t),...s,children:[(0,r.jsx)(x.B,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:a}),(0,r.jsx)(v,{}),(0,r.jsx)(m.I,{})]})}function v(e){let{className:t,orientation:a="vertical",...s}=e;return(0,r.jsx)(p.V,{"data-slot":"scroll-area-scrollbar","data-orientation":a,orientation:a,className:(0,f.cn)("flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",t),...s,children:(0,r.jsx)(h.l,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}function b(e){let{children:t,isOpen:a,defaultWidth:n=320,minWidth:i=260,maxWidth:l=600}=e,[o,d]=(0,s.useState)(n),c=(0,s.useRef)(!1),u=(0,s.useCallback)(e=>{e.preventDefault(),c.current=!0;let t=e.clientX,a=e=>{c.current&&d(Math.min(l,Math.max(i,o+(t-e.clientX))))},r=()=>{c.current=!1,document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",r)};document.addEventListener("mousemove",a),document.addEventListener("mouseup",r)},[o,i,l]);return a?(0,r.jsxs)("aside",{className:"relative flex-shrink-0 border-l border-border bg-card",style:{width:o},children:[(0,r.jsx)("div",{className:"absolute inset-y-0 left-0 z-10 w-1 cursor-col-resize hover:bg-primary/30 active:bg-primary/50",onMouseDown:u}),(0,r.jsx)(g,{className:"h-full",children:t})]}):null}var j=a(2759);a(5285);var y=a(4819),N=a(8984),w=a(5929),k=a(6661),C=a(7113),z=a(8197),S=a(5784),A=a(3316);let E={api:"Routes & Controllers",service:"Business Logic",data:"Database & ORM",external:"HTTP Clients"},T=[{layer:"api",color:"#3b82f6",label:E.api},{layer:"service",color:"#10b981",label:E.service},{layer:"data",color:"#8b5cf6",label:E.data},{layer:"external",color:"#f97316",label:E.external}],_={frontend:N.A,"api-server":w.A,worker:k.A,library:C.A,unknown:C.A},F=(0,s.memo)(function(e){let{id:t,data:a,selected:s}=e,{label:n,description:i,serviceInfo:l,insightCount:o,hasHighSeverity:d,onExplain:c}=a,u=_[l.type]||C.A,x=l.layers.map(e=>e.layer);return(0,r.jsxs)(A.Zp,{className:"relative min-w-[220px] !gap-0 !py-0 rounded-md shadow-md transition-all ".concat(s?"border-primary ring-2 ring-primary ring-opacity-30":""),children:[(0,r.jsx)(j.h7,{type:"target",position:y.yX.Top,className:"!invisible"}),(0,r.jsxs)(A.Wu,{className:"p-3",children:[(0,r.jsxs)("div",{className:"flex items-start gap-3",children:[(0,r.jsx)("div",{className:"flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-lg bg-muted",children:(0,r.jsx)(u,{className:"h-5 w-5 text-primary"})}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("h3",{className:"truncate text-sm font-bold text-foreground",children:n}),l.framework&&(0,r.jsx)("p",{className:"mt-0.5 text-[10px] italic text-muted-foreground",children:l.framework})]}),d&&(0,r.jsx)("div",{className:"flex-shrink-0",children:(0,r.jsx)(z.A,{className:"h-4 w-4 text-amber-500"})})]}),(0,r.jsx)("div",{className:"mx-auto mt-2 w-2/3 border-t border-border"}),i&&(0,r.jsx)("p",{className:"mt-2 max-w-[240px] text-[10px] leading-tight text-muted-foreground",children:i}),x.length>0&&(0,r.jsx)("div",{className:"mt-2 flex flex-wrap gap-1",children:T.map(e=>{let{layer:t,label:a,color:s}=e;return x.includes(t)?(0,r.jsx)("span",{className:"inline-flex items-center rounded-sm border px-1.5 py-0.5 text-[9px] text-muted-foreground",style:{borderColor:s},children:a},t):null})}),o>0&&(0,r.jsxs)("div",{className:"mt-2 rounded-md bg-muted px-2 py-1 text-center text-[10px] text-muted-foreground",children:[o," insight",1!==o?"s":""]}),(0,r.jsx)("div",{className:"mx-auto mt-2 w-2/3 border-t border-border"}),(0,r.jsxs)("div",{className:"mt-2 flex items-center justify-between",children:[(0,r.jsxs)("span",{className:"text-[9px] text-muted-foreground",children:[l.fileCount," files"]}),c&&(0,r.jsxs)("button",{className:"flex cursor-pointer items-center gap-1 rounded-sm border border-border bg-muted px-1.5 py-0.5 text-[9px] text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",onClick:e=>{e.stopPropagation(),c(t)},children:[(0,r.jsx)(S.A,{className:"h-2.5 w-2.5"}),"Explain"]})]})]}),(0,r.jsx)(j.h7,{type:"source",position:y.yX.Bottom,className:"!invisible"})]})}),L=(0,s.memo)(function(e){var t,a;let{id:s,sourceX:n,sourceY:i,targetX:l,targetY:o,sourcePosition:d,targetPosition:c,data:u,selected:x}=e;null==u||u.dependencyCount;let m=null!=(t=null==u?void 0:u.hasHttpCalls)&&t,p=null!=(a=null==u?void 0:u.label)?a:"",[h,f,g]=(0,y.Fp)({sourceX:n,sourceY:i,targetX:l,targetY:o,sourcePosition:d,targetPosition:c});return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("path",{id:s,d:h,fill:"none",stroke:x?"var(--primary)":"var(--muted-foreground)",strokeWidth:m?1.5:1,strokeDasharray:m?"8 4":"2 3",opacity:.6,className:"animate-edge-flow"}),p&&(0,r.jsx)(j.rV,{children:(0,r.jsx)("div",{style:{position:"absolute",transform:"translate(-50%, -50%) translate(".concat(f,"px, ").concat(g,"px)"),pointerEvents:"all"},className:"rounded bg-card px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground shadow-sm border border-border",children:p})})]})});var I=a(1047),R=a(5608),D=a(3503),P=a(3159),O=a(4846),$=a(6858);function V(e){let{className:t,orientation:a="horizontal",...s}=e;return(0,r.jsx)($.w,{"data-slot":"separator",orientation:a,className:(0,f.cn)("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",t),...s})}function H(e){let{onAutoLayout:t}=e,{zoomIn:a,zoomOut:s,fitView:n}=(0,j.VH)();return(0,r.jsxs)("div",{className:"absolute bottom-4 left-4 z-10 flex flex-col gap-1 rounded-lg border border-border bg-card p-1 shadow-md",children:[(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>a(),"aria-label":"Zoom in",children:(0,r.jsx)(I.A,{className:"h-4 w-4"})}),(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>s(),"aria-label":"Zoom out",children:(0,r.jsx)(R.A,{className:"h-4 w-4"})}),(0,r.jsx)(V,{}),(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>n({padding:.3,duration:300}),"aria-label":"Fit view",children:(0,r.jsx)(D.A,{className:"h-4 w-4"})}),t&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(V,{}),(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>{t(),setTimeout(()=>n({padding:.3,duration:300}),50)},"aria-label":"Auto layout",children:(0,r.jsx)(P.A,{className:"h-4 w-4"})})]})]})}var M=a(432);let B={service:F},X={dependency:L};function Z(e){let{initialNodes:t,initialEdges:a,onNodeSelect:n,onExplainNode:i,selectedNodeId:l,repoId:o,branch:d,onRefetch:c}=e,[u,x]=(0,s.useState)(!1),m=(0,s.useRef)([]),[p,h,f]=(0,j.ck)(t),[g,v,b]=(0,j.fM)(a);m.current=p,(0,s.useMemo)(()=>{h(t.map(e=>({...e,selected:e.id===l,data:{...e.data,onExplain:i}}))),v(a)},[t,a,h,v,i,l]);let y=(0,s.useCallback)(()=>{let e={};for(let t of m.current)e[t.id]=t.position;x(!0),M.S(o,e,d).finally(()=>x(!1))},[o,d]),N=(0,s.useCallback)(()=>{M.aE(o,d).then(()=>null==c?void 0:c()).catch(()=>{})},[o,d,c]),w=(0,s.useCallback)((e,t)=>{null==n||n(t.id)},[n]),k=(0,s.useCallback)(()=>{null==n||n(null)},[n]);return(0,r.jsxs)("div",{className:"h-full w-full",children:[u&&(0,r.jsx)("div",{className:"absolute left-1/2 top-3 z-20 -translate-x-1/2 rounded-md border border-border bg-card px-3 py-1 text-xs text-muted-foreground shadow-sm",children:"Saving..."}),(0,r.jsxs)(j.Gc,{nodes:p,edges:g,onNodesChange:f,onEdgesChange:b,onNodeClick:w,onNodeDragStop:y,onPaneClick:k,nodeTypes:B,edgeTypes:X,nodesConnectable:!1,fitView:!0,fitViewOptions:{padding:.3},minZoom:.1,maxZoom:2,proOptions:{hideAttribution:!0},children:[(0,r.jsx)(j.VS,{variant:j._5.Dots,gap:20,size:1}),(0,r.jsx)(j.of,{nodeStrokeWidth:3,className:"!bg-card !border-border",maskColor:"rgba(0, 0, 0, 0.1)"}),(0,r.jsx)(H,{onAutoLayout:N})]})]})}var Q=a(3417),W=a(8974),J=a(1879),U=a(7033),Y=a(113),q=a(268);let K=(0,q.F)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function G(e){let{className:t,variant:a="default",render:r,...s}=e;return(0,Y.C)({defaultTagName:"span",props:(0,U.v6)({className:(0,f.cn)(K({variant:a}),t)},s),render:r,state:{slot:"badge",variant:a}})}let ee={info:"border-l-blue-500",low:"border-l-green-500",medium:"border-l-yellow-500",high:"border-l-orange-500",critical:"border-l-red-500"},et={info:"bg-blue-500/10 text-blue-600 dark:text-blue-400",low:"bg-green-500/10 text-green-600 dark:text-green-400",medium:"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400",high:"bg-orange-500/10 text-orange-600 dark:text-orange-400",critical:"bg-red-500/10 text-red-600 dark:text-red-400"};function ea(e){let{insight:t}=e,[a,n]=(0,s.useState)(!1),i=async()=>{t.fixPrompt&&(await navigator.clipboard.writeText(t.fixPrompt),n(!0),setTimeout(()=>n(!1),2e3))};return(0,r.jsx)(A.Zp,{className:"border-l-4 rounded-sm p-3 ".concat(ee[t.severity]||"border-l-gray-500"),children:(0,r.jsxs)(A.Wu,{className:"p-0",children:[(0,r.jsxs)("div",{className:"mb-1.5 flex items-center gap-2",children:[(0,r.jsx)(G,{className:"rounded-sm px-2 py-0.5 text-[10px] font-semibold uppercase ".concat(et[t.severity]||""),children:t.type}),(0,r.jsx)(G,{className:"rounded-sm px-1.5 py-0.5 text-[10px] font-medium ".concat(et[t.severity]||""),children:t.severity})]}),(0,r.jsx)("h4",{className:"text-sm font-bold text-foreground",children:t.title}),(0,r.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-muted-foreground",children:t.content}),t.targetServiceName&&(0,r.jsxs)("p",{className:"mt-2 text-[10px] text-muted-foreground",children:["Target:"," ",(0,r.jsx)("span",{className:"font-medium text-foreground",children:t.targetServiceName})]}),t.fixPrompt&&(0,r.jsx)(O.$,{variant:"outline",size:"xs",onClick:i,className:"mt-2 text-[10px] text-muted-foreground hover:text-foreground",children:a?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(W.A,{className:"h-3 w-3 text-emerald-500"}),"Copied!"]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(J.A,{className:"h-3 w-3"}),"Copy Fix Prompt"]})})]})})}var er=a(7367),es=a(1160),en=a(726),ei=a(3418),el=a(8713);function eo(e){let{message:t}=e;if("system"===t.role)return(0,r.jsxs)("div",{className:"flex items-center justify-center gap-1.5 py-2",children:[(0,r.jsx)(ei.A,{className:"h-3 w-3 text-muted-foreground"}),(0,r.jsx)("span",{className:"text-[11px] text-muted-foreground",children:t.content})]});let a="user"===t.role;return a||t.content?a?(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("div",{className:"max-w-[85%] rounded-2xl bg-primary px-3 py-2 text-sm text-primary-foreground",children:(0,r.jsx)("p",{className:"whitespace-pre-wrap break-words leading-relaxed",children:t.content})})}):(0,r.jsx)("div",{className:"text-sm text-foreground",children:(0,r.jsx)("div",{className:"prose prose-sm dark:prose-invert max-w-none break-words leading-relaxed [&_p]:my-1 [&_ul]:my-1 [&_ol]:my-1 [&_li]:my-0 [&_h1]:text-base [&_h2]:text-sm [&_h3]:text-sm [&_pre]:text-xs [&_code]:text-xs",children:(0,r.jsx)(el.oz,{children:t.content})})}):null}var ed=a(4611);function ec(e){let{onSend:t,disabled:a}=e,[n,i]=(0,s.useState)(""),l=(0,s.useRef)(null),o=()=>{n.trim()&&!a&&(t(n.trim()),i(""),l.current&&(l.current.style.height="auto"))};return(0,r.jsx)("div",{className:"border-t border-border p-3",children:(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("textarea",{ref:l,value:n,onChange:e=>i(e.target.value),onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),o())},onInput:()=>{let e=l.current;e&&(e.style.height="auto",e.style.height="".concat(Math.min(e.scrollHeight,150),"px"))},placeholder:"Ask about architecture...",rows:2,disabled:a,className:"w-full resize-none rounded-lg border border-border bg-muted px-3 py-2.5 pr-10 text-sm text-foreground placeholder:text-muted-foreground focus:border-primary focus:outline-none disabled:opacity-50",style:{maxHeight:150}}),(0,r.jsx)("button",{onClick:o,disabled:a||!n.trim(),"aria-label":"Send message",className:"absolute bottom-2.5 right-2.5 flex h-6 w-6 items-center justify-center rounded-full bg-primary text-primary-foreground transition-colors hover:bg-primary/90 disabled:opacity-30 disabled:cursor-not-allowed cursor-pointer",children:(0,r.jsx)(ed.A,{className:"h-3.5 w-3.5"})})]})})}function eu(e){let{repoId:t,explainRequest:a,onExplainHandled:n}=e,{messages:l,isStreaming:o,isLoadingHistory:d,conversationList:c,sendMessage:u,explainNode:x,newConversation:m,fetchConversations:p,loadConversation:h}=function(e){let[t,a]=(0,s.useState)([]),[r,n]=(0,s.useState)(!1),[i,l]=(0,s.useState)([]),[o,d]=(0,s.useState)(!1),c=(0,s.useRef)(null),u=(0,s.useRef)(void 0),x=(0,s.useRef)(0),m=()=>(x.current+=1,"msg-".concat(x.current)),p=(0,s.useCallback)(t=>{if(!t.trim()||r)return;let s={id:m(),role:"user",content:t,timestamp:new Date},i=m(),l={id:i,role:"assistant",content:"",timestamp:new Date};a(e=>[...e,s,l]),n(!0),c.current=(0,M.Vl)(e,t,e=>{a(t=>t.map(t=>t.id===i?{...t,content:t.content+e}:t))},e=>{e&&(u.current=e),n(!1)},e=>{a(t=>t.map(t=>t.id===i?{...t,content:"Error: ".concat(e.message)}:t)),n(!1)},{conversationId:u.current})},[e,r]),h=(0,s.useCallback)((e,t)=>{p('Explain the "'.concat(t,'" service — what does it do, how does it fit into the architecture, and are there any concerns?'))},[p]),f=(0,s.useCallback)(()=>{c.current&&c.current.abort(),a([]),n(!1),u.current=void 0},[]),g=(0,s.useCallback)(async()=>{try{let t=await (0,M.lS)(e);l(t)}catch(e){}},[e]),v=(0,s.useCallback)(async t=>{if(!r){d(!0);try{let r=await (0,M.kP)(e,t);u.current=t,a(r.messages.map(e=>({id:e.id,role:e.role,content:e.content,timestamp:new Date(e.createdAt)})))}catch(e){}finally{d(!1)}}},[e,r]);return{messages:t,isStreaming:r,isLoadingHistory:o,conversationList:i,sendMessage:p,explainNode:h,newConversation:f,fetchConversations:g,loadConversation:v}}(t),f=(0,s.useRef)(null),g=(0,s.useRef)(null),[v,b]=(0,s.useState)(!1),j=l[l.length-1];return((0,s.useEffect)(()=>{g.current&&(g.current.scrollTop=g.current.scrollHeight)},[null==j?void 0:j.content,l.length]),(0,s.useEffect)(()=>{a&&a.nodeId!==f.current&&(f.current=a.nodeId,x(a.nodeId,a.nodeName),null==n||n())},[a,x,n]),v)?(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[(0,r.jsx)("button",{onClick:()=>b(!1),className:"flex cursor-pointer items-center justify-center rounded-md p-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground","aria-label":"Back to chat",children:(0,r.jsx)(er.A,{className:"h-4 w-4"})}),(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:"Conversations"})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto",children:0===c.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)(es.A,{className:"mb-3 h-8 w-8 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"No conversations yet"})]}):(0,r.jsx)("div",{className:"divide-y divide-border",children:c.map(e=>(0,r.jsxs)("button",{onClick:()=>{h(e.id),b(!1)},className:"w-full cursor-pointer px-3 py-2.5 text-left transition-colors hover:bg-accent",children:[(0,r.jsx)("p",{className:"truncate text-sm text-foreground",children:e.preview}),(0,r.jsx)("p",{className:"mt-0.5 text-[10px] text-muted-foreground",children:new Date(e.updatedAt).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]},e.id))})})]}):(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsxs)("div",{className:"flex items-center justify-end gap-1 border-b border-border px-2 py-1.5",children:[(0,r.jsx)("button",{onClick:()=>{m(),b(!1)},className:"flex cursor-pointer items-center justify-center rounded-md p-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground","aria-label":"New conversation",title:"New conversation",children:(0,r.jsx)(en.A,{className:"h-4 w-4"})}),(0,r.jsx)("button",{onClick:()=>{p(),b(!0)},className:"flex cursor-pointer items-center justify-center rounded-md p-1 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground","aria-label":"Conversation history",title:"Conversation history",children:(0,r.jsx)(es.A,{className:"h-4 w-4"})})]}),(0,r.jsx)("div",{ref:g,className:"min-h-0 flex-1 overflow-y-auto",children:(0,r.jsxs)("div",{className:"space-y-3 p-3",children:[d?(0,r.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,r.jsx)(i.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):0===l.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)(S.A,{className:"mb-3 h-8 w-8 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-sm font-medium text-foreground",children:"Architecture Chat"}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground",children:"Ask questions about your codebase architecture"})]}):l.map(e=>(0,r.jsx)(eo,{message:e},e.id)),o&&(()=>{let e=[...l].reverse().find(e=>"assistant"===e.role),t=!!(null==e?void 0:e.content);return(0,r.jsx)("div",{className:"flex items-center gap-2 py-1 text-xs text-muted-foreground",children:t?(0,r.jsxs)("span",{className:"inline-flex gap-0.5",children:[(0,r.jsx)("span",{className:"h-1 w-1 animate-bounce rounded-full bg-muted-foreground [animation-delay:0ms]"}),(0,r.jsx)("span",{className:"h-1 w-1 animate-bounce rounded-full bg-muted-foreground [animation-delay:150ms]"}),(0,r.jsx)("span",{className:"h-1 w-1 animate-bounce rounded-full bg-muted-foreground [animation-delay:300ms]"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.A,{className:"h-3 w-3 animate-spin"}),"Thinking..."]})})})()]})}),(0,r.jsx)(ec,{onSend:e=>{u(e)},disabled:o})]})}var ex=a(5133),em=a(6333),ep=a(5468);function eh(e){let{className:t,orientation:a="horizontal",...s}=e;return(0,r.jsx)(ex.p,{"data-slot":"tabs","data-orientation":a,className:(0,f.cn)("group/tabs flex gap-2 data-horizontal:flex-col",t),...s})}let ef=(0,q.F)("group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"bg-muted",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function eg(e){let{className:t,variant:a="default",...s}=e;return(0,r.jsx)(em.j,{"data-slot":"tabs-list","data-variant":a,className:(0,f.cn)(ef({variant:a}),t),...s})}function ev(e){let{className:t,...a}=e;return(0,r.jsx)(ep.M,{"data-slot":"tabs-trigger",className:(0,f.cn)("relative inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 dark:text-muted-foreground dark:hover:text-foreground group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",t),...a})}function eb(e){let{insights:t,isLoading:a,repoId:s,selectedService:n,selectedServiceName:l,activeTab:o="insights",onTabChange:d,explainRequest:c,onExplainHandled:u}=e,x="chat"===o;return(0,r.jsxs)("div",{className:"flex h-full flex-col overflow-hidden",children:[(0,r.jsx)(eh,{value:o,onValueChange:e=>null==d?void 0:d(String(e)),className:"flex flex-shrink-0 flex-col",children:(0,r.jsxs)(eg,{variant:"line",className:"w-full",children:[(0,r.jsxs)(ev,{value:"insights",children:[(0,r.jsx)(Q.A,{className:"h-4 w-4"}),"Insights"]}),(0,r.jsxs)(ev,{value:"chat",children:[(0,r.jsx)(S.A,{className:"h-4 w-4"}),"Chat"]})]})}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-y-auto ".concat(x?"hidden":""),children:(0,r.jsxs)("div",{className:"p-3",children:[n&&(0,r.jsxs)("div",{className:"mb-3 rounded-md bg-muted px-3 py-1.5 text-xs text-muted-foreground",children:["Filtered by:"," ",(0,r.jsx)("span",{className:"font-medium text-foreground",children:l||n})]}),a?(0,r.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,r.jsx)(i.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):0===t.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,r.jsx)(Q.A,{className:"mb-3 h-8 w-8 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:n?"No insights for this service":"No insights yet. Run an analysis to get insights."})]}):(0,r.jsx)("div",{className:"space-y-3",children:t.map(e=>(0,r.jsx)(ea,{insight:e},e.id))})]})}),(0,r.jsx)("div",{className:"min-h-0 flex-1 overflow-hidden ".concat(x?"":"hidden"),children:(0,r.jsx)(eu,{repoId:s,selectedService:n,explainRequest:c,onExplainHandled:u})})]})}var ej=a(6540),ey=a(5694),eN=a(8682),ew=a(2054);function ek(e){let{serviceTypes:t,frameworks:a,onFilterChange:n}=e,[i,l]=(0,s.useState)(!1),[o,d]=(0,s.useState)({excludedTypes:new Set,excludedFrameworks:new Set,searchQuery:"",showLabels:!0}),c=e=>{d(e),n(e)},u=o.excludedTypes.size>0||o.excludedFrameworks.size>0||o.searchQuery.length>0;return(0,r.jsxs)("div",{className:"absolute left-4 top-4 z-10",children:[(0,r.jsxs)(O.$,{variant:"outline",onClick:()=>l(!i),className:"shadow-md",children:[(0,r.jsx)(ej.A,{className:"h-4 w-4"}),"Filters",u&&(0,r.jsx)("span",{className:"ml-1 flex h-4 w-4 items-center justify-center rounded-full bg-primary text-[10px] text-primary-foreground",children:o.excludedTypes.size+o.excludedFrameworks.size+ +!!o.searchQuery})]}),i&&(0,r.jsx)(A.Zp,{className:"mt-2 w-64 shadow-lg",children:(0,r.jsxs)(A.Wu,{className:"p-4",children:[(0,r.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-foreground",children:"Filters"}),(0,r.jsx)(O.$,{variant:"ghost",size:"icon-xs",onClick:()=>l(!1),children:(0,r.jsx)(ey.A,{className:"h-4 w-4"})})]}),(0,r.jsxs)("div",{className:"relative mb-3",children:[(0,r.jsx)(eN.A,{className:"absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)(ew.p,{type:"text",value:o.searchQuery,onChange:e=>c({...o,searchQuery:e.target.value}),placeholder:"Search services...",className:"pl-8 text-xs"})]}),(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsx)("h4",{className:"mb-1.5 text-xs font-medium text-muted-foreground",children:"Service Type"}),(0,r.jsx)("div",{className:"space-y-1",children:t.map(e=>(0,r.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 text-xs text-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:!o.excludedTypes.has(e),onChange:()=>(e=>{let t=new Set(o.excludedTypes);t.has(e)?t.delete(e):t.add(e),c({...o,excludedTypes:t})})(e),className:"rounded border-border accent-primary"}),e]},e))})]}),a.length>0&&(0,r.jsxs)("div",{className:"mb-3",children:[(0,r.jsx)("h4",{className:"mb-1.5 text-xs font-medium text-muted-foreground",children:"Framework"}),(0,r.jsx)("div",{className:"space-y-1",children:a.map(e=>(0,r.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 text-xs text-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:!o.excludedFrameworks.has(e),onChange:()=>(e=>{let t=new Set(o.excludedFrameworks);t.has(e)?t.delete(e):t.add(e),c({...o,excludedFrameworks:t})})(e),className:"rounded border-border accent-primary"}),e]},e))})]}),(0,r.jsxs)("label",{className:"flex cursor-pointer items-center gap-2 text-xs text-foreground",children:[(0,r.jsx)("input",{type:"checkbox",checked:o.showLabels,onChange:()=>c({...o,showLabels:!o.showLabels}),className:"rounded border-border accent-primary"}),"Show dependency labels"]})]})})]})}var eC=a(1010);let ez=(0,a(2011).T)()||window.location.origin,eS=null;function eA(){return eS||(eS=(0,eC.io)(ez,{autoConnect:!1,reconnection:!0,reconnectionAttempts:10,reconnectionDelay:1e3,reconnectionDelayMax:5e3,transports:["websocket","polling"]})),eS}function eE(e){let t=eA();t.connected&&t.emit("joinRepo",e)}var eT=a(5500),e_=a(4274),eF=a(1393),eL=a(9663),eI=a(3714),eR=a(4113);function eD(e){let{className:t,children:a,value:s,...n}=e;return(0,r.jsxs)(e_.w,{value:s,"data-slot":"progress",className:(0,f.cn)("flex flex-wrap gap-3",t),...n,children:[a,(0,r.jsx)(eP,{children:(0,r.jsx)(eO,{})})]})}function eP(e){let{className:t,...a}=e;return(0,r.jsx)(eF.X,{className:(0,f.cn)("relative flex h-1 w-full items-center overflow-x-hidden rounded-full bg-muted",t),"data-slot":"progress-track",...a})}function eO(e){let{className:t,...a}=e;return(0,r.jsx)(eL.Z,{"data-slot":"progress-indicator",className:(0,f.cn)("h-full bg-primary transition-all",t),...a})}function e$(e){let{className:t,...a}=e;return(0,r.jsx)(eI.u,{className:(0,f.cn)("text-sm font-medium",t),"data-slot":"progress-label",...a})}function eV(e){let{className:t,...a}=e;return(0,r.jsx)(eR.D,{className:(0,f.cn)("ml-auto text-sm text-muted-foreground tabular-nums",t),"data-slot":"progress-value",...a})}function eH(){var e,t;let a=(0,n.useParams)(),u=Array.isArray(a.slug)?a.slug[0]:"",[x,m]=(0,s.useState)(null),[p,h]=(0,s.useState)(),[f,g]=(0,s.useState)(null),[v,j]=(0,s.useState)([]),[y,N]=(0,s.useState)([]),[w,k]=(0,s.useState)(!1),[C,z]=(0,s.useState)("insights"),[S,A]=(0,s.useState)(null),[E,T]=(0,s.useState)(!0),{nodes:_,edges:F,isLoading:L,error:I,refetch:R}=function(e,t){let[a,r]=(0,s.useState)([]),[n,i]=(0,s.useState)([]),[l,o]=(0,s.useState)(!0),[d,c]=(0,s.useState)(null),u=(0,s.useCallback)(async()=>{if(e){o(!0),c(null);try{let a=await M.XT(e,t),s=a.nodes.map(e=>({id:e.id,type:"service",position:e.position,data:{label:e.data.label,description:e.data.description,serviceInfo:{type:e.data.serviceType||"unknown",framework:e.data.framework||null,fileCount:e.data.fileCount||0,layers:(e.data.layers||[]).map(e=>({layer:e,confidence:1,evidence:[]})),rootPath:e.data.rootPath||""},insightCount:0,hasHighSeverity:!1}})),n=a.edges.map(e=>({id:e.id,source:e.source,target:e.target,type:"dependency",data:{label:"http"===e.data.dependencyType?"".concat(e.data.dependencyCount||0," HTTP call").concat(1!==(e.data.dependencyCount||0)?"s":""):"".concat(e.data.dependencyCount||0," import").concat(1!==(e.data.dependencyCount||0)?"s":""),dependencyCount:e.data.dependencyCount||0,hasHttpCalls:"http"===e.data.dependencyType}}));r(s),i(n)}catch(e){c(e instanceof Error?e.message:"Failed to fetch graph")}finally{o(!1)}}},[e,t]);return(0,s.useEffect)(()=>{u()},[u]),{nodes:a,edges:n,isLoading:l,error:d,refetch:u,setNodes:r,setEdges:i}}(u,p),{isConnected:D,analysisProgress:P,onEvent:$}=function(e){let[t,a]=(0,s.useState)(!1),[r,n]=(0,s.useState)(null),i=(0,s.useRef)(new Map);return(0,s.useEffect)(()=>{let t=function(){let e=eA();return e.connected||e.connect(),e}();function r(){a(!0),e&&eE(e)}function s(){a(!1)}function l(e){n(e)}function o(e){var t;n(null),null==(t=i.current.get("analysis:complete"))||t.forEach(t=>t(e))}return t.on("connect",r),t.on("disconnect",s),t.on("analysis:progress",l),t.on("analysis:complete",o),t.on("files:changed",e=>{var t;null==(t=i.current.get("files:changed"))||t.forEach(t=>t(e))}),t.on("insights:ready",e=>{var t;n(null),null==(t=i.current.get("insights:ready"))||t.forEach(t=>t(e))}),t.connected&&e&&eE(e),()=>{e&&function(e){let t=eA();t.connected&&t.emit("leaveRepo",e)}(e),t.off("connect",r),t.off("disconnect",s),t.off("analysis:progress",l),t.off("analysis:complete",o),(null==eS?void 0:eS.connected)&&eS.disconnect()}},[e]),{isConnected:t,analysisProgress:r,onEvent:(0,s.useCallback)((e,t)=>{let a=i.current.get(e)||[];return a.push(t),i.current.set(e,a),()=>{let a=i.current.get(e)||[];i.current.set(e,a.filter(e=>e!==t))}},[])}}(u),{insights:V,isLoading:H,refetch:B}=function(e,t){let[a,r]=(0,s.useState)([]),[n,i]=(0,s.useState)(!0),[l,o]=(0,s.useState)(null),d=(0,s.useCallback)(async()=>{if(e){i(!0),o(null);try{let t=await M.ge(e);r(t)}catch(e){o(e instanceof Error?e.message:"Failed to fetch insights")}finally{i(!1)}}},[e]);return(0,s.useEffect)(()=>{d()},[d]),{insights:(0,s.useMemo)(()=>{let e={critical:0,high:1,medium:2,low:3,info:4},r=[...a].sort((t,a)=>{var r,s;return(null!=(r=e[t.severity])?r:5)-(null!=(s=e[a.severity])?s:5)});return t?r.filter(e=>e.targetServiceId===t):r},[a,t]),allInsights:a,isLoading:n,error:l,refetch:d}}(u,null!=f?f:void 0);(0,s.useEffect)(()=>{u&&M.L8(u).then(m).catch(()=>{})},[u]),(0,s.useEffect)(()=>{(null==x?void 0:x.defaultBranch)&&!p&&h(x.defaultBranch)},[x,p]),(0,s.useEffect)(()=>{j(_),N(F)},[_,F]),(0,s.useEffect)(()=>$("analysis:complete",()=>{k(!1),R()}),[$,R]),(0,s.useEffect)(()=>$("insights:ready",()=>{B()}),[$,B]);let X=async()=>{try{k(!0),await M.LY(u,p)}catch(e){k(!1)}},Q=(0,s.useCallback)(e=>{g(e)},[]),W=(0,s.useCallback)(e=>{var t;let a=(null==(t=_.find(t=>t.id===e))?void 0:t.data.label)||e;g(e),z("chat"),A({nodeId:e,nodeName:a})},[_]),J=(0,s.useCallback)(e=>{let t=_;if(e.excludedTypes.size>0&&(t=t.filter(t=>!e.excludedTypes.has(t.data.serviceInfo.type))),e.excludedFrameworks.size>0&&(t=t.filter(t=>{let a=t.data.serviceInfo.framework;return!a||!e.excludedFrameworks.has(a)})),e.searchQuery){let a=e.searchQuery.toLowerCase();t=t.filter(e=>e.data.label.toLowerCase().includes(a))}let a=new Set(t.map(e=>e.id)),r=F.filter(e=>a.has(e.source)&&a.has(e.target));j(t),N(r)},[_,F]);u||(0,n.redirect)("/");let U=f&&null!=(t=null==(e=_.find(e=>e.id===f))?void 0:e.data.label)?t:null,Y=[...new Set(_.map(e=>e.data.serviceInfo.type))],q=[...new Set(_.map(e=>e.data.serviceInfo.framework).filter(e=>!!e))];return(0,r.jsxs)("div",{className:"flex h-screen flex-col",children:[(0,r.jsx)(c.Y,{repoName:null==x?void 0:x.name,branches:null==x?void 0:x.branches,selectedBranch:p,onBranchChange:h,onAnalyze:X,isAnalyzing:w,showBack:!0,backHref:"/",isSidebarOpen:E,onToggleSidebar:()=>T(e=>!e)}),(0,r.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[P&&(0,r.jsxs)("div",{className:"absolute bottom-4 left-1/2 z-20 w-72 -translate-x-1/2 rounded-lg border border-border bg-card p-3 shadow-lg",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,r.jsx)(i.A,{className:"h-3.5 w-3.5 shrink-0 animate-spin text-primary"}),(0,r.jsx)(eD,{value:P.percent,className:"flex-1 gap-1",children:(0,r.jsxs)("div",{className:"flex w-full items-center justify-between",children:[(0,r.jsx)(e$,{className:"text-[11px] font-medium capitalize",children:P.step}),(0,r.jsx)(eV,{className:"text-[11px]"})]})})]}),P.detail&&(0,r.jsx)("p",{className:"mt-1.5 pl-6 text-[10px] text-muted-foreground",children:P.detail})]}),(0,r.jsx)("div",{className:"absolute right-3 top-2 z-20 flex items-center gap-1.5 rounded-full bg-card px-2 py-1 text-[10px] shadow-sm border border-border",children:D?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(l.A,{className:"h-3 w-3 text-emerald-500"}),(0,r.jsx)("span",{className:"text-emerald-500",children:"Live"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{className:"h-3 w-3 text-muted-foreground"}),(0,r.jsx)("span",{className:"text-muted-foreground",children:"Offline"})]})}),L?(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3",children:[(0,r.jsx)(i.A,{className:"h-10 w-10 animate-spin text-primary"}),(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:"Loading graph..."})]})}):I?(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3 text-center",children:[(0,r.jsx)(d.A,{className:"h-10 w-10 text-destructive"}),(0,r.jsxs)(eT.Fc,{variant:"destructive",className:"max-w-sm",children:[(0,r.jsx)(eT.XL,{children:"Failed to load graph"}),(0,r.jsx)(eT.TN,{children:I})]}),(0,r.jsx)(O.$,{onClick:()=>R(),className:"mt-2",children:"Retry"})]})}):0===v.length&&0===_.length?(0,r.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-3 text-center",children:[(0,r.jsx)(d.A,{className:"h-10 w-10 text-muted-foreground"}),(0,r.jsxs)(eT.Fc,{className:"max-w-sm",children:[(0,r.jsx)(eT.XL,{children:"No graph data"}),(0,r.jsx)(eT.TN,{children:"Run an analysis to generate the architecture graph"})]}),(0,r.jsxs)(O.$,{onClick:X,disabled:w,className:"mt-2",children:[w&&(0,r.jsx)(i.A,{className:"h-4 w-4 animate-spin"}),w?"Analyzing...":"Analyze Repository"]})]})}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(ek,{serviceTypes:Y,frameworks:q,onFilterChange:J}),(0,r.jsx)(Z,{initialNodes:v,initialEdges:y,onNodeSelect:Q,onExplainNode:W,selectedNodeId:f,repoId:u,branch:p,onRefetch:R})]})]}),(0,r.jsx)(b,{isOpen:E,children:(0,r.jsx)(eb,{insights:V,isLoading:H,repoId:u,selectedService:f,selectedServiceName:U,activeTab:C,onTabChange:z,explainRequest:S,onExplainHandled:()=>A(null)})})]})]})}},5500:(e,t,a)=>{"use strict";a.d(t,{Fc:()=>l,TN:()=>d,XL:()=>o});var r=a(6409);a(4669);var s=a(268),n=a(6669);let i=(0,s.F)("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:a,...s}=e;return(0,r.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,n.cn)(i({variant:a}),t),...s})}function o(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert-title",className:(0,n.cn)("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert-description",className:(0,n.cn)("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",t),...a})}},6669:(e,t,a)=>{"use strict";a.d(t,{cn:()=>n});var r=a(1754),s=a(3225);function n(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,s.QP)((0,r.$)(t))}},9766:(e,t,a)=>{Promise.resolve().then(a.bind(a,5111))}},e=>{e.O(0,[206,763,414,728,429,597,358],()=>e(e.s=9766)),_N_E=e.O()}]);
|
package/public/_next/static/chunks/{main-app-6713e5440a400899.js → main-app-598d148dafd4bc32.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{2998:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,2044,23)),Promise.resolve().then(n.t.bind(n,1405,23)),Promise.resolve().then(n.t.bind(n,4559,23)),Promise.resolve().then(n.t.bind(n,6791,23)),Promise.resolve().then(n.t.bind(n,2064,23)),Promise.resolve().then(n.t.bind(n,7544,23)),Promise.resolve().then(n.t.bind(n,982,23)),Promise.resolve().then(n.t.bind(n,1597,23)),Promise.resolve().then(n.bind(n,1960))},9351:()=>{}},e=>{var s=s=>e(e.s=s);e.O(0,[429,597],()=>(s(3212),s(2998))),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-content:"";--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:host,:root{--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--animate-spin:spin 1s linear infinite;--animate-bounce:bounce 1s infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:"Geist","Inter",ui-sans-serif,system-ui,sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:Geist,Inter,ui-sans-serif,system-ui,sans-serif}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.\!invisible{visibility:hidden!important}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-2\.5{bottom:calc(var(--spacing) * 2.5)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.field-sizing-content{field-sizing:content}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-full{width:100%;height:100%}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-full{height:100%}.h-screen{height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-screen{min-height:100vh}.w-1{width:calc(var(--spacing) * 1)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[85\%\]{max-width:85%}.max-w-\[240px\]{max-width:240px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[220px\]{min-width:220px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1)}.-translate-x-1\/2,.-translate-y-1\/2{translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1)}.translate-y-\[calc\(-50\%-2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.auto-rows-min{grid-auto-rows:min-content}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.\!gap-0{gap:calc(var(--spacing) * 0)!important}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap}.overflow-hidden,.truncate{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-t-xl{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\!border-border{border-color:var(--border)!important}.border-blue-500\/20{border-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/20{border-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.border-border{border-color:var(--border)}.border-green-500\/20{border-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.border-green-500\/20{border-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground{border-color:var(--muted-foreground)}.border-orange-500\/20{border-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/20{border-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.border-primary{border-color:var(--primary)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-transparent{border-color:#0000}.border-yellow-500\/20{border-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/20{border-color:color-mix(in oklab,var(--color-yellow-500) 20%,transparent)}}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-gray-500{border-left-color:var(--color-gray-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-orange-500{border-left-color:var(--color-orange-500)}.border-l-red-500{border-left-color:var(--color-red-500)}.border-l-yellow-500{border-left-color:var(--color-yellow-500)}.\!bg-card{background-color:var(--card)!important}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500) 10%,transparent)}}.bg-primary{background-color:var(--primary)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500) 10%,transparent)}}.bg-clip-padding{background-clip:padding-box}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.font-sans{font-family:Geist,Inter,ui-sans-serif,system-ui,sans-serif}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-500{color:var(--color-amber-500)}.text-background{color:var(--background)}.text-blue-600{color:var(--color-blue-600)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--foreground) 60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:var(--primary)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-md{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.ring-1,.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab,var(--foreground) 10%,transparent)}}.ring-primary{--tw-ring-color:var(--primary)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:0ms\]{animation-delay:0s}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.group-has-\[\>svg\]\/alert\:col-start-2:is(:where(.group\/alert):has(>svg) *){grid-column-start:2}.group-data-\[size\=sm\]\/card\:p-3:is(:where(.group\/card)[data-size=sm] *){padding:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:px-3:is(:where(.group\/card)[data-size=sm] *){padding-inline:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:h-fit:is(:where(.group\/tabs):where([data-orientation=vertical]) *){height:fit-content}.group-data-vertical\/tabs\:w-full:is(:where(.group\/tabs):where([data-orientation=vertical]) *){width:100%}.group-data-vertical\/tabs\:flex-col:is(:where(.group\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.group-data-vertical\/tabs\:justify-start:is(:where(.group\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-horizontal\/tabs\:after\:inset-x-0:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.group-data-horizontal\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.group-data-horizontal\/tabs\:after\:h-0\.5:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-vertical\/tabs\:after\:inset-y-0:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.group-data-vertical\/tabs\:after\:-right-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-vertical\/tabs\:after\:w-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/30:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/30:hover{background-color:color-mix(in oklab,var(--primary) 30%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-primary:focus{border-color:var(--primary)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring) 50%,transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:bg-primary\/50:active{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.active\:bg-primary\/50:active{background-color:color-mix(in oklab,var(--primary) 50%,transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-end\]\:pr-3:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 3)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-3:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 3)}.has-data-\[slot\=alert-action\]\:relative:has([data-slot=alert-action]){position:relative}.has-data-\[slot\=alert-action\]\:pr-18:has([data-slot=alert-action]){padding-right:calc(var(--spacing) * 18)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:calc(var(--spacing) * 0)}.has-data-\[slot\=kbd\]\:pr-1\.5:has([data-slot=kbd]){padding-right:calc(var(--spacing) * 1.5)}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:calc(var(--spacing) * 0)}.has-\[\>svg\]\:grid-cols-\[auto_1fr\]:has(>svg){grid-template-columns:auto 1fr}.has-\[\>svg\]\:gap-x-2:has(>svg){column-gap:calc(var(--spacing) * 2)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.data-\[side\=bottom\]\:top-1[data-side=bottom]{top:calc(var(--spacing) * 1)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=inline-end\]\:top-1\/2\![data-side=inline-end]{top:50%!important}.data-\[side\=inline-end\]\:-left-1[data-side=inline-end]{left:calc(var(--spacing) * -1)}.data-\[side\=inline-end\]\:-translate-y-1\/2[data-side=inline-end]{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=inline-start\]\:top-1\/2\![data-side=inline-start]{top:50%!important}.data-\[side\=inline-start\]\:-right-1[data-side=inline-start]{right:calc(var(--spacing) * -1)}.data-\[side\=inline-start\]\:-translate-y-1\/2[data-side=inline-start]{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=left\]\:top-1\/2\![data-side=left]{top:50%!important}.data-\[side\=left\]\:-right-1[data-side=left]{right:calc(var(--spacing) * -1)}.data-\[side\=left\]\:-translate-y-1\/2[data-side=left]{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:top-1\/2\![data-side=right]{top:50%!important}.data-\[side\=right\]\:-left-1[data-side=right]{left:calc(var(--spacing) * -1)}.data-\[side\=right\]\:-translate-y-1\/2[data-side=right]{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-bottom-2\.5[data-side=top]{bottom:calc(var(--spacing) * -2.5)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=sm\]\:gap-3[data-size=sm]{gap:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:py-3[data-size=sm]{padding-block:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:calc(var(--spacing) * 0)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=kbd\]\:relative *)[data-slot=kbd]{position:relative}:is(.\*\*\:data-\[slot\=kbd\]\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.\*\*\:data-\[slot\=kbd\]\:z-50 *)[data-slot=kbd]{z-index:50}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) * .6)}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@supports ((-webkit-backdrop-filter:var(--tw )) or (backdrop-filter:var(--tw ))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (min-width:40rem){.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media (min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-pretty{text-wrap:pretty}}@media (min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.data-open\:animate-in:where([data-open]:not([data-open=false])),.data-open\:animate-in:where([data-state=open]){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-open]:not([data-open=false])),.data-open\:fade-in-0:where([data-state=open]){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-open]:not([data-open=false])),.data-open\:zoom-in-95:where([data-state=open]){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-closed]:not([data-closed=false])),.data-closed\:animate-out:where([data-state=closed]){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])),.data-closed\:fade-out-0:where([data-state=closed]){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])),.data-closed\:zoom-out-95:where([data-state=closed]){--tw-exit-scale:.95}.data-active\:bg-background:where([data-active]:not([data-active=false])),.data-active\:bg-background:where([data-state=active]){background-color:var(--background)}.data-active\:text-foreground:where([data-active]:not([data-active=false])),.data-active\:text-foreground:where([data-state=active]){color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-active]:not([data-active=false])),.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-state=active]){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]){background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])),.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])),.dark\:data-active\:border-input:is(.dark *):where([data-state=active]){border-color:var(--input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])),.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]){color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]){background-color:#0000}.data-horizontal\:h-2\.5:where([data-orientation=horizontal]){height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-horizontal\:border-t:where([data-orientation=horizontal]){border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent:where([data-orientation=horizontal]){border-top-color:#0000}.data-vertical\:h-full:where([data-orientation=vertical]){height:100%}.data-vertical\:w-2\.5:where([data-orientation=vertical]){width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.data-vertical\:border-l:where([data-orientation=vertical]){border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent:where([data-orientation=vertical]){border-left-color:#0000}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-3 a{text-underline-offset:3px}@media (hover:hover){.\[\&_a\]\:hover\:text-foreground a:hover{color:var(--foreground)}}.\[\&_code\]\:text-xs code{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_h1\]\:text-base h1{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.\[\&_h2\]\:text-sm h2,.\[\&_h3\]\:text-sm h3{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_li\]\:my-0 li{margin-block:calc(var(--spacing) * 0)}.\[\&_ol\]\:my-1 ol,.\[\&_p\]\:my-1 p{margin-block:calc(var(--spacing) * 1)}.\[\&_p\:not\(\:last-child\)\]\:mb-4 p:not(:last-child){margin-bottom:calc(var(--spacing) * 4)}.\[\&_pre\]\:text-xs pre{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_ul\]\:my-1 ul{margin-block:calc(var(--spacing) * 1)}.\[\.border-b\]\:pb-4.border-b{padding-bottom:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/card\:\[\.border-b\]\:pb-3:is(:where(.group\/card)[data-size=sm] *).border-b{padding-bottom:calc(var(--spacing) * 3)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.\*\:\[img\:first-child\]\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[img\:last-child\]\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[svg\]\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.\*\:\[svg\]\:translate-y-0\.5>*):is(svg){--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.\*\:\[svg\]\:text-current>*):is(svg){color:currentColor}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--card:oklch(100% 0 0);--primary:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(80.9% .105 251.813);--chart-2:oklch(62.3% .214 259.815);--chart-3:oklch(54.6% .245 262.881);--chart-4:oklch(48.8% .243 264.376);--chart-5:oklch(42.4% .199 265.638);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--primary:oklch(92.2% 0 0);--muted:oklch(26.9% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(80.9% .105 251.813);--chart-2:oklch(62.3% .214 259.815);--chart-3:oklch(54.6% .245 262.881);--chart-4:oklch(48.8% .243 264.376);--chart-5:oklch(42.4% .199 265.638);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}@keyframes edge-flow{0%{stroke-dashoffset:20px}to{stroke-dashoffset:0}}.animate-edge-flow{animation:edge-flow 1s linear infinite}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(1turn)}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|
package/public/index.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--bPWCf_gzBKdFUdcy_Q1EJ--><html lang="en" class="font-sans"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/49e7ab4429e483d4.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-2f0ed87fd33e9d1c.js"/><script src="/_next/static/chunks/a51c26f2-7912c8e37f20294d.js" async=""></script><script src="/_next/static/chunks/597-63908a91b482ecc2.js" async=""></script><script src="/_next/static/chunks/main-app-598d148dafd4bc32.js" async=""></script><script src="/_next/static/chunks/414-8318b3e90e55d32a.js" async=""></script><script src="/_next/static/chunks/app/page-59b2858b3b17446e.js" async=""></script><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>TrueCourse</title><meta name="description" content="Visualize your codebase architecture"/><link href="https://fonts.googleapis.com/css2?family=Geist:wght@100..900&family=Inter:wght@400..700&display=swap" rel="stylesheet"/><script>
|
|
2
2
|
(function() {
|
|
3
3
|
try {
|
|
4
4
|
var stored = localStorage.getItem('theme');
|
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
}
|
|
10
10
|
} catch (e) {}
|
|
11
11
|
})();
|
|
12
|
-
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="font-sans"><div hidden=""><!--$--><!--/$--></div><div class="flex min-h-screen flex-col"><header class="flex h-14 items-center justify-between border-b border-border bg-card px-4"><div class="flex items-center gap-3"><a class="text-lg font-bold text-foreground" href="/">TrueCourse</a></div><div class="flex items-center gap-3"></div><div class="flex items-center gap-1"><button type="button" tabindex="0" data-slot="button" aria-label="Toggle theme" class="group/button inline-flex shrink-0 cursor-pointer items-center justify-center border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50 size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon h-5 w-5"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button></div></header><main class="mx-auto w-full max-w-5xl flex-1 px-4 py-8"><div class="mb-8 text-center"><h1 class="text-3xl font-bold text-foreground">TrueCourse</h1><p class="mt-2 text-muted-foreground">Visualize and understand your codebase architecture</p></div><div class="mb-8"><form class="w-full"><div class="flex gap-2"><div class="relative flex-1"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><input id="base-ui-_R_4l9btb_" type="text" data-slot="input" placeholder="Paste repository path..." class="h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 pl-10" value=""/></div><button type="submit" data-disabled="" tabindex="0" disabled="" data-slot="button" class="group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 bg-primary text-primary-foreground [a]:hover:bg-primary/80 h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>Add Repository</button></div></form></div><div class="flex items-center justify-center py-16"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-8 w-8 animate-spin text-muted-foreground"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-2f0ed87fd33e9d1c.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[2064,[],\"\"]\n3:I[982,[],\"\"]\n4:I[1405,[],\"ClientPageRoot\"]\n5:I[3840,[\"414\",\"static/chunks/414-8318b3e90e55d32a.js\",\"974\",\"static/chunks/app/page-
|
|
12
|
+
</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="font-sans"><div hidden=""><!--$--><!--/$--></div><div class="flex min-h-screen flex-col"><header class="flex h-14 items-center justify-between border-b border-border bg-card px-4"><div class="flex items-center gap-3"><a class="text-lg font-bold text-foreground" href="/">TrueCourse</a></div><div class="flex items-center gap-3"></div><div class="flex items-center gap-1"><button type="button" tabindex="0" data-slot="button" aria-label="Toggle theme" class="group/button inline-flex shrink-0 cursor-pointer items-center justify-center border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50 size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon h-5 w-5"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button></div></header><main class="mx-auto w-full max-w-5xl flex-1 px-4 py-8"><div class="mb-8 text-center"><h1 class="text-3xl font-bold text-foreground">TrueCourse</h1><p class="mt-2 text-muted-foreground">Visualize and understand your codebase architecture</p></div><div class="mb-8"><form class="w-full"><div class="flex gap-2"><div class="relative flex-1"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><input id="base-ui-_R_4l9btb_" type="text" data-slot="input" placeholder="Paste repository path..." class="h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 pl-10" value=""/></div><button type="submit" data-disabled="" tabindex="0" disabled="" data-slot="button" class="group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 bg-primary text-primary-foreground [a]:hover:bg-primary/80 h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plus h-4 w-4"><path d="M5 12h14"></path><path d="M12 5v14"></path></svg>Add Repository</button></div></form></div><div class="flex items-center justify-center py-16"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-8 w-8 animate-spin text-muted-foreground"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-2f0ed87fd33e9d1c.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[2064,[],\"\"]\n3:I[982,[],\"\"]\n4:I[1405,[],\"ClientPageRoot\"]\n5:I[3840,[\"414\",\"static/chunks/414-8318b3e90e55d32a.js\",\"974\",\"static/chunks/app/page-59b2858b3b17446e.js\"],\"default\"]\n8:I[1597,[],\"OutletBoundary\"]\na:I[7544,[],\"AsyncMetadataOutlet\"]\nc:I[1597,[],\"ViewportBoundary\"]\ne:I[1597,[],\"MetadataBoundary\"]\nf:\"$Sreact.suspense\"\n11:I[2044,[],\"\"]\n:HL[\"/_next/static/css/49e7ab4429e483d4.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"bPWCf-gzBKdFUdcy_Q1EJ\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/49e7ab4429e483d4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"font-sans\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Geist:wght@100..900\u0026family=Inter:wght@400..700\u0026display=swap\",\"rel\":\"stylesheet\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n try {\\n var stored = localStorage.getItem('theme');\\n if (stored === 'dark' || (!stored \u0026\u0026 window.matchMedia('(prefers-color-scheme: dark)').matches)) {\\n document.documentElement.classList.add('dark');\\n } else {\\n document.documentElement.classList.remove('dark');\\n }\\n } catch (e) {}\\n })();\\n \"}}]]}],[\"$\",\"body\",null,{\"className\":\"font-sans\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"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,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@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\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}],null,[\"$\",\"$L8\",null,{\"children\":[\"$L9\",[\"$\",\"$La\",null,{\"promise\":\"$@b\"}]]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Lc\",null,{\"children\":\"$Ld\"}],null],[\"$\",\"$Le\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$f\",null,{\"fallback\":null,\"children\":\"$L10\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"6:{}\n7:\"$0:f:0:1:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\n"])</script><script>self.__next_f.push([1,"b:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"TrueCourse\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize your codebase architecture\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:\"$b:metadata\"\n"])</script></body></html>
|
package/public/index.txt
CHANGED
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
2:I[2064,[],""]
|
|
3
3
|
3:I[982,[],""]
|
|
4
4
|
4:I[1405,[],"ClientPageRoot"]
|
|
5
|
-
5:I[3840,["414","static/chunks/414-8318b3e90e55d32a.js","974","static/chunks/app/page-
|
|
5
|
+
5:I[3840,["414","static/chunks/414-8318b3e90e55d32a.js","974","static/chunks/app/page-59b2858b3b17446e.js"],"default"]
|
|
6
6
|
8:I[1597,[],"OutletBoundary"]
|
|
7
7
|
a:I[7544,[],"AsyncMetadataOutlet"]
|
|
8
8
|
c:I[1597,[],"ViewportBoundary"]
|
|
9
9
|
e:I[1597,[],"MetadataBoundary"]
|
|
10
10
|
f:"$Sreact.suspense"
|
|
11
11
|
11:I[2044,[],""]
|
|
12
|
-
:HL["/_next/static/css/
|
|
13
|
-
0:{"P":null,"b":"
|
|
12
|
+
:HL["/_next/static/css/49e7ab4429e483d4.css","style"]
|
|
13
|
+
0:{"P":null,"b":"bPWCf-gzBKdFUdcy_Q1EJ","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/49e7ab4429e483d4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"font-sans","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=Geist:wght@100..900&family=Inter:wght@400..700&display=swap","rel":"stylesheet"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n try {\n var stored = localStorage.getItem('theme');\n if (stored === 'dark' || (!stored && window.matchMedia('(prefers-color-scheme: dark)').matches)) {\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.classList.remove('dark');\n }\n } catch (e) {}\n })();\n "}}]]}],["$","body",null,{"className":"font-sans","suppressHydrationWarning":true,"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","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,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@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","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L4",null,{"Component":"$5","searchParams":{},"params":{},"promises":["$@6","$@7"]}],null,["$","$L8",null,{"children":["$L9",["$","$La",null,{"promise":"$@b"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Lc",null,{"children":"$Ld"}],null],["$","$Le",null,{"children":["$","div",null,{"hidden":true,"children":["$","$f",null,{"fallback":null,"children":"$L10"}]}]}]]}],false]],"m":"$undefined","G":["$11",[]],"s":false,"S":true}
|
|
14
14
|
6:{}
|
|
15
15
|
7:"$0:f:0:1:2:children:1:props:children:0:props:params"
|
|
16
16
|
d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
package/public/repos.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--bPWCf_gzBKdFUdcy_Q1EJ--><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/webpack-2f0ed87fd33e9d1c.js"/><script src="/_next/static/chunks/a51c26f2-7912c8e37f20294d.js" async=""></script><script src="/_next/static/chunks/597-63908a91b482ecc2.js" async=""></script><script src="/_next/static/chunks/main-app-598d148dafd4bc32.js" async=""></script><title>TrueCourse</title><meta name="description" content="Visualize your codebase architecture"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><script src="/_next/static/chunks/webpack-2f0ed87fd33e9d1c.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[2064,[],\"\"]\n3:I[982,[],\"\"]\n4:I[5111,[\"763\",\"static/chunks/7273c211-8e9085ce5065411a.js\",\"414\",\"static/chunks/414-8318b3e90e55d32a.js\",\"728\",\"static/chunks/728-8bf3f63c2116a9f4.js\",\"302\",\"static/chunks/app/repos/%5B%5B...slug%5D%5D/page-a9fc239dd01f7549.js\"],\"default\"]\n5:I[1597,[],\"OutletBoundary\"]\n7:I[7544,[],\"AsyncMetadataOutlet\"]\n9:I[1597,[],\"ViewportBoundary\"]\nb:I[1597,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[2044,[],\"\"]\n:HL[\"/_next/static/css/49e7ab4429e483d4.css\",\"style\"]\n:HL[\"/_next/static/css/599369d853c61df7.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"bPWCf-gzBKdFUdcy_Q1EJ\",\"p\":\"\",\"c\":[\"\",\"repos\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"repos\",{\"children\":[[\"slug\",\"\",\"oc\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/49e7ab4429e483d4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"className\":\"font-sans\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Geist:wght@100..900\u0026family=Inter:wght@400..700\u0026display=swap\",\"rel\":\"stylesheet\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function() {\\n try {\\n var stored = localStorage.getItem('theme');\\n if (stored === 'dark' || (!stored \u0026\u0026 window.matchMedia('(prefers-color-scheme: dark)').matches)) {\\n document.documentElement.classList.add('dark');\\n } else {\\n document.documentElement.classList.remove('dark');\\n }\\n } catch (e) {}\\n })();\\n \"}}]]}],[\"$\",\"body\",null,{\"className\":\"font-sans\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"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,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@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\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}],{\"children\":[\"repos\",[\"$\",\"$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\":[[\"slug\",\"\",\"oc\"],[\"$\",\"$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\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/599369d853c61df7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"TrueCourse\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Visualize your codebase architecture\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
|
package/public/repos.txt
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[2064,[],""]
|
|
3
3
|
3:I[982,[],""]
|
|
4
|
-
4:I[5111,["763","static/chunks/7273c211-8e9085ce5065411a.js","414","static/chunks/414-8318b3e90e55d32a.js","728","static/chunks/728-8bf3f63c2116a9f4.js","302","static/chunks/app/repos/%5B%5B...slug%5D%5D/page-
|
|
4
|
+
4:I[5111,["763","static/chunks/7273c211-8e9085ce5065411a.js","414","static/chunks/414-8318b3e90e55d32a.js","728","static/chunks/728-8bf3f63c2116a9f4.js","302","static/chunks/app/repos/%5B%5B...slug%5D%5D/page-a9fc239dd01f7549.js"],"default"]
|
|
5
5
|
5:I[1597,[],"OutletBoundary"]
|
|
6
6
|
7:I[7544,[],"AsyncMetadataOutlet"]
|
|
7
7
|
9:I[1597,[],"ViewportBoundary"]
|
|
8
8
|
b:I[1597,[],"MetadataBoundary"]
|
|
9
9
|
c:"$Sreact.suspense"
|
|
10
10
|
e:I[2044,[],""]
|
|
11
|
-
:HL["/_next/static/css/
|
|
11
|
+
:HL["/_next/static/css/49e7ab4429e483d4.css","style"]
|
|
12
12
|
:HL["/_next/static/css/599369d853c61df7.css","style"]
|
|
13
|
-
0:{"P":null,"b":"
|
|
13
|
+
0:{"P":null,"b":"bPWCf-gzBKdFUdcy_Q1EJ","p":"","c":["","repos"],"i":false,"f":[[["",{"children":["repos",{"children":[["slug","","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/49e7ab4429e483d4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"className":"font-sans","children":[["$","head",null,{"children":[["$","link",null,{"rel":"preconnect","href":"https://fonts.googleapis.com"}],["$","link",null,{"rel":"preconnect","href":"https://fonts.gstatic.com","crossOrigin":"anonymous"}],["$","link",null,{"href":"https://fonts.googleapis.com/css2?family=Geist:wght@100..900&family=Inter:wght@400..700&display=swap","rel":"stylesheet"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n (function() {\n try {\n var stored = localStorage.getItem('theme');\n if (stored === 'dark' || (!stored && window.matchMedia('(prefers-color-scheme: dark)').matches)) {\n document.documentElement.classList.add('dark');\n } else {\n document.documentElement.classList.remove('dark');\n }\n } catch (e) {}\n })();\n "}}]]}],["$","body",null,{"className":"font-sans","suppressHydrationWarning":true,"children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","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,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@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","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}],{"children":["repos",["$","$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":[["slug","","oc"],["$","$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":["__PAGE__",["$","$1","c",{"children":[["$","$L4",null,{}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/599369d853c61df7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L5",null,{"children":["$L6",["$","$L7",null,{"promise":"$@8"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$L9",null,{"children":"$La"}],null],["$","$Lb",null,{"children":["$","div",null,{"hidden":true,"children":["$","$c",null,{"fallback":null,"children":"$Ld"}]}]}]]}],false]],"m":"$undefined","G":["$e",[]],"s":false,"S":true}
|
|
14
14
|
a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
15
15
|
6:null
|
|
16
16
|
8:{"metadata":[["$","title","0",{"children":"TrueCourse"}],["$","meta","1",{"name":"description","content":"Visualize your codebase architecture"}]],"error":null,"digest":"$undefined"}
|
package/server.mjs
CHANGED
|
@@ -106873,9 +106873,21 @@ Stop it first, or set PORT to use a different port.`
|
|
|
106873
106873
|
});
|
|
106874
106874
|
httpServer.listen(config.port, () => {
|
|
106875
106875
|
console.log("");
|
|
106876
|
-
console.log(
|
|
106876
|
+
console.log(" _|_");
|
|
106877
|
+
console.log(" /_|_\\");
|
|
106878
|
+
console.log(" |");
|
|
106879
|
+
console.log(" /|");
|
|
106880
|
+
console.log(" / |");
|
|
106881
|
+
console.log(" / |");
|
|
106882
|
+
console.log(" / |");
|
|
106883
|
+
console.log(" / |");
|
|
106884
|
+
console.log(" /_____|_____\\");
|
|
106885
|
+
console.log(" \\__________|");
|
|
106886
|
+
console.log(" \\_________/");
|
|
106887
|
+
console.log(" ~~~~~~~~~~~~~~");
|
|
106877
106888
|
console.log("");
|
|
106878
|
-
console.log(`
|
|
106889
|
+
console.log(` Charting your course...`);
|
|
106890
|
+
console.log(` Open http://localhost:${config.port} to sail`);
|
|
106879
106891
|
console.log("");
|
|
106880
106892
|
resolve6();
|
|
106881
106893
|
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{12:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(4042)}])},572:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(6409),n=l(6032);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4042:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(6409),n=l(572),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6032:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{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"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{e.O(0,[429,597,358],()=>e(e.s=12)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{7013:()=>{},7952:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,7013,23))}},e=>{e.O(0,[726,429,597,358],()=>e(e.s=7952)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{432:(e,t,a)=>{"use strict";a.d(t,{L8:()=>o,LY:()=>c,M2:()=>l,S:()=>m,Vl:()=>f,XT:()=>u,YN:()=>i,aE:()=>p,ge:()=>x,kP:()=>g,lS:()=>h,sv:()=>d});let r=(0,a(2011).T)();class s extends Error{constructor(e,t){super(t),this.status=e,this.name="ApiError"}}async function n(e,t){let a="".concat(r).concat(e),n=await fetch(a,{...t,headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!n.ok){let e=await n.text().catch(()=>"Unknown error");throw new s(n.status,e)}return n.json()}function i(){return n("/api/repos")}function o(e){return n("/api/repos/".concat(e))}function d(e){return n("/api/repos",{method:"POST",body:JSON.stringify({path:e})})}function l(e){return n("/api/repos/".concat(e),{method:"DELETE"})}function c(e,t){return n("/api/repos/".concat(e,"/analyze"),{method:"POST",body:JSON.stringify({branch:t})})}function u(e,t){let a=t?"?branch=".concat(encodeURIComponent(t)):"";return n("/api/repos/".concat(e,"/graph").concat(a))}function m(e,t,a){let r=a?"?branch=".concat(encodeURIComponent(a)):"";return n("/api/repos/".concat(e,"/graph/positions").concat(r),{method:"PUT",body:JSON.stringify({positions:t})})}function p(e,t){let a=t?"?branch=".concat(encodeURIComponent(t)):"";return n("/api/repos/".concat(e,"/graph/positions").concat(a),{method:"DELETE"})}function x(e){return n("/api/repos/".concat(e,"/insights"))}function h(e){return n("/api/repos/".concat(e,"/conversations"))}function g(e,t){return n("/api/repos/".concat(e,"/chat/").concat(t))}function f(e,t,a,n,i,o){let d=new AbortController;return fetch("".concat(r,"/api/repos/").concat(e,"/chat"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:t,nodeContext:null==o?void 0:o.nodeContext,conversationId:null==o?void 0:o.conversationId}),signal:d.signal}).then(async e=>{var t;if(!e.ok)throw new s(e.status,await e.text());let r=e.headers.get("X-Conversation-Id")||void 0,i=null==(t=e.body)?void 0:t.getReader();if(!i)throw Error("No response body");let o=new TextDecoder,d="";for(;;){let{done:e,value:t}=await i.read();if(e)break;let s=(d+=o.decode(t,{stream:!0})).split("\n");for(let e of(d=s.pop()||"",s))if(e.startsWith("data: ")){let t=e.slice(6);if("[DONE]"===t)return void n(r);try{let e=JSON.parse(t);e.content&&a(e.content)}catch(e){a(t)}}}n(r)}).catch(e=>{"AbortError"!==e.name&&i(e)}),d}},553:(e,t,a)=>{"use strict";a.d(t,{Y:()=>h});var r=a(6409),s=a(7367),n=a(8925),i=a(1540),o=a(7054),d=a(3218),l=a(2368),c=a(9235),u=a(7505),m=a.n(u),p=a(4669),x=a(4846);function h(e){let{repoName:t,branches:a,selectedBranch:u,onBranchChange:h,onAnalyze:g,isAnalyzing:f,showBack:v,backHref:b="/",isSidebarOpen:y,onToggleSidebar:j}=e,[N,w]=(0,p.useState)(!1);return(0,p.useEffect)(()=>{w(document.documentElement.classList.contains("dark"))},[]),(0,r.jsxs)("header",{className:"flex h-14 items-center justify-between border-b border-border bg-card px-4",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[v&&(0,r.jsx)(m(),{href:b,className:(0,x.r)({variant:"ghost",size:"icon-sm"}),children:(0,r.jsx)(s.A,{className:"h-5 w-5"})}),(0,r.jsx)(m(),{href:"/",className:"text-lg font-bold text-foreground",children:"TrueCourse"})]}),(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[t&&(0,r.jsx)("span",{className:"text-sm font-medium text-foreground",children:t}),a&&a.length>0&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 rounded-md border border-border bg-muted px-2 py-1",children:[(0,r.jsx)(n.A,{className:"h-3.5 w-3.5 text-muted-foreground"}),(0,r.jsx)("select",{value:u||"",onChange:e=>null==h?void 0:h(e.target.value),className:"bg-transparent text-sm text-foreground outline-none",children:a.map(e=>(0,r.jsx)("option",{value:e,children:e},e))})]}),g&&(0,r.jsxs)(x.$,{size:"sm",onClick:g,disabled:f,children:[f&&(0,r.jsx)(i.A,{className:"h-3.5 w-3.5 animate-spin"}),f?"Analyzing...":"Analyze"]})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[j&&(0,r.jsx)(x.$,{variant:"ghost",size:"icon-sm",onClick:j,"aria-label":y?"Close panel":"Open panel",children:y?(0,r.jsx)(o.A,{className:"h-5 w-5"}):(0,r.jsx)(d.A,{className:"h-5 w-5"})}),(0,r.jsx)(x.$,{variant:"ghost",size:"icon-sm",onClick:()=>{let e=!N;w(e),document.documentElement.classList.toggle("dark",e),localStorage.setItem("theme",e?"dark":"light")},"aria-label":"Toggle theme",children:N?(0,r.jsx)(l.A,{className:"h-5 w-5"}):(0,r.jsx)(c.A,{className:"h-5 w-5"})})]})]})}},879:(e,t,a)=>{Promise.resolve().then(a.bind(a,3840))},2011:(e,t,a)=>{"use strict";function r(){return""}a.d(t,{T:()=>r})},2054:(e,t,a)=>{"use strict";a.d(t,{p:()=>i});var r=a(6409);a(4669);var s=a(7350),n=a(6669);function i(e){let{className:t,type:a,...i}=e;return(0,r.jsx)(s.p,{type:a,"data-slot":"input",className:(0,n.cn)("h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",t),...i})}},3316:(e,t,a)=>{"use strict";a.d(t,{BT:()=>d,Wu:()=>l,ZB:()=>o,Zp:()=>n,aR:()=>i,wL:()=>c});var r=a(6409);a(4669);var s=a(6669);function n(e){let{className:t,size:a="default",...n}=e;return(0,r.jsx)("div",{"data-slot":"card","data-size":a,className:(0,s.cn)("group/card flex flex-col gap-4 overflow-hidden rounded-xl bg-card py-4 text-sm text-card-foreground ring-1 ring-foreground/10 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",t),...n})}function i(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,s.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3",t),...a})}function o(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,s.cn)("text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,s.cn)("text-sm text-muted-foreground",t),...a})}function l(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,s.cn)("px-4 group-data-[size=sm]/card:px-3",t),...a})}function c(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-footer",className:(0,s.cn)("flex items-center rounded-b-xl border-t bg-muted/50 p-4 group-data-[size=sm]/card:p-3",t),...a})}},3840:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>k});var r=a(6409),s=a(553),n=a(4669),i=a(9383);let o=(0,i.A)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);var d=a(1540),l=a(726),c=a(2054),u=a(4846);function m(e){let{onAdd:t}=e,[a,s]=(0,n.useState)(""),[i,m]=(0,n.useState)(!1),[p,x]=(0,n.useState)(null),h=async e=>{if(e.preventDefault(),a.trim()){m(!0),x(null);try{await t(a.trim()),s("")}catch(e){x(e instanceof Error?e.message:"Failed to add repository")}finally{m(!1)}}};return(0,r.jsxs)("form",{onSubmit:h,className:"w-full",children:[(0,r.jsxs)("div",{className:"flex gap-2",children:[(0,r.jsxs)("div",{className:"relative flex-1",children:[(0,r.jsx)(o,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),(0,r.jsx)(c.p,{type:"text",value:a,onChange:e=>s(e.target.value),placeholder:"Paste repository path...",className:"pl-10"})]}),(0,r.jsxs)(u.$,{type:"submit",disabled:i||!a.trim(),children:[i?(0,r.jsx)(d.A,{className:"h-4 w-4 animate-spin"}):(0,r.jsx)(l.A,{className:"h-4 w-4"}),"Add Repository"]})]}),p&&(0,r.jsx)("p",{className:"mt-2 text-sm text-destructive",children:p})]})}var p=a(7505),x=a.n(p);let h=(0,i.A)("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]),g=(0,i.A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);var f=a(1160);let v=(0,i.A)("ChartColumn",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]),b=(0,i.A)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var y=a(3316);function j(e){let{repos:t,onAnalyze:a,onDelete:s}=e;return 0===t.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center rounded-lg border border-dashed border-border py-16",children:[(0,r.jsx)(h,{className:"mb-4 h-12 w-12 text-muted-foreground"}),(0,r.jsx)("p",{className:"text-lg font-medium text-foreground",children:"No repositories yet"}),(0,r.jsx)("p",{className:"mt-1 text-sm text-muted-foreground",children:"Add a repository path above to get started"})]}):(0,r.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:t.map(e=>(0,r.jsxs)(y.Zp,{className:"flex flex-col transition-shadow hover:shadow-md",children:[(0,r.jsxs)(y.aR,{className:"flex flex-row items-start justify-between space-y-0 pb-2",children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)(y.ZB,{className:"truncate text-base",children:e.name}),(0,r.jsx)(y.BT,{className:"mt-0.5 truncate text-xs",children:e.path})]}),(0,r.jsx)(u.$,{variant:"ghost",size:"icon-xs",onClick:()=>s(e.id),className:"ml-2 flex-shrink-0 text-muted-foreground hover:text-destructive","aria-label":"Delete repository",children:(0,r.jsx)(g,{className:"h-4 w-4"})})]}),(0,r.jsx)(y.Wu,{className:"pb-2",children:e.lastAnalyzed&&(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[(0,r.jsx)(f.A,{className:"h-3 w-3"}),(0,r.jsxs)("span",{children:["Analyzed"," ",new Date(e.lastAnalyzed).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})]})]})}),(0,r.jsxs)(y.wL,{className:"mt-auto gap-2",children:[(0,r.jsxs)(u.$,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>a(e.id),children:[(0,r.jsx)(v,{className:"h-3.5 w-3.5"}),"Analyze"]}),(0,r.jsxs)(x(),{href:"/repos/".concat(e.id),className:(0,u.r)({size:"sm",className:"flex-1"}),children:[(0,r.jsx)(b,{className:"h-3.5 w-3.5"}),"View Graph"]})]})]},e.id))})}var N=a(432),w=a(5500);function k(){let{repos:e,isLoading:t,error:a,addRepo:i,deleteRepo:o,analyzeRepo:l}=function(){let[e,t]=(0,n.useState)([]),[a,r]=(0,n.useState)(!0),[s,i]=(0,n.useState)(null),o=(0,n.useCallback)(async()=>{r(!0),i(null);try{let e=await N.YN();t(e)}catch(e){i(e instanceof Error?e.message:"Failed to fetch repos")}finally{r(!1)}},[]);(0,n.useEffect)(()=>{o()},[o]);let d=(0,n.useCallback)(async e=>{try{let a=await N.sv(e);return t(e=>[...e,a]),a}catch(e){throw i(e instanceof Error?e.message:"Failed to add repo"),e}},[]);return{repos:e,isLoading:a,error:s,addRepo:d,deleteRepo:(0,n.useCallback)(async e=>{try{await N.M2(e),t(t=>t.filter(t=>t.id!==e))}catch(e){throw i(e instanceof Error?e.message:"Failed to delete repo"),e}},[]),analyzeRepo:(0,n.useCallback)(async(e,t)=>{try{return await N.LY(e,t)}catch(e){throw i(e instanceof Error?e.message:"Failed to start analysis"),e}},[]),refetch:o}}(),c=async e=>{try{await l(e)}catch(e){}},u=async e=>{try{await o(e)}catch(e){}};return(0,r.jsxs)("div",{className:"flex min-h-screen flex-col",children:[(0,r.jsx)(s.Y,{}),(0,r.jsxs)("main",{className:"mx-auto w-full max-w-5xl flex-1 px-4 py-8",children:[(0,r.jsxs)("div",{className:"mb-8 text-center",children:[(0,r.jsx)("h1",{className:"text-3xl font-bold text-foreground",children:"TrueCourse"}),(0,r.jsx)("p",{className:"mt-2 text-muted-foreground",children:"Visualize and understand your codebase architecture"})]}),(0,r.jsx)("div",{className:"mb-8",children:(0,r.jsx)(m,{onAdd:i})}),a&&(0,r.jsx)(w.Fc,{variant:"destructive",className:"mb-6",children:(0,r.jsx)(w.TN,{children:a})}),t?(0,r.jsx)("div",{className:"flex items-center justify-center py-16",children:(0,r.jsx)(d.A,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):(0,r.jsx)(j,{repos:e,onAnalyze:c,onDelete:u})]})]})}},4846:(e,t,a)=>{"use strict";a.d(t,{$:()=>d,r:()=>o});var r=a(6409),s=a(7248),n=a(268),i=a(6669);let o=(0,n.F)("group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:translate-y-px disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",outline:"border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",ghost:"hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",destructive:"bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",xs:"h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",lg:"h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",icon:"size-8","icon-xs":"size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg","icon-lg":"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:t,variant:a="default",size:n="default",...d}=e;return(0,r.jsx)(s.$,{"data-slot":"button",className:(0,i.cn)(o({variant:a,size:n,className:t})),...d})}},5500:(e,t,a)=>{"use strict";a.d(t,{Fc:()=>o,TN:()=>l,XL:()=>d});var r=a(6409);a(4669);var s=a(268),n=a(6669);let i=(0,s.F)("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});function o(e){let{className:t,variant:a,...s}=e;return(0,r.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,n.cn)(i({variant:a}),t),...s})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert-title",className:(0,n.cn)("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",t),...a})}function l(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert-description",className:(0,n.cn)("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",t),...a})}},6669:(e,t,a)=>{"use strict";a.d(t,{cn:()=>n});var r=a(1754),s=a(3225);function n(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return(0,s.QP)((0,r.$)(t))}}},e=>{e.O(0,[414,429,597,358],()=>e(e.s=879)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:host,:root{--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--animate-spin:spin 1s linear infinite;--animate-bounce:bounce 1s infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:"Geist","Inter",ui-sans-serif,system-ui,sans-serif;--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:Geist,Inter,ui-sans-serif,system-ui,sans-serif}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.\!invisible{visibility:hidden!important}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-2\.5{bottom:calc(var(--spacing) * 2.5)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.field-sizing-content{field-sizing:content}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-full{width:100%;height:100%}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-full{height:100%}.h-screen{height:100vh}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-screen{min-height:100vh}.w-1{width:calc(var(--spacing) * 1)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[85\%\]{max-width:85%}.max-w-\[240px\]{max-width:240px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[220px\]{min-width:220px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1)}.-translate-x-1\/2,.-translate-y-1\/2{translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1)}.translate-y-\[calc\(-50\%-2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-bounce{animation:var(--animate-bounce)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.auto-rows-min{grid-auto-rows:min-content}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.\!gap-0{gap:calc(var(--spacing) * 0)!important}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap}.overflow-hidden,.truncate{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-s{border-end-start-radius:.25rem}.rounded-s,.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-end-end-radius:.25rem}.rounded-e,.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-xl{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.rounded-l{border-bottom-left-radius:.25rem}.rounded-l,.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-bottom-right-radius:.25rem}.rounded-r,.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-bs{border-block-start-style:var(--tw-border-style);border-block-start-width:1px}.border-be{border-block-end-style:var(--tw-border-style);border-block-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\!border-border{border-color:var(--border)!important}.border-blue-500\/20{border-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/20{border-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.border-border{border-color:var(--border)}.border-green-500\/20{border-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.border-green-500\/20{border-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground{border-color:var(--muted-foreground)}.border-orange-500\/20{border-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/20{border-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.border-primary{border-color:var(--primary)}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.border-red-500\/20{border-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.border-transparent{border-color:#0000}.border-yellow-500\/20{border-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/20{border-color:color-mix(in oklab,var(--color-yellow-500) 20%,transparent)}}.border-l-blue-500{border-left-color:var(--color-blue-500)}.border-l-gray-500{border-left-color:var(--color-gray-500)}.border-l-green-500{border-left-color:var(--color-green-500)}.border-l-orange-500{border-left-color:var(--color-orange-500)}.border-l-red-500{border-left-color:var(--color-red-500)}.border-l-yellow-500{border-left-color:var(--color-yellow-500)}.\!bg-card{background-color:var(--card)!important}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500) 10%,transparent)}}.bg-primary{background-color:var(--primary)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500) 10%,transparent)}}.bg-clip-padding{background-clip:padding-box}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.font-sans{font-family:Geist,Inter,ui-sans-serif,system-ui,sans-serif}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-balance{text-wrap:balance}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-500{color:var(--color-amber-500)}.text-background{color:var(--background)}.text-blue-600{color:var(--color-blue-600)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-emerald-500{color:var(--color-emerald-500)}.text-foreground,.text-foreground\/60{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/60{color:color-mix(in oklab,var(--foreground) 60%,transparent)}}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{color:var(--color-orange-600)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions}.diagonal-fractions,.lining-nums{font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums}.oldstyle-nums,.ordinal{font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal}.proportional-nums{--tw-numeric-spacing:proportional-nums}.proportional-nums,.slashed-zero{font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero}.stacked-fractions{--tw-numeric-fraction:stacked-fractions}.stacked-fractions,.tabular-nums{font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-primary{accent-color:var(--primary)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-lg{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-md,.shadow-sm{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.ring-1,.ring-2{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab,var(--foreground) 10%,transparent)}}.ring-primary{--tw-ring-color:var(--primary)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px)}.blur,.drop-shadow{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-grayscale{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%)}.backdrop-invert{--tw-backdrop-invert:invert(100%)}.backdrop-invert,.backdrop-sepia{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:0ms\]{animation-delay:0s}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.paused{animation-play-state:paused}.ring-inset{--tw-ring-inset:inset}.running{animation-play-state:running}.zoom-in{--tw-enter-scale:0}.zoom-out{--tw-exit-scale:0}.group-has-\[\>svg\]\/alert\:col-start-2:is(:where(.group\/alert):has(>svg) *){grid-column-start:2}.group-data-\[size\=sm\]\/card\:p-3:is(:where(.group\/card)[data-size=sm] *){padding:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:px-3:is(:where(.group\/card)[data-size=sm] *){padding-inline:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/card\:text-sm:is(:where(.group\/card)[data-size=sm] *){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.group-data-\[variant\=line\]\/tabs-list\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *){background-color:#0000}.group-data-horizontal\/tabs\:h-8:is(:where(.group\/tabs):where([data-orientation=horizontal]) *){height:calc(var(--spacing) * 8)}.group-data-vertical\/tabs\:h-fit:is(:where(.group\/tabs):where([data-orientation=vertical]) *){height:fit-content}.group-data-vertical\/tabs\:w-full:is(:where(.group\/tabs):where([data-orientation=vertical]) *){width:100%}.group-data-vertical\/tabs\:flex-col:is(:where(.group\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.group-data-vertical\/tabs\:justify-start:is(:where(.group\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.group-data-horizontal\/tabs\:after\:inset-x-0:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.group-data-horizontal\/tabs\:after\:bottom-\[-5px\]:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.group-data-horizontal\/tabs\:after\:h-0\.5:is(:where(.group\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(var(--spacing) * .5)}.group-data-vertical\/tabs\:after\:inset-y-0:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.group-data-vertical\/tabs\:after\:-right-1:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);right:calc(var(--spacing) * -1)}.group-data-vertical\/tabs\:after\:w-0\.5:is(:where(.group\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(var(--spacing) * .5)}@media (hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-primary\/30:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/30:hover{background-color:color-mix(in oklab,var(--primary) 30%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-primary:focus{border-color:var(--primary)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring) 50%,transparent)}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:bg-primary\/50:active{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.active\:bg-primary\/50:active{background-color:color-mix(in oklab,var(--primary) 50%,transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-end\]\:pr-3:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 3)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-3:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 3)}.has-data-\[slot\=alert-action\]\:relative:has([data-slot=alert-action]){position:relative}.has-data-\[slot\=alert-action\]\:pr-18:has([data-slot=alert-action]){padding-right:calc(var(--spacing) * 18)}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[slot\=card-description\]\:grid-rows-\[auto_auto\]:has([data-slot=card-description]){grid-template-rows:auto auto}.has-data-\[slot\=card-footer\]\:pb-0:has([data-slot=card-footer]){padding-bottom:calc(var(--spacing) * 0)}.has-data-\[slot\=kbd\]\:pr-1\.5:has([data-slot=kbd]){padding-right:calc(var(--spacing) * 1.5)}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:calc(var(--spacing) * 0)}.has-\[\>svg\]\:grid-cols-\[auto_1fr\]:has(>svg){grid-template-columns:auto 1fr}.has-\[\>svg\]\:gap-x-2:has(>svg){column-gap:calc(var(--spacing) * 2)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.data-\[side\=bottom\]\:top-1[data-side=bottom]{top:calc(var(--spacing) * 1)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=inline-end\]\:top-1\/2\![data-side=inline-end]{top:50%!important}.data-\[side\=inline-end\]\:-left-1[data-side=inline-end]{left:calc(var(--spacing) * -1)}.data-\[side\=inline-end\]\:-translate-y-1\/2[data-side=inline-end]{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=inline-start\]\:top-1\/2\![data-side=inline-start]{top:50%!important}.data-\[side\=inline-start\]\:-right-1[data-side=inline-start]{right:calc(var(--spacing) * -1)}.data-\[side\=inline-start\]\:-translate-y-1\/2[data-side=inline-start]{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=left\]\:top-1\/2\![data-side=left]{top:50%!important}.data-\[side\=left\]\:-right-1[data-side=left]{right:calc(var(--spacing) * -1)}.data-\[side\=left\]\:-translate-y-1\/2[data-side=left]{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:top-1\/2\![data-side=right]{top:50%!important}.data-\[side\=right\]\:-left-1[data-side=right]{left:calc(var(--spacing) * -1)}.data-\[side\=right\]\:-translate-y-1\/2[data-side=right]{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-bottom-2\.5[data-side=top]{bottom:calc(var(--spacing) * -2.5)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=sm\]\:gap-3[data-size=sm]{gap:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:py-3[data-size=sm]{padding-block:calc(var(--spacing) * 3)}.data-\[size\=sm\]\:has-data-\[slot\=card-footer\]\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:calc(var(--spacing) * 0)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive) 90%,transparent)}}:is(.\*\*\:data-\[slot\=kbd\]\:relative *)[data-slot=kbd]{position:relative}:is(.\*\*\:data-\[slot\=kbd\]\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.\*\*\:data-\[slot\=kbd\]\:z-50 *)[data-slot=kbd]{z-index:50}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) * .6)}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}@supports ((-webkit-backdrop-filter:var(--tw )) or (backdrop-filter:var(--tw ))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (min-width:40rem){.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media (min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-pretty{text-wrap:pretty}}@media (min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:text-blue-400:is(.dark *){color:var(--color-blue-400)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-red-400:is(.dark *){color:var(--color-red-400)}.dark\:text-yellow-400:is(.dark *){color:var(--color-yellow-400)}@media (hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.dark\:hover\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.data-open\:animate-in:where([data-open]:not([data-open=false])),.data-open\:animate-in:where([data-state=open]){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-open]:not([data-open=false])),.data-open\:fade-in-0:where([data-state=open]){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-open]:not([data-open=false])),.data-open\:zoom-in-95:where([data-state=open]){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-closed]:not([data-closed=false])),.data-closed\:animate-out:where([data-state=closed]){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])),.data-closed\:fade-out-0:where([data-state=closed]){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])),.data-closed\:zoom-out-95:where([data-state=closed]){--tw-exit-scale:.95}.data-active\:bg-background:where([data-active]:not([data-active=false])),.data-active\:bg-background:where([data-state=active]){background-color:var(--background)}.data-active\:text-foreground:where([data-active]:not([data-active=false])),.data-active\:text-foreground:where([data-state=active]){color:var(--foreground)}.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-active]:not([data-active=false])),.group-data-\[variant\=default\]\/tabs-list\:data-active\:shadow-sm:is(:where(.group\/tabs-list)[data-variant=default] *):where([data-state=active]){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])),.group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]){background-color:#0000}.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])),.group-data-\[variant\=line\]\/tabs-list\:data-active\:shadow-none:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]),.group-data-\[variant\=line\]\/tabs-list\:data-active\:after\:opacity-100:is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.dark\:data-active\:border-input:is(.dark *):where([data-active]:not([data-active=false])),.dark\:data-active\:border-input:is(.dark *):where([data-state=active]){border-color:var(--input)}.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-active\:bg-input\/30:is(.dark *):where([data-active]:not([data-active=false])),.dark\:data-active\:bg-input\/30:is(.dark *):where([data-state=active]){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:data-active\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])),.dark\:data-active\:text-foreground:is(.dark *):where([data-state=active]){color:var(--foreground)}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:border-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]){border-color:#0000}.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])),.dark\:group-data-\[variant\=line\]\/tabs-list\:data-active\:bg-transparent:is(.dark *):is(:where(.group\/tabs-list)[data-variant=line] *):where([data-state=active]){background-color:#0000}.data-horizontal\:h-2\.5:where([data-orientation=horizontal]){height:calc(var(--spacing) * 2.5)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-horizontal\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.data-horizontal\:border-t:where([data-orientation=horizontal]){border-top-style:var(--tw-border-style);border-top-width:1px}.data-horizontal\:border-t-transparent:where([data-orientation=horizontal]){border-top-color:#0000}.data-vertical\:h-full:where([data-orientation=vertical]){height:100%}.data-vertical\:w-2\.5:where([data-orientation=vertical]){width:calc(var(--spacing) * 2.5)}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.data-vertical\:border-l:where([data-orientation=vertical]){border-left-style:var(--tw-border-style);border-left-width:1px}.data-vertical\:border-l-transparent:where([data-orientation=vertical]){border-left-color:#0000}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-3 a{text-underline-offset:3px}@media (hover:hover){.\[\&_a\]\:hover\:text-foreground a:hover{color:var(--foreground)}}.\[\&_code\]\:text-xs code{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_h1\]\:text-base h1{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.\[\&_h2\]\:text-sm h2,.\[\&_h3\]\:text-sm h3{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_li\]\:my-0 li{margin-block:calc(var(--spacing) * 0)}.\[\&_ol\]\:my-1 ol,.\[\&_p\]\:my-1 p{margin-block:calc(var(--spacing) * 1)}.\[\&_p\:not\(\:last-child\)\]\:mb-4 p:not(:last-child){margin-bottom:calc(var(--spacing) * 4)}.\[\&_pre\]\:text-xs pre{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_ul\]\:my-1 ul{margin-block:calc(var(--spacing) * 1)}.\[\.border-b\]\:pb-4.border-b{padding-bottom:calc(var(--spacing) * 4)}.group-data-\[size\=sm\]\/card\:\[\.border-b\]\:pb-3:is(:where(.group\/card)[data-size=sm] *).border-b{padding-bottom:calc(var(--spacing) * 3)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.\*\:\[img\:first-child\]\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[img\:last-child\]\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}:is(.\*\:\[svg\]\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.\*\:\[svg\]\:translate-y-0\.5>*):is(svg){--tw-translate-y:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.\*\:\[svg\]\:text-current>*):is(svg){color:currentColor}:is(.\*\:\[svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>*):is(svg:not([class*=size-])){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--card:oklch(100% 0 0);--primary:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(80.9% .105 251.813);--chart-2:oklch(62.3% .214 259.815);--chart-3:oklch(54.6% .245 262.881);--chart-4:oklch(48.8% .243 264.376);--chart-5:oklch(42.4% .199 265.638);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--primary:oklch(92.2% 0 0);--muted:oklch(26.9% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(80.9% .105 251.813);--chart-2:oklch(62.3% .214 259.815);--chart-3:oklch(54.6% .245 262.881);--chart-4:oklch(48.8% .243 264.376);--chart-5:oklch(42.4% .199 265.638);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}@keyframes edge-flow{0%{stroke-dashoffset:20px}to{stroke-dashoffset:0}}.animate-edge-flow{animation:edge-flow 1s linear infinite}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(1turn)}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
|
/package/public/_next/static/{1lUeio3wsR1e0vpd3038r → bPWCf-gzBKdFUdcy_Q1EJ}/_buildManifest.js
RENAMED
|
File without changes
|
/package/public/_next/static/{1lUeio3wsR1e0vpd3038r → bPWCf-gzBKdFUdcy_Q1EJ}/_ssgManifest.js
RENAMED
|
File without changes
|