vibedoc 1.0.0 → 1.0.2

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.
Files changed (61) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +23 -18
  3. package/.next/app-path-routes-manifest.json +1 -1
  4. package/.next/build-manifest.json +2 -2
  5. package/.next/prerender-manifest.js +1 -1
  6. package/.next/prerender-manifest.json +1 -1
  7. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/(app)/docs/page.js +1 -1
  10. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/(app)/setup/page.js +2 -1
  14. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  15. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +1 -1
  19. package/.next/server/app/activity.html +1 -1
  20. package/.next/server/app/activity.rsc +2 -2
  21. package/.next/server/app/api/mcp/route.js +10 -100
  22. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  23. package/.next/server/app/api/setup/generate/route.js +23 -84
  24. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  25. package/.next/server/app/board.html +1 -1
  26. package/.next/server/app/board.rsc +2 -2
  27. package/.next/server/app/docs.html +1 -1
  28. package/.next/server/app/docs.rsc +3 -3
  29. package/.next/server/app/index.html +1 -1
  30. package/.next/server/app/index.rsc +1 -1
  31. package/.next/server/app/memory.html +1 -1
  32. package/.next/server/app/memory.rsc +2 -2
  33. package/.next/server/app/page_client-reference-manifest.js +1 -1
  34. package/.next/server/app/settings.html +1 -1
  35. package/.next/server/app/settings.rsc +2 -2
  36. package/.next/server/app/setup.html +1 -1
  37. package/.next/server/app/setup.rsc +3 -3
  38. package/.next/server/app-paths-manifest.json +9 -9
  39. package/.next/server/chunks/118.js +2107 -0
  40. package/.next/server/chunks/191.js +2107 -91
  41. package/.next/server/middleware-build-manifest.js +1 -1
  42. package/.next/server/pages/404.html +1 -1
  43. package/.next/server/pages/500.html +1 -1
  44. package/.next/server/pages-manifest.json +1 -1
  45. package/.next/server/server-reference-manifest.js +1 -1
  46. package/.next/server/server-reference-manifest.json +1 -1
  47. package/.next/static/chunks/2401-65366c9431a3dcca.js +16 -0
  48. package/.next/static/chunks/5179-76391417caead0bc.js +1 -0
  49. package/.next/static/chunks/6441-8a1066f99fe4fead.js +1 -0
  50. package/.next/static/chunks/app/(app)/docs/{page-17670ed46c3594e6.js → page-f5615cefbd3d1c64.js} +1 -1
  51. package/.next/static/chunks/app/(app)/{layout-34b4046ccf919d3f.js → layout-ef459e6f184dba6b.js} +1 -1
  52. package/.next/static/chunks/app/(app)/setup/page-a47e3a9a44666f50.js +1 -0
  53. package/.next/static/css/48c54dd7bfa2411e.css +5 -0
  54. package/README.md +33 -26
  55. package/bin/vibedoc.js +66 -39
  56. package/package.json +1 -1
  57. package/.next/static/chunks/845-0e3438196b5ef62c.js +0 -1
  58. package/.next/static/chunks/app/(app)/setup/page-9fd82b10016eca64.js +0 -16
  59. package/.next/static/css/615004f0fff77145.css +0 -5
  60. /package/.next/static/{r-2w-yCd6mM7TOOETgGaA → SozubT4AiNYJ3ynkRV0zo}/_buildManifest.js +0 -0
  61. /package/.next/static/{r-2w-yCd6mM7TOOETgGaA → SozubT4AiNYJ3ynkRV0zo}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5814],{3921:function(e,t,a){Promise.resolve().then(a.bind(a,60985))},60985:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return eb}});var r=a(59533),s=a(31229),n=a(61250),i=a(11180);function d(){return(0,r.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("div",{className:"flex gap-1.5 justify-center mb-4",children:[0,1,2].map(e=>(0,r.jsx)("div",{className:"w-2 h-2 rounded-full bg-accent animate-pulse-dot",style:{animationDelay:"".concat(.15*e,"s")}},e))}),(0,r.jsx)("p",{className:"text-muted text-sm font-mono",children:"Loading project..."})]})})}var o=a(83373);function l(e){let{projects:t,activeProject:a,currentName:s,onSelect:n}=e;return(0,r.jsxs)(o.h_,{children:[(0,r.jsx)(o.$F,{asChild:!0,children:(0,r.jsxs)("button",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-surface2 border border-border text-sm hover:border-border2 transition-colors",children:[(0,r.jsx)("span",{className:"text-txt font-medium truncate max-w-[200px]",children:s||"Select project"}),(0,r.jsx)("span",{className:"text-muted text-xs",children:"▾"})]})}),(0,r.jsx)(o.AW,{className:"w-64 bg-surface border-border2 text-txt",align:"start",children:0===t.length?(0,r.jsx)("div",{className:"px-3 py-2 text-sm text-muted",children:"No projects found"}):t.map(e=>(0,r.jsx)(o.Xi,{onClick:()=>n(e.root),className:"cursor-pointer hover:bg-surface2 focus:bg-surface2 ".concat(e.root===a?"text-accent":""),children:(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"font-medium",children:e.name}),(0,r.jsx)("div",{className:"text-xs text-muted truncate font-mono",children:e.root})]})},e.root))})]})}var c=a(71301);function u(e){let{board:t}=e;return(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)(c.C,{variant:"secondary",className:"gap-1 text-xs font-mono text-amber",children:["\uD83D\uDD28 ",t["in-progress"]||0]}),(0,r.jsxs)(c.C,{variant:"secondary",className:"gap-1 text-xs font-mono text-muted",children:["\uD83D\uDCCB ",t.todo||0]}),(0,r.jsxs)(c.C,{variant:"secondary",className:"gap-1 text-xs font-mono text-teal",children:["✅ ",t.done||0]})]})}var m=a(52284);function f(e){let{active:t}=e;return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-mono text-muted",children:[(0,r.jsx)("div",{className:(0,m.cn)("w-1.5 h-1.5 rounded-full transition-colors duration-500",t?"bg-teal shadow-[0_0_6px_#4fd8b4]":"bg-border2")}),(0,r.jsx)("span",{children:t?"live update":"connected"})]})}var x=a(38777),b=a(95084),p=a(19363),h=a(220),g=a(13191),v=a(12301),j=a(68778),w=a(46850);let N=j.fC;j.xz,j.x8;let y=j.h_,k=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(j.aV,{className:(0,m.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...s,ref:t})});k.displayName=j.aV.displayName;let S=(0,b.j)("fixed z-50 gap-4 bg-white p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500 dark:bg-slate-950",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),C=s.forwardRef((e,t)=>{let{side:a="right",className:s,children:n,...i}=e;return(0,r.jsxs)(y,{children:[(0,r.jsx)(k,{}),(0,r.jsxs)(j.VY,{ref:t,className:(0,m.cn)(S({side:a}),s),...i,children:[n,(0,r.jsxs)(j.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-slate-100 dark:ring-offset-slate-950 dark:focus:ring-slate-300 dark:data-[state=open]:bg-slate-800",children:[(0,r.jsx)(w.Z,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});C.displayName=j.VY.displayName;let R=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,m.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...a})};R.displayName="SheetHeader";let _=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(j.Dx,{ref:t,className:(0,m.cn)("text-lg font-semibold text-slate-950 dark:text-slate-50",a),...s})});_.displayName=j.Dx.displayName;let z=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(j.dk,{ref:t,className:(0,m.cn)("text-sm text-slate-500 dark:text-slate-400",a),...s})});function D(e){let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,m.cn)("animate-pulse rounded-md bg-slate-100 dark:bg-slate-800",t),...a})}z.displayName=j.dk.displayName;var E=a(17477);let M=s.createContext(null);function Z(){let e=s.useContext(M);if(!e)throw Error("useSidebar must be used within a SidebarProvider.");return e}let P=s.forwardRef((e,t)=>{let{defaultOpen:a=!0,open:n,onOpenChange:i,className:d,style:o,children:l,...c}=e,u=function(){let[e,t]=s.useState(void 0);return s.useEffect(()=>{let e=window.matchMedia("(max-width: ".concat(767,"px)")),a=()=>{t(window.innerWidth<768)};return e.addEventListener("change",a),t(window.innerWidth<768),()=>e.removeEventListener("change",a)},[]),!!e}(),[f,x]=s.useState(!1),[b,p]=s.useState(a),h=null!=n?n:b,g=s.useCallback(e=>{let t="function"==typeof e?e(h):e;i?i(t):p(t),document.cookie="".concat("sidebar_state","=").concat(t,"; path=/; max-age=").concat(604800)},[i,h]),v=s.useCallback(()=>u?x(e=>!e):g(e=>!e),[u,g,x]);s.useEffect(()=>{let e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),v())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[v]);let j=h?"expanded":"collapsed",w=s.useMemo(()=>({state:j,open:h,setOpen:g,isMobile:u,openMobile:f,setOpenMobile:x,toggleSidebar:v}),[j,h,g,u,f,x,v]);return(0,r.jsx)(M.Provider,{value:w,children:(0,r.jsx)(E.pn,{delayDuration:0,children:(0,r.jsx)("div",{style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...o},className:(0,m.cn)("group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",d),ref:t,...c,children:l})})})});P.displayName="SidebarProvider";let A=s.forwardRef((e,t)=>{let{side:a="left",variant:s="sidebar",collapsible:n="offcanvas",className:i,children:d,...o}=e,{isMobile:l,state:c,openMobile:u,setOpenMobile:f}=Z();return"none"===n?(0,r.jsx)("div",{className:(0,m.cn)("flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",i),ref:t,...o,children:d}):l?(0,r.jsx)(N,{open:u,onOpenChange:f,...o,children:(0,r.jsxs)(C,{"data-sidebar":"sidebar","data-mobile":"true",className:"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:a,children:[(0,r.jsxs)(R,{className:"sr-only",children:[(0,r.jsx)(_,{children:"Sidebar"}),(0,r.jsx)(z,{children:"Displays the mobile sidebar."})]}),(0,r.jsx)("div",{className:"flex h-full w-full flex-col",children:d})]})}):(0,r.jsxs)("div",{ref:t,className:"group peer hidden text-sidebar-foreground md:block","data-state":c,"data-collapsible":"collapsed"===c?n:"","data-variant":s,"data-side":a,children:[(0,r.jsx)("div",{className:(0,m.cn)("relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===s||"inset"===s?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon]")}),(0,r.jsx)("div",{className:(0,m.cn)("fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex","left"===a?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]","floating"===s||"inset"===s?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",i),...o,children:(0,r.jsx)("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:d})})]})});A.displayName="Sidebar";let G=s.forwardRef((e,t)=>{let{className:a,onClick:s,...n}=e,{toggleSidebar:i}=Z();return(0,r.jsxs)(h.z,{ref:t,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:(0,m.cn)("h-7 w-7",a),onClick:e=>{null==s||s(e),i()},...n,children:[(0,r.jsx)(p.Z,{}),(0,r.jsx)("span",{className:"sr-only",children:"Toggle Sidebar"})]})});G.displayName="SidebarTrigger",s.forwardRef((e,t)=>{let{className:a,...s}=e,{toggleSidebar:n}=Z();return(0,r.jsx)("button",{ref:t,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:n,title:"Toggle Sidebar",className:(0,m.cn)("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...s})}).displayName="SidebarRail";let I=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("main",{ref:t,className:(0,m.cn)("relative flex w-full flex-1 flex-col bg-white dark:bg-slate-950","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...s})});I.displayName="SidebarInset",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(g.I,{ref:t,"data-sidebar":"input",className:(0,m.cn)("h-8 w-full bg-white shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring dark:bg-slate-950",a),...s})}).displayName="SidebarInput";let T=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"header",className:(0,m.cn)("flex flex-col gap-2 p-2",a),...s})});T.displayName="SidebarHeader",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"footer",className:(0,m.cn)("flex flex-col gap-2 p-2",a),...s})}).displayName="SidebarFooter";let B=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(v.Z,{ref:t,"data-sidebar":"separator",className:(0,m.cn)("mx-2 w-auto bg-sidebar-border",a),...s})});B.displayName="SidebarSeparator";let V=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"content",className:(0,m.cn)("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",a),...s})});V.displayName="SidebarContent";let L=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"group",className:(0,m.cn)("relative flex w-full min-w-0 flex-col p-2",a),...s})});L.displayName="SidebarGroup";let O=s.forwardRef((e,t)=>{let{className:a,asChild:s=!1,...n}=e,i=s?x.g7:"div";return(0,r.jsx)(i,{ref:t,"data-sidebar":"group-label",className:(0,m.cn)("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...n})});O.displayName="SidebarGroupLabel",s.forwardRef((e,t)=>{let{className:a,asChild:s=!1,...n}=e,i=s?x.g7:"button";return(0,r.jsx)(i,{ref:t,"data-sidebar":"group-action",className:(0,m.cn)("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...n})}).displayName="SidebarGroupAction";let K=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"group-content",className:(0,m.cn)("w-full text-sm",a),...s})});K.displayName="SidebarGroupContent";let F=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("ul",{ref:t,"data-sidebar":"menu",className:(0,m.cn)("flex w-full min-w-0 flex-col gap-1",a),...s})});F.displayName="SidebarMenu";let q=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("li",{ref:t,"data-sidebar":"menu-item",className:(0,m.cn)("group/menu-item relative",a),...s})});q.displayName="SidebarMenuItem";let W=(0,b.j)("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-white shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))] dark:bg-slate-950"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),U=s.forwardRef((e,t)=>{let{asChild:a=!1,isActive:s=!1,variant:n="default",size:i="default",tooltip:d,className:o,...l}=e,c=a?x.g7:"button",{isMobile:u,state:f}=Z(),b=(0,r.jsx)(c,{ref:t,"data-sidebar":"menu-button","data-size":i,"data-active":s,className:(0,m.cn)(W({variant:n,size:i}),o),...l});return d?("string"==typeof d&&(d={children:d}),(0,r.jsxs)(E.u,{children:[(0,r.jsx)(E.aJ,{asChild:!0,children:b}),(0,r.jsx)(E._v,{side:"right",align:"center",hidden:"collapsed"!==f||u,...d})]})):b});function $(e){let{summary:t,projects:a,activeProject:s,liveIndicator:n,onProjectChange:i}=e;return(0,r.jsxs)("header",{className:"h-12 border-b border-border flex items-center px-4 gap-4 flex-shrink-0 bg-surface/80 backdrop-blur-sm sticky top-0 z-50",children:[(0,r.jsx)(G,{className:"-ml-1"}),(0,r.jsx)(v.Z,{orientation:"vertical",className:"mr-2 h-4"}),(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,r.jsx)("div",{className:"w-6 h-6 rounded-md bg-gradient-to-br from-accent to-teal flex items-center justify-center text-xs",children:"⬡"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted tracking-widest uppercase",children:"VibeDoc"})]}),(0,r.jsx)(l,{projects:a,activeProject:s,currentName:(null==t?void 0:t.name)||"",onSelect:i}),t&&(0,r.jsx)(u,{board:t.tasks.board}),(0,r.jsx)("div",{className:"flex-1"}),(0,r.jsx)(f,{active:n}),(0,r.jsxs)("div",{className:"hidden md:flex items-center gap-1.5 px-2 py-1 rounded bg-surface2 border border-border",children:[(0,r.jsx)("span",{className:"text-xs font-mono text-muted",children:"MCP"}),(0,r.jsx)("code",{className:"text-xs font-mono text-accent",children:"localhost:3000/api/mcp"})]})]})}U.displayName="SidebarMenuButton",s.forwardRef((e,t)=>{let{className:a,asChild:s=!1,showOnHover:n=!1,...i}=e,d=s?x.g7:"button";return(0,r.jsx)(d,{ref:t,"data-sidebar":"menu-action",className:(0,m.cn)("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",n&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",a),...i})}).displayName="SidebarMenuAction",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"menu-badge",className:(0,m.cn)("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...s})}).displayName="SidebarMenuBadge",s.forwardRef((e,t)=>{let{className:a,showIcon:n=!1,...i}=e,d=s.useMemo(()=>"".concat(Math.floor(40*Math.random())+50,"%"),[]);return(0,r.jsxs)("div",{ref:t,"data-sidebar":"menu-skeleton",className:(0,m.cn)("flex h-8 items-center gap-2 rounded-md px-2",a),...i,children:[n&&(0,r.jsx)(D,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),(0,r.jsx)(D,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":d}})]})}).displayName="SidebarMenuSkeleton",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("ul",{ref:t,"data-sidebar":"menu-sub",className:(0,m.cn)("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...s})}).displayName="SidebarMenuSub",s.forwardRef((e,t)=>{let{...a}=e;return(0,r.jsx)("li",{ref:t,...a})}).displayName="SidebarMenuSubItem",s.forwardRef((e,t)=>{let{asChild:a=!1,size:s="md",isActive:n,className:i,...d}=e,o=a?x.g7:"a";return(0,r.jsx)(o,{ref:t,"data-sidebar":"menu-sub-button","data-size":s,"data-active":n,className:(0,m.cn)("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground","sm"===s&&"text-xs","md"===s&&"text-sm","group-data-[collapsible=icon]:hidden",i),...d})}).displayName="SidebarMenuSubButton";var H=a(74809),X=a(94297),Y=a(77159),J=a(86239),Q=a(52874),ee=a(62994),et=a(36900),ea=a(44461),er=a(34753),es=a(96353);let en=[{href:"/board",icon:H.Z,label:"Board"},{href:"/docs",icon:X.Z,label:"Docs"},{href:"/activity",icon:Y.Z,label:"Activity"},{href:"/memory",icon:J.Z,label:"Memory"},{href:"/settings",icon:Q.Z,label:"Settings"}],ei=[{status:"in-progress",icon:ee.Z,label:"Active"},{status:"blocked",icon:et.Z,label:"Blocked"},{status:"todo",icon:ea.Z,label:"Todo"},{status:"done",icon:er.Z,label:"Done"}];function ed(e){let{board:t}=e,a=(0,n.usePathname)();return(0,r.jsxs)(A,{collapsible:"icon",children:[(0,r.jsx)(T,{children:(0,r.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1",children:[(0,r.jsx)("div",{className:"w-6 h-6 rounded-md bg-gradient-to-br from-accent to-teal flex items-center justify-center text-xs flex-shrink-0",children:"⬡"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted tracking-widest uppercase group-data-[collapsible=icon]:hidden",children:"VibeDoc"})]})}),(0,r.jsxs)(V,{children:[(0,r.jsx)(L,{children:(0,r.jsx)(K,{children:(0,r.jsx)(F,{children:en.map(e=>{let{href:t,icon:s,label:n}=e;return(0,r.jsx)(q,{children:(0,r.jsx)(U,{asChild:!0,isActive:a.startsWith(t),tooltip:n,children:(0,r.jsxs)(es.default,{href:t,children:[(0,r.jsx)(s,{}),(0,r.jsx)("span",{children:n})]})})},t)})})})}),t&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(B,{}),(0,r.jsxs)(L,{children:[(0,r.jsx)(O,{children:"Board"}),(0,r.jsx)(K,{children:(0,r.jsx)(F,{children:ei.map(e=>{var a;let{status:s,icon:n,label:i}=e,d=(null===(a=t[s])||void 0===a?void 0:a.length)||0;return(0,r.jsx)(q,{children:(0,r.jsxs)(U,{tooltip:"".concat(i,": ").concat(d),children:[(0,r.jsx)(n,{}),(0,r.jsx)("span",{children:i}),(0,r.jsx)("span",{className:"ml-auto font-mono text-xs",children:d})]})},s)})})})]})]})]})]})}var eo=a(81160),el=a(46960),ec=a(76877),eu=a(72374),em=a(8637);function ef(e){let{open:t,onClose:a,onOpenDoc:i,onNewDoc:d,rootParam:o}=e,l=(0,n.useRouter)(),[c,u]=(0,s.useState)(""),[f,x]=(0,s.useState)([]),[b,p]=(0,s.useState)(0),h=[{label:"New Doc",icon:eo.Z,action:()=>{null==d||d(),a()}},{label:"Go to Board",icon:H.Z,action:()=>{l.push("/board"),a()}},{label:"Go to Activity",icon:el.Z,action:()=>{l.push("/activity"),a()}},{label:"Go to Memory",icon:J.Z,action:()=>{l.push("/memory"),a()}}];function v(e){i(e.path),a()}(0,s.useEffect)(()=>{t||(u(""),x([]),p(0))},[t]),(0,s.useEffect)(()=>{if(c.length<2){x([]),p(0);return}let e=setTimeout(async()=>{try{var e,t;let a=await fetch("/api/docs".concat(o,"&q=").concat(encodeURIComponent(c))),r=await a.json();x(null!==(t=null===(e=r.results)||void 0===e?void 0:e.map(e=>{var t,a;return{path:e.file,section:e.file.split("/").slice(0,-1).join("/"),name:null!==(a=null===(t=e.file.split("/").pop())||void 0===t?void 0:t.replace(/\.md$/,""))&&void 0!==a?a:e.file}}))&&void 0!==t?t:[]),p(0)}catch(e){}},300);return()=>clearTimeout(e)},[c,o]);let j=""===c;return(0,r.jsx)(eu.Vq,{open:t,onOpenChange:e=>{e||a()},children:(0,r.jsxs)(eu.cZ,{className:"max-w-lg p-0 overflow-hidden bg-surface border-border gap-0",children:[(0,r.jsx)(eu.$N,{className:"sr-only",children:"Command Palette"}),(0,r.jsxs)("div",{className:"flex items-center px-4 h-12",children:[(0,r.jsx)(ec.Z,{className:"h-4 w-4 text-muted shrink-0 mr-3"}),(0,r.jsx)(g.I,{autoFocus:!0,value:c,onChange:e=>u(e.target.value),onKeyDown:function(e){let t=f.length>0,a=t?f.length:h.length;"ArrowDown"===e.key?(e.preventDefault(),p(e=>Math.min(e+1,a-1))):"ArrowUp"===e.key?(e.preventDefault(),p(e=>Math.max(e-1,0))):"Enter"===e.key&&(t&&f[b]?v(f[b]):!t&&c.length<2&&h[b]&&h[b].action())},placeholder:"Search docs…",className:"border-0 bg-transparent h-full text-sm shadow-none focus-visible:ring-0 px-0 placeholder:text-muted"})]}),(0,r.jsx)("div",{className:"border-t border-border"}),(0,r.jsxs)(em.x,{className:"max-h-72",children:[j&&(0,r.jsx)("div",{className:"py-1",children:h.map((e,t)=>(0,r.jsxs)("button",{onClick:e.action,onMouseEnter:()=>p(t),className:(0,m.cn)("flex items-center gap-3 w-full px-4 py-2 text-sm text-left transition-colors",b===t?"bg-accent/10 text-txt":"text-muted hover:text-txt"),children:[(0,r.jsx)(e.icon,{className:"h-4 w-4 shrink-0"}),e.label]},e.label))}),!j&&f.length>0&&(0,r.jsx)("div",{className:"py-1",children:f.map((e,t)=>(0,r.jsxs)("button",{onClick:()=>v(e),onMouseEnter:()=>p(t),className:(0,m.cn)("flex items-center justify-between w-full px-4 py-2 text-sm text-left transition-colors",b===t?"bg-accent/10":"hover:bg-accent/5"),children:[(0,r.jsx)("span",{className:"font-medium text-txt truncate",children:e.name}),e.section&&(0,r.jsx)("span",{className:"text-xs text-muted ml-3 shrink-0 truncate max-w-[40%]",children:e.section})]},e.path))}),!j&&c.length>=2&&0===f.length&&(0,r.jsx)("div",{className:"px-4 py-6 text-center text-sm text-muted",children:"No docs found"})]})]})})}var ex=a(82825);function eb(e){let{children:t}=e;return(0,r.jsx)(i.w,{children:(0,r.jsx)(eh,{children:t})})}let ep=[{key:"Cmd+K",description:"Open command palette"},{key:"b",description:"Go to Board"},{key:"d",description:"Go to Docs"},{key:"a",description:"Go to Activity"},{key:"m",description:"Go to Memory"},{key:"/",description:"Focus doc search"},{key:"?",description:"Toggle this help"},{key:"Esc",description:"Close panel / modal"}];function eh(e){let{children:t}=e,{loading:a,summary:o,projects:l,activeProject:c,liveIndicator:u,onProjectChange:m,board:f,openDoc:x,rootParam:b}=(0,i.q)(),p=(0,n.useRouter)(),h=(0,n.usePathname)(),[g,v]=(0,s.useState)(!1),[j,w]=(0,s.useState)(!1),[N,y]=(0,s.useState)(!1);return((0,s.useEffect)(()=>{function e(e){var t,a;if((e.metaKey||e.ctrlKey)&&"k"===e.key){e.preventDefault(),w(e=>!e);return}let r=null===(t=e.target)||void 0===t?void 0:t.tagName;if("INPUT"!==r&&"TEXTAREA"!==r)switch(e.key){case"b":p.push("/board");break;case"d":p.push("/docs");break;case"a":p.push("/activity");break;case"m":p.push("/memory");break;case"?":v(e=>!e);break;case"Escape":v(!1);break;case"/":e.preventDefault(),"/docs"===h?null===(a=document.getElementById("doc-search"))||void 0===a||a.focus():p.push("/docs")}}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[p,h]),a)?(0,r.jsx)(d,{}):(0,r.jsxs)(P,{children:[(0,r.jsx)(ed,{board:f}),(0,r.jsxs)(I,{children:[(0,r.jsx)($,{summary:o,projects:l,activeProject:c,liveIndicator:u,onProjectChange:m}),(0,r.jsx)("main",{className:"flex-1 overflow-y-auto",children:t}),(0,r.jsx)(ef,{open:j,onClose:()=>w(!1),onOpenDoc:x,onNewDoc:()=>{w(!1),y(!0)},rootParam:b}),(0,r.jsx)(ex.t,{open:N,onOpenChange:y,rootParam:b,onDocCreated:async e=>{await x(e)}}),g&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"fixed inset-0 z-50 bg-black/60",onClick:()=>v(!1)}),(0,r.jsxs)("div",{className:"fixed z-50 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-80 bg-surface border border-border rounded-xl shadow-2xl p-5",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,r.jsx)("span",{className:"font-display text-sm font-semibold text-txt",children:"Keyboard shortcuts"}),(0,r.jsx)("button",{onClick:()=>v(!1),className:"text-muted hover:text-txt transition-colors text-lg leading-none",children:"\xd7"})]}),(0,r.jsx)("table",{className:"w-full text-xs",children:(0,r.jsx)("tbody",{children:ep.map(e=>{let{key:t,description:a}=e;return(0,r.jsxs)("tr",{className:"border-t border-border first:border-0",children:[(0,r.jsx)("td",{className:"py-1.5 pr-4",children:(0,r.jsx)("kbd",{className:"font-mono bg-surface2 border border-border rounded px-1.5 py-0.5 text-accent",children:t})}),(0,r.jsx)("td",{className:"py-1.5 text-muted",children:a})]},t)})})})]})]})]})]})}}},function(e){e.O(0,[490,7725,7697,845,4170,6842,1744],function(){return e(e.s=3921)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5814],{3921:function(e,t,a){Promise.resolve().then(a.bind(a,60985))},60985:function(e,t,a){"use strict";a.r(t),a.d(t,{default:function(){return eb}});var r=a(59533),s=a(31229),n=a(61250),i=a(11180);function d(){return(0,r.jsx)("div",{className:"min-h-screen flex items-center justify-center",children:(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("div",{className:"flex gap-1.5 justify-center mb-4",children:[0,1,2].map(e=>(0,r.jsx)("div",{className:"w-2 h-2 rounded-full bg-accent animate-pulse-dot",style:{animationDelay:"".concat(.15*e,"s")}},e))}),(0,r.jsx)("p",{className:"text-muted text-sm font-mono",children:"Loading project..."})]})})}var o=a(83373);function l(e){let{projects:t,activeProject:a,currentName:s,onSelect:n}=e;return(0,r.jsxs)(o.h_,{children:[(0,r.jsx)(o.$F,{asChild:!0,children:(0,r.jsxs)("button",{className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-surface2 border border-border text-sm hover:border-border2 transition-colors",children:[(0,r.jsx)("span",{className:"text-txt font-medium truncate max-w-[200px]",children:s||"Select project"}),(0,r.jsx)("span",{className:"text-muted text-xs",children:"▾"})]})}),(0,r.jsx)(o.AW,{className:"w-64 bg-surface border-border2 text-txt",align:"start",children:0===t.length?(0,r.jsx)("div",{className:"px-3 py-2 text-sm text-muted",children:"No projects found"}):t.map(e=>(0,r.jsx)(o.Xi,{onClick:()=>n(e.root),className:"cursor-pointer hover:bg-surface2 focus:bg-surface2 ".concat(e.root===a?"text-accent":""),children:(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"font-medium",children:e.name}),(0,r.jsx)("div",{className:"text-xs text-muted truncate font-mono",children:e.root})]})},e.root))})]})}var c=a(71301);function u(e){let{board:t}=e;return(0,r.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,r.jsxs)(c.C,{variant:"secondary",className:"gap-1 text-xs font-mono text-amber",children:["\uD83D\uDD28 ",t["in-progress"]||0]}),(0,r.jsxs)(c.C,{variant:"secondary",className:"gap-1 text-xs font-mono text-muted",children:["\uD83D\uDCCB ",t.todo||0]}),(0,r.jsxs)(c.C,{variant:"secondary",className:"gap-1 text-xs font-mono text-teal",children:["✅ ",t.done||0]})]})}var m=a(52284);function f(e){let{active:t}=e;return(0,r.jsxs)("div",{className:"flex items-center gap-1.5 text-xs font-mono text-muted",children:[(0,r.jsx)("div",{className:(0,m.cn)("w-1.5 h-1.5 rounded-full transition-colors duration-500",t?"bg-teal shadow-[0_0_6px_#4fd8b4]":"bg-border2")}),(0,r.jsx)("span",{children:t?"live update":"connected"})]})}var x=a(38777),b=a(95084),p=a(19363),h=a(220),g=a(13191),v=a(12301),j=a(68778),w=a(46850);let N=j.fC;j.xz,j.x8;let y=j.h_,k=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(j.aV,{className:(0,m.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...s,ref:t})});k.displayName=j.aV.displayName;let S=(0,b.j)("fixed z-50 gap-4 bg-white p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500 dark:bg-slate-950",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),C=s.forwardRef((e,t)=>{let{side:a="right",className:s,children:n,...i}=e;return(0,r.jsxs)(y,{children:[(0,r.jsx)(k,{}),(0,r.jsxs)(j.VY,{ref:t,className:(0,m.cn)(S({side:a}),s),...i,children:[n,(0,r.jsxs)(j.x8,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-slate-100 dark:ring-offset-slate-950 dark:focus:ring-slate-300 dark:data-[state=open]:bg-slate-800",children:[(0,r.jsx)(w.Z,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});C.displayName=j.VY.displayName;let R=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,m.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...a})};R.displayName="SheetHeader";let _=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(j.Dx,{ref:t,className:(0,m.cn)("text-lg font-semibold text-slate-950 dark:text-slate-50",a),...s})});_.displayName=j.Dx.displayName;let z=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(j.dk,{ref:t,className:(0,m.cn)("text-sm text-slate-500 dark:text-slate-400",a),...s})});function D(e){let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,m.cn)("animate-pulse rounded-md bg-slate-100 dark:bg-slate-800",t),...a})}z.displayName=j.dk.displayName;var E=a(17477);let M=s.createContext(null);function Z(){let e=s.useContext(M);if(!e)throw Error("useSidebar must be used within a SidebarProvider.");return e}let P=s.forwardRef((e,t)=>{let{defaultOpen:a=!0,open:n,onOpenChange:i,className:d,style:o,children:l,...c}=e,u=function(){let[e,t]=s.useState(void 0);return s.useEffect(()=>{let e=window.matchMedia("(max-width: ".concat(767,"px)")),a=()=>{t(window.innerWidth<768)};return e.addEventListener("change",a),t(window.innerWidth<768),()=>e.removeEventListener("change",a)},[]),!!e}(),[f,x]=s.useState(!1),[b,p]=s.useState(a),h=null!=n?n:b,g=s.useCallback(e=>{let t="function"==typeof e?e(h):e;i?i(t):p(t),document.cookie="".concat("sidebar_state","=").concat(t,"; path=/; max-age=").concat(604800)},[i,h]),v=s.useCallback(()=>u?x(e=>!e):g(e=>!e),[u,g,x]);s.useEffect(()=>{let e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),v())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[v]);let j=h?"expanded":"collapsed",w=s.useMemo(()=>({state:j,open:h,setOpen:g,isMobile:u,openMobile:f,setOpenMobile:x,toggleSidebar:v}),[j,h,g,u,f,x,v]);return(0,r.jsx)(M.Provider,{value:w,children:(0,r.jsx)(E.pn,{delayDuration:0,children:(0,r.jsx)("div",{style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...o},className:(0,m.cn)("group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar",d),ref:t,...c,children:l})})})});P.displayName="SidebarProvider";let A=s.forwardRef((e,t)=>{let{side:a="left",variant:s="sidebar",collapsible:n="offcanvas",className:i,children:d,...o}=e,{isMobile:l,state:c,openMobile:u,setOpenMobile:f}=Z();return"none"===n?(0,r.jsx)("div",{className:(0,m.cn)("flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",i),ref:t,...o,children:d}):l?(0,r.jsx)(N,{open:u,onOpenChange:f,...o,children:(0,r.jsxs)(C,{"data-sidebar":"sidebar","data-mobile":"true",className:"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:a,children:[(0,r.jsxs)(R,{className:"sr-only",children:[(0,r.jsx)(_,{children:"Sidebar"}),(0,r.jsx)(z,{children:"Displays the mobile sidebar."})]}),(0,r.jsx)("div",{className:"flex h-full w-full flex-col",children:d})]})}):(0,r.jsxs)("div",{ref:t,className:"group peer hidden text-sidebar-foreground md:block","data-state":c,"data-collapsible":"collapsed"===c?n:"","data-variant":s,"data-side":a,children:[(0,r.jsx)("div",{className:(0,m.cn)("relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===s||"inset"===s?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon]")}),(0,r.jsx)("div",{className:(0,m.cn)("fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex","left"===a?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]","floating"===s||"inset"===s?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]":"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l",i),...o,children:(0,r.jsx)("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:d})})]})});A.displayName="Sidebar";let G=s.forwardRef((e,t)=>{let{className:a,onClick:s,...n}=e,{toggleSidebar:i}=Z();return(0,r.jsxs)(h.z,{ref:t,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:(0,m.cn)("h-7 w-7",a),onClick:e=>{null==s||s(e),i()},...n,children:[(0,r.jsx)(p.Z,{}),(0,r.jsx)("span",{className:"sr-only",children:"Toggle Sidebar"})]})});G.displayName="SidebarTrigger",s.forwardRef((e,t)=>{let{className:a,...s}=e,{toggleSidebar:n}=Z();return(0,r.jsx)("button",{ref:t,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:n,title:"Toggle Sidebar",className:(0,m.cn)("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...s})}).displayName="SidebarRail";let I=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("main",{ref:t,className:(0,m.cn)("relative flex w-full flex-1 flex-col bg-white dark:bg-slate-950","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...s})});I.displayName="SidebarInset",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(g.I,{ref:t,"data-sidebar":"input",className:(0,m.cn)("h-8 w-full bg-white shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring dark:bg-slate-950",a),...s})}).displayName="SidebarInput";let T=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"header",className:(0,m.cn)("flex flex-col gap-2 p-2",a),...s})});T.displayName="SidebarHeader",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"footer",className:(0,m.cn)("flex flex-col gap-2 p-2",a),...s})}).displayName="SidebarFooter";let B=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)(v.Z,{ref:t,"data-sidebar":"separator",className:(0,m.cn)("mx-2 w-auto bg-sidebar-border",a),...s})});B.displayName="SidebarSeparator";let V=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"content",className:(0,m.cn)("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",a),...s})});V.displayName="SidebarContent";let L=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"group",className:(0,m.cn)("relative flex w-full min-w-0 flex-col p-2",a),...s})});L.displayName="SidebarGroup";let O=s.forwardRef((e,t)=>{let{className:a,asChild:s=!1,...n}=e,i=s?x.g7:"div";return(0,r.jsx)(i,{ref:t,"data-sidebar":"group-label",className:(0,m.cn)("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...n})});O.displayName="SidebarGroupLabel",s.forwardRef((e,t)=>{let{className:a,asChild:s=!1,...n}=e,i=s?x.g7:"button";return(0,r.jsx)(i,{ref:t,"data-sidebar":"group-action",className:(0,m.cn)("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...n})}).displayName="SidebarGroupAction";let K=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"group-content",className:(0,m.cn)("w-full text-sm",a),...s})});K.displayName="SidebarGroupContent";let F=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("ul",{ref:t,"data-sidebar":"menu",className:(0,m.cn)("flex w-full min-w-0 flex-col gap-1",a),...s})});F.displayName="SidebarMenu";let q=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("li",{ref:t,"data-sidebar":"menu-item",className:(0,m.cn)("group/menu-item relative",a),...s})});q.displayName="SidebarMenuItem";let W=(0,b.j)("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-white shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))] dark:bg-slate-950"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),U=s.forwardRef((e,t)=>{let{asChild:a=!1,isActive:s=!1,variant:n="default",size:i="default",tooltip:d,className:o,...l}=e,c=a?x.g7:"button",{isMobile:u,state:f}=Z(),b=(0,r.jsx)(c,{ref:t,"data-sidebar":"menu-button","data-size":i,"data-active":s,className:(0,m.cn)(W({variant:n,size:i}),o),...l});return d?("string"==typeof d&&(d={children:d}),(0,r.jsxs)(E.u,{children:[(0,r.jsx)(E.aJ,{asChild:!0,children:b}),(0,r.jsx)(E._v,{side:"right",align:"center",hidden:"collapsed"!==f||u,...d})]})):b});function $(e){let{summary:t,projects:a,activeProject:s,liveIndicator:n,onProjectChange:i}=e;return(0,r.jsxs)("header",{className:"h-12 border-b border-border flex items-center px-4 gap-4 flex-shrink-0 bg-surface/80 backdrop-blur-sm sticky top-0 z-50",children:[(0,r.jsx)(G,{className:"-ml-1"}),(0,r.jsx)(v.Z,{orientation:"vertical",className:"mr-2 h-4"}),(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[(0,r.jsx)("div",{className:"w-6 h-6 rounded-md bg-gradient-to-br from-accent to-teal flex items-center justify-center text-xs",children:"⬡"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted tracking-widest uppercase",children:"VibeDoc"})]}),(0,r.jsx)(l,{projects:a,activeProject:s,currentName:(null==t?void 0:t.name)||"",onSelect:i}),t&&(0,r.jsx)(u,{board:t.tasks.board}),(0,r.jsx)("div",{className:"flex-1"}),(0,r.jsx)(f,{active:n}),(0,r.jsxs)("div",{className:"hidden md:flex items-center gap-1.5 px-2 py-1 rounded bg-surface2 border border-border",children:[(0,r.jsx)("span",{className:"text-xs font-mono text-muted",children:"MCP"}),(0,r.jsx)("code",{className:"text-xs font-mono text-accent",children:"localhost:3000/api/mcp"})]})]})}U.displayName="SidebarMenuButton",s.forwardRef((e,t)=>{let{className:a,asChild:s=!1,showOnHover:n=!1,...i}=e,d=s?x.g7:"button";return(0,r.jsx)(d,{ref:t,"data-sidebar":"menu-action",className:(0,m.cn)("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",n&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",a),...i})}).displayName="SidebarMenuAction",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,"data-sidebar":"menu-badge",className:(0,m.cn)("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...s})}).displayName="SidebarMenuBadge",s.forwardRef((e,t)=>{let{className:a,showIcon:n=!1,...i}=e,d=s.useMemo(()=>"".concat(Math.floor(40*Math.random())+50,"%"),[]);return(0,r.jsxs)("div",{ref:t,"data-sidebar":"menu-skeleton",className:(0,m.cn)("flex h-8 items-center gap-2 rounded-md px-2",a),...i,children:[n&&(0,r.jsx)(D,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),(0,r.jsx)(D,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":d}})]})}).displayName="SidebarMenuSkeleton",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("ul",{ref:t,"data-sidebar":"menu-sub",className:(0,m.cn)("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...s})}).displayName="SidebarMenuSub",s.forwardRef((e,t)=>{let{...a}=e;return(0,r.jsx)("li",{ref:t,...a})}).displayName="SidebarMenuSubItem",s.forwardRef((e,t)=>{let{asChild:a=!1,size:s="md",isActive:n,className:i,...d}=e,o=a?x.g7:"a";return(0,r.jsx)(o,{ref:t,"data-sidebar":"menu-sub-button","data-size":s,"data-active":n,className:(0,m.cn)("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground","sm"===s&&"text-xs","md"===s&&"text-sm","group-data-[collapsible=icon]:hidden",i),...d})}).displayName="SidebarMenuSubButton";var H=a(74809),X=a(94297),Y=a(77159),J=a(86239),Q=a(52874),ee=a(62994),et=a(36900),ea=a(44461),er=a(34753),es=a(96353);let en=[{href:"/board",icon:H.Z,label:"Board"},{href:"/docs",icon:X.Z,label:"Docs"},{href:"/activity",icon:Y.Z,label:"Activity"},{href:"/memory",icon:J.Z,label:"Memory"},{href:"/settings",icon:Q.Z,label:"Settings"}],ei=[{status:"in-progress",icon:ee.Z,label:"Active"},{status:"blocked",icon:et.Z,label:"Blocked"},{status:"todo",icon:ea.Z,label:"Todo"},{status:"done",icon:er.Z,label:"Done"}];function ed(e){let{board:t}=e,a=(0,n.usePathname)();return(0,r.jsxs)(A,{collapsible:"icon",children:[(0,r.jsx)(T,{children:(0,r.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1",children:[(0,r.jsx)("div",{className:"w-6 h-6 rounded-md bg-gradient-to-br from-accent to-teal flex items-center justify-center text-xs flex-shrink-0",children:"⬡"}),(0,r.jsx)("span",{className:"font-mono text-xs text-muted tracking-widest uppercase group-data-[collapsible=icon]:hidden",children:"VibeDoc"})]})}),(0,r.jsxs)(V,{children:[(0,r.jsx)(L,{children:(0,r.jsx)(K,{children:(0,r.jsx)(F,{children:en.map(e=>{let{href:t,icon:s,label:n}=e;return(0,r.jsx)(q,{children:(0,r.jsx)(U,{asChild:!0,isActive:a.startsWith(t),tooltip:n,children:(0,r.jsxs)(es.default,{href:t,children:[(0,r.jsx)(s,{}),(0,r.jsx)("span",{children:n})]})})},t)})})})}),t&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(B,{}),(0,r.jsxs)(L,{children:[(0,r.jsx)(O,{children:"Board"}),(0,r.jsx)(K,{children:(0,r.jsx)(F,{children:ei.map(e=>{var a;let{status:s,icon:n,label:i}=e,d=(null===(a=t[s])||void 0===a?void 0:a.length)||0;return(0,r.jsx)(q,{children:(0,r.jsxs)(U,{tooltip:"".concat(i,": ").concat(d),children:[(0,r.jsx)(n,{}),(0,r.jsx)("span",{children:i}),(0,r.jsx)("span",{className:"ml-auto font-mono text-xs",children:d})]})},s)})})})]})]})]})]})}var eo=a(81160),el=a(46960),ec=a(76877),eu=a(72374),em=a(8637);function ef(e){let{open:t,onClose:a,onOpenDoc:i,onNewDoc:d,rootParam:o}=e,l=(0,n.useRouter)(),[c,u]=(0,s.useState)(""),[f,x]=(0,s.useState)([]),[b,p]=(0,s.useState)(0),h=[{label:"New Doc",icon:eo.Z,action:()=>{null==d||d(),a()}},{label:"Go to Board",icon:H.Z,action:()=>{l.push("/board"),a()}},{label:"Go to Activity",icon:el.Z,action:()=>{l.push("/activity"),a()}},{label:"Go to Memory",icon:J.Z,action:()=>{l.push("/memory"),a()}}];function v(e){i(e.path),a()}(0,s.useEffect)(()=>{t||(u(""),x([]),p(0))},[t]),(0,s.useEffect)(()=>{if(c.length<2){x([]),p(0);return}let e=setTimeout(async()=>{try{var e,t;let a=await fetch("/api/docs".concat(o,"&q=").concat(encodeURIComponent(c))),r=await a.json();x(null!==(t=null===(e=r.results)||void 0===e?void 0:e.map(e=>{var t,a;return{path:e.file,section:e.file.split("/").slice(0,-1).join("/"),name:null!==(a=null===(t=e.file.split("/").pop())||void 0===t?void 0:t.replace(/\.md$/,""))&&void 0!==a?a:e.file}}))&&void 0!==t?t:[]),p(0)}catch(e){}},300);return()=>clearTimeout(e)},[c,o]);let j=""===c;return(0,r.jsx)(eu.Vq,{open:t,onOpenChange:e=>{e||a()},children:(0,r.jsxs)(eu.cZ,{className:"max-w-lg p-0 overflow-hidden bg-surface border-border gap-0",children:[(0,r.jsx)(eu.$N,{className:"sr-only",children:"Command Palette"}),(0,r.jsxs)("div",{className:"flex items-center px-4 h-12",children:[(0,r.jsx)(ec.Z,{className:"h-4 w-4 text-muted shrink-0 mr-3"}),(0,r.jsx)(g.I,{autoFocus:!0,value:c,onChange:e=>u(e.target.value),onKeyDown:function(e){let t=f.length>0,a=t?f.length:h.length;"ArrowDown"===e.key?(e.preventDefault(),p(e=>Math.min(e+1,a-1))):"ArrowUp"===e.key?(e.preventDefault(),p(e=>Math.max(e-1,0))):"Enter"===e.key&&(t&&f[b]?v(f[b]):!t&&c.length<2&&h[b]&&h[b].action())},placeholder:"Search docs…",className:"border-0 bg-transparent h-full text-sm shadow-none focus-visible:ring-0 px-0 placeholder:text-muted"})]}),(0,r.jsx)("div",{className:"border-t border-border"}),(0,r.jsxs)(em.x,{className:"max-h-72",children:[j&&(0,r.jsx)("div",{className:"py-1",children:h.map((e,t)=>(0,r.jsxs)("button",{onClick:e.action,onMouseEnter:()=>p(t),className:(0,m.cn)("flex items-center gap-3 w-full px-4 py-2 text-sm text-left transition-colors",b===t?"bg-accent/10 text-txt":"text-muted hover:text-txt"),children:[(0,r.jsx)(e.icon,{className:"h-4 w-4 shrink-0"}),e.label]},e.label))}),!j&&f.length>0&&(0,r.jsx)("div",{className:"py-1",children:f.map((e,t)=>(0,r.jsxs)("button",{onClick:()=>v(e),onMouseEnter:()=>p(t),className:(0,m.cn)("flex items-center justify-between w-full px-4 py-2 text-sm text-left transition-colors",b===t?"bg-accent/10":"hover:bg-accent/5"),children:[(0,r.jsx)("span",{className:"font-medium text-txt truncate",children:e.name}),e.section&&(0,r.jsx)("span",{className:"text-xs text-muted ml-3 shrink-0 truncate max-w-[40%]",children:e.section})]},e.path))}),!j&&c.length>=2&&0===f.length&&(0,r.jsx)("div",{className:"px-4 py-6 text-center text-sm text-muted",children:"No docs found"})]})]})})}var ex=a(39854);function eb(e){let{children:t}=e;return(0,r.jsx)(i.w,{children:(0,r.jsx)(eh,{children:t})})}let ep=[{key:"Cmd+K",description:"Open command palette"},{key:"b",description:"Go to Board"},{key:"d",description:"Go to Docs"},{key:"a",description:"Go to Activity"},{key:"m",description:"Go to Memory"},{key:"/",description:"Focus doc search"},{key:"?",description:"Toggle this help"},{key:"Esc",description:"Close panel / modal"}];function eh(e){let{children:t}=e,{loading:a,summary:o,projects:l,activeProject:c,liveIndicator:u,onProjectChange:m,board:f,openDoc:x,rootParam:b}=(0,i.q)(),p=(0,n.useRouter)(),h=(0,n.usePathname)(),[g,v]=(0,s.useState)(!1),[j,w]=(0,s.useState)(!1),[N,y]=(0,s.useState)(!1);return((0,s.useEffect)(()=>{function e(e){var t,a;if((e.metaKey||e.ctrlKey)&&"k"===e.key){e.preventDefault(),w(e=>!e);return}let r=null===(t=e.target)||void 0===t?void 0:t.tagName;if("INPUT"!==r&&"TEXTAREA"!==r)switch(e.key){case"b":p.push("/board");break;case"d":p.push("/docs");break;case"a":p.push("/activity");break;case"m":p.push("/memory");break;case"?":v(e=>!e);break;case"Escape":v(!1);break;case"/":e.preventDefault(),"/docs"===h?null===(a=document.getElementById("doc-search"))||void 0===a||a.focus():p.push("/docs")}}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[p,h]),a)?(0,r.jsx)(d,{}):(0,r.jsxs)(P,{children:[(0,r.jsx)(ed,{board:f}),(0,r.jsxs)(I,{children:[(0,r.jsx)($,{summary:o,projects:l,activeProject:c,liveIndicator:u,onProjectChange:m}),(0,r.jsx)("main",{className:"flex-1 overflow-y-auto",children:t}),(0,r.jsx)(ef,{open:j,onClose:()=>w(!1),onOpenDoc:x,onNewDoc:()=>{w(!1),y(!0)},rootParam:b}),(0,r.jsx)(ex.t,{open:N,onOpenChange:y,rootParam:b,onDocCreated:async e=>{await x(e)}}),g&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"fixed inset-0 z-50 bg-black/60",onClick:()=>v(!1)}),(0,r.jsxs)("div",{className:"fixed z-50 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-80 bg-surface border border-border rounded-xl shadow-2xl p-5",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,r.jsx)("span",{className:"font-display text-sm font-semibold text-txt",children:"Keyboard shortcuts"}),(0,r.jsx)("button",{onClick:()=>v(!1),className:"text-muted hover:text-txt transition-colors text-lg leading-none",children:"\xd7"})]}),(0,r.jsx)("table",{className:"w-full text-xs",children:(0,r.jsx)("tbody",{children:ep.map(e=>{let{key:t,description:a}=e;return(0,r.jsxs)("tr",{className:"border-t border-border first:border-0",children:[(0,r.jsx)("td",{className:"py-1.5 pr-4",children:(0,r.jsx)("kbd",{className:"font-mono bg-surface2 border border-border rounded px-1.5 py-0.5 text-accent",children:t})}),(0,r.jsx)("td",{className:"py-1.5 text-muted",children:a})]},t)})})})]})]})]})]})}}},function(e){e.O(0,[490,7725,7697,5179,6441,4170,6842,1744],function(){return e(e.s=3921)}),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7821],{31852:function(e,t,s){Promise.resolve().then(s.bind(s,60155))},60155:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return et}});var a=s(59533),r=s(31229),n=s(11180),c=s(10241),l=s(20508),i=s(12794),o=s(50533),d=s(78764),m=s(52284),x=s(56622),u=s(28260),p=s(42217),h=s(21263),b=s(72036),g=s(4864),f=s(27881),j=s(81463),v=s(73473),N=s(94297),y=s(63542),w=s(8892),k=s(93762),C=s(26422),S=s(61193);let T=[{id:"nextjs-production",name:"Next.js Production",description:"Complete setup for a production Next.js application with CI/CD, Docker, and code quality tools",projectTypes:["web-app"],templateIds:["claude-md","architecture-overview","contributing","security","pr-template","changelog","testing","onboarding","dockerfile","docker-compose","dockerignore","env-example","ci-workflow","cd-workflow","dependabot-config","eslintrc","prettierrc","tsconfig-strict","vscode-settings","vscode-extensions"]},{id:"api-backend",name:"API Backend",description:"Production API service with OpenAPI spec, Docker, monitoring, and runbook",projectTypes:["api-backend"],templateIds:["claude-md","architecture-overview","api-reference","openapi","runbook","contributing","security","pr-template","changelog","testing","dockerfile","docker-compose","dockerignore","env-example","ci-workflow","cd-workflow","health-check-doc","slo-doc"]},{id:"library-sdk",name:"Library / SDK",description:"Open-source library with strict TypeScript, changelog, and release automation",projectTypes:["library"],templateIds:["claude-md","contributing","security","pr-template","changelog","testing","tsconfig-strict","eslintrc","prettierrc","editorconfig","commitlint","dependabot-config","release-workflow","codeowners"]},{id:"cli-tool",name:"CLI Tool",description:"Command-line tool with Makefile automation and release workflow",projectTypes:["cli-tool"],templateIds:["claude-md","contributing","security","pr-template","changelog","testing","makefile","env-example","ci-workflow","release-workflow","commitlint","editorconfig","eslintrc"]},{id:"monorepo",name:"Monorepo",description:"Multi-package monorepo with code ownership, commit conventions, and architecture docs",projectTypes:["monorepo"],templateIds:["claude-md","architecture-overview","contributing","security","pr-template","changelog","testing","onboarding","codeowners","commitlint","ci-workflow","cd-workflow","dockerfile","env-example","eslintrc","lint-staged"]},{id:"ai-first",name:"AI-First",description:"Cross-cutting preset for projects that heavily use AI coding agents",projectTypes:[],templateIds:["claude-md","agents-md","gemini-md","cursorrules","copilot-instructions","contributing","pr-template","changelog"]},{id:"minimal",name:"Minimal",description:"Just the essentials — get started fast with 5 key files",projectTypes:[],templateIds:["claude-md","contributing","pr-template","changelog","env-example"]}],Z={"ai-agent":"AI Agent Config",github:"GitHub",process:"Process Docs",technical:"Technical Docs",infrastructure:"Infrastructure","github-actions":"GitHub Actions","code-quality":"Code Quality",monitoring:"Monitoring"},P={"ai-agent":x.Z,github:u.Z,process:p.Z,technical:h.Z,infrastructure:b.Z,"github-actions":p.Z,"code-quality":l.Z,monitoring:g.Z},I={"claude-md":x.Z,"agents-md":x.Z,"gemini-md":x.Z,cursorrules:f.Z,windsurfrules:f.Z,"copilot-instructions":x.Z,contributing:u.Z,security:j.Z,"pr-template":u.Z,"bug-report":g.Z,"feature-request":h.Z,changelog:v.Z,deployment:p.Z,testing:l.Z,glossary:N.Z,prd:h.Z,"architecture-overview":y.Z,"api-reference":b.Z,runbook:N.Z,adr:g.Z,onboarding:w.Z,database:k.Z,openapi:b.Z,"meeting-notes":C.Z,blank:h.Z},A=function(e){let t=[],s=new Map;for(let a of e)s.has(a.category)||(t.push(a.category),s.set(a.category,[])),s.get(a.category).push(a);return t.map(e=>{var t;return{category:e,displayName:null!==(t=Z[e])&&void 0!==t?t:e,items:s.get(e)}})}(S.x);function L(e){let{selected:t,onChange:s,projectType:n}=e,[c,i]=(0,r.useState)("recommended"),o=e=>t.some(t=>t.id===e),d=e=>{o(e.id)?s(t.filter(t=>t.id!==e.id)):s([...t,{id:e.id,name:e.name,path:e.defaultPath}])},x=e=>{let a=A.find(t=>t.category===e);if(a){if(a.items.every(e=>o(e.id)))s(t.filter(e=>!a.items.some(t=>t.id===e.id)));else{let e=[...t];a.items.forEach(t=>{o(t.id)||e.push({id:t.id,name:t.name,path:t.defaultPath})}),s(e)}}},u=T.filter(e=>0===e.projectTypes.length||e.projectTypes.includes(null!=n?n:""));return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-xl font-semibold text-txt mb-2",children:"Select Templates"}),(0,a.jsx)("p",{className:"text-muted",children:"Choose which documentation files to generate for your project."})]}),(0,a.jsxs)("div",{className:"flex gap-1 overflow-x-auto pb-2 border-b border-border",children:[(0,a.jsx)("button",{onClick:()=>i("recommended"),className:(0,m.cn)("px-3 py-1.5 text-sm rounded-md whitespace-nowrap transition-colors","recommended"===c?"bg-accent text-white":"text-muted hover:text-txt"),children:"⭐ Recommended"}),A.map(e=>(0,a.jsx)("button",{onClick:()=>i(e.category),className:(0,m.cn)("px-3 py-1.5 text-sm rounded-md whitespace-nowrap transition-colors",c===e.category?"bg-accent text-white":"text-muted hover:text-txt"),children:e.displayName},e.category))]}),"recommended"===c&&(0,a.jsxs)("div",{className:"space-y-4",children:[0===u.length&&(0,a.jsx)("p",{className:"text-muted text-sm",children:"No presets match your project type. Select templates manually from the tabs above."}),u.map(e=>{let t=e.templateIds.every(e=>o(e));return(0,a.jsx)("div",{className:"p-4 rounded-lg border border-border hover:border-accent/50 transition-colors",children:(0,a.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"font-medium text-txt",children:e.name}),(0,a.jsx)("div",{className:"text-sm text-muted mt-1",children:e.description}),(0,a.jsxs)("div",{className:"text-xs text-accent/70 mt-1",children:[e.templateIds.length," templates"]})]}),(0,a.jsx)("button",{onClick:()=>{s(e.templateIds.map(e=>S.x.find(t=>t.id===e)).filter(e=>void 0!==e).map(e=>({id:e.id,name:e.name,path:e.defaultPath})))},className:(0,m.cn)("shrink-0 px-3 py-1.5 text-sm rounded-lg border transition-colors",t?"border-accent bg-accent/10 text-accent":"border-border hover:border-accent text-txt"),children:t?"✓ Selected":"Select bundle"})]})},e.id)})]}),"recommended"!==c&&(()=>{let e=A.find(e=>e.category===c);return e?(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("h3",{className:"text-sm font-medium text-muted uppercase tracking-wider",children:e.displayName}),(0,a.jsx)("button",{onClick:()=>x(e.category),className:"text-xs text-accent hover:text-accent/80 transition-colors",children:e.items.every(e=>o(e.id))?"Deselect all":"Select all"})]}),(0,a.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-3",children:e.items.map(e=>{var t;let s=null!==(t=I[e.id])&&void 0!==t?t:P[e.category],r=o(e.id);return(0,a.jsx)("button",{onClick:()=>d(e),className:(0,m.cn)("p-3 rounded-lg border text-left transition-all",r?"border-accent bg-accent/10":"border-border hover:border-accent/50"),children:(0,a.jsxs)("div",{className:"flex items-start gap-2",children:[(0,a.jsx)("div",{className:(0,m.cn)("w-8 h-8 rounded-lg flex items-center justify-center shrink-0",r?"bg-accent/20":"bg-surface2"),children:(0,a.jsx)(s,{className:(0,m.cn)("w-4 h-4",r?"text-accent":"text-muted")})}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"font-medium text-sm text-txt truncate",children:e.name}),(0,a.jsx)("div",{className:"text-xs text-muted truncate",children:e.description})]}),r&&(0,a.jsx)(l.Z,{className:"w-4 h-4 text-accent shrink-0"})]})},e.id)})})]}):null})(),(0,a.jsxs)("div",{className:"text-sm text-muted",children:[t.length," template",1!==t.length?"s":""," selected"]})]})}var D=s(13191);let R=[{value:"web-app",label:"Web Application"},{value:"api-backend",label:"API / Backend"},{value:"cli-tool",label:"CLI Tool"},{value:"library",label:"Library / SDK"},{value:"mobile-app",label:"Mobile App"},{value:"monorepo",label:"Monorepo"}];function F(e){let{answers:t,onChange:s}=e,r=(e,a)=>{s({...t,[e]:a})};return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-xl font-semibold text-txt mb-2",children:"Basic Information"}),(0,a.jsx)("p",{className:"text-muted",children:"Tell us about your project to customize the documentation."})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:["Project Name ",(0,a.jsx)("span",{className:"text-red-400",children:"*"})]}),(0,a.jsx)(D.I,{value:t.projectName,onChange:e=>r("projectName",e.target.value),placeholder:"My Awesome Project",className:"bg-surface2"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:"Project Type"}),(0,a.jsx)("select",{value:t.projectType,onChange:e=>r("projectType",e.target.value),className:"w-full h-10 px-3 rounded-md border border-border bg-surface2 text-txt text-sm focus:outline-none focus:ring-2 focus:ring-accent/50",children:R.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:["Repository URL ",(0,a.jsx)("span",{className:"text-muted",children:"(optional)"})]}),(0,a.jsx)(D.I,{value:t.repoUrl,onChange:e=>r("repoUrl",e.target.value),placeholder:"https://github.com/org/repo",className:"bg-surface2"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:"Description"}),(0,a.jsx)("textarea",{value:t.description,onChange:e=>r("description",e.target.value),placeholder:"A brief description of what your project does...",rows:3,className:"w-full px-3 py-2 rounded-md border border-border bg-surface2 text-txt text-sm resize-none focus:outline-none focus:ring-2 focus:ring-accent/50"})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:["Key Features ",(0,a.jsx)("span",{className:"text-muted",children:"(optional)"})]}),(0,a.jsx)(D.I,{value:t.keyFeatures,onChange:e=>r("keyFeatures",e.target.value),placeholder:"Auth, payments, real-time sync, etc.",className:"bg-surface2"}),(0,a.jsx)("p",{className:"text-xs text-muted mt-1",children:"Comma-separated list of main features"})]})]})]})}var M=s(76877),E=s(46850);let G=[{id:"language",label:"Language",techs:["TypeScript","JavaScript","Python","Go","Rust","Java","C#","Ruby","Kotlin","Swift","PHP","Elixir"]},{id:"frontend",label:"Frontend",techs:["React","Vue","Angular","Next.js","Nuxt","SvelteKit","Remix","Astro","Vite","Tailwind CSS","React Native","Expo"]},{id:"backend",label:"Backend",techs:["Node.js","Express","Fastify","NestJS","FastAPI","Django","Flask","Rails","Spring Boot","Go/Fiber","Rust/Actix","Hono","Bun"]},{id:"database",label:"Database",techs:["PostgreSQL","MySQL","MongoDB","Redis","SQLite","Supabase","PlanetScale","DynamoDB","Cassandra","Prisma","Drizzle","TypeORM"]},{id:"devops",label:"DevOps",techs:["Docker","Kubernetes","GitHub Actions","GitLab CI","CircleCI","Jenkins","Terraform","Pulumi","AWS","GCP","Azure","Vercel","Railway","Fly.io","Render"]},{id:"testing",label:"Testing",techs:["Jest","Vitest","Playwright","Cypress","Testing Library","pytest","RSpec","Mocha","k6"]},{id:"tools",label:"Tools",techs:["ESLint","Prettier","Husky","lint-staged","Storybook","Turborepo","pnpm","Nx","GraphQL","tRPC","Zod","Stripe"]}];G.flatMap(e=>e.techs);let z=[{id:"nextjs",label:"Next.js Full-Stack",techs:["TypeScript","Next.js","React","Tailwind CSS","PostgreSQL","Prisma"]},{id:"python-api",label:"Python API",techs:["Python","FastAPI","PostgreSQL","Redis","Docker"]},{id:"react-native",label:"React Native",techs:["TypeScript","React Native","Expo"]},{id:"go-service",label:"Go Microservice",techs:["Go","Go/Fiber","PostgreSQL","Docker","Kubernetes"]},{id:"sveltekit",label:"SvelteKit",techs:["TypeScript","SvelteKit","Tailwind CSS","SQLite"]}];function B(e){var t,s;let{value:n,onChange:c}=e,[l,i]=(0,r.useState)(""),[o,d]=(0,r.useState)("language"),x=l.trim().length>0,u=e=>{let t=e.filter(e=>!n.includes(e));t.length>0&&c([...n,...t])},p=e=>{n.includes(e)?c(n.filter(t=>t!==e)):c([...n,e])},h=e=>{let t=e.trim();t&&!n.includes(t)&&c([...n,t]),i("")},b=x?G.map(e=>({...e,items:e.techs.filter(e=>e.toLowerCase().includes(l.toLowerCase()))})).filter(e=>e.items.length>0):[],g=null!==(s=null===(t=G.find(e=>e.id===o))||void 0===t?void 0:t.techs)&&void 0!==s?s:[],f=G.flatMap(e=>e.techs).some(e=>e.toLowerCase()===l.toLowerCase()),j=x&&!f&&l.trim().length>0;return(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs font-medium text-muted mb-2 uppercase tracking-wider",children:"Quick Presets"}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:z.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>u(e.techs),className:"px-3 py-1 rounded-md border border-border text-xs text-txt hover:border-accent hover:text-accent transition-colors",children:e.label},e.id))})]}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)(M.Z,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted pointer-events-none"}),(0,a.jsx)("input",{value:l,onChange:e=>i(e.target.value),onKeyDown:e=>{"Enter"===e.key?(e.preventDefault(),!G.flatMap(e=>e.techs).some(e=>e.toLowerCase()===l.toLowerCase())&&l.trim()&&h(l)):"Escape"===e.key&&i("")},placeholder:"Search technologies...",className:"w-full pl-9 pr-3 py-2 rounded-md border border-border bg-surface2 text-txt text-sm outline-none placeholder:text-muted focus:border-accent transition-colors"}),x&&(0,a.jsx)("button",{type:"button",onClick:()=>i(""),className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted hover:text-txt transition-colors",children:(0,a.jsx)(E.Z,{className:"w-4 h-4"})})]}),!x&&(0,a.jsx)("div",{className:"flex gap-1 overflow-x-auto pb-1 scrollbar-hide",children:G.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>d(e.id),className:(0,m.cn)("px-3 py-1 rounded-md text-xs font-medium whitespace-nowrap transition-colors flex-shrink-0",o===e.id?"bg-accent text-white":"bg-surface2 text-muted hover:text-txt hover:bg-surface"),children:e.label},e.id))}),x?(0,a.jsxs)("div",{className:"space-y-3",children:[b.map(e=>(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"text-xs font-medium text-muted uppercase tracking-wider mb-1.5",children:e.label}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:e.items.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>p(e),className:(0,m.cn)("px-3 py-1 rounded-full text-sm border transition-colors",n.includes(e)?"bg-accent/15 border-accent text-accent":"bg-surface2 border-border text-txt hover:border-accent/50 hover:text-accent/80"),children:e},e))})]},e.id)),j&&(0,a.jsxs)("p",{className:"text-xs text-muted",children:["Press ",(0,a.jsx)("kbd",{className:"px-1 py-0.5 rounded bg-surface border border-border text-xs",children:"Enter"}),' to add "',l,'"']})]}):(0,a.jsx)("div",{className:"flex flex-wrap gap-2",children:g.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>p(e),className:(0,m.cn)("px-3 py-1 rounded-full text-sm border transition-colors",n.includes(e)?"bg-accent/15 border-accent text-accent":"bg-surface2 border-border text-txt hover:border-accent/50 hover:text-accent/80"),children:e},e))}),n.length>0&&(0,a.jsxs)("div",{className:"pt-2 border-t border-border",children:[(0,a.jsxs)("p",{className:"text-xs font-medium text-muted mb-2",children:["Selected (",n.length,")"]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-1.5",children:n.map(e=>(0,a.jsxs)("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-accent/15 text-accent text-sm font-medium",children:[e,(0,a.jsx)("button",{type:"button",onClick:()=>c(n.filter(t=>t!==e)),className:"hover:text-accent/70 transition-colors",children:(0,a.jsx)(E.Z,{className:"w-3 h-3"})})]},e))})]})]})}let O=[{value:"solo",label:"Solo"},{value:"2-5",label:"2–5"},{value:"6-15",label:"6–15"},{value:"15+",label:"15+"}],Q=[{value:"",label:"Not sure / other"},{value:"Jest",label:"Jest"},{value:"Vitest",label:"Vitest"},{value:"pytest",label:"pytest"},{value:"RSpec",label:"RSpec"},{value:"Mocha",label:"Mocha"}],J=[{value:"",label:"Not specified"},{value:"trunk-based",label:"Trunk-based"},{value:"gitflow",label:"Gitflow"},{value:"feature-branch",label:"Feature branches"}],K=["GitHub Actions","GitLab CI","CircleCI","Jenkins","Buildkite","Travis CI"],W=["ESLint","Prettier","Biome","Stylelint","oxc","Rome"],H=["Vercel","AWS","GCP","Azure","Fly.io","Railway","Render","Docker","Kubernetes","Heroku"];function U(e){let{answers:t,onChange:s}=e,r=(e,a)=>{s({...t,[e]:a})};return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-xl font-semibold text-txt mb-2",children:"Team & Conventions"}),(0,a.jsx)("p",{className:"text-muted",children:"Help us tailor documentation to your team. All fields are optional."})]}),(0,a.jsxs)("div",{className:"space-y-5",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-txt mb-2",children:"Team Size"}),(0,a.jsx)("div",{className:"flex gap-2 flex-wrap",children:O.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>r("teamSize",t.teamSize===e.value?"":e.value),className:(0,m.cn)("px-4 py-2 rounded-lg border text-sm font-medium transition-all",t.teamSize===e.value?"border-accent bg-accent/10 text-accent":"border-border text-txt hover:border-accent/50"),children:e.label},e.value))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:"Linting & Formatting"}),(0,a.jsx)("div",{className:"flex gap-2 flex-wrap mb-2",children:W.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>{r("linting",t.linting.includes(e)?t.linting.filter(t=>t!==e):[...t.linting,e])},className:(0,m.cn)("px-3 py-1.5 rounded-md border text-sm transition-all",t.linting.includes(e)?"border-accent bg-accent/10 text-accent":"border-border text-txt hover:border-accent/50"),children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:"Test Framework"}),(0,a.jsx)("select",{value:t.testFramework,onChange:e=>r("testFramework",e.target.value),className:"w-full h-10 px-3 rounded-md border border-border bg-surface2 text-txt text-sm focus:outline-none focus:ring-2 focus:ring-accent/50",children:Q.map(e=>(0,a.jsx)("option",{value:e.value,children:e.label},e.value))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:"CI/CD"}),(0,a.jsx)("div",{className:"flex gap-2 flex-wrap mb-2",children:K.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>{r("ciCd",t.ciCd.includes(e)?t.ciCd.filter(t=>t!==e):[...t.ciCd,e])},className:(0,m.cn)("px-3 py-1.5 rounded-md border text-sm transition-all",t.ciCd.includes(e)?"border-accent bg-accent/10 text-accent":"border-border text-txt hover:border-accent/50"),children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-txt mb-2",children:"Branch Strategy"}),(0,a.jsx)("div",{className:"flex gap-2 flex-wrap",children:J.filter(e=>e.value).map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>r("branchStrategy",t.branchStrategy===e.value?"":e.value),className:(0,m.cn)("px-4 py-2 rounded-lg border text-sm font-medium transition-all",t.branchStrategy===e.value?"border-accent bg-accent/10 text-accent":"border-border text-txt hover:border-accent/50"),children:e.label},e.value))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:"Deployment Target"}),(0,a.jsx)("div",{className:"flex gap-2 flex-wrap",children:H.map(e=>(0,a.jsx)("button",{type:"button",onClick:()=>{r("deploymentTarget",t.deploymentTarget.includes(e)?t.deploymentTarget.filter(t=>t!==e):[...t.deploymentTarget,e])},className:(0,m.cn)("px-3 py-1.5 rounded-md border text-sm transition-all",t.deploymentTarget.includes(e)?"border-accent bg-accent/10 text-accent":"border-border text-txt hover:border-accent/50"),children:e},e))})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"block text-sm font-medium text-txt mb-1.5",children:["Additional Conventions ",(0,a.jsx)("span",{className:"text-muted",children:"(optional)"})]}),(0,a.jsx)(D.I,{value:t.conventions,onChange:e=>r("conventions",e.target.value),placeholder:"Conventional Commits, semantic versioning, etc.",className:"bg-surface2"})]})]})]})}var q=s(9232),V=s(62778),_=s(5763);function Y(e){let{files:t,onWrite:s,isWriting:n,mode:c,onModeChange:l}=e,[o,d]=(0,r.useState)(new Set),x=e=>{d(t=>{let s=new Set(t);return s.has(e)?s.delete(e):s.add(e),s})},u=t.filter(e=>!e.skipped),p=t.filter(e=>e.skipped);return 0===t.length?(0,a.jsxs)("div",{className:"text-center py-12",children:[(0,a.jsx)(q.Z,{className:"w-12 h-12 text-muted mx-auto mb-4"}),(0,a.jsx)("h3",{className:"text-lg font-medium text-txt mb-2",children:"No files generated"}),(0,a.jsx)("p",{className:"text-muted",children:"Something went wrong. Please go back and try again."})]}):(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-xl font-semibold text-txt mb-2",children:"Preview"}),(0,a.jsx)("p",{className:"text-muted",children:"Review the files that will be created."})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1 bg-surface2 rounded-lg p-1",children:[(0,a.jsx)("button",{onClick:()=>l("quick"),className:(0,m.cn)("px-3 py-1 text-sm rounded-md transition-colors","quick"===c?"bg-surface text-txt shadow-sm":"text-muted hover:text-txt"),children:"Quick"}),(0,a.jsx)("button",{onClick:()=>l("ai"),className:(0,m.cn)("px-3 py-1 text-sm rounded-md transition-colors","ai"===c?"bg-surface text-txt shadow-sm":"text-muted hover:text-txt"),children:"AI"})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("h3",{className:"text-sm font-medium text-muted uppercase tracking-wider",children:["Files to create (",u.length,")"]}),(0,a.jsx)("div",{className:"border border-border rounded-lg divide-y divide-border overflow-hidden",children:u.map(e=>{let t=o.has(e.path),s=e.path.endsWith(".md");return(0,a.jsxs)("div",{children:[(0,a.jsxs)("button",{onClick:()=>x(e.path),className:"w-full flex items-center gap-3 p-3 hover:bg-surface2 transition-colors",children:[t?(0,a.jsx)(V.Z,{className:"w-4 h-4 text-muted shrink-0"}):(0,a.jsx)(i.Z,{className:"w-4 h-4 text-muted shrink-0"}),(0,a.jsx)(h.Z,{className:"w-4 h-4 text-accent shrink-0"}),(0,a.jsx)("span",{className:"text-sm font-mono text-txt",children:e.path})]}),t&&(0,a.jsx)("div",{className:"px-3 pb-3",children:s?(0,a.jsx)("div",{className:"prose prose-invert max-w-none p-3 bg-surface2 rounded-lg max-h-64 overflow-y-auto text-sm",children:(0,a.jsx)(_.$,{content:e.content.slice(0,3e3)})}):(0,a.jsxs)("pre",{className:"p-3 bg-surface2 rounded-lg text-xs text-muted overflow-x-auto max-h-64 overflow-y-auto",children:[e.content.slice(0,2e3),e.content.length>2e3&&"\n\n...(truncated)"]})})]},e.path)})})]}),p.length>0&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("h3",{className:"text-sm font-medium text-muted uppercase tracking-wider",children:["Skipped (",p.length,")"]}),(0,a.jsx)("div",{className:"bg-amber-500/10 border border-amber-500/30 rounded-lg p-3 space-y-1",children:p.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,a.jsx)(q.Z,{className:"w-4 h-4 text-amber-400 shrink-0"}),(0,a.jsx)("span",{className:"font-mono text-amber-400",children:e.path}),(0,a.jsxs)("span",{className:"text-amber-400/70",children:["— ",e.reason||"already exists"]})]},e.path))})]}),(0,a.jsxs)("div",{className:"text-sm text-muted",children:[u.length," file",1!==u.length?"s":""," will be created",p.length>0&&", ".concat(p.length," skipped")]})]})}let $=[{id:"welcome",title:"Welcome"},{id:"basic-info",title:"Basic Info"},{id:"templates",title:"Templates"},{id:"tech-stack",title:"Tech Stack"},{id:"team",title:"Team"},{id:"preview",title:"Preview"},{id:"complete",title:"Complete"}],X=$.length-1;function ee(){let{activeProject:e,rootParam:t,projects:s}=(0,n.q)(),x=s.find(t=>t.root===e),[u,p]=(0,r.useState)(0),[h,b]=(0,r.useState)([]),[g,f]=(0,r.useState)({projectName:"",projectType:"web-app",description:"",repoUrl:"",techStackTags:[],keyFeatures:"",teamSize:"",linting:[],testFramework:"",ciCd:[],branchStrategy:"",deploymentTarget:[],conventions:""}),[j,v]=(0,r.useState)("quick"),[N,y]=(0,r.useState)([]),[w,k]=(0,r.useState)(!1),[C,Z]=(0,r.useState)([]);(0,r.useEffect)(()=>{!async function(){try{let e=await fetch("/api/docs".concat(t)),s=(await e.json()).filter(e=>"CLAUDE.md"===e.path||"AGENTS.md"===e.path).map(e=>e.path);Z(s)}catch(e){}}()},[t]);let P=e=>{b(e.templateIds.map(e=>S.x.find(t=>t.id===e)).filter(e=>void 0!==e).map(e=>({id:e.id,name:e.name,path:e.defaultPath}))),p(1)},I=async()=>{if(4===u){k(!0);try{let e=await fetch("/api/setup/generate".concat(t),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({templates:h,answers:g,mode:j})}),s=await e.json();y(s.files||[])}catch(e){y([])}k(!1)}p(e=>Math.min(e+1,X))},A=async()=>{k(!0);try{await fetch("/api/setup/write".concat(t),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({files:N})}),p(6)}catch(e){}k(!1)};return(0,a.jsxs)("div",{className:"min-h-screen bg-bg flex flex-col",children:[(0,a.jsx)("div",{className:"border-b border-border bg-surface",children:(0,a.jsxs)("div",{className:"max-w-3xl mx-auto px-6 py-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("h1",{className:"text-lg font-semibold text-txt",children:"Setup Wizard"}),(0,a.jsxs)("span",{className:"text-sm text-muted",children:["Step ",u+1," of ",$.length]})]}),(0,a.jsx)("div",{className:"flex gap-1",children:$.map((e,t)=>(0,a.jsx)("div",{className:(0,m.cn)("h-1 flex-1 rounded-full transition-colors",t<=u?"bg-accent":"bg-border")},e.id))}),(0,a.jsx)("div",{className:"flex gap-1 mt-1",children:$.map((e,t)=>(0,a.jsx)("div",{className:"flex-1 text-center",children:t===u&&(0,a.jsx)("span",{className:"text-xs text-accent",children:e.title})},e.id))})]})}),(0,a.jsx)("div",{className:"flex-1 overflow-y-auto",children:(0,a.jsxs)("div",{className:"max-w-3xl mx-auto px-6 py-8",children:[0===u&&(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"text-center space-y-4",children:[(0,a.jsx)("div",{className:"w-16 h-16 rounded-2xl bg-accent/10 flex items-center justify-center mx-auto",children:(0,a.jsx)(c.Z,{className:"w-8 h-8 text-accent"})}),(0,a.jsx)("h2",{className:"text-2xl font-bold text-txt",children:"Welcome to VibeDoc"}),(0,a.jsx)("p",{className:"text-muted max-w-md mx-auto",children:"Let's set up your project documentation. You can generate AI-optimized docs like CLAUDE.md, architecture overviews, and more."})]}),x&&(0,a.jsxs)("div",{className:"bg-surface border border-border rounded-lg p-4",children:[(0,a.jsx)("div",{className:"text-sm text-muted mb-1",children:"Current Project"}),(0,a.jsx)("div",{className:"font-medium text-txt",children:x.name}),(0,a.jsx)("div",{className:"text-xs text-muted mt-1 font-mono",children:x.root})]}),C.length>0&&(0,a.jsxs)("div",{className:"bg-amber-500/10 border border-amber-500/30 rounded-lg p-4",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-amber-400 mb-1",children:"Existing files detected"}),(0,a.jsxs)("div",{className:"text-sm text-amber-400/80",children:[C.join(", ")," already exist. They will be skipped during generation."]})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{className:"text-sm font-medium text-txt mb-3",children:"Quick Start with a Preset"}),(0,a.jsx)("div",{className:"grid grid-cols-2 gap-3",children:["nextjs-production","api-backend","minimal","ai-first"].map(e=>{let t=T.find(t=>t.id===e);return t?(0,a.jsxs)("button",{onClick:()=>P(t),className:"p-3 rounded-lg border border-border hover:border-accent/50 text-left transition-all",children:[(0,a.jsx)("div",{className:"font-medium text-sm text-txt",children:t.name}),(0,a.jsx)("div",{className:"text-xs text-muted mt-1",children:t.description})]},e):null})})]})]}),1===u&&(0,a.jsx)(F,{answers:g,onChange:f}),2===u&&(0,a.jsx)(L,{selected:h,onChange:b,projectType:g.projectType}),3===u&&(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-xl font-semibold text-txt mb-2",children:"Tech Stack"}),(0,a.jsx)("p",{className:"text-muted",children:"Add the technologies your project uses. Search or type custom ones."})]}),(0,a.jsx)(B,{value:g.techStackTags,onChange:e=>f(t=>({...t,techStackTags:e}))}),g.techStackTags.length>0&&(0,a.jsxs)("p",{className:"text-sm text-muted",children:[g.techStackTags.length," technolog",1!==g.techStackTags.length?"ies":"y"," added"]})]}),4===u&&(0,a.jsx)(U,{answers:g,onChange:f}),5===u&&(0,a.jsx)(Y,{files:N,onWrite:A,isWriting:w,mode:j,onModeChange:v}),6===u&&(0,a.jsxs)("div",{className:"text-center space-y-6",children:[(0,a.jsx)("div",{className:"w-16 h-16 rounded-full bg-green-500/10 flex items-center justify-center mx-auto",children:(0,a.jsx)(l.Z,{className:"w-8 h-8 text-green-500"})}),(0,a.jsx)("h2",{className:"text-2xl font-bold text-txt",children:"Setup Complete!"}),(0,a.jsx)("p",{className:"text-muted max-w-md mx-auto",children:"Your documentation files have been created. You can now view and edit them in the Docs tab."}),(0,a.jsxs)("div",{className:"bg-surface border border-border rounded-lg p-4 text-left max-w-md mx-auto",children:[(0,a.jsx)("div",{className:"text-sm font-medium text-txt mb-2",children:"Next steps:"}),(0,a.jsxs)("ul",{className:"text-sm text-muted space-y-2",children:[(0,a.jsx)("li",{children:"• Review generated files in the Docs tab"}),(0,a.jsx)("li",{children:"• Edit content to match your project specifics"}),(0,a.jsx)("li",{children:"• Connect your coding agent via MCP for AI assistance"})]})]}),(0,a.jsxs)("a",{href:"/docs",className:"inline-flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors",children:["Go to Docs",(0,a.jsx)(i.Z,{className:"w-4 h-4"})]})]})]})}),u<X&&(0,a.jsx)("div",{className:"border-t border-border bg-surface",children:(0,a.jsxs)("div",{className:"max-w-3xl mx-auto px-6 py-4 flex items-center justify-between",children:[(0,a.jsxs)("button",{onClick:()=>{p(e=>Math.max(e-1,0))},disabled:0===u,className:(0,m.cn)("flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-colors",0===u?"text-muted cursor-not-allowed":"text-txt hover:bg-surface2"),children:[(0,a.jsx)(o.Z,{className:"w-4 h-4"}),"Back"]}),5===u?(0,a.jsx)("button",{onClick:A,disabled:w||0===N.length,className:"flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors disabled:opacity-50",children:w?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.Z,{className:"w-4 h-4 animate-spin"}),"Writing..."]}):(0,a.jsxs)(a.Fragment,{children:["Write Files",(0,a.jsx)(l.Z,{className:"w-4 h-4"})]})}):(0,a.jsx)("button",{onClick:I,disabled:!(()=>{switch(u){case 0:default:return!0;case 1:return""!==g.projectName.trim();case 2:return h.length>0}})()||w,className:"flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors disabled:opacity-50",children:w?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(d.Z,{className:"w-4 h-4 animate-spin"}),"Generating..."]}):(0,a.jsxs)(a.Fragment,{children:[4===u?"Generate":"Next",(0,a.jsx)(i.Z,{className:"w-4 h-4"})]})})]})})]})}function et(){return(0,a.jsx)(ee,{})}},5763:function(e,t,s){"use strict";s.d(t,{$:function(){return l}});var a=s(59533),r=s(31229),n=s(10228),c=s(52284);function l(e){let{content:t,className:l}=e,i=n.TU.parse(t).replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/\son\w+="[^"]*"/gi,"").replace(/\son\w+='[^']*'/gi,""),o=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let e=o.current;if(!e)return;let t=!1,a=setTimeout(()=>{t||Promise.all([s.e(4655),s.e(5218)]).then(s.bind(s,45218)).then(s=>{if(t||!e.isConnected)return;let a=Array.from(e.querySelectorAll(".mermaid:not([data-processed])"));0!==a.length&&(s.default.initialize({startOnLoad:!1,theme:"dark",darkMode:!0,securityLevel:"antiscript"}),s.default.run({nodes:a,suppressErrors:!0}).catch(e=>{console.error("[mermaid]",e)}))})},120);return()=>{t=!0,clearTimeout(a)}},[i]),(0,a.jsx)("div",{ref:o,className:(0,c.cn)("prose-dark",l),dangerouslySetInnerHTML:{__html:i}})}n.TU.setOptions({gfm:!0,breaks:!1}),n.TU.use({renderer:{code(e,t){if("mermaid"===t){let t=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return'<div class="mermaid">'.concat(t,"</div>")}return!1}}}),n.TU.use({renderer:{heading(e,t){let s=e.toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");return"<h".concat(t,' id="').concat(s,'">').concat(e,"</h").concat(t,">\n")}}})}},function(e){e.O(0,[490,228,2401,5179,4170,6842,1744],function(){return e(e.s=31852)}),_N_E=e.O()}]);
@@ -0,0 +1,5 @@
1
+ @import url("https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Mono:wght@300;400;500&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;1,9..40,300&display=swap");*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
2
+
3
+ /*
4
+ ! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
5
+ */*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans),system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-mono),monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--sidebar-background:0 0% 98%;--sidebar-foreground:240 5.3% 26.1%;--sidebar-primary:240 5.9% 10%;--sidebar-primary-foreground:0 0% 98%;--sidebar-accent:240 4.8% 95.9%;--sidebar-accent-foreground:240 5.9% 10%;--sidebar-border:220 13% 91%;--sidebar-ring:217.2 91.2% 59.8%}.dark{--sidebar-background:240 5.9% 10%;--sidebar-foreground:240 4.8% 95.9%;--sidebar-primary:224.3 76.3% 48%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:240 3.7% 15.9%;--sidebar-accent-foreground:240 4.8% 95.9%;--sidebar-border:240 3.7% 15.9%;--sidebar-ring:217.2 91.2% 59.8%}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-8{bottom:2rem}.left-0{left:0}.left-0\.5{left:.125rem}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-4{left:1rem}.left-6{left:1.5rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-20{top:5rem}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-ml-1{margin-left:-.25rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.size-4{width:1rem;height:1rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.max-h-\[420px\]{max-height:420px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[calc\(50vh-44px\)\]{max-height:calc(50vh - 44px)}.max-h-\[calc\(70vh-44px\)\]{max-height:calc(70vh - 44px)}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.min-h-0{min-height:0}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[1px\]{width:1px}.w-\[420px\]{width:420px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-5{min-width:1.25rem}.min-w-\[8rem\]{min-width:8rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-\[--skeleton-width\]{max-width:var(--skeleton-width)}.max-w-\[200px\]{max-width:200px}.max-w-\[40\%\]{max-width:40%}.max-w-\[60px\]{max-width:60px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.origin-bottom-right{transform-origin:bottom right}.origin-top-right{transform-origin:top right}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-translate-x-px{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x:-1px}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-x-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-px{--tw-translate-x:1px}.translate-x-px,.translate-y-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1}.scale-110,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .3s ease}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulseDot{0%,to{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}.animate-pulse-dot{animation:pulseDot 2s ease-in-out infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(34 34 46/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-accent{--tw-border-opacity:1;border-color:rgb(124 106 247/var(--tw-border-opacity,1))}.border-accent\/20{border-color:rgba(124,106,247,.2)}.border-accent\/30{border-color:rgba(124,106,247,.3)}.border-amber\/30{border-color:hsla(24,90%,69%,.3)}.border-amber\/40{border-color:hsla(24,90%,69%,.4)}.border-border{--tw-border-opacity:1;border-color:rgb(34 34 46/var(--tw-border-opacity,1))}.border-border\/50{border-color:rgba(34,34,46,.5)}.border-border2{--tw-border-opacity:1;border-color:rgb(45 45 61/var(--tw-border-opacity,1))}.border-danger\/30{border-color:hsla(0,90%,69%,.3)}.border-danger\/40{border-color:hsla(0,90%,69%,.4)}.border-sidebar-border{border-color:hsl(var(--sidebar-border))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-teal\/30{border-color:rgba(79,216,180,.3)}.border-teal\/40{border-color:rgba(79,216,180,.4)}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-accent{--tw-border-opacity:1;border-top-color:rgb(124 106 247/var(--tw-border-opacity,1))}.border-t-transparent{border-top-color:transparent}.bg-\[\#282c34\]{--tw-bg-opacity:1;background-color:rgb(40 44 52/var(--tw-bg-opacity,1))}.bg-accent{--tw-bg-opacity:1;background-color:rgb(124 106 247/var(--tw-bg-opacity,1))}.bg-accent\/10{background-color:rgba(124,106,247,.1)}.bg-accent\/15{background-color:rgba(124,106,247,.15)}.bg-accent\/20{background-color:rgba(124,106,247,.2)}.bg-accent\/5{background-color:rgba(124,106,247,.05)}.bg-amber\/5{background-color:hsla(24,90%,69%,.05)}.bg-bg{--tw-bg-opacity:1;background-color:rgb(10 10 15/var(--tw-bg-opacity,1))}.bg-black\/60{background-color:rgba(0,0,0,.6)}.bg-black\/80{background-color:rgba(0,0,0,.8)}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-border{--tw-bg-opacity:1;background-color:rgb(34 34 46/var(--tw-bg-opacity,1))}.bg-border2{--tw-bg-opacity:1;background-color:rgb(45 45 61/var(--tw-bg-opacity,1))}.bg-danger\/5{background-color:hsla(0,90%,69%,.05)}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-green-500\/10{background-color:rgba(34,197,94,.1)}.bg-green-500\/20{background-color:rgba(34,197,94,.2)}.bg-muted\/20{background-color:hsla(240,9%,46%,.2)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-sidebar{background-color:hsl(var(--sidebar-background))}.bg-sidebar-border{background-color:hsl(var(--sidebar-border))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.bg-surface{--tw-bg-opacity:1;background-color:rgb(17 17 24/var(--tw-bg-opacity,1))}.bg-surface\/80{background-color:rgba(17,17,24,.8)}.bg-surface\/95{background-color:rgba(17,17,24,.95)}.bg-surface2{--tw-bg-opacity:1;background-color:rgb(22 22 31/var(--tw-bg-opacity,1))}.bg-teal{--tw-bg-opacity:1;background-color:rgb(79 216 180/var(--tw-bg-opacity,1))}.bg-teal\/5{background-color:rgba(79,216,180,.05)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-accent{--tw-gradient-from:#7c6af7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(124,106,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.to-teal{--tw-gradient-to:#4fd8b4 var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-\[1px\]{padding:1px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-5{padding-left:1.25rem}.pl-7{padding-left:1.75rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-display{font-family:var(--font-display),serif}.font-mono{font-family:var(--font-mono),monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.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)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent{--tw-text-opacity:1;color:rgb(124 106 247/var(--tw-text-opacity,1))}.text-accent\/70{color:rgba(124,106,247,.7)}.text-accent\/80{color:rgba(124,106,247,.8)}.text-amber{--tw-text-opacity:1;color:rgb(247 162 106/var(--tw-text-opacity,1))}.text-danger{--tw-text-opacity:1;color:rgb(247 106 106/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-muted{--tw-text-opacity:1;color:rgb(107 107 128/var(--tw-text-opacity,1))}.text-muted\/30{color:hsla(240,9%,46%,.3)}.text-muted\/50{color:hsla(240,9%,46%,.5)}.text-muted\/60{color:hsla(240,9%,46%,.6)}.text-muted\/70{color:hsla(240,9%,46%,.7)}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-sidebar-foreground{color:hsl(var(--sidebar-foreground))}.text-sidebar-foreground\/70{color:hsl(var(--sidebar-foreground)/.7)}.text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.text-slate-950{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity,1))}.text-teal{--tw-text-opacity:1;color:rgb(79 216 180/var(--tw-text-opacity,1))}.text-txt{--tw-text-opacity:1;color:rgb(232 232 240/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-2xl,.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-\[0_0_6px_\#4fd8b4\]{--tw-shadow:0 0 6px #4fd8b4;--tw-shadow-colored:0 0 6px var(--tw-shadow-color)}.shadow-\[0_0_6px_\#4fd8b4\],.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-accent\/50{--tw-ring-color:rgba(124,106,247,.5)}.ring-sidebar-ring{--tw-ring-color:hsl(var(--sidebar-ring))}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity,1))}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-bg{--tw-ring-offset-color:#0a0a0f}.ring-offset-white{--tw-ring-offset-color:#fff}.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-sm{--tw-backdrop-blur:blur(4px);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,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\2c right\2c width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\2c opacity\]{transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\2c height\2c padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--font-sans:"DM Sans";--font-mono:"DM Mono";--font-display:"DM Serif Display"}*{box-sizing:border-box}body{background:#0a0a0f;color:#e8e8f0;font-family:DM Sans,system-ui,sans-serif;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#2d2d3d;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#44445a}.prose-dark h1{font-family:"DM Serif Display",serif;font-size:1.6rem;color:#e8e8f0;margin-bottom:1rem}.prose-dark h2{font-size:1.1rem;font-weight:600;color:#9490c8;margin:1.5rem 0 .5rem;border-bottom:1px solid #22222e;padding-bottom:.25rem}.prose-dark h3{font-size:.95rem;font-weight:600;color:#7c6af7;margin:1rem 0 .4rem}.prose-dark p{font-size:.9rem;color:#b0b0c8;line-height:1.7;margin-bottom:.75rem}.prose-dark ol,.prose-dark ul{padding-left:1.25rem;margin-bottom:.75rem}.prose-dark li{font-size:.875rem;color:#b0b0c8;line-height:1.7;margin-bottom:.2rem}.prose-dark code{font-family:DM Mono,monospace;font-size:.8rem;background:#16161f;border:1px solid #22222e;padding:1px 5px;border-radius:4px;color:#4fd8b4}.prose-dark pre{background:#0d0d14;border:1px solid #22222e;border-radius:8px;padding:1rem;overflow-x:auto;margin-bottom:1rem}.prose-dark pre code{background:none;border:none;padding:0;color:#c8c8e8;font-size:.8rem}.prose-dark table{width:100%;border-collapse:collapse;margin-bottom:1rem;font-size:.8rem}.prose-dark th{text-align:left;padding:6px 10px;border-bottom:1px solid #2d2d3d;color:#6b6b80;font-weight:500;font-family:DM Mono,monospace;text-transform:uppercase;font-size:10px;letter-spacing:.06em}.prose-dark td{padding:6px 10px;border-bottom:1px solid #16161f;color:#b0b0c8}.prose-dark blockquote{border-left:2px solid #7c6af7;padding-left:1rem;margin:1rem 0;color:#6b6b80;font-style:italic}.prose-dark a{color:#7c6af7;text-decoration:none}.prose-dark a:hover{text-decoration:underline}.prose-dark strong{color:#e8e8f0;font-weight:600}.prose-dark hr{border:none;border-top:1px solid #22222e;margin:1.5rem 0}@keyframes collapsible-down{0%{height:0;opacity:0}to{height:var(--radix-collapsible-content-height);opacity:1}}@keyframes collapsible-up{0%{height:var(--radix-collapsible-content-height);opacity:1}to{height:0;opacity:0}}.animate-collapsible-down{animation:collapsible-down .18s ease-out}.animate-collapsible-up{animation:collapsible-up .15s ease-in}.mermaid{margin:1rem 0;text-align:center}.mermaid svg{max-width:100%;height:auto;border-radius:8px}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-slate-950::file-selector-button{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity,1))}.placeholder\:text-muted::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 107 128/var(--tw-text-opacity,1))}.placeholder\:text-muted::placeholder{--tw-text-opacity:1;color:rgb(107 107 128/var(--tw-text-opacity,1))}.placeholder\:text-slate-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.placeholder\:text-slate-500::placeholder{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.first\:border-0:first-child{border-width:0}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-accent:hover{--tw-border-opacity:1;border-color:rgb(124 106 247/var(--tw-border-opacity,1))}.hover\:border-accent\/30:hover{border-color:rgba(124,106,247,.3)}.hover\:border-accent\/50:hover{border-color:rgba(124,106,247,.5)}.hover\:border-border2:hover{--tw-border-opacity:1;border-color:rgb(45 45 61/var(--tw-border-opacity,1))}.hover\:bg-accent\/10:hover{background-color:rgba(124,106,247,.1)}.hover\:bg-accent\/30:hover{background-color:rgba(124,106,247,.3)}.hover\:bg-accent\/5:hover{background-color:rgba(124,106,247,.05)}.hover\:bg-accent\/90:hover{background-color:rgba(124,106,247,.9)}.hover\:bg-red-500\/10:hover{background-color:rgba(239,68,68,.1)}.hover\:bg-red-500\/80:hover{background-color:rgba(239,68,68,.8)}.hover\:bg-red-500\/90:hover{background-color:rgba(239,68,68,.9)}.hover\:bg-sidebar-accent:hover{background-color:hsl(var(--sidebar-accent))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.hover\:bg-slate-100\/80:hover{background-color:rgba(241,245,249,.8)}.hover\:bg-slate-900\/80:hover{background-color:rgba(15,23,42,.8)}.hover\:bg-slate-900\/90:hover{background-color:rgba(15,23,42,.9)}.hover\:bg-surface:hover{--tw-bg-opacity:1;background-color:rgb(17 17 24/var(--tw-bg-opacity,1))}.hover\:bg-surface2:hover{--tw-bg-opacity:1;background-color:rgb(22 22 31/var(--tw-bg-opacity,1))}.hover\:bg-surface2\/80:hover{background-color:rgba(22,22,31,.8)}.hover\:text-accent:hover{--tw-text-opacity:1;color:rgb(124 106 247/var(--tw-text-opacity,1))}.hover\:text-accent\/70:hover{color:rgba(124,106,247,.7)}.hover\:text-accent\/80:hover{color:rgba(124,106,247,.8)}.hover\:text-muted:hover{--tw-text-opacity:1;color:rgb(107 107 128/var(--tw-text-opacity,1))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\:text-sidebar-accent-foreground:hover{color:hsl(var(--sidebar-accent-foreground))}.hover\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\:text-txt:hover{--tw-text-opacity:1;color:rgb(232 232 240/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:hsl(var(--sidebar-border))}.focus\:border-accent:focus{--tw-border-opacity:1;border-color:rgb(124 106 247/var(--tw-border-opacity,1))}.focus\:border-border:focus{--tw-border-opacity:1;border-color:rgb(34 34 46/var(--tw-border-opacity,1))}.focus\:bg-slate-100:focus{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.focus\:bg-surface2:focus{--tw-bg-opacity:1;background-color:rgb(22 22 31/var(--tw-bg-opacity,1))}.focus\:text-red-400:focus{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.focus\:text-slate-900:focus{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-accent\/50:focus{--tw-ring-color:rgba(124,106,247,.5)}.focus\:ring-slate-950:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(2 6 23/var(--tw-ring-opacity,1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color:hsl(var(--sidebar-ring))}.focus-visible\:ring-slate-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(2 6 23/var(--tw-ring-opacity,1))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.active\:bg-sidebar-accent:active{background-color:hsl(var(--sidebar-accent))}.active\:text-sidebar-accent-foreground:active{color:hsl(var(--sidebar-accent-foreground))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:pointer-events-auto{pointer-events:auto}.group:hover .group-hover\:scale-100{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/menu-item:hover .group-hover\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-0{opacity:0}.group:hover .group-hover\:opacity-100{opacity:1}.peer\/menu-button:hover~.peer-hover\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.has-\[\[data-variant\=inset\]\]\:bg-sidebar:has([data-variant=inset]){background-color:hsl(var(--sidebar-background))}.group\/menu-item:has([data-sidebar=menu-action]) .group-has-\[\[data-sidebar\=menu-action\]\]\/menu-item\:pr-8{padding-right:2rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=active\]\:bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\[state\=open\]\:bg-slate-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:hsl(var(--sidebar-accent-foreground))}.data-\[state\=active\]\:text-slate-950[data-state=active]{--tw-text-opacity:1;color:rgb(2 6 23/var(--tw-text-opacity,1))}.data-\[state\=open\]\:text-slate-500[data-state=open]{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:hover\:bg-sidebar-accent:hover[data-state=open]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground:hover[data-state=open]{color:hsl(var(--sidebar-accent-foreground))}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group\/folder[data-state=open] .group-data-\[state\=open\]\/folder\:block{display:block}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden,.group\/folder[data-state=open] .group-data-\[state\=open\]\/folder\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!size-8{width:2rem!important;height:2rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[--sidebar-width-icon\]{width:var(--sidebar-width-icon)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\]{width:calc(var(--sidebar-width-icon) + 1rem)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\]{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0,.group[data-side=right] .group-data-\[side\=right\]\:rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180{--tw-rotate:180deg}.group\/folder[data-state=open] .group-data-\[state\=open\]\/folder\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:.5rem}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border-sidebar-border{border-color:hsl(var(--sidebar-border))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-0{padding:0!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-2{padding:.5rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:hover\:bg-sidebar:hover{background-color:hsl(var(--sidebar-background))}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.peer\/menu-button[data-active=true]~.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.dark\:border-slate-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity,1))}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\:bg-slate-50:is(.dark *){--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.dark\:bg-slate-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:bg-slate-950:is(.dark *){--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity,1))}.dark\:text-slate-400:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dark\:text-slate-50:is(.dark *){--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity,1))}.dark\:text-slate-900:is(.dark *){--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.dark\:ring-offset-slate-950:is(.dark *){--tw-ring-offset-color:#020617}.dark\:file\:text-slate-50:is(.dark *)::file-selector-button{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity,1))}.dark\:placeholder\:text-slate-400:is(.dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dark\:placeholder\:text-slate-400:is(.dark *)::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dark\:hover\:bg-red-900\/80:hover:is(.dark *){background-color:rgba(127,29,29,.8)}.dark\:hover\:bg-red-900\/90:hover:is(.dark *){background-color:rgba(127,29,29,.9)}.dark\:hover\:bg-slate-50\/80:hover:is(.dark *){background-color:rgba(248,250,252,.8)}.dark\:hover\:bg-slate-50\/90:hover:is(.dark *){background-color:rgba(248,250,252,.9)}.dark\:hover\:bg-slate-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-800\/80:hover:is(.dark *){background-color:rgba(30,41,59,.8)}.dark\:hover\:text-slate-50:hover:is(.dark *){--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity,1))}.dark\:focus\:bg-slate-800:focus:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:focus\:text-slate-50:focus:is(.dark *){--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity,1))}.dark\:focus\:ring-slate-300:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity,1))}.dark\:focus-visible\:ring-slate-300:focus-visible:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity,1))}.dark\:data-\[state\=active\]\:bg-slate-950[data-state=active]:is(.dark *){--tw-bg-opacity:1;background-color:rgb(2 6 23/var(--tw-bg-opacity,1))}.dark\:data-\[state\=open\]\:bg-slate-800[data-state=open]:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:data-\[state\=active\]\:text-slate-50[data-state=active]:is(.dark *){--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity,1))}.dark\:data-\[state\=open\]\:text-slate-400[data-state=open]:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:flex{display:flex}.sm\:max-w-sm{max-width:24rem}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:.5rem}.sm\:text-left{text-align:left}}@media (min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:opacity-0{opacity:0}.after\:md\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-state=collapsed][data-variant=inset]~.md\:peer-data-\[state\=collapsed\]\:peer-data-\[variant\=inset\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:.75rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:hsl(var(--sidebar-accent-foreground))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize{cursor:e-resize}
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  **Local-first project intelligence for AI-assisted development.**
4
4
 
5
- A Next.js app that is both your kanban board and your AI agent's MCP server.
5
+ A kanban board + docs viewer + MCP server all in one process.
6
6
  When your AI moves a task, you see it in the browser — live.
7
7
 
8
8
  ```
9
- http://localhost:3000 ← your browser (kanban, docs, activity, memory)
9
+ http://localhost:3000 ← your browser (kanban, docs, activity, memory)
10
10
  http://localhost:3000/api/mcp ← AI agent connects here via MCP
11
11
  ```
12
12
 
@@ -15,17 +15,23 @@ http://localhost:3000/api/mcp ← AI agent connects here via MCP
15
15
  ## Quick start
16
16
 
17
17
  ```bash
18
- # 1. Clone / copy this folder next to your project
19
- cd vibedoc-app
20
- npm install
18
+ # Run from inside your project directory
19
+ cd your-project
20
+ npx vibedoc
21
+ ```
22
+
23
+ That's it. VibeDoc uses the current directory as the project root and opens at `http://localhost:3000`.
24
+
25
+ VibeDoc automatically finds a free port starting from 3000, so it won't conflict with other running services.
21
26
 
22
- # 2. Point at your project
23
- cp .env.example .env.local
24
- # Edit VIBEDOC_ROOT to your project path
27
+ ### Options
28
+
29
+ ```bash
30
+ # Point at a different project
31
+ VIBEDOC_ROOT=/path/to/project npx vibedoc
25
32
 
26
- # 3. Start
27
- npm run dev
28
- # → http://localhost:3000
33
+ # Pin to a specific port
34
+ PORT=4000 npx vibedoc
29
35
  ```
30
36
 
31
37
  ---
@@ -86,6 +92,8 @@ npm run dev
86
92
 
87
93
  ## Recommended CLAUDE.md snippet
88
94
 
95
+ Add this to your project's `CLAUDE.md` to guide your AI agent:
96
+
89
97
  ```markdown
90
98
  ## Session protocol
91
99
 
@@ -107,19 +115,9 @@ npm run dev
107
115
 
108
116
  ---
109
117
 
110
- ## Multi-project
111
-
112
- VibeDoc auto-discovers projects by scanning sibling directories for `CLAUDE.md` or `docs/architecture/`.
113
- Switch projects using the dropdown in the top bar.
114
-
115
- To override the scan base:
116
- ```env
117
- VIBEDOC_ROOT=/my/main/project
118
- ```
119
-
120
- ---
118
+ ## Project structure
121
119
 
122
- ## Project structure expected
120
+ VibeDoc reads from your project. Create these files to get the most out of it:
123
121
 
124
122
  ```
125
123
  your-project/
@@ -127,7 +125,7 @@ your-project/
127
125
  ├── docs/architecture/
128
126
  │ ├── 01-overview/
129
127
  │ ├── 02-high-level-design/
130
- │ │ └── EVENT_CATALOG.md
128
+ │ │ └── HLD.md
131
129
  │ ├── 03-services/
132
130
  │ │ └── user-service/
133
131
  │ │ ├── OVERVIEW.md
@@ -142,12 +140,21 @@ your-project/
142
140
  └── MEMORY.md
143
141
  ```
144
142
 
143
+ None of these are required — VibeDoc will show what it finds.
144
+
145
+ ---
146
+
147
+ ## Multi-project
148
+
149
+ VibeDoc auto-discovers sibling directories that contain `CLAUDE.md` or `docs/architecture/`.
150
+ Switch between projects using the dropdown in the top bar.
151
+
145
152
  ---
146
153
 
147
154
  ## Activity log
148
155
 
149
- All AI and human actions are written to `.vibedoc-activity.json` in your project root.
150
- The Activity tab shows the last 30 events in real time (SSE).
156
+ All AI and human actions are appended to `.vibedoc-activity.json` in your project root.
157
+ The Activity tab shows the last 30 events in real time via SSE.
151
158
 
152
159
  ---
153
160
 
package/bin/vibedoc.js CHANGED
@@ -1,54 +1,81 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- const { spawn } = require('child_process');
4
+ const { spawn, spawnSync } = require('child_process');
5
5
  const path = require('path');
6
+ const net = require('net');
6
7
 
7
8
  const PKG_DIR = path.resolve(__dirname, '..');
8
9
  const VIBEDOC_ROOT = process.env.VIBEDOC_ROOT || process.cwd();
9
- const PORT = process.env.PORT || '3000';
10
- const WS_PORT = process.env.WS_PORT || '1234';
11
-
12
- console.log(`[vibedoc] Starting...`);
13
- console.log(`[vibedoc] Project root: ${VIBEDOC_ROOT}`);
14
- console.log(`[vibedoc] App: http://localhost:${PORT}`);
15
- console.log(`[vibedoc] WS: ws://localhost:${WS_PORT}`);
16
-
17
- const env = { ...process.env, VIBEDOC_ROOT };
18
-
19
- const next = spawn(
20
- process.execPath,
21
- [require.resolve('next/dist/bin/next', { paths: [PKG_DIR] }), 'start', '--port', PORT],
22
- { cwd: PKG_DIR, stdio: 'inherit', env }
23
- );
24
-
25
- const ws = spawn(
26
- process.execPath,
27
- [path.join(PKG_DIR, 'ws-server.js')],
28
- { cwd: PKG_DIR, stdio: 'inherit', env }
29
- );
30
-
31
- function shutdown() {
32
- next.kill();
33
- ws.kill();
10
+
11
+ function findFreePort() {
12
+ return new Promise((resolve, reject) => {
13
+ const server = net.createServer();
14
+ server.unref();
15
+ server.on('error', reject);
16
+ // Port 0 lets the OS assign a random free port
17
+ server.listen(0, '127.0.0.1', () => {
18
+ const { port } = server.address();
19
+ server.close(() => resolve(port));
20
+ });
21
+ });
34
22
  }
35
23
 
36
- process.on('SIGINT', shutdown);
37
- process.on('SIGTERM', shutdown);
24
+ async function main() {
25
+ // If PORT/WS_PORT are explicitly set, respect them; otherwise find free ports
26
+ const port = process.env.PORT
27
+ ? parseInt(process.env.PORT, 10)
28
+ : await findFreePort();
29
+ const wsPort = process.env.WS_PORT
30
+ ? parseInt(process.env.WS_PORT, 10)
31
+ : await findFreePort();
38
32
 
39
- next.on('error', err => {
40
- console.error('[vibedoc] Failed to start Next.js server:', err.message);
41
- process.exit(1);
42
- });
33
+ console.log(`[vibedoc] Starting...`);
34
+ console.log(`[vibedoc] Project root: ${VIBEDOC_ROOT}`);
35
+ console.log(`[vibedoc] App: http://localhost:${port}`);
36
+ console.log(`[vibedoc] WS: ws://localhost:${wsPort}`);
43
37
 
44
- next.on('exit', code => process.exit(code ?? 0));
38
+ const env = { ...process.env, VIBEDOC_ROOT, PORT: String(port), WS_PORT: String(wsPort) };
45
39
 
46
- ws.on('error', err => {
47
- console.error('[vibedoc] Failed to start WebSocket server:', err.message);
48
- });
40
+ const next = spawn(
41
+ process.execPath,
42
+ [require.resolve('next/dist/bin/next', { paths: [PKG_DIR] }), 'start', '--port', String(port)],
43
+ { cwd: PKG_DIR, stdio: 'inherit', env }
44
+ );
49
45
 
50
- ws.on('exit', code => {
51
- if (code !== 0 && code !== null) {
52
- console.error(`[vibedoc] WebSocket server exited with code ${code}`);
46
+ const ws = spawn(
47
+ process.execPath,
48
+ [path.join(PKG_DIR, 'ws-server.js')],
49
+ { cwd: PKG_DIR, stdio: 'inherit', env }
50
+ );
51
+
52
+ function shutdown() {
53
+ next.kill();
54
+ ws.kill();
53
55
  }
56
+
57
+ process.on('SIGINT', shutdown);
58
+ process.on('SIGTERM', shutdown);
59
+
60
+ next.on('error', err => {
61
+ console.error('[vibedoc] Failed to start Next.js server:', err.message);
62
+ process.exit(1);
63
+ });
64
+
65
+ next.on('exit', code => process.exit(code ?? 0));
66
+
67
+ ws.on('error', err => {
68
+ console.error('[vibedoc] Failed to start WebSocket server:', err.message);
69
+ });
70
+
71
+ ws.on('exit', code => {
72
+ if (code !== 0 && code !== null) {
73
+ console.error(`[vibedoc] WebSocket server exited with code ${code}`);
74
+ }
75
+ });
76
+ }
77
+
78
+ main().catch(err => {
79
+ console.error('[vibedoc] Startup error:', err.message);
80
+ process.exit(1);
54
81
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibedoc",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Local-first project intelligence for AI-assisted development. Web UI + MCP server in one.",
5
5
  "bin": {
6
6
  "vibedoc": "bin/vibedoc.js"