closeclaw 3.0.0

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 (39) hide show
  1. package/dist/agent-templates/AGENTS.md +61 -0
  2. package/dist/agent-templates/HEARTBEAT.md +6 -0
  3. package/dist/agent-templates/SOUL.md +15 -0
  4. package/dist/cli-loader.cjs +1 -0
  5. package/dist/cli.cjs +8223 -0
  6. package/dist/cli.jsc +0 -0
  7. package/dist/index-loader.cjs +1 -0
  8. package/dist/index.cjs +6903 -0
  9. package/dist/index.jsc +0 -0
  10. package/dist/packages/platform-tools/index.js +160 -0
  11. package/dist/packages/platform-tools/openclaw.plugin.json +11 -0
  12. package/dist/packages/platform-tools/package.json +25 -0
  13. package/dist/public/assets/AdminPage-TYchgkhe.js +6 -0
  14. package/dist/public/assets/AgentsPage-fanigo1Q.js +1 -0
  15. package/dist/public/assets/ApprovalsPage-B0jTfJY1.js +1 -0
  16. package/dist/public/assets/GatewayPage-C3mps8uI.js +1 -0
  17. package/dist/public/assets/InboxPage-DWoHZ9O7.js +6 -0
  18. package/dist/public/assets/LogsPage-B-sl_Z5l.js +1 -0
  19. package/dist/public/assets/OrgPage-CcSQejSc.js +1 -0
  20. package/dist/public/assets/OrgSettingsPage-6NAXJQ1k.js +11 -0
  21. package/dist/public/assets/ProjectBoardPage-DnBdfWxy.js +25 -0
  22. package/dist/public/assets/ProjectListPage-DGdYSZz9.js +6 -0
  23. package/dist/public/assets/ProjectSettingsPage-BPttlyAC.js +6 -0
  24. package/dist/public/assets/SystemPage-B9j8tKx6.js +1 -0
  25. package/dist/public/assets/TeamPage-esENElH4.js +1 -0
  26. package/dist/public/assets/chevron-right-BnCRLuSC.js +6 -0
  27. package/dist/public/assets/circle-x-DqOtgfMh.js +11 -0
  28. package/dist/public/assets/clock-k3OP3WGD.js +6 -0
  29. package/dist/public/assets/empty-state-fdFSKAF8.js +1 -0
  30. package/dist/public/assets/index-DXrrw_d3.js +284 -0
  31. package/dist/public/assets/index-Yi92esJb.css +1 -0
  32. package/dist/public/assets/label-chip-CncSPoUy.js +1 -0
  33. package/dist/public/assets/refresh-cw-DPxC49W6.js +6 -0
  34. package/dist/public/assets/trash-2-DG-hxPmD.js +6 -0
  35. package/dist/public/assets/use-tasks-BRmu1Iuc.js +106 -0
  36. package/dist/public/assets/user-plus-DPBDxgC3.js +6 -0
  37. package/dist/public/assets/users-DP3a-Wwz.js +6 -0
  38. package/dist/public/index.html +32 -0
  39. package/package.json +54 -0
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-content:"";--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--color-black:#000;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:6px;--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Satoshi", ui-sans-serif, system-ui, sans-serif;--default-mono-font-family:"JetBrains Mono", ui-monospace, monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Satoshi,ui-sans-serif,system-ui,sans-serif}html{font-family:Satoshi,ui-sans-serif,system-ui,sans-serif}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-1{top:calc(var(--spacing) * -1)}.-top-3{top:calc(var(--spacing) * -3)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing) * 2)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-3{right:calc(var(--spacing) * -3)}.right-0{right:calc(var(--spacing) * 0)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.order-first{order:-9999}.order-last{order:9999}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-6{margin-inline:calc(var(--spacing) * 6)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3\.5{margin-left:calc(var(--spacing) * 3.5)}.ml-auto{margin-left:auto}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-4\.5{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-full{width:100%;height:100%}.h-1{height:calc(var(--spacing) * 1)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-8\!{height:calc(var(--spacing) * 8)!important}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\(--available-height\){max-height:var(--available-height)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[200px\]{max-height:200px}.max-h-\[300px\]{max-height:300px}.max-h-\[320px\]{max-height:320px}.max-h-\[360px\]{max-height:360px}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-\[120px\]{min-height:120px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-\(--anchor-width\){width:var(--anchor-width)}.w-0\.5{width:calc(var(--spacing) * .5)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-10{width:calc(var(--spacing) * 10)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\[200px\]{width:200px}.w-\[280px\]{width:280px}.w-\[320px\]{width:320px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[80vw\]{max-width:80vw}.max-w-\[360px\]{max-width:360px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:var(--container-lg)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-32{min-width:calc(var(--spacing) * 32)}.min-w-\[22px\]{min-width:22px}.min-w-\[96px\]{min-width:96px}.min-w-\[160px\]{min-width:160px}.min-w-\[900px\]{min-width:900px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.origin-\(--transform-origin\){transform-origin:var(--transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%-2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize-none{resize:none}.scroll-py-1{scroll-padding-block:calc(var(--spacing) * 1)}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.-space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -1) * calc(1 - var(--tw-space-x-reverse)))}:where(.-space-x-1\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -1.5) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -1.5) * calc(1 - var(--tw-space-x-reverse)))}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.\!rounded-lg{border-radius:8px!important}.rounded{border-radius:.25rem}.rounded-4xl{border-radius:24px}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-\[calc\(var\(--radius\)-3px\)\]{border-radius:calc(var(--radius) - 3px)}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:8px}.rounded-lg\!{border-radius:8px!important}.rounded-md{border-radius:6px}.rounded-none{border-radius:0}.rounded-sm{border-radius:4px}.rounded-xl{border-radius:12px}.rounded-xl\!{border-radius:12px!important}.rounded-l-md{border-top-left-radius:6px;border-bottom-left-radius:6px}.rounded-r-md{border-top-right-radius:6px;border-bottom-right-radius:6px}.rounded-b-xl{border-bottom-right-radius:12px;border-bottom-left-radius:12px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-\[var\(--accent-brand\)\],.border-\[var\(--accent-brand\)\]\/30{border-color:var(--accent-brand)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--accent-brand\)\]\/30{border-color:color-mix(in oklab,var(--accent-brand) 30%,transparent)}}.border-\[var\(--border-default\)\]{border-color:var(--border-default)}.border-border{border-color:var(--border)}.border-input,.border-input\/30{border-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.border-input\/30{border-color:color-mix(in oklab,var(--input) 30%,transparent)}}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-\[var\(--accent-muted\)\]{background-color:var(--accent-muted)}.bg-\[var\(--bg-active\)\]{background-color:var(--bg-active)}.bg-\[var\(--bg-base\)\]{background-color:var(--bg-base)}.bg-\[var\(--bg-elevated\)\]{background-color:var(--bg-elevated)}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-border{background-color:var(--border)}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-input\/30{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.bg-input\/30{background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.bg-muted,.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.fill-foreground{fill:var(--foreground)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.\!p-1\.5{padding:calc(var(--spacing) * 1.5)!important}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-1\.5{padding-left:calc(var(--spacing) * 1.5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.font-heading{font-family:Satoshi,ui-sans-serif,system-ui,sans-serif}.font-mono{font-family:JetBrains Mono,ui-monospace,monospace}.font-sans{font-family:Satoshi,ui-sans-serif,system-ui,sans-serif}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[var\(--accent-brand\)\]{color:var(--accent-brand)}.text-\[var\(--priority-urgent\)\]{color:var(--priority-urgent)}.text-\[var\(--text-primary\)\]{color:var(--text-primary)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-\[var\(--text-tertiary\)\]{color:var(--text-tertiary)}.text-background{color:var(--background)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.uppercase{text-transform:uppercase}.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,)}.line-through{text-decoration-line:line-through}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-\[var\(--accent-brand\)\]{accent-color:var(--accent-brand)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.bg-blend-color{background-blend-mode:color}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none\!{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)!important}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[var\(--accent-brand\)\]{--tw-ring-color:var(--accent-brand)}.ring-\[var\(--bg-surface\)\]{--tw-ring-color:var(--bg-surface)}.ring-background{--tw-ring-color:var(--background)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-\[var\(--bg-base\)\]{--tw-ring-offset-color:var(--bg-base)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-focus\/dropdown-menu-item\:text-accent-foreground:is(:where(.group\/dropdown-menu-item):focus *){color:var(--accent-foreground)}.group-has-data-\[size\=lg\]\/avatar-group\:size-10:is(:where(.group\/avatar-group):has([data-size=lg]) *){width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.group-has-data-\[size\=sm\]\/avatar-group\:size-6:is(:where(.group\/avatar-group):has([data-size=sm]) *){width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.group-has-data-\[slot\=command-shortcut\]\/command-item\:hidden:is(:where(.group\/command-item):has([data-slot=command-shortcut]) *){display:none}.group-has-\[\>input\]\/input-group\:pt-2:is(:where(.group\/input-group):has(>input) *){padding-top:calc(var(--spacing) * 2)}.group-has-\[\>input\]\/input-group\:pb-2:is(:where(.group\/input-group):has(>input) *){padding-bottom:calc(var(--spacing) * 2)}.group-data-\[checked\=true\]\/command-item\:opacity-100:is(:where(.group\/command-item)[data-checked=true] *){opacity:1}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *),.group-data-\[disabled\=true\]\/input-group\:opacity-50:is(:where(.group\/input-group)[data-disabled=true] *){opacity:.5}.group-data-\[size\=default\]\/avatar\:size-2\.5:is(:where(.group\/avatar)[data-size=default] *){width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.group-data-\[size\=lg\]\/avatar\:size-3:is(:where(.group\/avatar)[data-size=lg] *){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=sm\]\/avatar\:size-2:is(:where(.group\/avatar)[data-size=sm] *){width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:text-xs:is(:where(.group\/avatar)[data-size=sm] *){font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.group-data-selected\/command-item\:text-foreground:is(:where(.group\/command-item):where([data-selected=true]) *){color:var(--foreground)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-\[var\(--text-tertiary\)\]::placeholder{color:var(--text-tertiary)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.after\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.after\:border-border:after{content:var(--tw-content);border-color:var(--border)}.after\:mix-blend-darken:after{content:var(--tw-content);mix-blend-mode:darken}@media(hover:hover){.hover\:border-\[var\(--border-hover\)\]:hover{border-color:var(--border-hover)}.hover\:bg-\[var\(--bg-hover\)\]:hover{background-color:var(--bg-hover)}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:text-\[var\(--priority-urgent\)\]:hover{color:var(--priority-urgent)}.hover\:text-\[var\(--text-primary\)\]:hover{color:var(--text-primary)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-\[var\(--accent-brand\)\]:focus{border-color:var(--accent-brand)}.focus\:border-\[var\(--border-focus\)\]:focus{border-color:var(--border-focus)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[var\(--border-focus\)\]\/20:focus{--tw-ring-color:var(--border-focus)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-\[var\(--border-focus\)\]\/20:focus{--tw-ring-color:color-mix(in oklab, var(--border-focus) 20%, transparent)}}:is(.focus\:\*\*\:text-accent-foreground:focus *),:is(.not-data-\[variant\=destructive\]\:focus\:\*\*\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-3:focus-visible,.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:bg-transparent:disabled{background-color:#0000}.disabled\:opacity-50:disabled{opacity:.5}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:8px}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .in-data-\[slot\=combobox-content\]\:focus-within\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:where([data-slot=dialog-content]) .in-data-\[slot\=dialog-content\]\:rounded-lg\!{border-radius:8px!important}.has-disabled\:bg-input\/50:has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.has-disabled\:bg-input\/50:has(:disabled){background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-end\]\:pr-3:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 3)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-3:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 3)}.has-data-\[slot\=kbd\]\:pr-1\.5:has([data-slot=kbd]){padding-right:calc(var(--spacing) * 1.5)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--ring)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-3:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-ring\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--destructive)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-3:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(>[data-align=block-end]){height:auto}.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(>[data-align=block-end]){flex-direction:column}.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(>[data-align=block-start]){height:auto}.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(>[data-align=block-start]){flex-direction:column}.has-\[\>button\]\:mr-\[-0\.3rem\]:has(>button){margin-right:-.3rem}.has-\[\>button\]\:ml-\[-0\.3rem\]:has(>button){margin-left:-.3rem}.has-\[\>kbd\]\:mr-\[-0\.15rem\]:has(>kbd){margin-right:-.15rem}.has-\[\>kbd\]\:ml-\[-0\.15rem\]:has(>kbd){margin-left:-.15rem}.has-\[\>svg\]\:p-0:has(>svg){padding:calc(var(--spacing) * 0)}.has-\[\>textarea\]\:h-auto:has(>textarea){height:auto}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-inset\:pl-7[data-inset]{padding-left:calc(var(--spacing) * 7)}.data-popup-open\:bg-accent[data-popup-open]{background-color:var(--accent)}.data-popup-open\:text-accent-foreground[data-popup-open]{color:var(--accent-foreground)}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[side\=bottom\]\:top-1[data-side=bottom]{top:calc(var(--spacing) * 1)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=inline-end\]\:top-1\/2\![data-side=inline-end]{top:50%!important}.data-\[side\=inline-end\]\:-left-1[data-side=inline-end]{left:calc(var(--spacing) * -1)}.data-\[side\=inline-end\]\:-translate-y-1\/2[data-side=inline-end]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=inline-start\]\:top-1\/2\![data-side=inline-start]{top:50%!important}.data-\[side\=inline-start\]\:-right-1[data-side=inline-start]{right:calc(var(--spacing) * -1)}.data-\[side\=inline-start\]\:-translate-y-1\/2[data-side=inline-start]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=left\]\:top-1\/2\![data-side=left]{top:50%!important}.data-\[side\=left\]\:-right-1[data-side=left]{right:calc(var(--spacing) * -1)}.data-\[side\=left\]\:-translate-y-1\/2[data-side=left]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:top-1\/2\![data-side=right]{top:50%!important}.data-\[side\=right\]\:-left-1[data-side=right]{left:calc(var(--spacing) * -1)}.data-\[side\=right\]\:-translate-y-1\/2[data-side=right]{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-bottom-2\.5[data-side=top]{bottom:calc(var(--spacing) * -2.5)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=lg\]\:size-10[data-size=lg]{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.data-\[size\=sm\]\:size-6[data-size=sm]{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}:is(.\*\:data-\[slot\=avatar\]\:ring-2>*)[data-slot=avatar]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\:data-\[slot\=avatar\]\:ring-background>*)[data-slot=avatar]{--tw-ring-color:var(--background)}:is(.\*\:data-\[slot\=input-group-addon\]\:pl-2\!>*)[data-slot=input-group-addon]{padding-left:calc(var(--spacing) * 2)!important}:is(.\*\*\:data-\[slot\=kbd\]\:relative *)[data-slot=kbd]{position:relative}:is(.\*\*\:data-\[slot\=kbd\]\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.\*\*\:data-\[slot\=kbd\]\:z-50 *)[data-slot=kbd]{z-index:50}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-sm *)[data-slot=kbd]{border-radius:4px}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media(min-width:40rem){.sm\:max-w-\[560px\]{max-width:560px}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}}@media(min-width:48rem){.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media(min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}.dark\:bg-transparent:is(.dark *){background-color:#0000}.dark\:after\:mix-blend-lighten:is(.dark *):after{content:var(--tw-content);mix-blend-mode:lighten}@media(hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:disabled\:bg-transparent:is(.dark *):disabled{background-color:#0000}.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:has-disabled\:bg-input\/80:is(.dark *):has(:disabled){background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:has-\[\[data-slot\]\[aria-invalid\=true\]\]\:ring-destructive\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:bg-accent:where([data-state=open]),.data-open\:bg-accent:where([data-open]:not([data-open=false])){background-color:var(--accent)}.data-open\:text-accent-foreground:where([data-state=open]),.data-open\:text-accent-foreground:where([data-open]:not([data-open=false])){color:var(--accent-foreground)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:overflow-hidden:where([data-state=closed]),.data-closed\:overflow-hidden:where([data-closed]:not([data-closed=false])){overflow:hidden}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-selected\:bg-muted:where([data-selected=true]){background-color:var(--muted)}.data-selected\:text-foreground:where([data-selected=true]){color:var(--foreground)}.data-disabled\:pointer-events-none:where([data-disabled=true]),.data-disabled\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.data-disabled\:opacity-50:where([data-disabled=true]),.data-disabled\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\.border-b\]\:pb-2.border-b{padding-bottom:calc(var(--spacing) * 2)}.\[\.border-t\]\:pt-2.border-t{padding-top:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:px-2 *)[cmdk-group-heading]{padding-inline:calc(var(--spacing) * 2)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:py-1\.5 *)[cmdk-group-heading]{padding-block:calc(var(--spacing) * 1.5)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-xs *)[cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:font-medium *)[cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}:is(.\*\*\:\[\[cmdk-group-heading\]\]\:text-muted-foreground *)[cmdk-group-heading]{color:var(--muted-foreground)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media(hover:hover){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-destructive\/20:is(a):hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.\[a\]\:hover\:bg-muted:is(a):hover{background-color:var(--muted)}.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-secondary\/80:is(a):hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.\[a\]\:hover\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)}:is(.data-selected\:\*\:\[svg\]\:text-foreground:where([data-selected=true])>*):is(svg){color:var(--foreground)}.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(var(--spacing) * 3)}.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-1\.5:has(>[data-align=inline-end])>input{padding-right:calc(var(--spacing) * 1.5)}.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-1\.5:has(>[data-align=inline-start])>input{padding-left:calc(var(--spacing) * 1.5)}.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\]>kbd{border-radius:calc(var(--radius) - 5px)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\!>svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.group-has-data-\[size\=lg\]\/avatar-group\:\[\&\>svg\]\:size-5:is(:where(.group\/avatar-group):has([data-size=lg]) *)>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.group-has-data-\[size\=sm\]\/avatar-group\:\[\&\>svg\]\:size-3:is(:where(.group\/avatar-group):has([data-size=sm]) *)>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.group-data-\[size\=default\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=default] *)>svg,.group-data-\[size\=lg\]\/avatar\:\[\&\>svg\]\:size-2:is(:where(.group\/avatar)[data-size=lg] *)>svg{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.group-data-\[size\=sm\]\/avatar\:\[\&\>svg\]\:hidden:is(:where(.group\/avatar)[data-size=sm] *)>svg{display:none}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5>svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4>svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:#0f0f11;--foreground:#ededef;--card:#161618;--card-foreground:#ededef;--popover:#1c1c1f;--popover-foreground:#ededef;--primary:#3dd6b5;--primary-foreground:#0f0f11;--secondary:#1c1c1f;--secondary-foreground:#ededef;--muted:#1c1c1f;--muted-foreground:#8b8b8f;--accent:#232326;--accent-foreground:#ededef;--destructive:#e5484d;--border:#232326;--input:#1c1c1f;--ring:#3dd6b5;--chart-1:#3dd6b5;--chart-2:#4d8fe5;--chart-3:#e5884d;--chart-4:#8b7bf5;--chart-5:#e5c94d;--radius:6px;--sidebar:#161618;--sidebar-foreground:#ededef;--sidebar-primary:#3dd6b5;--sidebar-primary-foreground:#0f0f11;--sidebar-accent:#2a2a2e;--sidebar-accent-foreground:#ededef;--sidebar-border:#1c1c1f;--sidebar-ring:#3dd6b5;--bg-base:#0f0f11;--bg-surface:#161618;--bg-elevated:#1c1c1f;--bg-hover:#232326;--bg-active:#2a2a2e;--bg-subtle:#1a1a1d;--text-primary:#ededef;--text-secondary:#8b8b8f;--text-tertiary:#5c5c63;--text-ghost:#3a3a40;--border-default:#232326;--border-subtle:#1c1c1f;--border-hover:#2f2f34;--border-focus:#4a9ee5;--accent-brand:#3dd6b5;--accent-brand-hover:#2cc4a3;--accent-muted:#3dd6b51f;--ai-indicator:#8b7bf5;--ai-surface:#8b7bf50f;--ai-border:#8b7bf51f;--priority-urgent:#e5484d;--priority-high:#e5884d;--priority-medium:#e5c94d;--priority-low:#4d8fe5;--priority-none:#5c5c63;--status-done:#46a758;--status-progress:#4d8fe5;--status-review:#e5884d;--status-blocked:#e5484d}[data-theme=light]{--background:#fafafa;--foreground:#111113;--card:#fff;--card-foreground:#111113;--popover:#fff;--popover-foreground:#111113;--primary:#0d9373;--primary-foreground:#fff;--secondary:#f4f4f5;--secondary-foreground:#111113;--muted:#f4f4f5;--muted-foreground:#71717a;--accent:#f4f4f5;--accent-foreground:#111113;--destructive:#dc2626;--border:#e4e4e7;--input:#f4f4f5;--ring:#0d9373;--sidebar:#fff;--sidebar-foreground:#111113;--sidebar-primary:#0d9373;--sidebar-primary-foreground:#fff;--sidebar-accent:#f4f4f5;--sidebar-accent-foreground:#111113;--sidebar-border:#e4e4e7;--sidebar-ring:#0d9373;--bg-base:#fafafa;--bg-surface:#fff;--bg-elevated:#fff;--bg-hover:#f4f4f5;--bg-active:#e4e4e7;--bg-subtle:#f8f8f9;--text-primary:#111113;--text-secondary:#71717a;--text-tertiary:#a1a1aa;--text-ghost:#d4d4d8;--border-default:#e4e4e7;--border-subtle:#f4f4f5;--border-hover:#d4d4d8;--border-focus:#2563eb;--accent-brand:#0d9373;--accent-brand-hover:#0b7d63;--accent-muted:#0d937314;--ai-indicator:#7c3aed;--ai-surface:#7c3aed0a;--ai-border:#7c3aed1a;--priority-urgent:#dc2626;--priority-high:#ea580c;--priority-medium:#ca8a04;--priority-low:#2563eb;--priority-none:#a1a1aa;--status-done:#16a34a;--status-progress:#2563eb;--status-review:#ea580c;--status-blocked:#dc2626}@media(max-width:1024px){.sidebar-auto-collapse{width:48px!important}}@media(max-width:768px){.mobile-full-screen{z-index:50;position:fixed;top:0;right:0;bottom:0;left:0;width:100%!important;max-width:100%!important}.mobile-bottom-nav{display:flex}.desktop-sidebar{display:none}}@media(min-width:769px){.mobile-bottom-nav{display:none}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}
@@ -0,0 +1 @@
1
+ import{j as s,X as t}from"./index-DXrrw_d3.js";function i({name:n,color:e,className:a}){return s.jsxs("span",{className:t("inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[11px] font-medium",a),style:{backgroundColor:`${e}18`,color:e},children:[s.jsx("span",{className:"size-1.5 rounded-full",style:{backgroundColor:e}}),n]})}export{i as L};
@@ -0,0 +1,6 @@
1
+ import{c as e}from"./index-DXrrw_d3.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const c=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],a=e("refresh-cw",c);export{a as R};
@@ -0,0 +1,6 @@
1
+ import{c as a}from"./index-DXrrw_d3.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const t=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],o=a("trash-2",t);export{o as T};
@@ -0,0 +1,106 @@
1
+ import{c as R,j as e,X as L,r as i,a0 as x,_ as D,$ as Se,aQ as Q,aR as Z,aJ as fe,aS as De,Y,Z as oe,aT as ee,aU as qe,aM as Ee,aN as Ne,aV as Me,aW as _e,aX as $e,aY as Pe,aZ as Le,a_ as Ie,aK as ke,a$ as Ue}from"./index-DXrrw_d3.js";import{L as Be}from"./label-chip-CncSPoUy.js";import{T as he}from"./trash-2-DG-hxPmD.js";import{C as H,a as W}from"./circle-x-DqOtgfMh.js";import{C as pe}from"./clock-k3OP3WGD.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const Fe=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],Oe=R("calendar",Fe);/**
7
+ * @license lucide-react v0.577.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const He=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],Ge=R("download",He);/**
12
+ * @license lucide-react v0.577.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const Ke=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}]],Ve=R("file-code",Ke);/**
17
+ * @license lucide-react v0.577.0 - ISC
18
+ *
19
+ * This source code is licensed under the ISC license.
20
+ * See the LICENSE file in the root directory of this source tree.
21
+ */const Xe=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]],Ye=R("file",Xe);/**
22
+ * @license lucide-react v0.577.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */const We=[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]],de=R("git-branch",We);/**
27
+ * @license lucide-react v0.577.0 - ISC
28
+ *
29
+ * This source code is licensed under the ISC license.
30
+ * See the LICENSE file in the root directory of this source tree.
31
+ */const Je=[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]],ve=R("git-commit-horizontal",Je);/**
32
+ * @license lucide-react v0.577.0 - ISC
33
+ *
34
+ * This source code is licensed under the ISC license.
35
+ * See the LICENSE file in the root directory of this source tree.
36
+ */const Qe=[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M6 21V9a9 9 0 0 0 9 9",key:"7kw0sc"}]],Ze=R("git-merge",Qe);/**
37
+ * @license lucide-react v0.577.0 - ISC
38
+ *
39
+ * This source code is licensed under the ISC license.
40
+ * See the LICENSE file in the root directory of this source tree.
41
+ */const es=[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]],V=R("git-pull-request",es);/**
42
+ * @license lucide-react v0.577.0 - ISC
43
+ *
44
+ * This source code is licensed under the ISC license.
45
+ * See the LICENSE file in the root directory of this source tree.
46
+ */const ss=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],as=R("image",ss);/**
47
+ * @license lucide-react v0.577.0 - ISC
48
+ *
49
+ * This source code is licensed under the ISC license.
50
+ * See the LICENSE file in the root directory of this source tree.
51
+ */const ts=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],we=R("loader-circle",ts);/**
52
+ * @license lucide-react v0.577.0 - ISC
53
+ *
54
+ * This source code is licensed under the ISC license.
55
+ * See the LICENSE file in the root directory of this source tree.
56
+ */const rs=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],ge=R("message-square",rs);/**
57
+ * @license lucide-react v0.577.0 - ISC
58
+ *
59
+ * This source code is licensed under the ISC license.
60
+ * See the LICENSE file in the root directory of this source tree.
61
+ */const ls=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],is=R("paperclip",ls);/**
62
+ * @license lucide-react v0.577.0 - ISC
63
+ *
64
+ * This source code is licensed under the ISC license.
65
+ * See the LICENSE file in the root directory of this source tree.
66
+ */const ns=[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]],Ae=R("rocket",ns);/**
67
+ * @license lucide-react v0.577.0 - ISC
68
+ *
69
+ * This source code is licensed under the ISC license.
70
+ * See the LICENSE file in the root directory of this source tree.
71
+ */const cs=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],os=R("rotate-ccw",cs);/**
72
+ * @license lucide-react v0.577.0 - ISC
73
+ *
74
+ * This source code is licensed under the ISC license.
75
+ * See the LICENSE file in the root directory of this source tree.
76
+ */const ds=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],xs=R("send",ds);/**
77
+ * @license lucide-react v0.577.0 - ISC
78
+ *
79
+ * This source code is licensed under the ISC license.
80
+ * See the LICENSE file in the root directory of this source tree.
81
+ */const ms=[["path",{d:"M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344",key:"2acyp4"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],Ce=R("square-check-big",ms);/**
82
+ * @license lucide-react v0.577.0 - ISC
83
+ *
84
+ * This source code is licensed under the ISC license.
85
+ * See the LICENSE file in the root directory of this source tree.
86
+ */const us=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],ps=R("square",us);/**
87
+ * @license lucide-react v0.577.0 - ISC
88
+ *
89
+ * This source code is licensed under the ISC license.
90
+ * See the LICENSE file in the root directory of this source tree.
91
+ */const hs=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],vs=R("tag",hs);/**
92
+ * @license lucide-react v0.577.0 - ISC
93
+ *
94
+ * This source code is licensed under the ISC license.
95
+ * See the LICENSE file in the root directory of this source tree.
96
+ */const ys=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],xe=R("triangle-alert",ys);/**
97
+ * @license lucide-react v0.577.0 - ISC
98
+ *
99
+ * This source code is licensed under the ISC license.
100
+ * See the LICENSE file in the root directory of this source tree.
101
+ */const fs=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],gs=R("upload",fs);/**
102
+ * @license lucide-react v0.577.0 - ISC
103
+ *
104
+ * This source code is licensed under the ISC license.
105
+ * See the LICENSE file in the root directory of this source tree.
106
+ */const js=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],ye=R("user",js),J=[{value:"backlog",label:"Backlog"},{value:"todo",label:"To Do"},{value:"in_progress",label:"In Progress"},{value:"in_review",label:"In Review"},{value:"deploy_dev",label:"Deploy to Dev"},{value:"deploy_prod",label:"Deploy to Prod"},{value:"done",label:"Done"}],Us=["deploy_dev","deploy_prod"],bs=[{value:"ai_inbox",label:"AI Inbox"},{value:"ai_planning",label:"AI Planning"},{value:"ai_discuss",label:"AI Discuss"},{value:"ai_plan_review",label:"AI Plan Review"},{value:"ai_in_progress",label:"AI In Progress"},{value:"ai_done",label:"AI Done"}],Bs=[...J,...bs],Te=[{value:"urgent",label:"Urgent",color:"var(--priority-urgent)"},{value:"high",label:"High",color:"var(--priority-high)"},{value:"medium",label:"Medium",color:"var(--priority-medium)"},{value:"low",label:"Low",color:"var(--priority-low)"},{value:"none",label:"No priority",color:"var(--priority-none)"}],Fs={backlog:"var(--text-tertiary)",todo:"var(--text-secondary)",in_progress:"var(--status-progress)",in_review:"var(--status-review)",deploy_dev:"var(--priority-medium)",deploy_prod:"var(--priority-high)",done:"var(--status-done)",cancelled:"var(--priority-none)",ai_inbox:"var(--ai-indicator)",ai_planning:"var(--ai-indicator)",ai_discuss:"var(--ai-indicator)",ai_plan_review:"var(--ai-indicator)",ai_in_progress:"var(--ai-indicator)",ai_done:"var(--ai-indicator)"},ze={urgent:"var(--priority-urgent)",high:"var(--priority-high)",medium:"var(--priority-medium)",low:"var(--priority-low)",none:"var(--priority-none)"};function Re({priority:a,className:u}){return e.jsx("span",{className:L("inline-block size-2 shrink-0 rounded-full",u),style:{backgroundColor:ze[a]||ze.none},title:a.charAt(0).toUpperCase()+a.slice(1)})}function Ns({taskId:a}){const[u,p]=i.useState([]),[N,_]=i.useState(!0);i.useEffect(()=>{a&&(_(!0),x.request("getChecklists",{taskId:a}).then(p).catch(()=>{}).finally(()=>_(!1)))},[a]);const r=async()=>{try{const m=await x.request("createChecklist",{taskId:a,title:"Checklist"});p(o=>[...o,{...m,checklist_items:[]}])}catch{}},A=async m=>{try{await x.request("deleteChecklist",{checklistId:m}),p(o=>o.filter(v=>v.id!==m))}catch{}},y=async(m,o)=>{try{const v=await x.request("createChecklistItem",{checklistId:m,content:o});p(n=>n.map(l=>l.id===m?{...l,checklist_items:[...l.checklist_items||[],v]}:l))}catch{}},k=async(m,o,v)=>{try{await x.request("updateChecklistItem",{itemId:o,is_checked:v}),p(n=>n.map(l=>l.id===m?{...l,checklist_items:(l.checklist_items||[]).map(d=>d.id===o?{...d,is_checked:v}:d)}:l))}catch{}},z=async(m,o)=>{try{await x.request("deleteChecklistItem",{itemId:o}),p(v=>v.map(n=>n.id===m?{...n,checklist_items:(n.checklist_items||[]).filter(l=>l.id!==o)}:n))}catch{}};return N?null:e.jsxs("div",{className:"flex flex-col gap-3",children:[u.map(m=>{const o=m.checklist_items||[],v=o.length,n=o.filter(d=>d.is_checked).length,l=v>0?Math.round(n/v*100):0;return e.jsx(_s,{checklist:m,items:o,total:v,checked:n,pct:l,onDelete:()=>A(m.id),onAddItem:d=>y(m.id,d),onToggleItem:(d,T)=>k(m.id,d,T),onDeleteItem:d=>z(m.id,d)},m.id)}),e.jsxs(D,{variant:"ghost",size:"sm",onClick:r,className:"self-start",children:[e.jsx(Se,{className:"mr-1 size-3.5"}),"Add checklist"]})]})}function _s({checklist:a,items:u,total:p,checked:N,pct:_,onDelete:r,onAddItem:A,onToggleItem:y,onDeleteItem:k}){const[z,m]=i.useState(""),[o,v]=i.useState(!1),n=()=>{z.trim()&&(A(z.trim()),m(""))};return e.jsxs("div",{className:"rounded-md p-3",style:{backgroundColor:"var(--bg-subtle, var(--bg-surface))"},children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ce,{className:"size-3.5",style:{color:"var(--text-tertiary)"}}),e.jsx("span",{className:"text-xs font-medium",style:{color:"var(--text-primary)"},children:a.title}),p>0&&e.jsxs("span",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:[N,"/",p]})]}),e.jsx(D,{variant:"ghost",size:"icon-xs",onClick:r,children:e.jsx(he,{className:"size-3",style:{color:"var(--text-tertiary)"}})})]}),p>0&&e.jsx("div",{className:"mb-2 h-1 overflow-hidden rounded-full",style:{backgroundColor:"var(--bg-active)"},children:e.jsx("div",{className:"h-full rounded-full transition-all duration-200",style:{width:`${_}%`,backgroundColor:_===100?"var(--status-done)":"var(--accent-brand)"}})}),e.jsx("div",{className:"flex flex-col gap-0.5",children:u.map(l=>e.jsxs("div",{className:"group flex items-center gap-2 rounded px-1 py-0.5 transition-colors duration-100 hover:bg-[var(--bg-hover)]",children:[e.jsx("button",{onClick:()=>y(l.id,!l.is_checked),className:"shrink-0",children:l.is_checked?e.jsx(Ce,{className:"size-3.5",style:{color:"var(--accent-brand)"}}):e.jsx(ps,{className:"size-3.5",style:{color:"var(--text-tertiary)"}})}),e.jsx("span",{className:L("flex-1 text-xs",l.is_checked&&"line-through"),style:{color:l.is_checked?"var(--text-tertiary)":"var(--text-secondary)"},children:l.content}),e.jsx("button",{onClick:()=>k(l.id),className:"shrink-0 opacity-0 transition-opacity duration-100 group-hover:opacity-100",children:e.jsx(he,{className:"size-3",style:{color:"var(--text-tertiary)"}})})]},l.id))}),o?e.jsxs("div",{className:"mt-1 flex gap-1",children:[e.jsx(Q,{value:z,onChange:l=>m(l.target.value),placeholder:"Add an item...",autoFocus:!0,className:"h-7 text-xs",onKeyDown:l=>{l.key==="Enter"&&n(),l.key==="Escape"&&(v(!1),m(""))}}),e.jsx(D,{size:"sm",className:"h-7",onClick:n,children:"Add"}),e.jsx(D,{variant:"ghost",size:"sm",className:"h-7",onClick:()=>{v(!1),m("")},children:"Cancel"})]}):e.jsxs("button",{onClick:()=>v(!0),className:"mt-1 flex items-center gap-1 rounded px-1 py-0.5 text-xs transition-colors duration-100 hover:bg-[var(--bg-hover)]",style:{color:"var(--text-tertiary)"},children:[e.jsx(Se,{className:"size-3"}),"Add item"]})]})}const ne={image:as,pdf:De,default:Ye};function ks(a){return a?a.startsWith("image/")?ne.image:a.includes("pdf")?ne.pdf:ne.default:ne.default}function ws(a){return a?a<1024?`${a} B`:a<1024*1024?`${(a/1024).toFixed(1)} KB`:`${(a/(1024*1024)).toFixed(1)} MB`:""}function Cs({taskId:a}){const[u,p]=i.useState([]),[N,_]=i.useState(!0),[r,A]=i.useState(!1),[y,k]=i.useState(null),z=i.useRef(null);i.useEffect(()=>{a&&(_(!0),x.request("getAttachments",{taskId:a}).then(p).catch(()=>{}).finally(()=>_(!1)))},[a]);const m=async n=>{if(!(!n||n.length===0)){A(!0);try{for(const l of Array.from(n)){const{upload_url:d,attachment:T}=await x.request("presignUpload",{taskId:a,file_name:l.name,file_type:l.type,file_size:l.size});await fetch(d,{method:"PUT",body:l,headers:{"Content-Type":l.type}}),p(w=>[T,...w])}}catch(l){console.error("Upload failed:",l)}finally{A(!1),z.current&&(z.current.value="")}}},o=async n=>{try{await x.request("deleteAttachment",{attachmentId:n}),p(l=>l.filter(d=>d.id!==n))}catch{}},v=async n=>{try{const{url:l}=await x.request("getDownloadUrl",{attachmentId:n.id});window.open(l,"_blank")}catch{window.open(n.file_url,"_blank")}};return N?null:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(is,{className:"size-3.5",style:{color:"var(--text-tertiary)"}}),e.jsxs("span",{className:"text-xs font-medium",style:{color:"var(--text-tertiary)"},children:["Attachments",u.length>0&&` (${u.length})`]})]}),e.jsxs(D,{variant:"ghost",size:"sm",onClick:()=>{var n;return(n=z.current)==null?void 0:n.click()},disabled:r,children:[e.jsx(gs,{className:"mr-1 size-3.5"}),r?"Uploading...":"Upload"]}),e.jsx("input",{ref:z,type:"file",multiple:!0,className:"hidden",onChange:n=>m(n.target.files)})]}),u.length>0&&e.jsx("div",{className:"flex flex-col gap-1",children:u.map(n=>{var T;const l=ks(n.file_type),d=(T=n.file_type)==null?void 0:T.startsWith("image/");return e.jsxs("div",{className:"group flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors duration-100 hover:bg-[var(--bg-hover)]",children:[d?e.jsx("button",{onClick:()=>k(n.file_url),className:"flex size-8 shrink-0 items-center justify-center overflow-hidden rounded",style:{backgroundColor:"var(--bg-active)"},children:e.jsx("img",{src:n.file_url,alt:n.file_name,className:"size-full object-cover"})}):e.jsx("div",{className:"flex size-8 shrink-0 items-center justify-center rounded",style:{backgroundColor:"var(--bg-active)"},children:e.jsx(l,{className:"size-4",style:{color:"var(--text-tertiary)"}})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"truncate text-xs",style:{color:"var(--text-secondary)"},children:n.file_name}),e.jsxs("p",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:[ws(n.file_size),n.created_at&&` · ${Z(new Date(n.created_at),{addSuffix:!0})}`]})]}),e.jsxs("div",{className:"flex shrink-0 gap-0.5 opacity-0 transition-opacity duration-100 group-hover:opacity-100",children:[e.jsx(D,{variant:"ghost",size:"icon-xs",onClick:()=>v(n),children:e.jsx(Ge,{className:"size-3",style:{color:"var(--text-tertiary)"}})}),e.jsx(D,{variant:"ghost",size:"icon-xs",onClick:()=>o(n.id),children:e.jsx(he,{className:"size-3",style:{color:"var(--text-tertiary)"}})})]})]},n.id)})}),y&&e.jsx("div",{className:"fixed inset-0 z-[60] flex items-center justify-center bg-black/60",onClick:()=>k(null),children:e.jsxs("div",{className:"relative max-h-[80vh] max-w-[80vw]",children:[e.jsx("button",{onClick:()=>k(null),className:"absolute -right-3 -top-3 flex size-6 items-center justify-center rounded-full",style:{backgroundColor:"var(--bg-elevated)"},children:e.jsx(fe,{className:"size-4",style:{color:"var(--text-primary)"}})}),e.jsx("img",{src:y,alt:"Preview",className:"max-h-[80vh] max-w-[80vw] rounded-lg object-contain"})]})})]})}function zs(a){i.useEffect(()=>{if(a)return x.subscribe("project",a),()=>{x.unsubscribe("project",a)}},[a])}function Ss(a){i.useEffect(()=>{if(a)return x.subscribe("task",a),()=>{x.unsubscribe("task",a)}},[a])}function As({taskId:a}){const[u,p]=i.useState([]),[N,_]=i.useState(""),[r,A]=i.useState(!1),[y,k]=i.useState(!1),[z,m]=i.useState(""),o=i.useRef(null);Ss(a),i.useEffect(()=>{a&&x.request("getComments",{taskId:a}).then(p).catch(()=>{})},[a]),i.useEffect(()=>{if(!a)return;const l=x.on("comment.created",f=>{f.task_id===a&&(p(q=>q.some(B=>B.id===f.id)?q:[...q,f]),f.is_ai_message&&(k(!1),m("")))}),d=x.on("agent.thinking",f=>{f.taskId===a&&(k(!0),m(""))}),T=x.on("agent.delta",f=>{f.taskId===a&&(k(!1),m(q=>q+(f.text||"")))}),w=x.on("agent.done",f=>{f.taskId===a&&k(!1)}),P=x.on("agent.error",f=>{f.taskId===a&&(k(!1),m(""))});return()=>{l(),d(),T(),w(),P()}},[a]),i.useEffect(()=>{o.current&&(o.current.scrollTop=o.current.scrollHeight)},[u,y,z]);const v=async()=>{if(N.trim()){A(!0);try{await x.request("aiDiscuss",{taskId:a,content:N.trim()}),_("")}catch(l){console.error(l)}A(!1)}},n=z.length>0;return e.jsxs("div",{className:"flex flex-col rounded-lg border",style:{borderColor:"var(--ai-border)",backgroundColor:"var(--ai-surface)"},children:[e.jsxs("div",{className:"flex items-center gap-2 border-b px-3 py-2",style:{borderColor:"var(--ai-border)"},children:[e.jsx(Y,{className:"size-4",style:{color:"var(--ai-indicator)"}}),e.jsx("span",{className:"text-xs font-medium",style:{color:"var(--ai-indicator)"},children:"AI Discussion"})]}),e.jsx("div",{ref:o,className:"max-h-[300px] overflow-y-auto p-3",children:u.length===0&&!y&&!n?e.jsx("p",{className:"py-4 text-center text-xs",style:{color:"var(--text-tertiary)"},children:"Start a conversation with the AI agent."}):e.jsxs("div",{className:"flex flex-col gap-3",children:[u.map(l=>{var d,T,w,P,f;return e.jsxs("div",{className:"flex gap-2",children:[l.is_ai_message?e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-full",style:{backgroundColor:"var(--ai-surface)",border:"1px solid var(--ai-border)"},children:e.jsx(Y,{className:"size-3",style:{color:"var(--ai-indicator)"}})}):e.jsx(oe,{name:((d=l.user)==null?void 0:d.full_name)||((T=l.user)==null?void 0:T.email),avatarUrl:(w=l.user)==null?void 0:w.avatar_url,size:"sm"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs font-medium",style:{color:l.is_ai_message?"var(--ai-indicator)":"var(--text-primary)"},children:l.is_ai_message?"AI Agent":((P=l.user)==null?void 0:P.full_name)||((f=l.user)==null?void 0:f.email)||"You"}),e.jsx("span",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:Z(new Date(l.created_at),{addSuffix:!0})})]}),e.jsx("p",{className:"mt-0.5 whitespace-pre-wrap text-xs leading-relaxed",style:{color:"var(--text-secondary)"},children:l.content})]})]},l.id)}),n&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-full",style:{backgroundColor:"var(--ai-surface)",border:"1px solid var(--ai-border)"},children:e.jsx(Y,{className:"size-3",style:{color:"var(--ai-indicator)"}})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs font-medium",style:{color:"var(--ai-indicator)"},children:"AI Agent"}),e.jsx("span",{className:"inline-block size-1.5 animate-pulse rounded-full",style:{backgroundColor:"var(--ai-indicator)"}})]}),e.jsxs("p",{className:"mt-0.5 whitespace-pre-wrap text-xs leading-relaxed",style:{color:"var(--text-secondary)"},children:[z,e.jsx("span",{className:"inline-block w-0.5 h-3 ml-0.5 animate-pulse",style:{backgroundColor:"var(--ai-indicator)"}})]})]})]}),y&&!n&&e.jsxs("div",{className:"flex items-center gap-2 px-1",children:[e.jsx("div",{className:"flex size-6 shrink-0 items-center justify-center rounded-full",style:{backgroundColor:"var(--ai-surface)",border:"1px solid var(--ai-border)"},children:e.jsx(Y,{className:"size-3",style:{color:"var(--ai-indicator)"}})}),e.jsxs("span",{className:"flex items-center gap-1 text-xs",style:{color:"var(--ai-indicator)"},children:[e.jsx("span",{className:"inline-block size-1.5 animate-pulse rounded-full",style:{backgroundColor:"var(--ai-indicator)"}}),"Thinking..."]})]})]})}),e.jsx("div",{className:"border-t p-2",style:{borderColor:"var(--ai-border)"},children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ee,{value:N,onChange:l=>_(l.target.value),placeholder:"Ask the AI agent...",rows:2,className:"resize-none text-xs",onKeyDown:l=>{l.key==="Enter"&&(l.metaKey||l.ctrlKey)&&(l.preventDefault(),v())}}),e.jsx(D,{size:"icon-sm",onClick:v,disabled:r||!N.trim()||n||y,className:"self-end",children:e.jsx(xs,{className:"size-3.5"})})]})})]})}const Ts={branch_created:de,push:ve,force_push:xe,pr_opened:V,pr_created:V,pr_closed:V,pr_merged:V,pr_ready:V,pr_synchronize:ve,ci_check:H,review:ge,deploy:Ae},Rs={branch_created:"var(--accent-brand)",push:"var(--text-tertiary)",force_push:"var(--priority-high)",pr_opened:"var(--status-done)",pr_created:"var(--accent-brand)",pr_closed:"var(--priority-urgent)",pr_merged:"var(--ai-indicator)",pr_ready:"var(--status-done)",ci_check:"var(--text-tertiary)",review:"var(--priority-medium)"};function Ds({taskId:a}){const[u,p]=i.useState([]),[N,_]=i.useState(!0);return i.useEffect(()=>{a&&x.request("getTaskActivity",{taskId:a}).then(r=>p(r||[])).catch(()=>{}).finally(()=>_(!1))},[a]),N?e.jsx("p",{className:"text-[11px] py-2",style:{color:"var(--text-quaternary)"},children:"Loading activity..."}):u.length===0?null:e.jsx("div",{className:"flex flex-col gap-0",children:u.map(r=>{const A=Ts[r.event_type]||ve,y=Rs[r.event_type]||"var(--text-tertiary)";return e.jsxs("div",{className:"flex items-start gap-2 py-1.5",children:[e.jsx("div",{className:"mt-0.5 shrink-0",children:e.jsx(A,{className:"size-3",style:{color:y}})}),e.jsxs("div",{className:"flex flex-col gap-0 min-w-0",children:[e.jsx("span",{className:"text-[11px] leading-tight",style:{color:"var(--text-secondary)"},children:r.description}),e.jsx("span",{className:"text-[10px]",style:{color:"var(--text-quaternary)"},children:Z(new Date(r.created_at),{addSuffix:!0})})]})]},r.id)})})}function qs({taskId:a,plan:u,planStatus:p,onUpdate:N}){const[_,r]=i.useState(""),[A,y]=i.useState(!1),[k,z]=i.useState(!1),{can:m}=qe(),o=async n=>{y(!0);try{await x.request("aiApprovePlan",{taskId:a,action:n,feedback:n==="request_changes"?_:void 0}),N()}catch(l){console.error(l)}y(!1)},v=p==="pending_review";return e.jsxs("div",{className:"rounded-lg border",style:{borderColor:"var(--ai-border)",backgroundColor:"var(--ai-surface)"},children:[e.jsxs("div",{className:"flex items-center gap-2 border-b px-3 py-2",style:{borderColor:"var(--ai-border)"},children:[e.jsx(Y,{className:"size-4",style:{color:"var(--ai-indicator)"}}),e.jsx("span",{className:"text-xs font-medium",style:{color:"var(--ai-indicator)"},children:"AI Plan"}),p&&e.jsx("span",{className:"ml-auto rounded px-1.5 py-0.5 text-[10px] font-medium",style:{backgroundColor:p==="approved"?"rgba(70, 167, 88, 0.12)":p==="rejected"?"rgba(229, 72, 77, 0.12)":"var(--accent-muted)",color:p==="approved"?"var(--status-done)":p==="rejected"?"var(--priority-urgent)":"var(--accent-brand)"},children:p.replace("_"," ")})]}),e.jsx("div",{className:"p-3",children:e.jsx("div",{className:"whitespace-pre-wrap text-xs leading-relaxed",style:{color:"var(--text-secondary)"},children:u||"No plan generated yet."})}),v&&e.jsxs("div",{className:"border-t p-3",style:{borderColor:"var(--ai-border)"},children:[k&&e.jsx("div",{className:"mb-2",children:e.jsx(ee,{value:_,onChange:n=>r(n.target.value),placeholder:"Describe what changes are needed...",rows:3,className:"resize-none text-xs"})}),e.jsxs("div",{className:"flex gap-2",children:[m.approvePlans&&e.jsxs(D,{size:"sm",onClick:()=>o("approve"),disabled:A,className:"gap-1",style:{backgroundColor:"var(--status-done)"},children:[e.jsx(H,{className:"size-3.5"}),"Approve"]}),e.jsxs(D,{size:"sm",variant:"ghost",onClick:()=>{k&&_.trim()?o("request_changes"):z(!0)},disabled:A,className:"gap-1",children:[e.jsx(ge,{className:"size-3.5"}),"Request Changes"]}),m.approvePlans&&e.jsxs(D,{size:"sm",variant:"ghost",onClick:()=>o("reject"),disabled:A,className:"gap-1 text-[var(--priority-urgent)]",children:[e.jsx(W,{className:"size-3.5"}),"Reject"]})]})]})]})}function Os({taskId:a,projectId:u,projectPrefix:p,onClose:N,onUpdate:_}){var h,g,j,C,I;const[r,A]=i.useState(null),[y,k]=i.useState(!1),[z,m]=i.useState(!1),[o,v]=i.useState(""),[n,l]=i.useState(""),[d,T]=i.useState(!1),[w,P]=i.useState([]),[f,q]=i.useState(""),[B,F]=i.useState(!1),[G,me]=i.useState([]),[$,E]=i.useState("comments"),[X,se]=i.useState(null),[K,ae]=i.useState([]);i.useEffect(()=>{if(!a)return;const s=c=>{c.key==="Escape"&&N()};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[a,N]),i.useEffect(()=>{if(!a){A(null);return}k(!0),x.request("getTask",{projectId:u,taskId:a}).then(s=>{A(s),v(s.title),l(s.description||""),se(s.story_points??null)}).catch(console.error).finally(()=>k(!1))},[a,u]),i.useEffect(()=>{a&&x.request("getComments",{taskId:a}).then(P).catch(console.error)},[a]),i.useEffect(()=>{!a||$!=="activity"||x.request("getActivity",{taskId:a}).then(me).catch(console.error)},[a,$]),i.useEffect(()=>{a&&x.request("getTaskPullRequests",{taskId:a}).then(ae).catch(()=>ae([]))},[a]);const O=async(s,c)=>{if(r)try{await x.request("updateTask",{projectId:u,taskId:r.id,[s]:c}),A(S=>({...S,[s]:c})),_()}catch(S){console.error(S)}},te=()=>{m(!1),o.trim()&&o!==(r==null?void 0:r.title)&&O("title",o.trim())},ue=()=>{T(!1),n!==((r==null?void 0:r.description)||"")&&O("description",n)},re=async()=>{if(!(!f.trim()||!a)){F(!0);try{const s=await x.request("createComment",{taskId:a,content:f.trim()});P(c=>[...c,s]),q("")}catch(s){console.error(s)}finally{F(!1)}}},t=s=>{var c,S;if(s.field==="status"){const b=((c=J.find(U=>U.value===s.old_value))==null?void 0:c.label)||s.old_value,M=((S=J.find(U=>U.value===s.new_value))==null?void 0:S.label)||s.new_value;return e.jsxs("span",{children:["changed status from"," ",e.jsx("span",{style:{color:"var(--text-primary)"},children:b})," to"," ",e.jsx("span",{style:{color:"var(--text-primary)"},children:M})]})}return s.action==="created"?e.jsx("span",{children:"created this task"}):e.jsxs("span",{children:["updated ",s.field||"task"]})};return e.jsx(Ee,{children:a&&e.jsxs(e.Fragment,{children:[e.jsx(Ne.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:"fixed inset-0 z-40",onClick:N}),e.jsxs(Ne.div,{initial:{x:"100%"},animate:{x:0},exit:{x:"100%"},transition:{duration:.2,ease:"easeInOut"},className:"fixed right-0 top-0 z-50 flex h-full w-full max-w-lg flex-col overflow-hidden border-l",style:{backgroundColor:"var(--bg-surface)",borderColor:"var(--border-subtle)"},children:[e.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-4",style:{borderColor:"var(--border-subtle)"},children:[r&&e.jsxs("span",{className:"font-mono text-xs",style:{color:"var(--text-tertiary)"},children:[p,"-",r.task_number]}),e.jsx(D,{variant:"ghost",size:"icon-sm",onClick:N,children:e.jsx(fe,{className:"size-4",style:{color:"var(--text-secondary)"}})})]}),y?e.jsx("div",{className:"flex flex-1 items-center justify-center",children:e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-[var(--accent-brand)] border-t-transparent animate-spin"})}):r?e.jsxs("div",{className:"flex flex-1 flex-col overflow-y-auto",children:[e.jsx("div",{className:"px-6 pt-6",children:z?e.jsx(Q,{value:o,onChange:s=>v(s.target.value),onBlur:te,onKeyDown:s=>s.key==="Enter"&&te(),autoFocus:!0,className:"border-none bg-transparent px-0 text-lg font-semibold",style:{color:"var(--text-primary)"}}):e.jsx("h2",{className:"cursor-text text-lg font-semibold leading-snug",style:{color:"var(--text-primary)"},onClick:()=>m(!0),children:r.title})}),e.jsxs("div",{className:"mt-4 flex flex-col gap-3 px-6",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"w-20 shrink-0 text-xs",style:{color:"var(--text-tertiary)"},children:"Status"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:J.map(s=>e.jsx("button",{onClick:()=>O("status",s.value),className:L("rounded px-2 py-0.5 text-xs transition-colors duration-100",r.status===s.value?"font-medium":"hover:bg-[var(--bg-hover)]"),style:{backgroundColor:r.status===s.value?"var(--bg-active)":void 0,color:r.status===s.value?"var(--text-primary)":"var(--text-secondary)"},children:s.label},s.value))})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"w-20 shrink-0 text-xs",style:{color:"var(--text-tertiary)"},children:"Priority"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:Te.map(s=>e.jsxs("button",{onClick:()=>O("priority",s.value),className:L("flex items-center gap-1.5 rounded px-2 py-0.5 text-xs transition-colors duration-100",r.priority===s.value?"font-medium":"hover:bg-[var(--bg-hover)]"),style:{backgroundColor:r.priority===s.value?"var(--bg-active)":void 0,color:r.priority===s.value?"var(--text-primary)":"var(--text-secondary)"},children:[e.jsx(Re,{priority:s.value}),s.label]},s.value))})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 pt-0.5 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(ye,{className:"inline size-3 mr-1"}),"Assignees"]}),e.jsx("div",{className:"flex flex-wrap gap-1",children:r.assignees&&r.assignees.length>0?r.assignees.map(s=>e.jsxs("div",{className:"flex items-center gap-1.5 rounded px-1.5 py-0.5",style:{backgroundColor:"var(--bg-active)"},children:[e.jsx(oe,{name:s.full_name||s.email,avatarUrl:s.avatar_url,size:"xs"}),e.jsx("span",{className:"text-xs",style:{color:"var(--text-secondary)"},children:s.full_name||s.email})]},s.user_id||s.id)):e.jsx("span",{className:"text-xs",style:{color:"var(--text-tertiary)"},children:"Unassigned"})})]}),e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 pt-0.5 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(vs,{className:"inline size-3 mr-1"}),"Labels"]}),e.jsx("div",{className:"flex flex-wrap gap-1",children:r.labels&&r.labels.length>0?r.labels.map(s=>e.jsx(Be,{name:s.name,color:s.color},s.id||s.label_id)):e.jsx("span",{className:"text-xs",style:{color:"var(--text-tertiary)"},children:"No labels"})})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(Oe,{className:"inline size-3 mr-1"}),"Due date"]}),e.jsx(Q,{type:"date",value:r.due_date||"",onChange:s=>O("due_date",s.target.value||null),className:"h-7 w-auto border-none bg-transparent px-1 text-xs",style:{color:"var(--text-secondary)"}})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(Me,{className:"inline size-3 mr-1"}),"Points"]}),e.jsx("div",{className:"flex gap-1",children:[1,2,3,5,8,13].map(s=>e.jsx("button",{onClick:()=>{const c=X===s?null:s;se(c),O("story_points",c)},className:L("flex size-6 items-center justify-center rounded font-mono text-[10px] transition-colors duration-100",X===s?"font-medium":"hover:bg-[var(--bg-hover)]"),style:{backgroundColor:X===s?"var(--bg-active)":void 0,color:X===s?"var(--text-primary)":"var(--text-tertiary)"},children:s},s))})]}),r.task_branches&&r.task_branches.length>0&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 pt-0.5 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(de,{className:"inline size-3 mr-1"}),"Branches"]}),e.jsx("div",{className:"flex flex-col gap-2",children:r.task_branches.map(s=>{var U,je,be;const c=s.commit_count>0,S=(U=s.project_repos)==null?void 0:U.repo_owner,b=(je=s.project_repos)==null?void 0:je.repo_name,M=S&&b?`https://github.com/${S}/${b}/tree/${encodeURIComponent(s.branch_name)}`:null;return e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsxs("div",{className:"flex items-center gap-1.5 flex-wrap",children:[((be=s.project_repos)==null?void 0:be.label)&&e.jsx("span",{className:"rounded px-1 py-0.5 text-[9px] font-medium",style:{backgroundColor:"var(--bg-elevated)",color:"var(--text-tertiary)"},children:s.project_repos.label}),c&&M?e.jsx("a",{href:M,target:"_blank",rel:"noopener noreferrer",className:"font-mono text-xs hover:underline",style:{color:"var(--accent-brand)"},children:s.branch_name}):e.jsx("span",{className:"font-mono text-xs",style:{color:"var(--text-tertiary)"},children:s.branch_name}),s.force_push_detected&&e.jsxs("span",{className:"flex items-center gap-0.5 text-[10px]",style:{color:"var(--priority-high)"},children:[e.jsx(xe,{className:"size-3"})," Force pushed"]})]}),e.jsxs("span",{className:"text-[10px]",style:{color:"var(--text-quaternary)"},children:["from ",s.source_branch,c&&` · ${s.commit_count} commit${s.commit_count>1?"s":""}`,(s.additions>0||s.deletions>0)&&e.jsxs(e.Fragment,{children:[" · ",e.jsxs("span",{style:{color:"var(--status-done)"},children:["+",s.additions]})," / ",e.jsxs("span",{style:{color:"var(--priority-urgent)"},children:["-",s.deletions]})]}),s.first_commit_at&&e.jsxs(e.Fragment,{children:[" · working for ",(()=>{const le=Date.now()-new Date(s.first_commit_at).getTime(),ie=Math.floor(le/6e4);return ie<60?`${ie}m`:`${Math.floor(ie/60)}h ${ie%60}m`})()]})]}),s.files_touched&&s.files_touched.length>0&&e.jsxs("div",{className:"mt-0.5 flex flex-wrap gap-1",children:[s.files_touched.slice(0,5).map(le=>e.jsxs("span",{className:"flex items-center gap-0.5 rounded px-1 py-0.5 text-[9px] font-mono",style:{backgroundColor:"var(--bg-elevated)",color:"var(--text-quaternary)"},children:[e.jsx(Ve,{className:"size-2.5"}),le.split("/").pop()]},le)),s.files_touched.length>5&&e.jsxs("span",{className:"text-[9px]",style:{color:"var(--text-quaternary)"},children:["+",s.files_touched.length-5," more"]})]})]},s.id)})})]}),((h=r.task_branches)==null?void 0:h.some(s=>{var c;return((c=s.ci_checks)==null?void 0:c.length)>0}))&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 pt-0.5 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(H,{className:"inline size-3 mr-1"}),"CI"]}),e.jsx("div",{className:"flex flex-col gap-1",children:r.task_branches.flatMap(s=>s.ci_checks||[]).map((s,c)=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[s.conclusion==="success"?e.jsx(H,{className:"size-3",style:{color:"var(--status-done)"}}):s.conclusion==="failure"?e.jsx(W,{className:"size-3",style:{color:"var(--priority-urgent)"}}):e.jsx(we,{className:"size-3 animate-spin",style:{color:"var(--text-tertiary)"}}),e.jsx("span",{className:"text-xs",style:{color:"var(--text-secondary)"},children:s.name}),s.started_at&&s.completed_at&&e.jsx("span",{className:"text-[10px]",style:{color:"var(--text-quaternary)"},children:(()=>{const S=new Date(s.completed_at).getTime()-new Date(s.started_at).getTime(),b=Math.floor(S/1e3);return b<60?`${b}s`:`${Math.floor(b/60)}m ${b%60}s`})()}),s.details_url&&e.jsx("a",{href:s.details_url,target:"_blank",rel:"noopener noreferrer",className:"text-[10px] hover:underline",style:{color:"var(--accent-brand)"},children:"logs"})]},c))})]}),((g=r.task_branches)==null?void 0:g.some(s=>Object.keys(s.review_statuses||{}).length>0))&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 pt-0.5 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(ye,{className:"inline size-3 mr-1"}),"Reviews"]}),e.jsx("div",{className:"flex flex-col gap-1",children:Object.entries(r.task_branches.reduce((s,c)=>({...s,...c.review_statuses||{}}),{})).map(([s,c])=>e.jsxs("div",{className:"flex items-center gap-1.5",children:[c.state==="APPROVED"?e.jsx(H,{className:"size-3",style:{color:"var(--status-done)"}}):c.state==="CHANGES_REQUESTED"?e.jsx(W,{className:"size-3",style:{color:"var(--priority-high)"}}):e.jsx(pe,{className:"size-3",style:{color:"var(--text-tertiary)"}}),e.jsxs("span",{className:"text-xs",style:{color:"var(--text-secondary)"},children:["@",s]}),e.jsx("span",{className:"text-[10px]",style:{color:"var(--text-quaternary)"},children:c.state.toLowerCase().replace("_"," ")}),c.stale&&e.jsx("span",{className:"text-[9px] font-medium",style:{color:"var(--priority-high)"},children:"stale"})]},s))})]}),((j=r.task_branches)==null?void 0:j.some(s=>s.pr_number))&&(()=>{const s=r.task_branches.reduce((c,S)=>{const b=S.merge_readiness||{};return{ci_passed:c.ci_passed||b.ci_passed,approved:c.approved||b.approved,no_conflicts:b.no_conflicts,up_to_date:b.up_to_date}},{ci_passed:!1,approved:!1,no_conflicts:void 0,up_to_date:void 0});return e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"w-20 shrink-0 pt-0.5 text-xs",style:{color:"var(--text-tertiary)"},children:"Merge"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:[{label:"CI",ok:s.ci_passed},{label:"Approved",ok:s.approved},{label:"No Conflicts",ok:s.no_conflicts},{label:"Up to Date",ok:s.up_to_date}].map(c=>e.jsxs("span",{className:"flex items-center gap-1 text-[10px]",style:{color:c.ok?"var(--status-done)":c.ok===!1?"var(--priority-urgent)":"var(--text-quaternary)"},children:[c.ok?e.jsx(H,{className:"size-3"}):c.ok===!1?e.jsx(W,{className:"size-3"}):e.jsx(pe,{className:"size-3"}),c.label]},c.label))})]})})(),((C=r.task_branches)==null?void 0:C.some(s=>s.deploy_status&&s.deploy_status!=="none"))&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 pt-0.5 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(Ae,{className:"inline size-3 mr-1"}),"Deploy"]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.task_branches.filter(s=>s.deploy_status&&s.deploy_status!=="none").map(s=>{var c,S;return e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("span",{className:"text-xs font-medium",style:{color:s.deploy_status==="success"?"var(--status-done)":s.deploy_status==="failure"||s.deploy_status==="error"?"var(--priority-urgent)":s.deploy_status==="rolling_back"?"var(--priority-high)":"var(--text-secondary)"},children:[s.deploy_environment||"deploy",": ",s.deploy_status]}),s.deploy_url&&e.jsx("a",{href:s.deploy_url,target:"_blank",rel:"noopener noreferrer",className:"text-[10px] hover:underline",style:{color:"var(--accent-brand)"},children:"preview"}),s.deploy_log_url&&e.jsx("a",{href:s.deploy_log_url,target:"_blank",rel:"noopener noreferrer",className:"text-[10px] hover:underline",style:{color:"var(--accent-brand)"},children:"logs"})]}),s.deploy_steps&&s.deploy_steps.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1",children:s.deploy_steps.map((b,M)=>e.jsxs("span",{className:"flex items-center gap-0.5 text-[10px]",style:{color:b.conclusion==="success"?"var(--status-done)":b.conclusion==="failure"?"var(--priority-urgent)":"var(--text-quaternary)"},children:[b.conclusion==="success"?e.jsx(H,{className:"size-2.5"}):b.conclusion==="failure"?e.jsx(W,{className:"size-2.5"}):e.jsx(we,{className:"size-2.5 animate-spin"}),b.name]},M))}),((S=(c=s.deploy_prod_approvals)==null?void 0:c.required)==null?void 0:S.length)>0&&e.jsxs("div",{className:"flex flex-col gap-0.5 mt-1",children:[e.jsx("span",{className:"text-[10px] font-medium",style:{color:"var(--text-secondary)"},children:"Approval Gate"}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:s.deploy_prod_approvals.required.map(b=>{const M=(s.deploy_prod_approvals.approved||[]).includes(b);return e.jsxs("span",{className:"flex items-center gap-0.5 text-[10px]",style:{color:M?"var(--status-done)":"var(--text-quaternary)"},children:[M?e.jsx(H,{className:"size-3"}):e.jsx(pe,{className:"size-3"}),"@",b]},b)})})]})]},s.id)}),(r.status==="deploy_prod"||r.status==="done")&&e.jsxs(D,{variant:"ghost",size:"sm",className:"self-start mt-1",style:{color:"var(--priority-high)"},onClick:async()=>{try{await x.request("triggerRollback",{taskId:r.id,projectId:u})}catch(s){console.error("Rollback failed:",s)}},children:[e.jsx(os,{className:"size-3 mr-1"}),"Rollback"]})]})]}),K.length>0&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsxs("span",{className:"w-20 shrink-0 pt-0.5 text-xs",style:{color:"var(--text-tertiary)"},children:[e.jsx(V,{className:"inline size-3 mr-1"}),"PRs"]}),e.jsx("div",{className:"flex flex-col gap-1",children:K.map(s=>e.jsxs("a",{href:s.github_pr_url,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 rounded px-1.5 py-0.5 text-xs transition-colors duration-100 hover:bg-[var(--bg-hover)]",style:{color:"var(--text-secondary)"},children:[e.jsx(V,{className:"size-3",style:{color:s.state==="merged"?"var(--ai-indicator)":s.state==="closed"?"var(--priority-urgent)":"var(--status-done)"}}),e.jsxs("span",{className:"truncate",children:["#",s.github_pr_number," ",s.title]}),e.jsx("span",{className:"shrink-0 rounded px-1 py-0.5 text-[9px]",style:{backgroundColor:"var(--bg-active)",color:"var(--text-tertiary)"},children:s.state})]},s.id))})]}),((I=r.task_branches)==null?void 0:I.some(s=>{var c,S;return s.pr_number&&!s.pr_is_draft&&((c=s.merge_readiness)==null?void 0:c.ci_passed)&&((S=s.merge_readiness)==null?void 0:S.approved)}))&&r.status!=="done"&&e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("span",{className:"w-20 shrink-0"}),e.jsxs(D,{size:"sm",onClick:async()=>{try{await x.request("mergePR",{taskId:r.id,projectId:u}),_()}catch(s){console.error("Merge failed:",s)}},style:{backgroundColor:"var(--status-done)",color:"white"},children:[e.jsx(Ze,{className:"size-3.5 mr-1"}),"Merge PR"]})]})]}),e.jsx("div",{className:"mx-6 my-4 border-t",style:{borderColor:"var(--border-subtle)"}}),e.jsxs("div",{className:"px-6 pb-4",children:[e.jsx("label",{className:"mb-2 block text-xs font-medium",style:{color:"var(--text-tertiary)"},children:"Description"}),d?e.jsx(ee,{value:n,onChange:s=>l(s.target.value),onBlur:ue,autoFocus:!0,rows:8,className:"min-h-[120px] resize-none border-none bg-transparent px-0 text-sm",style:{color:"var(--text-secondary)"},placeholder:"Add a description..."}):e.jsx("div",{className:"cursor-text whitespace-pre-wrap text-sm leading-relaxed",style:{color:n?"var(--text-secondary)":"var(--text-tertiary)"},onClick:()=>T(!0),children:n||"Add a description..."})]}),r.status==="ai_discuss"&&e.jsx("div",{className:"px-6 pb-4",children:e.jsx(As,{taskId:r.id})}),r.ai_plan&&e.jsx("div",{className:"px-6 pb-4",children:e.jsx(qs,{taskId:r.id,plan:r.ai_plan,planStatus:r.ai_plan_status||"",onUpdate:()=>{x.request("getTask",{projectId:u,taskId:r.id}).then(s=>{A(s)}),_()}})}),r.side==="ai"&&r.status==="ai_in_progress"&&e.jsxs("div",{className:"mx-6 mb-4 flex items-center gap-2 rounded-md px-3 py-2",style:{backgroundColor:"var(--ai-surface)",border:"1px solid var(--ai-border)"},children:[e.jsxs("span",{className:"relative flex size-2",children:[e.jsx("span",{className:"absolute inline-flex size-full animate-ping rounded-full opacity-75",style:{backgroundColor:"var(--ai-indicator)"}}),e.jsx("span",{className:"relative inline-flex size-2 rounded-full",style:{backgroundColor:"var(--ai-indicator)"}})]}),e.jsx("span",{className:"text-xs",style:{color:"var(--ai-indicator)"},children:"AI agent is working on this task..."})]}),e.jsx("div",{className:"px-6 pb-4",children:e.jsx(Ns,{taskId:r.id})}),e.jsx("div",{className:"px-6 pb-4",children:e.jsx(Cs,{taskId:r.id})}),r.conflict_warning&&e.jsxs("div",{className:"mx-6 mb-4 flex items-start gap-2 rounded-lg border p-3",style:{borderColor:"var(--priority-high)",backgroundColor:"color-mix(in srgb, var(--priority-high) 5%, transparent)"},children:[e.jsx(xe,{className:"size-4 shrink-0 mt-0.5",style:{color:"var(--priority-high)"}}),e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsx("span",{className:"text-xs font-medium",style:{color:"var(--priority-high)"},children:"Base branch updated — potential conflicts"}),e.jsxs("span",{className:"text-[11px]",style:{color:"var(--text-secondary)"},children:[r.conflict_warning.branch_name," is ",r.conflict_warning.behind_by," commit",r.conflict_warning.behind_by>1?"s":""," behind ",r.conflict_warning.source_branch]})]})]}),r.column_entered_at&&e.jsx("div",{className:"mx-6 mb-2",children:e.jsxs("span",{className:"text-[10px]",style:{color:"var(--text-quaternary)"},children:["In current column for ",(()=>{const s=Date.now()-new Date(r.column_entered_at).getTime(),c=Math.floor(s/6e4);return c<60?`${c}m`:`${Math.floor(c/60)}h ${c%60}m`})()]})}),r.task_branches&&r.task_branches.length>0&&e.jsxs("div",{className:"px-6 pb-4",children:[e.jsxs("h3",{className:"mb-2 text-xs font-medium",style:{color:"var(--text-secondary)"},children:[e.jsx(_e,{className:"inline size-3 mr-1"}),"Git Activity"]}),e.jsx(Ds,{taskId:r.id})]}),e.jsx("div",{className:"mx-6 mb-4 border-t",style:{borderColor:"var(--border-subtle)"}}),e.jsx("div",{className:"px-6",children:e.jsxs("div",{className:"flex gap-4 border-b",style:{borderColor:"var(--border-subtle)"},children:[e.jsxs("button",{onClick:()=>E("comments"),className:L("flex items-center gap-1.5 pb-2 text-xs font-medium transition-colors duration-100",$==="comments"?"border-b-2":""),style:{color:$==="comments"?"var(--text-primary)":"var(--text-tertiary)",borderColor:$==="comments"?"var(--accent-brand)":"transparent"},children:[e.jsx(ge,{className:"size-3"}),"Comments ",w.length>0&&`(${w.length})`]}),e.jsxs("button",{onClick:()=>E("activity"),className:L("flex items-center gap-1.5 pb-2 text-xs font-medium transition-colors duration-100",$==="activity"?"border-b-2":""),style:{color:$==="activity"?"var(--text-primary)":"var(--text-tertiary)",borderColor:$==="activity"?"var(--accent-brand)":"transparent"},children:[e.jsx(_e,{className:"size-3"}),"Activity"]})]})}),e.jsx("div",{className:"flex-1 px-6 py-4",children:$==="comments"?e.jsxs("div",{className:"flex flex-col gap-3",children:[w.length===0&&e.jsx("p",{className:"text-xs",style:{color:"var(--text-tertiary)"},children:"No comments yet."}),w.map(s=>{var c,S,b,M,U;return e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{name:((c=s.user)==null?void 0:c.full_name)||((S=s.user)==null?void 0:S.email),avatarUrl:(b=s.user)==null?void 0:b.avatar_url,size:"sm"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs font-medium",style:{color:"var(--text-primary)"},children:((M=s.user)==null?void 0:M.full_name)||((U=s.user)==null?void 0:U.email)||"Unknown"}),e.jsx("span",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:Z(new Date(s.created_at),{addSuffix:!0})}),s.edited_at&&e.jsx("span",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:"(edited)"})]}),e.jsx("p",{className:"mt-0.5 whitespace-pre-wrap text-sm leading-relaxed",style:{color:"var(--text-secondary)"},children:s.content})]})]},s.id)}),e.jsx("div",{className:"mt-2 flex gap-2",children:e.jsx(ee,{value:f,onChange:s=>q(s.target.value),placeholder:"Write a comment...",rows:2,className:"resize-none text-sm",onKeyDown:s=>{s.key==="Enter"&&(s.metaKey||s.ctrlKey)&&(s.preventDefault(),re())}})}),f.trim()&&e.jsx("div",{className:"flex justify-end",children:e.jsx(D,{size:"sm",onClick:re,disabled:B,children:B?"Sending...":"Comment"})})]}):e.jsxs("div",{className:"flex flex-col gap-3",children:[G.length===0&&e.jsx("p",{className:"text-xs",style:{color:"var(--text-tertiary)"},children:"No activity yet."}),G.map(s=>{var c,S,b,M,U;return e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(oe,{name:((c=s.user)==null?void 0:c.full_name)||((S=s.user)==null?void 0:S.email),avatarUrl:(b=s.user)==null?void 0:b.avatar_url,size:"xs"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("p",{className:"text-xs",style:{color:"var(--text-secondary)"},children:[e.jsx("span",{className:"font-medium",style:{color:"var(--text-primary)"},children:((M=s.user)==null?void 0:M.full_name)||((U=s.user)==null?void 0:U.email)||"System"})," ",t(s)]}),e.jsx("span",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:Z(new Date(s.created_at),{addSuffix:!0})})]})]},s.id)})]})})]}):e.jsx("div",{className:"flex flex-1 items-center justify-center",children:e.jsx("p",{className:"text-sm",style:{color:"var(--text-tertiary)"},children:"Task not found"})})]})]})})}function Es(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,40)}function Hs({open:a,onOpenChange:u,projectId:p,projectAgentId:N,projectPrefix:_="",defaultStatus:r="todo",onCreated:A}){const[y,k]=i.useState(""),[z,m]=i.useState(""),[o,v]=i.useState(r),[n,l]=i.useState("none"),[d,T]=i.useState("human"),[w,P]=i.useState(""),[f,q]=i.useState(!1),[B,F]=i.useState(""),[G,me]=i.useState([]),[$,E]=i.useState([]),[X,se]=i.useState(!1);i.useEffect(()=>{!a||!p||x.request("getProjectRepos",{projectId:p}).then(t=>{me(t||[]),se((t||[]).length>0)}).catch(()=>{})},[a,p]);const K=i.useCallback((t,h)=>{if(!t.trim())return"";const g=Es(t);return`agent/${h?h+"-":""}${g}`},[]),ae=i.useCallback(t=>{E(h=>{if(h.find(C=>C.projectRepoId===t.id))return h.filter(C=>C.projectRepoId!==t.id);const j={projectRepoId:t.id,repoLabel:t.label,repoOwner:t.repo_owner,repoName:t.repo_name,defaultBranch:t.default_branch||"main",sourceBranch:t.default_branch||"main",branchName:K(y,_),branches:[],loadingBranches:!0,behindBy:null,branchExists:null,checkingBranch:!1};return x.request("listBranches",{projectRepoId:t.id}).then(C=>{E(I=>I.map(s=>s.projectRepoId===t.id?{...s,branches:C,loadingBranches:!1}:s))}).catch(()=>{E(C=>C.map(I=>I.projectRepoId===t.id?{...I,loadingBranches:!1}:I))}),[...h,j]})},[y,_,K]);i.useEffect(()=>{y.trim()&&E(t=>t.map(h=>({...h,branchName:h.branchName||K(y,_)})))},[y,_,K]);const O=i.useCallback(async(t,h)=>{if(h){E(g=>g.map(j=>j.projectRepoId===t?{...j,checkingBranch:!0}:j));try{const g=await x.request("checkBranchExists",{projectRepoId:t,branchName:h});E(j=>j.map(C=>C.projectRepoId===t?{...C,branchExists:g.exists,checkingBranch:!1}:C))}catch{E(g=>g.map(j=>j.projectRepoId===t?{...j,checkingBranch:!1}:j))}}},[]),te=i.useCallback(async(t,h,g)=>{if(h===g){E(j=>j.map(C=>C.projectRepoId===t?{...C,behindBy:null}:C));return}try{const j=await x.request("compareBranches",{projectRepoId:t,base:g,head:h});E(C=>C.map(I=>I.projectRepoId===t?{...I,behindBy:j.behind_by}:I))}catch{}},[]),ue=async t=>{if(t.preventDefault(),!!y.trim()){q(!0),F("");try{const h={title:y.trim(),description:z.trim()||void 0,status:d==="ai"?"ai_inbox":o,priority:n,side:d,story_points:w!==""?Number(w):void 0},g=await x.request("createTask",{projectId:p,...h});if(g!=null&&g.id&&$.length>0)try{await x.request("saveTaskBranches",{taskId:g.id,projectId:p,branches:$.map(j=>({projectRepoId:j.projectRepoId,branchName:j.branchName,sourceBranch:j.sourceBranch}))})}catch(j){console.error("Failed to save task branches:",j)}if(d==="ai"&&(g!=null&&g.id))try{await x.request("aiTrigger",{taskId:g.id,projectId:p})}catch(j){console.error("Failed to dispatch to agent:",j)}A(),u(!1),k(""),m(""),v(r),l("none"),P(""),E([])}catch(h){F(h.message||"Failed to create task")}finally{q(!1)}}},re=t=>{t&&v(r),u(t)};return e.jsx($e,{open:a,onOpenChange:re,children:e.jsxs(Pe,{className:"sm:max-w-md",children:[e.jsx(Le,{children:e.jsx(Ie,{children:"Create Task"})}),e.jsxs("form",{onSubmit:ue,className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs font-medium",style:{color:"var(--text-secondary)"},children:"Title"}),e.jsx(Q,{value:y,onChange:t=>k(t.target.value),placeholder:"Task title",autoFocus:!0})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs font-medium",style:{color:"var(--text-secondary)"},children:"Description"}),e.jsx(ee,{value:z,onChange:t=>m(t.target.value),placeholder:"Add details...",rows:3,className:"resize-none"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs font-medium",style:{color:"var(--text-secondary)"},children:"Status"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:J.map(t=>e.jsx("button",{type:"button",onClick:()=>v(t.value),className:L("rounded px-2 py-1 text-xs transition-colors duration-100",o===t.value?"font-medium":"hover:bg-[var(--bg-hover)]"),style:{backgroundColor:o===t.value?"var(--bg-active)":void 0,color:o===t.value?"var(--text-primary)":"var(--text-secondary)"},children:t.label},t.value))})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs font-medium",style:{color:"var(--text-secondary)"},children:"Priority"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:Te.map(t=>e.jsxs("button",{type:"button",onClick:()=>l(t.value),className:L("flex items-center gap-1.5 rounded px-2 py-1 text-xs transition-colors duration-100",n===t.value?"font-medium":"hover:bg-[var(--bg-hover)]"),style:{backgroundColor:n===t.value?"var(--bg-active)":void 0,color:n===t.value?"var(--text-primary)":"var(--text-secondary)"},children:[e.jsx(Re,{priority:t.value}),t.label]},t.value))})]}),N&&e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs font-medium",style:{color:"var(--text-secondary)"},children:"Assign to"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>T("human"),className:L("flex flex-1 items-center justify-center gap-2 rounded-md border py-2 text-sm font-medium transition-colors duration-100"),style:{borderColor:d==="human"?"var(--priority-medium)":"var(--border-default)",backgroundColor:d==="human"?"rgba(229, 201, 77, 0.08)":void 0,color:d==="human"?"var(--priority-medium)":"var(--text-secondary)"},children:[e.jsx(ye,{className:"size-3.5"})," Human"]}),e.jsxs("button",{type:"button",onClick:()=>T("ai"),className:L("flex flex-1 items-center justify-center gap-2 rounded-md border py-2 text-sm font-medium transition-colors duration-100"),style:{borderColor:d==="ai"?"var(--ai-indicator)":"var(--border-default)",backgroundColor:d==="ai"?"rgba(61, 214, 181, 0.08)":void 0,color:d==="ai"?"var(--ai-indicator)":"var(--text-secondary)"},children:[e.jsx(Y,{className:"size-3.5"})," AI Agent"]})]}),d==="ai"&&e.jsx("p",{className:"text-[11px]",style:{color:"var(--ai-indicator)"},children:"Task will be automatically dispatched to the project's AI agent."})]}),X&&G.length>0&&e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("label",{className:"text-xs font-medium",style:{color:"var(--text-secondary)"},children:[e.jsx(de,{className:"mr-1 inline size-3.5"}),"Repositories & Branches"]}),e.jsx("p",{className:"text-[11px]",style:{color:"var(--text-tertiary)"},children:"Select which repos this task will create branches in."}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:G.map(t=>{const h=$.some(g=>g.projectRepoId===t.id);return e.jsxs("button",{type:"button",onClick:()=>ae(t),className:L("flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs transition-colors duration-100"),style:{borderColor:h?"var(--accent-brand)":"var(--border-default)",backgroundColor:h?"color-mix(in srgb, var(--accent-brand) 8%, transparent)":void 0,color:h?"var(--text-primary)":"var(--text-secondary)"},children:[h?e.jsx(ke,{className:"size-3"}):e.jsx(de,{className:"size-3"}),e.jsx("span",{className:"font-mono text-[11px]",children:t.label}),e.jsxs("span",{className:"text-[10px] opacity-60",children:[t.repo_owner,"/",t.repo_name]})]},t.id)})}),$.map(t=>e.jsxs("div",{className:"mt-1 flex flex-col gap-2 rounded-lg border p-3",style:{borderColor:"var(--border-default)",backgroundColor:"var(--bg-surface)"},children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"rounded px-1.5 py-0.5 text-[10px] font-medium",style:{backgroundColor:"var(--bg-elevated)",color:"var(--text-secondary)"},children:t.repoLabel}),e.jsxs("span",{className:"text-[11px] font-mono",style:{color:"var(--text-tertiary)"},children:[t.repoOwner,"/",t.repoName]})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("label",{className:"text-[11px]",style:{color:"var(--text-tertiary)"},children:"Source branch"}),e.jsx("select",{value:t.sourceBranch,onChange:h=>{const g=h.target.value;E(j=>j.map(C=>C.projectRepoId===t.projectRepoId?{...C,sourceBranch:g}:C)),te(t.projectRepoId,g,t.defaultBranch)},className:"rounded border px-2 py-1 text-xs",style:{backgroundColor:"var(--bg-base)",borderColor:"var(--border-default)",color:"var(--text-primary)"},children:t.loadingBranches?e.jsx("option",{children:"Loading..."}):t.branches.map(h=>e.jsxs("option",{value:h.name,children:[h.name,h.lastCommitDate?` · ${new Date(h.lastCommitDate).toLocaleDateString()}`:""]},h.name))}),t.behindBy!==null&&t.behindBy>0&&e.jsxs("p",{className:"flex items-center gap-1 text-[11px]",style:{color:"var(--priority-high)"},children:[e.jsx(xe,{className:"size-3"}),"This branch is ",t.behindBy," commit",t.behindBy>1?"s":""," behind ",t.defaultBranch]})]}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx("label",{className:"text-[11px]",style:{color:"var(--text-tertiary)"},children:"Branch name"}),e.jsx(Q,{value:t.branchName,onChange:h=>{const g=h.target.value;E(j=>j.map(C=>C.projectRepoId===t.projectRepoId?{...C,branchName:g,branchExists:null}:C))},onBlur:()=>O(t.projectRepoId,t.branchName),placeholder:"agent/PREFIX-42-description",className:"font-mono text-xs"}),t.checkingBranch&&e.jsx("p",{className:"text-[11px]",style:{color:"var(--text-tertiary)"},children:"Checking..."}),t.branchExists===!0&&e.jsxs("p",{className:"flex items-center gap-1 text-[11px]",style:{color:"var(--priority-urgent)"},children:[e.jsx(fe,{className:"size-3"}),"Branch already exists on this repo"]}),t.branchExists===!1&&e.jsxs("p",{className:"flex items-center gap-1 text-[11px]",style:{color:"var(--status-done)"},children:[e.jsx(ke,{className:"size-3"}),"Available"]})]})]},t.projectRepoId))]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx("label",{className:"text-xs font-medium",style:{color:"var(--text-secondary)"},children:"Story Points"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:[1,2,3,5,8,13].map(t=>e.jsx("button",{type:"button",onClick:()=>P(w===t?"":t),className:L("flex size-7 items-center justify-center rounded text-xs font-mono transition-colors duration-100",w===t?"font-medium":"hover:bg-[var(--bg-hover)]"),style:{backgroundColor:w===t?"var(--bg-active)":void 0,color:w===t?"var(--text-primary)":"var(--text-secondary)"},children:t},t))})]}),B&&e.jsx("p",{className:"text-xs",style:{color:"var(--priority-urgent)"},children:B}),e.jsx(Ue,{children:e.jsx(D,{type:"submit",disabled:f||!y.trim(),children:f?"Creating...":"Create Task"})})]})]})})}function ce(a){return a&&{...a,assignees:(a.task_assignees||[]).map(u=>({user_id:u.user_id,...u.profiles||{}})),labels:(a.task_labels||[]).map(u=>({label_id:u.label_id,...u.labels||{}}))}}function Gs(a,u){const[p,N]=i.useState([]),[_,r]=i.useState(!0),[A,y]=i.useState(null),k=i.useRef(a);k.current=a,zs(a);const z=i.useCallback(async()=>{if(!a){N([]),r(!1);return}r(!0);try{const o=await x.request("getTasks",{projectId:a,...u});k.current===a&&(N((o||[]).map(ce)),y(null))}catch(o){k.current===a&&y(o)}finally{k.current===a&&r(!1)}},[a,JSON.stringify(u)]);i.useEffect(()=>{z()},[z]),i.useEffect(()=>x.onStatus(o=>{o==="connected"&&k.current&&z()}),[z]),i.useEffect(()=>{if(!a)return;const o=x.on("task.created",l=>{l.project_id===a&&N(d=>d.some(T=>T.id===l.id)?d:[...d,ce(l)])}),v=x.on("task.updated",l=>{const{taskId:d,changes:T,task:w}=l,P=d||(w==null?void 0:w.id);P&&N(f=>{const q=f.findIndex(G=>G.id===P);if(q===-1)return w&&w.project_id===a?[...f,ce(w)]:f;const B={...f[q],...T,...w||{}},F=[...f];return F[q]=ce(B),F})}),n=x.on("task.deleted",l=>{const{taskId:d}=l;d&&N(T=>T.filter(w=>w.id!==d))});return()=>{o(),v(),n()}},[a]);const m=i.useCallback((o,v)=>{N(n=>n.map(l=>l.id===o?{...l,...v}:l))},[]);return{tasks:p,isLoading:_,error:A,mutate:z,optimisticUpdate:m,setTasks:N}}export{bs as A,Oe as C,Us as D,de as G,we as L,Re as P,Ae as R,J as S,xe as T,ye as U,Fs as a,V as b,Bs as c,Te as d,vs as e,Os as f,Hs as g,Gs as u};
@@ -0,0 +1,6 @@
1
+ import{c as e}from"./index-DXrrw_d3.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const y=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]],s=e("user-plus",y);export{s as U};
@@ -0,0 +1,6 @@
1
+ import{c as e}from"./index-DXrrw_d3.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const c=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],r=e("users",c);export{r as U};
@@ -0,0 +1,32 @@
1
+ <!doctype html>
2
+ <html lang="en" class="dark h-full antialiased">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>CloseClaw</title>
7
+ <link
8
+ href="https://api.fontshare.com/v2/css?f[]=satoshi@400,500,600,700&display=swap"
9
+ rel="stylesheet"
10
+ />
11
+ <link
12
+ href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap"
13
+ rel="stylesheet"
14
+ />
15
+ <script>
16
+ // Set theme before render to avoid flash
17
+ (function () {
18
+ try {
19
+ var theme = localStorage.getItem("theme") || "dark";
20
+ document.documentElement.setAttribute("data-theme", theme);
21
+ if (theme === "dark") document.documentElement.classList.add("dark");
22
+ else document.documentElement.classList.remove("dark");
23
+ } catch (e) {}
24
+ })();
25
+ </script>
26
+ <script type="module" crossorigin src="/assets/index-DXrrw_d3.js"></script>
27
+ <link rel="stylesheet" crossorigin href="/assets/index-Yi92esJb.css">
28
+ </head>
29
+ <body class="min-h-full flex flex-col">
30
+ <div id="root"></div>
31
+ </body>
32
+ </html>
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "closeclaw",
3
+ "version": "3.0.0",
4
+ "description": "CloseClaw — AI-powered project management platform. One command, full stack.",
5
+ "license": "UNLICENSED",
6
+ "type": "module",
7
+ "bin": {
8
+ "closeclaw": "./dist/cli-loader.cjs"
9
+ },
10
+ "files": [
11
+ "dist/*.cjs",
12
+ "dist/*.jsc",
13
+ "dist/public",
14
+ "dist/agent-templates",
15
+ "dist/packages/platform-tools/index.js",
16
+ "dist/packages/platform-tools/package.json",
17
+ "dist/packages/platform-tools/openclaw.plugin.json"
18
+ ],
19
+ "scripts": {
20
+ "dev": "tsx watch src/index.ts",
21
+ "build": "tsup src/index.ts src/cli.ts --format esm --dts --splitting",
22
+ "build:publish": "npm run build:cjs && npm run build:bytecode && npm run build:frontend && npm run build:assemble",
23
+ "build:cjs": "tsup src/index.ts src/cli.ts --format cjs --no-splitting --outDir dist",
24
+ "build:bytecode": "node build/compile-cjs.cjs",
25
+ "build:frontend": "cd ../web && npm run build",
26
+ "build:assemble": "cp -r ../web/dist dist/public && cp -r agent-templates dist/agent-templates && mkdir -p dist/packages && cp -r ../platform-tools dist/packages/platform-tools",
27
+ "start": "node dist/index.cjs",
28
+ "start:bytecode": "node dist/index-loader.cjs"
29
+ },
30
+ "dependencies": {
31
+ "@hono/node-server": "^1.13.8",
32
+ "argon2": "^0.41.1",
33
+ "better-sqlite3": "^11.7.0",
34
+ "bytenode": "^1.5.7",
35
+ "drizzle-orm": "^0.38.0",
36
+ "hono": "^4.7.6",
37
+ "jsonwebtoken": "^9.0.2",
38
+ "ws": "^8.18.0",
39
+ "zod": "^3.24.2"
40
+ },
41
+ "devDependencies": {
42
+ "@types/better-sqlite3": "^7.6.12",
43
+ "@types/jsonwebtoken": "^9.0.7",
44
+ "@types/node": "^22.13.14",
45
+ "@types/ws": "^8.5.13",
46
+ "drizzle-kit": "^0.30.0",
47
+ "tsup": "^8.4.0",
48
+ "tsx": "^4.19.3",
49
+ "typescript": "^5.8.2"
50
+ },
51
+ "engines": {
52
+ "node": ">=22.0.0"
53
+ }
54
+ }