profclaw 2.0.0 → 2.3.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 (477) hide show
  1. package/.env.example +14 -2
  2. package/CHANGELOG.md +37 -0
  3. package/CONTRIBUTING.md +20 -0
  4. package/Dockerfile +39 -23
  5. package/README.md +174 -40
  6. package/dist/agents/agent-summary.d.ts +44 -0
  7. package/dist/agents/agent-summary.js +176 -0
  8. package/dist/agents/auto-memory.d.ts +59 -0
  9. package/dist/agents/auto-memory.js +310 -0
  10. package/dist/agents/checkpoint-manager.d.ts +76 -0
  11. package/dist/agents/checkpoint-manager.js +156 -0
  12. package/dist/agents/circuit-breaker.d.ts +54 -0
  13. package/dist/agents/circuit-breaker.js +153 -0
  14. package/dist/agents/context-compactor.d.ts +70 -0
  15. package/dist/agents/context-compactor.js +361 -0
  16. package/dist/agents/conversation-branch.d.ts +55 -0
  17. package/dist/agents/conversation-branch.js +115 -0
  18. package/dist/agents/error-recovery.d.ts +44 -0
  19. package/dist/agents/error-recovery.js +197 -0
  20. package/dist/agents/events.d.ts +76 -0
  21. package/dist/agents/events.js +8 -0
  22. package/dist/agents/executor.d.ts +35 -1
  23. package/dist/agents/executor.js +573 -124
  24. package/dist/agents/file-snapshots.d.ts +72 -0
  25. package/dist/agents/file-snapshots.js +182 -0
  26. package/dist/agents/index.d.ts +2 -0
  27. package/dist/agents/orchestrator.d.ts +183 -0
  28. package/dist/agents/orchestrator.js +495 -0
  29. package/dist/agents/permissions.d.ts +63 -0
  30. package/dist/agents/permissions.js +138 -0
  31. package/dist/agents/plan-mode.d.ts +71 -0
  32. package/dist/agents/plan-mode.js +186 -0
  33. package/dist/agents/prompt-suggestions.d.ts +33 -0
  34. package/dist/agents/prompt-suggestions.js +208 -0
  35. package/dist/agents/rate-limit-monitor.d.ts +56 -0
  36. package/dist/agents/rate-limit-monitor.js +224 -0
  37. package/dist/agents/result-store.d.ts +37 -0
  38. package/dist/agents/result-store.js +104 -0
  39. package/dist/agents/session-diff.d.ts +43 -0
  40. package/dist/agents/session-diff.js +258 -0
  41. package/dist/agents/tool-loader.d.ts +65 -0
  42. package/dist/agents/tool-loader.js +273 -0
  43. package/dist/agents/transcript.d.ts +96 -0
  44. package/dist/agents/transcript.js +267 -0
  45. package/dist/agents/worktree-manager.d.ts +80 -0
  46. package/dist/agents/worktree-manager.js +203 -0
  47. package/dist/auth/middleware.js +14 -0
  48. package/dist/chat/agentic-executor.d.ts +7 -0
  49. package/dist/chat/agentic-executor.js +253 -30
  50. package/dist/chat/conversations.d.ts +2 -0
  51. package/dist/chat/conversations.js +8 -0
  52. package/dist/chat/execution/executor.d.ts +8 -0
  53. package/dist/chat/execution/executor.js +157 -103
  54. package/dist/chat/execution/index.js +5 -1
  55. package/dist/chat/execution/tool-router.js +40 -14
  56. package/dist/chat/execution/tools/canvas.d.ts +2 -2
  57. package/dist/chat/execution/tools/code-tools.d.ts +66 -0
  58. package/dist/chat/execution/tools/code-tools.js +353 -0
  59. package/dist/chat/execution/tools/complete-task.d.ts +2 -2
  60. package/dist/chat/execution/tools/cron-tool.d.ts +26 -10
  61. package/dist/chat/execution/tools/cron-tool.js +48 -3
  62. package/dist/chat/execution/tools/decompose-task.d.ts +58 -0
  63. package/dist/chat/execution/tools/decompose-task.js +166 -0
  64. package/dist/chat/execution/tools/exec.d.ts +5 -2
  65. package/dist/chat/execution/tools/exec.js +294 -155
  66. package/dist/chat/execution/tools/feed-tools.d.ts +77 -0
  67. package/dist/chat/execution/tools/feed-tools.js +142 -0
  68. package/dist/chat/execution/tools/file-ops.d.ts +1 -1
  69. package/dist/chat/execution/tools/github.d.ts +2 -2
  70. package/dist/chat/execution/tools/index.d.ts +14 -2
  71. package/dist/chat/execution/tools/index.js +86 -12
  72. package/dist/chat/execution/tools/integrations.d.ts +8 -8
  73. package/dist/chat/execution/tools/multi-patch.d.ts +53 -0
  74. package/dist/chat/execution/tools/multi-patch.js +373 -0
  75. package/dist/chat/execution/tools/openai-image-gen.d.ts +2 -2
  76. package/dist/chat/execution/tools/plan-tools.d.ts +80 -0
  77. package/dist/chat/execution/tools/plan-tools.js +134 -0
  78. package/dist/chat/execution/tools/profclaw-ops.d.ts +6 -6
  79. package/dist/chat/execution/tools/repl-tool.d.ts +46 -0
  80. package/dist/chat/execution/tools/repl-tool.js +207 -0
  81. package/dist/chat/execution/tools/sessions-send.d.ts +2 -2
  82. package/dist/chat/execution/tools/slack-actions.d.ts +2 -2
  83. package/dist/chat/execution/tools/system.d.ts +4 -4
  84. package/dist/chat/execution/tools/todo-tool.d.ts +72 -0
  85. package/dist/chat/execution/tools/todo-tool.js +152 -0
  86. package/dist/chat/execution/tools/tool-search.d.ts +50 -0
  87. package/dist/chat/execution/tools/tool-search.js +155 -0
  88. package/dist/chat/execution/types.d.ts +21 -14
  89. package/dist/chat/execution/workflows/executor.d.ts +11 -0
  90. package/dist/chat/execution/workflows/executor.js +99 -1
  91. package/dist/chat/execution/workflows/types.d.ts +35 -2
  92. package/dist/chat/format/index.d.ts +1 -0
  93. package/dist/chat/format/index.js +1 -0
  94. package/dist/chat/format/markdown-convert.d.ts +23 -0
  95. package/dist/chat/format/markdown-convert.js +149 -0
  96. package/dist/chat/index.d.ts +1 -1
  97. package/dist/chat/index.js +1 -1
  98. package/dist/chat/message-handler.js +58 -6
  99. package/dist/chat/proactive/index.d.ts +62 -0
  100. package/dist/chat/proactive/index.js +147 -0
  101. package/dist/chat/prompt-adapter.js +2 -0
  102. package/dist/chat/providers/irc/index.d.ts +2 -2
  103. package/dist/chat/providers/telegram/index.d.ts +2 -0
  104. package/dist/chat/providers/telegram/index.js +21 -2
  105. package/dist/chat/system-prompts.d.ts +3 -3
  106. package/dist/chat/system-prompts.js +116 -61
  107. package/dist/chat/tools.d.ts +6 -6
  108. package/dist/cli/commands/auth.js +64 -1
  109. package/dist/cli/commands/chat.js +1327 -138
  110. package/dist/cli/commands/doctor.js +222 -16
  111. package/dist/cli/commands/history.d.ts +3 -0
  112. package/dist/cli/commands/history.js +138 -0
  113. package/dist/cli/commands/import.d.ts +44 -0
  114. package/dist/cli/commands/import.js +526 -0
  115. package/dist/cli/commands/init.d.ts +13 -0
  116. package/dist/cli/commands/init.js +381 -0
  117. package/dist/cli/commands/onboard.js +210 -30
  118. package/dist/cli/commands/plan.d.ts +13 -0
  119. package/dist/cli/commands/plan.js +184 -0
  120. package/dist/cli/commands/serve.d.ts +7 -0
  121. package/dist/cli/commands/serve.js +77 -18
  122. package/dist/cli/commands/setup.js +84 -3
  123. package/dist/cli/commands/status.js +54 -0
  124. package/dist/cli/commands/tools.js +13 -13
  125. package/dist/cli/commands/tui.js +26 -1
  126. package/dist/cli/index.js +19 -0
  127. package/dist/cli/ink/App.d.ts +13 -0
  128. package/dist/cli/ink/App.js +6 -0
  129. package/dist/cli/ink/ChatApp.d.ts +60 -0
  130. package/dist/cli/ink/ChatApp.js +325 -0
  131. package/dist/cli/ink/DashboardApp.d.ts +3 -0
  132. package/dist/cli/ink/DashboardApp.js +143 -0
  133. package/dist/cli/ink/components/AgentStatus.d.ts +17 -0
  134. package/dist/cli/ink/components/AgentStatus.js +33 -0
  135. package/dist/cli/ink/components/ChannelList.d.ts +17 -0
  136. package/dist/cli/ink/components/ChannelList.js +33 -0
  137. package/dist/cli/ink/components/ConnectionStatus.d.ts +19 -0
  138. package/dist/cli/ink/components/ConnectionStatus.js +50 -0
  139. package/dist/cli/ink/components/CostBar.d.ts +19 -0
  140. package/dist/cli/ink/components/CostBar.js +35 -0
  141. package/dist/cli/ink/components/HookStatus.d.ts +15 -0
  142. package/dist/cli/ink/components/HookStatus.js +7 -0
  143. package/dist/cli/ink/components/PermissionPrompt.d.ts +21 -0
  144. package/dist/cli/ink/components/PermissionPrompt.js +51 -0
  145. package/dist/cli/ink/components/PlanView.d.ts +23 -0
  146. package/dist/cli/ink/components/PlanView.js +26 -0
  147. package/dist/cli/ink/components/ProviderList.d.ts +16 -0
  148. package/dist/cli/ink/components/ProviderList.js +16 -0
  149. package/dist/cli/ink/components/SessionHeader.d.ts +15 -0
  150. package/dist/cli/ink/components/SessionHeader.js +15 -0
  151. package/dist/cli/ink/components/StreamingMessage.d.ts +20 -0
  152. package/dist/cli/ink/components/StreamingMessage.js +27 -0
  153. package/dist/cli/ink/components/SuggestionBar.d.ts +15 -0
  154. package/dist/cli/ink/components/SuggestionBar.js +28 -0
  155. package/dist/cli/ink/components/SystemHealth.d.ts +20 -0
  156. package/dist/cli/ink/components/SystemHealth.js +39 -0
  157. package/dist/cli/ink/components/TaskList.d.ts +17 -0
  158. package/dist/cli/ink/components/TaskList.js +59 -0
  159. package/dist/cli/ink/components/ToolCall.d.ts +17 -0
  160. package/dist/cli/ink/components/ToolCall.js +43 -0
  161. package/dist/cli/ink/index.d.ts +23 -0
  162. package/dist/cli/ink/index.js +15 -0
  163. package/dist/cli/ink/keybindings.d.ts +35 -0
  164. package/dist/cli/ink/keybindings.js +105 -0
  165. package/dist/cli/ink/markdown-renderer.d.ts +47 -0
  166. package/dist/cli/ink/markdown-renderer.js +380 -0
  167. package/dist/cli/ink/output-styles.d.ts +39 -0
  168. package/dist/cli/ink/output-styles.js +119 -0
  169. package/dist/cli/interactive/auto-serve.d.ts +38 -0
  170. package/dist/cli/interactive/auto-serve.js +209 -0
  171. package/dist/cli/interactive/index.d.ts +25 -0
  172. package/dist/cli/interactive/index.js +23 -0
  173. package/dist/cli/interactive/picker.d.ts +28 -0
  174. package/dist/cli/interactive/picker.js +153 -0
  175. package/dist/cli/interactive/renderer.d.ts +26 -0
  176. package/dist/cli/interactive/renderer.js +555 -0
  177. package/dist/cli/interactive/repl.d.ts +14 -0
  178. package/dist/cli/interactive/repl.js +1516 -0
  179. package/dist/cli/interactive/stream-client.d.ts +59 -0
  180. package/dist/cli/interactive/stream-client.js +506 -0
  181. package/dist/cli/interactive/types.d.ts +121 -0
  182. package/dist/cli/interactive/types.js +10 -0
  183. package/dist/cli/utils/api.d.ts +9 -0
  184. package/dist/cli/utils/api.js +58 -2
  185. package/dist/cron/natural-language.d.ts +54 -0
  186. package/dist/cron/natural-language.js +569 -0
  187. package/dist/cron/scheduler.d.ts +34 -4
  188. package/dist/cron/scheduler.js +141 -9
  189. package/dist/cron/templates.d.ts +1 -1
  190. package/dist/cron/templates.js +219 -0
  191. package/dist/feeds/feed-engine.d.ts +149 -0
  192. package/dist/feeds/feed-engine.js +600 -0
  193. package/dist/feeds/index.d.ts +9 -0
  194. package/dist/feeds/index.js +8 -0
  195. package/dist/gateway/router.js +6 -1
  196. package/dist/hooks/built-in/audit-log.d.ts +11 -0
  197. package/dist/hooks/built-in/audit-log.js +84 -0
  198. package/dist/hooks/built-in/cost-warning.d.ts +10 -0
  199. package/dist/hooks/built-in/cost-warning.js +59 -0
  200. package/dist/hooks/built-in/dangerous-tool.d.ts +32 -0
  201. package/dist/hooks/built-in/dangerous-tool.js +80 -0
  202. package/dist/hooks/built-in/index.d.ts +14 -0
  203. package/dist/hooks/built-in/index.js +20 -0
  204. package/dist/hooks/index.d.ts +3 -0
  205. package/dist/hooks/index.js +6 -0
  206. package/dist/hooks/loader.d.ts +17 -0
  207. package/dist/hooks/loader.js +142 -0
  208. package/dist/hooks/registry.d.ts +62 -0
  209. package/dist/hooks/registry.js +127 -0
  210. package/dist/integrations/web-search.js +6 -3
  211. package/dist/memory/index.d.ts +1 -0
  212. package/dist/memory/index.js +2 -0
  213. package/dist/memory/memory-service.js +14 -13
  214. package/dist/memory/observational.d.ts +62 -0
  215. package/dist/memory/observational.js +396 -0
  216. package/dist/middleware/content-filter.d.ts +22 -0
  217. package/dist/middleware/content-filter.js +69 -0
  218. package/dist/middleware/request-validator.d.ts +159 -0
  219. package/dist/middleware/request-validator.js +93 -0
  220. package/dist/plugins/sdk.d.ts +22 -0
  221. package/dist/plugins/sdk.js +17 -1
  222. package/dist/projects/types.d.ts +10 -10
  223. package/dist/providers/ai-sdk.d.ts +11 -0
  224. package/dist/providers/ai-sdk.js +78 -19
  225. package/dist/providers/core/models.js +67 -1
  226. package/dist/providers/core/types.d.ts +3 -0
  227. package/dist/providers/index.d.ts +1 -0
  228. package/dist/providers/index.js +1 -0
  229. package/dist/providers/smart-router.d.ts +118 -0
  230. package/dist/providers/smart-router.js +685 -0
  231. package/dist/providers/types.d.ts +16 -16
  232. package/dist/routes/agents.js +50 -0
  233. package/dist/routes/auth.js +8 -1
  234. package/dist/routes/chat.js +259 -14
  235. package/dist/routes/costs.js +32 -0
  236. package/dist/routes/cron.js +80 -5
  237. package/dist/routes/feeds.d.ts +10 -0
  238. package/dist/routes/feeds.js +168 -0
  239. package/dist/routes/mcp.js +21 -0
  240. package/dist/routes/memory.js +130 -0
  241. package/dist/routes/skills.js +129 -0
  242. package/dist/routes/teams.d.ts +9 -0
  243. package/dist/routes/teams.js +210 -0
  244. package/dist/routes/tools.js +14 -0
  245. package/dist/routes/users.js +2 -0
  246. package/dist/server/route-loader.js +3 -1
  247. package/dist/server/stream-bridge.d.ts +19 -0
  248. package/dist/server/stream-bridge.js +38 -0
  249. package/dist/server.js +310 -36
  250. package/dist/skills/marketplace.d.ts +87 -0
  251. package/dist/skills/marketplace.js +268 -0
  252. package/dist/storage/index.d.ts +14 -0
  253. package/dist/storage/index.js +64 -3
  254. package/dist/storage/schema.d.ts +4 -4
  255. package/dist/storage/schema.js +1 -1
  256. package/dist/teams/index.d.ts +110 -0
  257. package/dist/teams/index.js +365 -0
  258. package/dist/tickets/types.d.ts +39 -39
  259. package/dist/types/summary.d.ts +5 -5
  260. package/dist/utils/auto-update.d.ts +23 -0
  261. package/dist/utils/auto-update.js +157 -0
  262. package/dist/utils/offline-detect.d.ts +55 -0
  263. package/dist/utils/offline-detect.js +121 -0
  264. package/dist/utils/pid-file.d.ts +36 -0
  265. package/dist/utils/pid-file.js +125 -0
  266. package/dist/utils/prevent-sleep.d.ts +27 -0
  267. package/dist/utils/prevent-sleep.js +95 -0
  268. package/dist/utils/sanitizer.d.ts +57 -0
  269. package/dist/utils/sanitizer.js +174 -0
  270. package/docker-compose.yml +13 -137
  271. package/package.json +31 -6
  272. package/skills/deploy-cloudflare/SKILL.md +62 -0
  273. package/skills/deploy-vercel/SKILL.md +67 -0
  274. package/skills/docker-deploy/SKILL.md +158 -0
  275. package/skills/full-stack-builder/SKILL.md +92 -0
  276. package/skills/humanizer/SKILL.md +488 -0
  277. package/skills/profclaw-assistant/SKILL.md +85 -56
  278. package/ui/dist/assets/ActivityView-Da6HQ8ws.js +1 -0
  279. package/ui/dist/assets/AgentList-H58R0kX3.js +1 -0
  280. package/ui/dist/assets/AnalyticsDashboard-B28AeRsc.js +1 -0
  281. package/ui/dist/assets/AreaChart-DwLzeAQ8.js +1 -0
  282. package/ui/dist/assets/CartesianChart-piKQsTAR.js +36 -0
  283. package/ui/dist/assets/ChatView-Dbj8rxU5.js +10 -0
  284. package/ui/dist/assets/CostsDashboard-C6F5df0F.js +1 -0
  285. package/ui/dist/assets/EstimateSelect-wga0rUKX.js +1 -0
  286. package/ui/dist/assets/FeedDashboard-Ef6FEzEf.js +1 -0
  287. package/ui/dist/assets/FloatingChatbot-0yhkUeCq.js +2 -0
  288. package/ui/dist/assets/InviteCodeManagement-tUXfx4Bc.js +2 -0
  289. package/ui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  290. package/ui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  291. package/ui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  292. package/ui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  293. package/ui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  294. package/ui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  295. package/ui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  296. package/ui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  297. package/ui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  298. package/ui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  299. package/ui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  300. package/ui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  301. package/ui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  302. package/ui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  303. package/ui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  304. package/ui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  305. package/ui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  306. package/ui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  307. package/ui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  308. package/ui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  309. package/ui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  310. package/ui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  311. package/ui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  312. package/ui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  313. package/ui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  314. package/ui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  315. package/ui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  316. package/ui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  317. package/ui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  318. package/ui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  319. package/ui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  320. package/ui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  321. package/ui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  322. package/ui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  323. package/ui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  324. package/ui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  325. package/ui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  326. package/ui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  327. package/ui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  328. package/ui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  329. package/ui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  330. package/ui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  331. package/ui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  332. package/ui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  333. package/ui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  334. package/ui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  335. package/ui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  336. package/ui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  337. package/ui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  338. package/ui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  339. package/ui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  340. package/ui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  341. package/ui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  342. package/ui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  343. package/ui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  344. package/ui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  345. package/ui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  346. package/ui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  347. package/ui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  348. package/ui/dist/assets/MarketplacePage-DGrLtolR.js +1 -0
  349. package/ui/dist/assets/{ProjectDetail--gPfvATB.js → ProjectDetail-BgWvA6UP.js} +2 -2
  350. package/ui/dist/assets/ProjectIcon-TDuliqwg.js +1 -0
  351. package/ui/dist/assets/ProjectList-DXgM4187.js +1 -0
  352. package/ui/dist/assets/{Settings-1kaf7VHE.js → Settings-xA8Zhi3p.js} +3 -3
  353. package/ui/dist/assets/StatusIndicator-B8vfFAxg.js +1 -0
  354. package/ui/dist/assets/{SummaryDetail-DV3AmONk.js → SummaryDetail-eedRfTtF.js} +2 -2
  355. package/ui/dist/assets/SummaryList-CLNX2P84.js +1 -0
  356. package/ui/dist/assets/TaskDetail-BtWclNiR.js +1 -0
  357. package/ui/dist/assets/TaskList-JjODAgSc.js +1 -0
  358. package/ui/dist/assets/TeamsPage-CBK5iAyx.js +1 -0
  359. package/ui/dist/assets/TicketBoard-C9aJNNYp.js +1 -0
  360. package/ui/dist/assets/TicketDetail-CV5JmL31.js +1 -0
  361. package/ui/dist/assets/TicketList-68V4lzUz.js +1 -0
  362. package/ui/dist/assets/UserManagement-DKTb6UpE.js +2 -0
  363. package/ui/dist/assets/ViewSwitcher-BvdQht2Y.js +1 -0
  364. package/ui/dist/assets/alert-dialog-O6qBOv_f.js +1 -0
  365. package/ui/dist/assets/{archive-BsLa7brF.js → archive-CX7UvZpf.js} +1 -1
  366. package/ui/dist/assets/badge-BbfnwDJP.js +1 -0
  367. package/ui/dist/assets/{bug-CmZI7jqM.js → bug-3WX0394-.js} +1 -1
  368. package/ui/dist/assets/{calendar-Bf0t2B82.js → calendar-buq77TaS.js} +1 -1
  369. package/ui/dist/assets/{chevron-up-CoUsOvZj.js → chevron-up-4ymsBJRo.js} +1 -1
  370. package/ui/dist/assets/{circle-x-Dgw11LgT.js → circle-x-ByXtwR6Y.js} +1 -1
  371. package/ui/dist/assets/constants-CVdDh7p0.js +1 -0
  372. package/ui/dist/assets/{cpu-DiPMQICV.js → cpu-CiuoCeDY.js} +1 -1
  373. package/ui/dist/assets/{database-BwTfupDi.js → database-BWXSBg5a.js} +1 -1
  374. package/ui/dist/assets/dialog-lDg4NvMV.js +1 -0
  375. package/ui/dist/assets/dollar-sign-Dmijd6DP.js +1 -0
  376. package/ui/dist/assets/{ellipsis-UJx4Xnf6.js → ellipsis-vT-5SVIp.js} +1 -1
  377. package/ui/dist/assets/{ellipsis-vertical-DoULYEKn.js → ellipsis-vertical-B4tAX_bL.js} +1 -1
  378. package/ui/dist/assets/feature-markdown-DBo5Q7uq.js +289 -0
  379. package/ui/dist/assets/{file-code-B2UrJLwi.js → file-code-ChOWdKXf.js} +1 -1
  380. package/ui/dist/assets/{folder-open-BJi577JH.js → folder-open-CkOUbIiP.js} +1 -1
  381. package/ui/dist/assets/{funnel-PkaD_HSR.js → funnel-uZkoSPP-.js} +1 -1
  382. package/ui/dist/assets/{git-branch-C_K30am0.js → git-branch-CwvUxj7C.js} +1 -1
  383. package/ui/dist/assets/{git-commit-horizontal-IT6ecxWQ.js → git-commit-horizontal-lxPzCvhD.js} +1 -1
  384. package/ui/dist/assets/{globe-f-jjCa_g.js → globe-D_WpJdsj.js} +1 -1
  385. package/ui/dist/assets/{hash-DNEv8Elo.js → hash-CA0hJ7vh.js} +1 -1
  386. package/ui/dist/assets/{history-BQSBo_1Q.js → history-CEWMLELs.js} +1 -1
  387. package/ui/dist/assets/inbox-ehtOptTV.js +1 -0
  388. package/ui/dist/assets/{index-nS3EErDg.js → index-C1rhbml4.js} +3 -3
  389. package/ui/dist/assets/index-CR8gfCHv.js +1 -0
  390. package/ui/dist/assets/index-DVXMpWai.js +1 -0
  391. package/ui/dist/assets/index-DaDJMM2v.js +1 -0
  392. package/ui/dist/assets/index-Djdq_0xu.js +1 -0
  393. package/ui/dist/assets/index-M46Gcb8K.css +1 -0
  394. package/ui/dist/assets/index-sEBN7w8J.js +109 -0
  395. package/ui/dist/assets/layers-C6Mhf8Nk.js +1 -0
  396. package/ui/dist/assets/{layout-dashboard-CcKt1hXw.js → layout-dashboard-BRUM0kpT.js} +1 -1
  397. package/ui/dist/assets/{lightbulb-Jhp7FvbU.js → lightbulb-CN2q1O5l.js} +1 -1
  398. package/ui/dist/assets/{link-2-DdO7ostF.js → link-2-CC4E28yJ.js} +1 -1
  399. package/ui/dist/assets/markdown-renderer-C6ENbB0u.js +10 -0
  400. package/ui/dist/assets/markdown-renderer-CfVKi3_s.css +1 -0
  401. package/ui/dist/assets/{message-square-CBgH65X7.js → message-square-Bbb241am.js} +1 -1
  402. package/ui/dist/assets/package-CwT3IzFx.js +1 -0
  403. package/ui/dist/assets/{pencil-CYXCEPQh.js → pencil-CDmiHzoj.js} +1 -1
  404. package/ui/dist/assets/{play-d1ONaH0-.js → play-tjy5jMQX.js} +1 -1
  405. package/ui/dist/assets/popover-CFHZf3pE.js +1 -0
  406. package/ui/dist/assets/progress-BboUHuLf.js +1 -0
  407. package/ui/dist/assets/{rocket-DhvUetsk.js → rocket--8ZHgdXJ.js} +1 -1
  408. package/ui/dist/assets/select-n108rXny.js +1 -0
  409. package/ui/dist/assets/{send-P0r5D7td.js → send-Cu7MR2Qh.js} +1 -1
  410. package/ui/dist/assets/server-DmodxZp-.js +1 -0
  411. package/ui/dist/assets/{settings-2-ocj5uHGx.js → settings-2-CkRNqkxj.js} +1 -1
  412. package/ui/dist/assets/sheet-7aUJkyzU.js +1 -0
  413. package/ui/dist/assets/{shield-check-DfVdE34l.js → shield-check-ViI3nMKE.js} +1 -1
  414. package/ui/dist/assets/{shield-off-8l0J6R-8.js → shield-off-DN3tagkn.js} +1 -1
  415. package/ui/dist/assets/skeleton-C0E1Nfro.js +1 -0
  416. package/ui/dist/assets/{smartphone-77_g3SQn.js → smartphone-5FghiXpA.js} +1 -1
  417. package/ui/dist/assets/{square-Ckzsr3Rn.js → square-DiNSx8K7.js} +1 -1
  418. package/ui/dist/assets/star-DhdFVidS.js +1 -0
  419. package/ui/dist/assets/switch-CIgVbZqQ.js +1 -0
  420. package/ui/dist/assets/table-BC56FVMV.js +1 -0
  421. package/ui/dist/assets/{tag-C35mgoEv.js → tag-CH_vQliw.js} +1 -1
  422. package/ui/dist/assets/textarea-CxDiKFXZ.js +1 -0
  423. package/ui/dist/assets/{timer-DHJBS2w1.js → timer-CdGVTb60.js} +1 -1
  424. package/ui/dist/assets/tooltip-BuW9A5UO.js +1 -0
  425. package/ui/dist/assets/{trash-2-keO5tKPE.js → trash-2-CucZJL0N.js} +1 -1
  426. package/ui/dist/assets/trending-down-BCezC1z2.js +1 -0
  427. package/ui/dist/assets/{trending-up-BBv8KbrY.js → trending-up-C5OYX2k2.js} +1 -1
  428. package/ui/dist/assets/vendor-query-C0p7b53x.js +4 -0
  429. package/ui/dist/assets/vendor-react-Mc5_kfYG.js +12 -0
  430. package/ui/dist/assets/vendor-ui-CXPAUBFv.js +51 -0
  431. package/ui/dist/assets/{wand-sparkles-BusQ52ZK.js → wand-sparkles-BaH6pJnc.js} +1 -1
  432. package/ui/dist/assets/{wrench-02YaOSiK.js → wrench-CjxjP6ok.js} +1 -1
  433. package/ui/dist/index.html +5 -2
  434. package/ui/dist/assets/ActivityView-BeshZXmE.js +0 -1
  435. package/ui/dist/assets/AgentList-QVHeldPi.js +0 -1
  436. package/ui/dist/assets/AnalyticsDashboard-C9R97dXE.js +0 -1
  437. package/ui/dist/assets/AreaChart-B73gaiVQ.js +0 -1
  438. package/ui/dist/assets/CartesianChart-CXYL2R-A.js +0 -36
  439. package/ui/dist/assets/ChatView-qjZErlrp.js +0 -10
  440. package/ui/dist/assets/CostsDashboard-O4DCLy1i.js +0 -1
  441. package/ui/dist/assets/EstimateSelect-1hQf4Osk.js +0 -1
  442. package/ui/dist/assets/FloatingChatbot-BZBzrJxd.js +0 -2
  443. package/ui/dist/assets/InviteCodeManagement-LEoGqYeA.js +0 -2
  444. package/ui/dist/assets/ProjectIcon-Chd_ofsw.js +0 -1
  445. package/ui/dist/assets/ProjectList-BvUfVB6c.js +0 -4
  446. package/ui/dist/assets/StatusIndicator-pRfkNcdV.js +0 -1
  447. package/ui/dist/assets/SummaryList-B6kXiTxL.js +0 -1
  448. package/ui/dist/assets/TaskDetail-CV6CzbOS.js +0 -1
  449. package/ui/dist/assets/TaskList-DL7brQKd.js +0 -1
  450. package/ui/dist/assets/TicketBoard-CrkkFj7C.js +0 -1
  451. package/ui/dist/assets/TicketDetail-hnnYclpD.js +0 -1
  452. package/ui/dist/assets/TicketList-CsDAyQCL.js +0 -1
  453. package/ui/dist/assets/UserManagement-BGFQyTSr.js +0 -2
  454. package/ui/dist/assets/ViewSwitcher-CnL0OqA8.js +0 -1
  455. package/ui/dist/assets/alert-dialog-SKM6Gjz4.js +0 -7
  456. package/ui/dist/assets/badge-CVHH1a-v.js +0 -1
  457. package/ui/dist/assets/brain-6o_RHVpe.js +0 -1
  458. package/ui/dist/assets/constants-Q5Zivl-a.js +0 -1
  459. package/ui/dist/assets/dialog-BUqN9Psj.js +0 -1
  460. package/ui/dist/assets/index-BUmnwPQr.js +0 -1
  461. package/ui/dist/assets/index-BfF5G4Cw.js +0 -1
  462. package/ui/dist/assets/index-C8N375c2.js +0 -1
  463. package/ui/dist/assets/index-CuxnqVVz.css +0 -1
  464. package/ui/dist/assets/index-CzMM3QOk.js +0 -1
  465. package/ui/dist/assets/index-lJlNPFVJ.js +0 -67
  466. package/ui/dist/assets/layers-jFqVrWMD.js +0 -1
  467. package/ui/dist/assets/markdown-renderer-n1ToC4XQ.js +0 -36
  468. package/ui/dist/assets/popover-CrmZgoWu.js +0 -1
  469. package/ui/dist/assets/progress-uv4SPkL5.js +0 -1
  470. package/ui/dist/assets/select-CeQ8AHGy.js +0 -1
  471. package/ui/dist/assets/server-CVHTZB72.js +0 -1
  472. package/ui/dist/assets/sheet-DuQExSho.js +0 -1
  473. package/ui/dist/assets/skeleton-TFiFJ3nB.js +0 -1
  474. package/ui/dist/assets/switch-CAePkd6k.js +0 -1
  475. package/ui/dist/assets/table-ZjAZ7hkt.js +0 -1
  476. package/ui/dist/assets/textarea-DsVPnSgR.js +0 -1
  477. package/ui/dist/assets/tooltip-BYmQ331W.js +0 -1
@@ -0,0 +1 @@
1
+ import{c as r,F as h,K as d,aj as f,H as y,h as s}from"./index-sEBN7w8J.js";import{j as t}from"./vendor-react-Mc5_kfYG.js";import{C as p,S as k}from"./smartphone-5FghiXpA.js";import{W as u}from"./wrench-CjxjP6ok.js";import{G as x}from"./globe-D_WpJdsj.js";import{L as C}from"./lightbulb-CN2q1O5l.js";import{R as g,C as b}from"./rocket--8ZHgdXJ.js";const j=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],w=r("palette",j);const _=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],N=r("target",_);const S=[["path",{d:"M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z",key:"qn84l0"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],q=r("ticket-check",S),l={"clipboard-list":b,rocket:g,lightbulb:C,target:N,smartphone:k,globe:x,settings:y,wrench:u,"bar-chart-3":f,palette:w,code:p,shield:d,default:h},n={sm:"h-4 w-4",md:"h-5 w-5",lg:"h-6 w-6"},v={sm:"w-8 h-8",md:"w-10 h-10",lg:"w-12 h-12"};function z({icon:i,color:e="#6366f1",size:c="md",className:o,showBackground:m=!0}){const a=l[i]||l.default;return m?t.jsx("div",{className:s("rounded-lg flex items-center justify-center",v[c],o),style:{backgroundColor:`${e}20`},children:t.jsx(a,{className:n[c],style:{color:e}})}):t.jsx(a,{className:s(n[c],o),style:{color:e}})}export{w as P,N as T,z as a,q as b};
@@ -0,0 +1 @@
1
+ import{r as d,j as e,u as vs}from"./vendor-react-Mc5_kfYG.js";import{c as F,d as ws,f as Me,g as ks,e as Cs,h as Ss,i as Ps,u as ze,b as K}from"./vendor-query-C0p7b53x.js";import{c as X,H as He,aj as Ts,K as qe,t as C,k as _,S as je,i as f,L as V,h as N,s as _e,z as L,x as E,A,E as xe,n as Ve,I as J,aW as Is,j as $e,C as Z,w as Ue,g as Rs,N as Y,ag as Fs,ab as Ee,y as As,l as H,R as Ms,m as Es,r as Ls,P as Le,F as Ds,D as Os,o as Ks,p as Gs,q as W,ah as zs,a5 as De}from"./index-sEBN7w8J.js";import{D as Qe,b as We,c as Be,d as Je,e as Hs,f as qs}from"./dialog-lDg4NvMV.js";import{C as Ye,R as _s}from"./rocket--8ZHgdXJ.js";import{L as Vs}from"./lightbulb-CN2q1O5l.js";import{T as Ze,P as $s,a as Xe,b as Oe}from"./ProjectIcon-TDuliqwg.js";import{S as Us,C as Qs}from"./smartphone-5FghiXpA.js";import{G as Ws}from"./globe-D_WpJdsj.js";import{W as Bs}from"./wrench-CjxjP6ok.js";import{P as Js}from"./progress-BboUHuLf.js";import{S as de}from"./switch-CIgVbZqQ.js";import{B as T}from"./badge-BbfnwDJP.js";import{j as Ys,k as es,l as ss,m as ts,n as as,o as Zs}from"./vendor-ui-CXPAUBFv.js";import{S as rs,a as ns,b as is,c as ls,d as cs}from"./select-n108rXny.js";import{T as Xs,a as et,b as me,c as st,d as tt,e as Ke}from"./table-BC56FVMV.js";import{c as at,T as rt,a as nt,b as it}from"./tooltip-BuW9A5UO.js";import{T as lt}from"./tag-CH_vQliw.js";import{L as ct}from"./link-2-CC4E28yJ.js";import{E as ot}from"./ellipsis-vT-5SVIp.js";import{P as dt}from"./pencil-CDmiHzoj.js";import{A as mt}from"./archive-CX7UvZpf.js";import{T as ut}from"./trash-2-CucZJL0N.js";import"./chevron-up-4ymsBJRo.js";const xt=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],pt=X("arrow-up-down",xt);const ht=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],gt=X("chevrons-left",ht);const jt=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],ft=X("chevrons-right",jt);const bt=[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]],Nt=X("folder-git-2",bt),ue=["#6366f1","#8b5cf6","#ec4899","#ef4444","#f97316","#eab308","#22c55e","#06b6d4","#3b82f6"],B=[{name:"clipboard-list",icon:Ye},{name:"rocket",icon:_s},{name:"lightbulb",icon:Vs},{name:"target",icon:Ze},{name:"smartphone",icon:Us},{name:"globe",icon:Ws},{name:"settings",icon:He},{name:"wrench",icon:Bs},{name:"bar-chart-3",icon:Ts},{name:"palette",icon:$s},{name:"code",icon:Qs},{name:"shield",icon:qe}];function yt({open:i,onOpenChange:c,onSuccess:r}){const[u,m]=d.useState(""),[h,x]=d.useState(""),[S,P]=d.useState(""),[v,b]=d.useState(ue[0]),[l,n]=d.useState(B[0].name),[y,g]=d.useState(""),a=B.find(p=>p.name===l)?.icon||Ye,t=F({mutationFn:()=>_.projects.create({key:u.toUpperCase(),name:h,description:S||void 0,color:v,icon:l}),onSuccess:()=>{C.success(`Project ${u.toUpperCase()} created`),c(!1),o(),r?.()},onError:p=>{p.message?.includes("already exists")?g("This project key is already taken"):C.error(p.message||"Failed to create project")}}),o=()=>{m(""),x(""),P(""),b(ue[0]),n(B[0].name),g("")},j=p=>{const D=p.toUpperCase().replace(/[^A-Z0-9]/g,"");m(D),g("")},w=p=>{if(p.preventDefault(),u.length<2){g("Key must be at least 2 characters");return}if(u.length>10){g("Key must be at most 10 characters");return}if(!/^[A-Z]/.test(u)){g("Key must start with a letter");return}h.trim()&&t.mutate()};return e.jsx(Qe,{open:i,onOpenChange:c,children:e.jsxs(We,{className:"sm:max-w-lg",children:[e.jsxs(Be,{children:[e.jsxs(Je,{className:"flex items-center gap-2",children:[e.jsx(je,{className:"h-5 w-5 text-primary"}),"Create New Project"]}),e.jsx(Hs,{children:"Create a project to organize your tickets. Each project gets a unique key prefix (e.g., PROFCLAW-1, MOBILE-1)."})]}),e.jsxs("form",{onSubmit:w,className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs("label",{className:"text-sm font-medium",children:["Project Key ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("input",{type:"text",value:u,onChange:p=>j(p.target.value),placeholder:"PROJ",maxLength:10,className:"w-32 field font-mono uppercase"}),e.jsx("span",{className:"text-muted-foreground",children:"-"}),e.jsx("span",{className:"text-muted-foreground font-mono",children:"123"})]}),y&&e.jsx("p",{className:"text-xs text-destructive",children:y}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"2-10 uppercase letters/numbers. This will be the prefix for all tickets in this project."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("label",{className:"text-sm font-medium",children:["Project Name ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx("input",{type:"text",value:h,onChange:p=>x(p.target.value),placeholder:"My Awesome Project",className:"w-full field"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Description"}),e.jsx("textarea",{value:S,onChange:p=>P(p.target.value),placeholder:"Optional description...",rows:2,className:"w-full field resize-none"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Icon"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:B.map(({name:p,icon:D})=>e.jsx("button",{type:"button",onClick:()=>n(p),className:`w-9 h-9 rounded-lg flex items-center justify-center transition-all ${l===p?"bg-primary/20 ring-2 ring-primary":"bg-muted/50 hover:bg-muted"}`,children:e.jsx(D,{className:"h-5 w-5"})},p))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"text-sm font-medium",children:"Color"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:ue.map(p=>e.jsx("button",{type:"button",onClick:()=>b(p),className:`w-7 h-7 rounded-full transition-all ${v===p?"ring-2 ring-offset-2 ring-offset-background ring-primary":""}`,style:{backgroundColor:p}},p))})]})]}),e.jsxs("div",{className:"p-4 bg-muted/30 rounded-lg border border-border",children:[e.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:"Preview"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-10 h-10 rounded-lg flex items-center justify-center",style:{backgroundColor:`${v}20`},children:e.jsx(a,{className:"h-5 w-5",style:{color:v}})}),e.jsxs("div",{children:[e.jsx("span",{className:"text-xs font-mono font-bold px-2 py-0.5 rounded",style:{backgroundColor:`${v}20`,color:v},children:u||"PROJ"}),e.jsx("p",{className:"font-medium mt-0.5",children:h||"Project Name"})]})]})]}),e.jsxs(qs,{children:[e.jsx(f,{type:"button",variant:"outline",onClick:()=>c(!1),children:"Cancel"}),e.jsxs(f,{type:"submit",disabled:!u||!h.trim()||t.isPending,className:"gap-2",children:[t.isPending&&e.jsx(V,{className:"h-4 w-4 animate-spin"}),"Create Project"]})]})]})]})})}const vt=Ys,os=d.forwardRef(({className:i,...c},r)=>e.jsx(es,{ref:r,className:N("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",i),...c}));os.displayName=es.displayName;const pe=d.forwardRef(({className:i,...c},r)=>e.jsx(ss,{ref:r,className:N("inline-flex items-center justify-center whitespace-nowrap rounded-lg px-3 py-1.5 text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/20 disabled:pointer-events-none disabled:opacity-50","data-[state=active]:bg-gradient-to-br data-[state=active]:from-primary data-[state=active]:to-primary-hover data-[state=active]:text-white data-[state=active]:shadow-[0_0_15px_-3px_var(--primary-glow)] data-[state=active]:border-primary/20","hover:text-foreground hover:bg-muted/50 transition-colors",i),...c}));pe.displayName=ss.displayName;const he=d.forwardRef(({className:i,...c},r)=>e.jsx(ts,{ref:r,className:N("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",i),...c}));he.displayName=ts.displayName;const ds=[{value:"backlog",label:"Backlog",color:"#6b7280"},{value:"todo",label:"To Do",color:"#3b82f6"},{value:"in_progress",label:"In Progress",color:"#f59e0b"},{value:"in_review",label:"In Review",color:"#8b5cf6"},{value:"done",label:"Done",color:"#22c55e"},{value:"cancelled",label:"Cancelled",color:"#ef4444"}],ms=[{value:"critical",label:"Critical",color:"#ef4444"},{value:"high",label:"High",color:"#f97316"},{value:"medium",label:"Medium",color:"#eab308"},{value:"low",label:"Low",color:"#22c55e"},{value:"none",label:"None",color:"#6b7280"}],us=[{value:"task",label:"Task",icon:"📋"},{value:"bug",label:"Bug",icon:"🐛"},{value:"feature",label:"Feature",icon:"✨"},{value:"epic",label:"Epic",icon:"🎯"},{value:"story",label:"Story",icon:"📖"},{value:"subtask",label:"Subtask",icon:"📎"},{value:"improvement",label:"Improvement",icon:"💡"}],Ge=[{key:"status",label:"Status",options:ds,defaultValue:"backlog"},{key:"priority",label:"Priority",options:ms,defaultValue:"medium"},{key:"type",label:"Type",options:us,defaultValue:"task"}];function wt({items:i,mappings:c,onMappingsChange:r}){const u=d.useMemo(()=>{const l={status:new Set,priority:new Set,type:new Set};for(const n of i)n.status&&l.status.add(n.status),n.priority&&l.priority.add(n.priority),n.type&&l.type.add(n.type);return{status:Array.from(l.status).sort(),priority:Array.from(l.priority).sort(),type:Array.from(l.type).sort()}},[i]),m=d.useMemo(()=>{const l={status:{},priority:{},type:{}};for(const n of i)n.status&&(l.status[n.status]=(l.status[n.status]||0)+1),n.priority&&(l.priority[n.priority]=(l.priority[n.priority]||0)+1),n.type&&(l.type[n.type]=(l.type[n.type]||0)+1);return l},[i]),h=(l,n)=>!!c[l][n],x=d.useMemo(()=>({status:u.status.filter(l=>!h("status",l)).length,priority:u.priority.filter(l=>!h("priority",l)).length,type:u.type.filter(l=>!h("type",l)).length}),[u,c]),S=(l,n,y)=>{r({...c,[l]:{...c[l],[n]:y}})},P=()=>{const l={...c};for(const n of Ge){const y=n.key;for(const g of u[y])if(!l[y][g]){const a=n.options.find(t=>t.label.toLowerCase()===g.toLowerCase()||t.value.toLowerCase()===g.toLowerCase());l[y][g]=a?.value||n.defaultValue}}r(l)},v=()=>{r({status:{},priority:{},type:{}})},b=x.status+x.priority+x.type;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium",children:"Field Mappings"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Map GitHub fields to profClaw values"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[b>0&&e.jsxs(f,{variant:"outline",size:"sm",onClick:P,className:"gap-2",children:[e.jsx(je,{className:"h-3.5 w-3.5"}),"Auto-map ",b," values"]}),e.jsxs(f,{variant:"ghost",size:"sm",onClick:v,className:"gap-2 text-muted-foreground",children:[e.jsx(_e,{className:"h-3.5 w-3.5"}),"Reset"]})]})]}),b>0&&e.jsxs("div",{className:"flex items-center gap-2 p-3 bg-amber-500/10 border border-amber-500/20 rounded-lg text-sm",children:[e.jsx(L,{className:"h-4 w-4 text-amber-500 shrink-0"}),e.jsxs("span",{className:"text-amber-700 dark:text-amber-400",children:[b," value",b!==1?"s":""," need",b===1?"s":""," mapping. Items with unmapped values will use defaults."]})]}),e.jsx("div",{className:"space-y-6",children:Ge.map(l=>{const n=u[l.key],y=x[l.key];return n.length===0?null:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h4",{className:"text-sm font-medium",children:l.label}),y>0?e.jsxs(T,{variant:"outline",className:"text-amber-600 border-amber-300 bg-amber-50 dark:bg-amber-900/20",children:[y," unmapped"]}):e.jsxs(T,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50 dark:bg-green-900/20",children:[e.jsx(E,{className:"h-3 w-3 mr-1"}),"All mapped"]})]}),e.jsx("div",{className:"rounded-2xl glass shadow-lg overflow-hidden",children:e.jsxs("table",{className:"w-full text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-muted/50",children:[e.jsx("th",{className:"text-left py-2 px-3 font-medium text-muted-foreground",children:"GitHub Value"}),e.jsx("th",{className:"w-10"}),e.jsx("th",{className:"text-left py-2 px-3 font-medium text-muted-foreground",children:"profClaw Value"}),e.jsx("th",{className:"text-right py-2 px-3 font-medium text-muted-foreground w-20",children:"Count"})]})}),e.jsx("tbody",{className:"divide-y divide-border",children:n.map(g=>{const a=h(l.key,g),t=c[l.key][g],o=l.options.find(j=>j.value===t);return e.jsxs("tr",{className:N("transition-colors",!a&&"bg-amber-50/50 dark:bg-amber-900/10"),children:[e.jsx("td",{className:"py-2 px-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[!a&&e.jsx(L,{className:"h-3.5 w-3.5 text-amber-500"}),e.jsx("span",{className:"font-mono text-xs bg-muted px-2 py-0.5 rounded",children:g})]})}),e.jsx("td",{className:"text-center text-muted-foreground",children:e.jsx(A,{className:"h-4 w-4 mx-auto"})}),e.jsx("td",{className:"py-2 px-3",children:e.jsxs(rs,{value:t||"",onValueChange:j=>S(l.key,g,j),children:[e.jsx(ns,{className:N("h-8 w-48",!a&&"border-amber-300 bg-amber-50 dark:bg-amber-900/20"),children:e.jsx(is,{placeholder:"Select mapping...",children:o&&e.jsxs("div",{className:"flex items-center gap-2",children:["color"in o&&e.jsx("span",{className:"w-2.5 h-2.5 rounded-full",style:{backgroundColor:o.color}}),"icon"in o&&e.jsx("span",{children:o.icon}),e.jsx("span",{children:o.label})]})})}),e.jsx(ls,{children:l.options.map(j=>e.jsx(cs,{value:j.value,children:e.jsxs("div",{className:"flex items-center gap-2",children:["color"in j&&e.jsx("span",{className:"w-2.5 h-2.5 rounded-full",style:{backgroundColor:j.color}}),"icon"in j&&e.jsx("span",{children:j.icon}),e.jsx("span",{children:j.label})]})},j.value))})]})}),e.jsx("td",{className:"py-2 px-3 text-right text-muted-foreground tabular-nums",children:m[l.key][g]||0})]},g)})})]})})]},l.key)})})]})}const ge=d.forwardRef(({className:i,...c},r)=>e.jsx(as,{ref:r,className:N("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",i),...c,children:e.jsx(Zs,{className:N("flex items-center justify-center text-current"),children:e.jsx(E,{className:"h-4 w-4"})})}));ge.displayName=as.displayName;function kt(i,c){return i.map(r=>{const u=r.status?!!c.status[r.status]:!0,m=r.priority?!!c.priority[r.priority]:!0,h=r.type?!!c.type[r.type]:!0,x=[];return!u&&r.status&&x.push({field:"status",severity:"warning",message:`Status "${r.status}" is not mapped`,suggestion:"Will use default: backlog"}),!m&&r.priority&&x.push({field:"priority",severity:"warning",message:`Priority "${r.priority}" is not mapped`,suggestion:"Will use default: medium"}),!h&&r.type&&x.push({field:"type",severity:"warning",message:`Type "${r.type}" is not mapped`,suggestion:"Will use default: task"}),{id:r.id,source:r,target:{title:r.title,description:r.body||"",status:r.status&&c.status[r.status]||"backlog",priority:r.priority&&c.priority[r.priority]||"medium",type:r.type&&c.type[r.type]||"task",labels:r.labels,assignee:r.assignees[0]||null,createdAt:r.createdAt,updatedAt:r.updatedAt},mappingStatus:{status:u?"mapped":"unmapped",priority:m?"mapped":"unmapped",type:h?"mapped":"unmapped"},conflicts:x,selected:!0}})}function Ct({items:i,mappings:c,selectedIds:r,onSelectionChange:u}){const[m,h]=d.useState([]),[x,S]=d.useState([]),[P,v]=d.useState(""),b=d.useMemo(()=>kt(i,c),[i,c]),l=d.useMemo(()=>[{id:"select",header:({table:a})=>e.jsx(ge,{checked:a.getIsAllPageRowsSelected()||a.getIsSomePageRowsSelected()&&"indeterminate",onCheckedChange:t=>{a.toggleAllPageRowsSelected(!!t);const o=new Set;t&&b.forEach(j=>o.add(j.id)),u(o)},"aria-label":"Select all"}),cell:({row:a})=>e.jsx(ge,{checked:r.has(a.original.id),onCheckedChange:t=>{const o=new Set(r);t?o.add(a.original.id):o.delete(a.original.id),u(o)},"aria-label":"Select row"}),enableSorting:!1,enableHiding:!1,size:40},{id:"status-indicator",header:"",cell:({row:a})=>{const t=a.original.conflicts.length>0;return e.jsx(at,{children:e.jsxs(rt,{children:[e.jsx(nt,{asChild:!0,children:e.jsx("div",{className:"flex items-center justify-center",children:t?e.jsx(L,{className:"h-4 w-4 text-amber-500"}):e.jsx(E,{className:"h-4 w-4 text-green-500"})})}),e.jsx(it,{children:t?a.original.conflicts.map(o=>o.message).join(", "):"Ready to import"})]})})},size:40},{accessorKey:"source.title",header:({column:a})=>e.jsxs(f,{variant:"ghost",onClick:()=>a.toggleSorting(a.getIsSorted()==="asc"),className:"-ml-4",children:["Title",e.jsx(pt,{className:"ml-2 h-4 w-4"})]}),cell:({row:a})=>e.jsxs("div",{className:"max-w-[300px]",children:[e.jsx("p",{className:"font-medium truncate",title:a.original.source.title,children:a.original.source.title}),a.original.source.url&&e.jsxs("a",{href:a.original.source.url,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-muted-foreground hover:text-primary inline-flex items-center gap-1",children:["#",a.original.source.issueNumber||"View",e.jsx(xe,{className:"h-3 w-3"})]})]})},{id:"status-mapping",header:"Status",cell:({row:a})=>{const t=a.original.source.status,o=a.original.target.status,j=a.original.mappingStatus.status==="mapped",w=ds.find(p=>p.value===o);return e.jsx("div",{className:"flex items-center gap-1.5 text-xs",children:t?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"font-mono bg-muted px-1.5 py-0.5 rounded truncate max-w-[80px]",children:t}),e.jsx(A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),e.jsxs(T,{variant:j?"outline":"secondary",className:N("gap-1",!j&&"bg-amber-100 text-amber-700 border-amber-200"),children:[w&&e.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:w.color}}),w?.label||o]})]}):e.jsx("span",{className:"text-muted-foreground",children:"—"})})}},{id:"priority-mapping",header:"Priority",cell:({row:a})=>{const t=a.original.source.priority,o=a.original.target.priority,j=a.original.mappingStatus.priority==="mapped",w=ms.find(p=>p.value===o);return e.jsx("div",{className:"flex items-center gap-1.5 text-xs",children:t?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"font-mono bg-muted px-1.5 py-0.5 rounded truncate max-w-[60px]",children:t}),e.jsx(A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),e.jsxs(T,{variant:j?"outline":"secondary",className:N("gap-1",!j&&"bg-amber-100 text-amber-700 border-amber-200"),children:[w&&e.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:w.color}}),w?.label||o]})]}):e.jsx("span",{className:"text-muted-foreground",children:"—"})})}},{id:"type-mapping",header:"Type",cell:({row:a})=>{const t=a.original.source.type,o=a.original.target.type,j=a.original.mappingStatus.type==="mapped",w=us.find(p=>p.value===o);return e.jsx("div",{className:"flex items-center gap-1.5 text-xs",children:t?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"font-mono bg-muted px-1.5 py-0.5 rounded truncate max-w-[60px]",children:t}),e.jsx(A,{className:"h-3 w-3 text-muted-foreground shrink-0"}),e.jsxs(T,{variant:j?"outline":"secondary",className:N("gap-1",!j&&"bg-amber-100 text-amber-700 border-amber-200"),children:[w?.icon," ",w?.label||o]})]}):e.jsx("span",{className:"text-muted-foreground",children:"—"})})}},{accessorKey:"source.labels",header:"Labels",cell:({row:a})=>{const t=a.original.source.labels;return t.length===0?e.jsx("span",{className:"text-muted-foreground",children:"—"}):e.jsxs("div",{className:"flex flex-wrap gap-1 max-w-[150px]",children:[t.slice(0,2).map(o=>e.jsx(T,{variant:"secondary",className:"text-[10px]",children:o},o)),t.length>2&&e.jsxs(T,{variant:"outline",className:"text-[10px]",children:["+",t.length-2]})]})}},{accessorKey:"source.createdAt",header:"Created",cell:({row:a})=>{const t=new Date(a.original.source.createdAt);return e.jsx("span",{className:"text-xs text-muted-foreground tabular-nums",children:t.toLocaleDateString()})}}],[b,r,u]),n=ws({data:b,columns:l,state:{sorting:m,columnFilters:x,globalFilter:P},onSortingChange:h,onColumnFiltersChange:S,onGlobalFilterChange:v,getCoreRowModel:Ps(),getFilteredRowModel:Ss(),getPaginationRowModel:Cs(),getSortedRowModel:ks(),initialState:{pagination:{pageSize:20}}}),y=b.filter(a=>a.conflicts.length>0).length,g=r.size;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"relative max-w-sm",children:[e.jsx(Ve,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(J,{placeholder:"Search items...",value:P??"",onChange:a=>v(a.target.value),className:"pl-9 h-9"})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm",children:[e.jsxs("span",{children:[e.jsx("span",{className:"font-medium",children:g}),e.jsxs("span",{className:"text-muted-foreground",children:[" of ",b.length," selected"]})]}),y>0&&e.jsxs("span",{className:"flex items-center gap-1 text-amber-600",children:[e.jsx(L,{className:"h-4 w-4"}),y," with warnings"]})]})]}),e.jsx("div",{className:"rounded-2xl glass shadow-lg overflow-hidden",children:e.jsxs(Xs,{children:[e.jsx(et,{children:n.getHeaderGroups().map(a=>e.jsx(me,{className:"bg-muted/50",children:a.headers.map(t=>e.jsx(st,{style:{width:t.getSize()!==150?t.getSize():void 0},children:t.isPlaceholder?null:Me(t.column.columnDef.header,t.getContext())},t.id))},a.id))}),e.jsx(tt,{children:n.getRowModel().rows.length?n.getRowModel().rows.map(a=>e.jsx(me,{"data-state":r.has(a.original.id)&&"selected",className:N(a.original.conflicts.length>0&&"bg-amber-50/50 dark:bg-amber-900/10"),children:a.getVisibleCells().map(t=>e.jsx(Ke,{children:Me(t.column.columnDef.cell,t.getContext())},t.id))},a.id)):e.jsx(me,{children:e.jsx(Ke,{colSpan:l.length,className:"h-24 text-center",children:"No items found."})})})]})}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx("span",{children:"Show"}),e.jsxs(rs,{value:String(n.getState().pagination.pageSize),onValueChange:a=>n.setPageSize(Number(a)),children:[e.jsx(ns,{className:"h-8 w-[70px]",children:e.jsx(is,{})}),e.jsx(ls,{children:[10,20,50,100].map(a=>e.jsx(cs,{value:String(a),children:a},a))})]}),e.jsx("span",{children:"per page"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{variant:"outline",size:"sm",onClick:()=>n.setPageIndex(0),disabled:!n.getCanPreviousPage(),children:e.jsx(gt,{className:"h-4 w-4"})}),e.jsx(f,{variant:"outline",size:"sm",onClick:()=>n.previousPage(),disabled:!n.getCanPreviousPage(),children:e.jsx(Is,{className:"h-4 w-4"})}),e.jsxs("span",{className:"text-sm",children:["Page ",n.getState().pagination.pageIndex+1," of ",n.getPageCount()]}),e.jsx(f,{variant:"outline",size:"sm",onClick:()=>n.nextPage(),disabled:!n.getCanNextPage(),children:e.jsx($e,{className:"h-4 w-4"})}),e.jsx(f,{variant:"outline",size:"sm",onClick:()=>n.setPageIndex(n.getPageCount()-1),disabled:!n.getCanNextPage(),children:e.jsx(ft,{className:"h-4 w-4"})})]})]})]})}function St({summary:i,iterations:c,projectKey:r,enableSync:u}){const m=i.conflicts.errors>0,h=i.conflicts.warnings>0;return e.jsxs("div",{className:"space-y-4",children:[m?e.jsxs("div",{className:"flex items-center gap-3 p-4 bg-destructive/10 border border-destructive/20 rounded-lg",children:[e.jsx(L,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-destructive",children:"Cannot proceed with import"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[i.conflicts.errors," error",i.conflicts.errors!==1?"s":""," must be resolved"]})]})]}):h?e.jsxs("div",{className:"flex items-center gap-3 p-4 bg-amber-500/10 border border-amber-500/20 rounded-lg",children:[e.jsx(L,{className:"h-5 w-5 text-amber-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-amber-700 dark:text-amber-400",children:"Ready with warnings"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[i.conflicts.warnings," item",i.conflicts.warnings!==1?"s":""," will use default values"]})]})]}):e.jsxs("div",{className:"flex items-center gap-3 p-4 bg-green-500/10 border border-green-500/20 rounded-lg",children:[e.jsx(Z,{className:"h-5 w-5 text-green-500"}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-green-700 dark:text-green-400",children:"Ready to import"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"All fields mapped correctly"})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("h4",{className:"text-sm font-medium",children:"What will be created"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"bg-card rounded-lg border border-border p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg bg-primary/10 flex items-center justify-center",children:e.jsx(Ue,{className:"h-4 w-4 text-primary"})}),e.jsx("span",{className:"text-2xl font-bold",children:i.itemsToCreate})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Tickets"}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[r,"-1 → ",r,"-",i.itemsToCreate]})]}),e.jsxs("div",{className:"bg-card rounded-lg border border-border p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg bg-amber-500/10 flex items-center justify-center",children:e.jsx(Ze,{className:"h-4 w-4 text-amber-500"})}),e.jsx("span",{className:"text-2xl font-bold",children:c.length})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Sprints"}),c.length>0&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 truncate",children:[c[0].title,c.length>1&&` +${c.length-1} more`]})]}),e.jsxs("div",{className:"bg-card rounded-lg border border-border p-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("div",{className:"w-8 h-8 rounded-lg bg-indigo-500/10 flex items-center justify-center",children:e.jsx(lt,{className:"h-4 w-4 text-indigo-500"})}),e.jsx("span",{className:"text-2xl font-bold",children:i.unmappedValues.status.length+i.unmappedValues.priority.length+i.unmappedValues.type.length||"—"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Unique labels"})]})]})]}),u&&e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-muted/50 rounded-lg",children:[e.jsx(ct,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"Bidirectional sync enabled"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Changes will sync between profClaw and GitHub"})]}),e.jsxs(T,{variant:"outline",className:"text-green-600",children:[e.jsx(Z,{className:"h-3 w-3 mr-1"}),"Active"]})]}),e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-muted/50 rounded-lg",children:[e.jsx(Rs,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"Original dates preserved"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Created/updated timestamps will be imported from GitHub"})]})]}),i.itemsToSkip>0&&e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-muted/30 rounded-lg",children:[e.jsx(L,{className:"h-4 w-4 text-muted-foreground"}),e.jsxs("div",{children:[e.jsxs("p",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:i.itemsToSkip})," items will be skipped"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"These items are deselected or have errors"})]})]}),(i.unmappedValues.status.length>0||i.unmappedValues.priority.length>0||i.unmappedValues.type.length>0)&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-medium text-amber-600",children:"Unmapped values (using defaults)"}),e.jsxs("div",{className:"space-y-1 text-xs",children:[i.unmappedValues.status.length>0&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-muted-foreground w-16",children:"Status:"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:i.unmappedValues.status.map(x=>e.jsx("span",{className:"font-mono bg-muted px-1.5 py-0.5 rounded",children:x},x))}),e.jsx(A,{className:"h-3 w-3 text-muted-foreground"}),e.jsx(T,{variant:"secondary",children:"backlog"})]}),i.unmappedValues.priority.length>0&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-muted-foreground w-16",children:"Priority:"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:i.unmappedValues.priority.map(x=>e.jsx("span",{className:"font-mono bg-muted px-1.5 py-0.5 rounded",children:x},x))}),e.jsx(A,{className:"h-3 w-3 text-muted-foreground"}),e.jsx(T,{variant:"secondary",children:"medium"})]}),i.unmappedValues.type.length>0&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-muted-foreground w-16",children:"Type:"}),e.jsx("div",{className:"flex flex-wrap gap-1",children:i.unmappedValues.type.map(x=>e.jsx("span",{className:"font-mono bg-muted px-1.5 py-0.5 rounded",children:x},x))}),e.jsx(A,{className:"h-3 w-3 text-muted-foreground"}),e.jsx(T,{variant:"secondary",children:"task"})]})]})]})]})}const q=["connect","select","mapping","preview","configure","import"],Pt={connect:"Connect",select:"Select",mapping:"Map Fields",preview:"Preview",configure:"Configure",import:"Import"},Tt=["📋","🚀","💡","🎯","⚡","🔧","📱","🌐","🎨","📊"],It=["#6366f1","#22c55e","#f59e0b","#ef4444","#8b5cf6","#06b6d4","#ec4899","#84cc16"],Rt=["read:project","repo","user:email"];function Ft({open:i,onOpenChange:c,onSuccess:r}){const u=ze(),[m,h]=d.useState("connect"),[x,S]=d.useState("oauth"),[P,v]=d.useState(""),[b,l]=d.useState(!1),[n,y]=d.useState(null),[g,a]=d.useState(null),[t,o]=d.useState({status:{},priority:{},type:{}}),[j,w]=d.useState(new Set),[p,D]=d.useState(null),[O,ee]=d.useState(""),[$,se]=d.useState(""),[te,fe]=d.useState("📋"),[G,be]=d.useState("#6366f1"),[Ne,ye]=d.useState(!0),[ae,ve]=d.useState(!0),[we,ke]=d.useState(!0),[U,Ce]=d.useState(null),{data:I,isLoading:xs}=K({queryKey:["auth-status"],queryFn:async()=>{const s=await fetch("/api/auth/me");return s.ok?s.json():{authenticated:!1}},enabled:i}),{data:Se,isLoading:ps}=K({queryKey:["github-token-status"],queryFn:async()=>{const s=await fetch("/api/import/github/status");if(!s.ok)throw new Error("Failed to check token");return s.json()},enabled:i&&!I?.user?.hasGitHubToken}),Q=I?.user?.hasGitHubToken||Se?.hasToken,Pe=I?.user?.connectedAccounts?.find(s=>s.provider==="github")?.username||Se?.username;d.useEffect(()=>{Q&&m==="connect"&&h("select")},[Q,m]);const{data:Te,isLoading:re,refetch:hs}=K({queryKey:["github-projects"],queryFn:async()=>{const s=await fetch("/api/import/github/projects");if(!s.ok)throw new Error("Failed to fetch projects");return s.json()},enabled:m==="select"}),{data:Ie}=K({queryKey:["github-oauth-url"],queryFn:async()=>{const s=await fetch("/api/auth/github/url");return s.ok?s.json():null},enabled:i&&x==="oauth"}),ne=F({mutationFn:async s=>{const k=await fetch("/api/import/github/validate-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:s})});if(!k.ok){const M=await k.json();throw new Error(M.error||"Token validation failed")}return k.json()},onSuccess:s=>{C.success(`Connected as ${s.username}`),u.invalidateQueries({queryKey:["github-token-status"]}),u.invalidateQueries({queryKey:["auth-status"]}),h("select")},onError:s=>{C.error(s.message)}}),ie=F({mutationFn:async s=>{const k=await fetch(`/api/import/github/projects/${encodeURIComponent(s)}/preview`);if(!k.ok)throw new Error("Failed to fetch project preview");return k.json()},onSuccess:s=>{a(s),o(s.fieldMappings),w(new Set(s.items.map(M=>M.id)));const k=s.project.title.toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,6);ee(k),se(s.project.title),h("mapping")},onError:s=>{C.error(s.message)}}),le=F({mutationFn:async()=>{const s=await fetch(`/api/import/github/projects/${encodeURIComponent(n)}/dry-run`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fieldMappings:t,selectedItemIds:Array.from(j)})});if(!s.ok)throw new Error("Dry run failed");return s.json()},onSuccess:s=>{D(s)},onError:s=>{C.error(s.message)}}),z=F({mutationFn:async()=>{const s=await fetch(`/api/import/github/projects/${encodeURIComponent(n)}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectKey:O,projectName:$,icon:te,color:G,importIterations:Ne,enableSync:ae,preserveTimestamps:we,selectedItemIds:Array.from(j),fieldMappings:t})});if(!s.ok){const k=await s.json();throw new Error(k.error||"Import failed")}return s.json()},onSuccess:s=>{Ce(s),u.invalidateQueries({queryKey:["projects"]}),C.success("Project imported successfully!"),r?.()},onError:s=>{C.error(s.message)}}),Re=F({mutationFn:async()=>{const s=await fetch("/api/import/github/disconnect",{method:"DELETE"});if(!s.ok)throw new Error("Failed to disconnect");return s.json()},onSuccess:()=>{C.success("Disconnected from GitHub"),u.invalidateQueries({queryKey:["github-token-status"]}),u.invalidateQueries({queryKey:["auth-status"]}),h("connect"),v("")}});d.useEffect(()=>{i||setTimeout(()=>{h(Q?"select":"connect"),v(""),S("oauth"),l(!1),y(null),a(null),D(null),Ce(null),ee(""),se(""),fe("📋"),be("#6366f1"),ye(!0),ve(!0),ke(!0),w(new Set),o({status:{},priority:{},type:{}})},200)},[i,Q]);const Fe=q.indexOf(m),gs=(Fe+1)/q.length*100,Ae=m!=="connect"&&m!=="import",js=()=>{switch(m){case"connect":return x==="oauth"||P.length>0;case"select":return n!==null;case"mapping":return!0;case"preview":return j.size>0;case"configure":return O.length>=2&&$.length>=1;default:return!1}},fs=()=>{const s=q.indexOf(m);s>0&&h(q[s-1])},bs=async()=>{switch(m){case"connect":x==="oauth"&&Ie?.url?window.location.href=Ie.url:ne.mutate(P);break;case"select":n&&ie.mutate(n);break;case"mapping":h("preview");break;case"preview":await le.mutateAsync(),h("configure");break;case"configure":h("import"),z.mutate();break}},Ns=s=>{navigator.clipboard.writeText(s),C.success("Copied to clipboard")},ys=d.useMemo(()=>{if(p)return p.summary;const s=g?.items||[],k=j,M=new Set,ce=new Set,oe=new Set;for(const R of s)R.status&&!t.status[R.status]&&M.add(R.status),R.priority&&!t.priority[R.priority]&&ce.add(R.priority),R.type&&!t.type[R.type]&&oe.add(R.type);return{totalItems:s.length,itemsToCreate:k.size,itemsToSkip:s.length-k.size,iterations:g?.iterations.length||0,conflicts:{errors:0,warnings:M.size+ce.size+oe.size},unmappedValues:{status:Array.from(M),priority:Array.from(ce),type:Array.from(oe)}}},[g,j,t,p]);return e.jsx(Qe,{open:i,onOpenChange:c,children:e.jsxs(We,{className:"sm:max-w-4xl max-h-[90vh] flex flex-col",children:[e.jsx(Be,{children:e.jsxs(Je,{className:"flex items-center gap-2",children:[e.jsx(Y,{className:"h-5 w-5"}),"Import from GitHub Projects"]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"flex justify-between text-xs text-muted-foreground",children:q.map((s,k)=>e.jsx("span",{className:N("transition-colors",k<=Fe?"text-primary font-medium":""),children:Pt[s]},s))}),e.jsx(Js,{value:gs,className:"h-1"})]}),e.jsxs("div",{className:"flex-1 overflow-y-auto py-4 min-h-[400px]",children:[m==="connect"&&e.jsxs("div",{className:"space-y-6",children:[I?.authenticated&&I.user&&!I.user.hasGitHubToken&&e.jsxs("div",{className:"flex items-center gap-3 p-3 bg-primary/5 rounded-lg border border-primary/20",children:[I.user.avatarUrl?e.jsx("img",{src:I.user.avatarUrl,alt:I.user.name,className:"w-10 h-10 rounded-full"}):e.jsx("div",{className:"w-10 h-10 rounded-full bg-muted flex items-center justify-center",children:e.jsx(Fs,{className:"h-5 w-5 text-muted-foreground"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"font-medium",children:I.user.name}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Connect GitHub to import your projects"})]})]}),e.jsxs("div",{className:"text-center py-4",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-gradient-to-br from-gray-800 to-gray-900 flex items-center justify-center mx-auto mb-4",children:e.jsx(Y,{className:"h-8 w-8 text-white"})}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"Connect Your GitHub"}),e.jsx("p",{className:"text-muted-foreground text-sm max-w-md mx-auto",children:"Connect your GitHub account to import Projects, Issues, and more."})]}),e.jsxs("div",{className:"flex items-center justify-center gap-2 p-1 bg-muted rounded-lg max-w-xs mx-auto",children:[e.jsxs("button",{onClick:()=>S("oauth"),className:N("flex-1 py-2 px-4 rounded-md text-sm font-medium transition-all",x==="oauth"?"bg-background shadow-sm":"hover:bg-background/50 text-muted-foreground"),children:[e.jsx(qe,{className:"h-4 w-4 inline-block mr-2"}),"OAuth"]}),e.jsxs("button",{onClick:()=>S("pat"),className:N("flex-1 py-2 px-4 rounded-md text-sm font-medium transition-all",x==="pat"?"bg-background shadow-sm":"hover:bg-background/50 text-muted-foreground"),children:[e.jsx(Ee,{className:"h-4 w-4 inline-block mr-2"}),"Token"]})]}),x==="oauth"&&e.jsx("div",{className:"max-w-md mx-auto space-y-4",children:e.jsxs("div",{className:"bg-green-500/10 border border-green-500/20 rounded-lg p-4",children:[e.jsxs("h4",{className:"font-medium text-green-600 flex items-center gap-2 mb-2",children:[e.jsx(Z,{className:"h-4 w-4"}),"Recommended Method"]}),e.jsxs("ul",{className:"text-sm text-muted-foreground space-y-1",children:[e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(E,{className:"h-3 w-3 text-green-500"}),"One-click authentication"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(E,{className:"h-3 w-3 text-green-500"}),"Automatic token refresh"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(E,{className:"h-3 w-3 text-green-500"}),"Secure OAuth 2.0 flow"]})]})]})}),x==="pat"&&e.jsx("div",{className:"max-w-md mx-auto space-y-4",children:b?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"bg-muted/50 rounded-lg p-4 space-y-3",children:[e.jsx("h4",{className:"font-medium text-sm",children:"Create a Personal Access Token"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-start gap-3 text-sm",children:[e.jsx("span",{className:"w-5 h-5 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-xs font-bold shrink-0",children:"1"}),e.jsxs("a",{href:"https://github.com/settings/tokens?type=beta",target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline font-medium inline-flex items-center gap-1",children:["Open GitHub Token Settings ",e.jsx(xe,{className:"h-3 w-3"})]})]}),e.jsxs("div",{className:"flex items-start gap-3 text-sm",children:[e.jsx("span",{className:"w-5 h-5 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-xs font-bold shrink-0",children:"2"}),e.jsx("span",{children:'Click "Generate new token" and choose "Fine-grained token"'})]}),e.jsxs("div",{className:"flex items-start gap-3 text-sm",children:[e.jsx("span",{className:"w-5 h-5 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-xs font-bold shrink-0",children:"3"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("span",{children:"Enable these permissions:"}),e.jsx("div",{className:"flex flex-wrap gap-1.5 mt-1",children:Rt.map(s=>e.jsxs("button",{onClick:()=>Ns(s),className:"inline-flex items-center gap-1 px-2 py-0.5 bg-background rounded text-xs font-mono border border-border hover:border-primary transition-colors",children:[s,e.jsx(As,{className:"h-3 w-3 opacity-50"})]},s))})]})]}),e.jsxs("div",{className:"flex items-start gap-3 text-sm",children:[e.jsx("span",{className:"w-5 h-5 rounded-full bg-primary text-primary-foreground flex items-center justify-center text-xs font-bold shrink-0",children:"4"}),e.jsx("span",{children:"Copy the token and paste it below"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(H,{htmlFor:"pat",children:"Personal Access Token"}),e.jsx(J,{id:"pat",type:"password",value:P,onChange:s=>v(s.target.value),placeholder:"github_pat_xxxxxxxxxxxxxxxxxxxxxxxx",className:"font-mono bg-muted/50",autoComplete:"off"})]})]}):e.jsxs(f,{variant:"outline",className:"w-full",onClick:()=>l(!0),children:[e.jsx(Ee,{className:"h-4 w-4 mr-2"}),"I have a Personal Access Token"]})})]}),m==="select"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-medium",children:"Your GitHub Projects"}),Pe&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Connected as ",e.jsxs("span",{className:"font-medium",children:["@",Pe]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{variant:"ghost",size:"sm",onClick:()=>hs(),disabled:re,children:e.jsx(Ms,{className:N("h-4 w-4",re&&"animate-spin")})}),e.jsx(f,{variant:"outline",size:"sm",onClick:()=>Re.mutate(),disabled:Re.isPending,children:"Disconnect"})]})]}),re||ps||xs?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(V,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):Te?.projects?.length===0?e.jsxs("div",{className:"text-center py-12",children:[e.jsx(Nt,{className:"h-10 w-10 text-muted-foreground mx-auto mb-3"}),e.jsx("p",{className:"text-muted-foreground",children:"No GitHub Projects found"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Make sure you have at least one Project V2 in your account"}),e.jsxs(f,{variant:"outline",size:"sm",className:"mt-4",onClick:()=>window.open("https://github.com/new/project","_blank"),children:["Create a GitHub Project ",e.jsx(xe,{className:"h-3 w-3 ml-2"})]})]}):e.jsx("div",{className:"space-y-2 max-h-[400px] overflow-y-auto",children:Te?.projects?.map(s=>e.jsx("button",{onClick:()=>y(s.id),className:N("w-full text-left p-4 rounded-lg border transition-all",n===s.id?"border-primary bg-primary/5":"border-border hover:border-primary/30 hover:bg-muted/50"),children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h4",{className:"font-medium truncate",children:s.title}),s.public?e.jsx(T,{variant:"outline",className:"text-[10px]",children:"Public"}):e.jsx(T,{variant:"secondary",className:"text-[10px]",children:"Private"})]}),s.shortDescription&&e.jsx("p",{className:"text-sm text-muted-foreground mt-1 truncate",children:s.shortDescription}),e.jsxs("div",{className:"flex items-center gap-4 mt-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:[s.items.totalCount," items"]}),e.jsxs("span",{children:[s.fields.totalCount," fields"]}),s.creator&&e.jsxs("span",{children:["by ",s.creator.login]})]})]}),n===s.id&&e.jsx(E,{className:"h-5 w-5 text-primary shrink-0 ml-2"})]})},s.id))})]}),m==="mapping"&&g&&e.jsx(wt,{items:g.items,mappings:t,onMappingsChange:o}),m==="preview"&&g&&e.jsx(Ct,{items:g.items,mappings:t,selectedIds:j,onSelectionChange:w}),m==="configure"&&e.jsx("div",{className:"space-y-6",children:e.jsxs(vt,{defaultValue:"project",className:"w-full",children:[e.jsxs(os,{className:"grid w-full grid-cols-2",children:[e.jsxs(pe,{value:"project",className:"gap-2",children:[e.jsx(He,{className:"h-4 w-4"}),"Project Settings"]}),e.jsxs(pe,{value:"summary",className:"gap-2",children:[e.jsx(Ue,{className:"h-4 w-4"}),"Import Summary"]})]}),e.jsxs(he,{value:"project",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(H,{htmlFor:"project-key",children:["Project Key ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(J,{id:"project-key",value:O,onChange:s=>ee(s.target.value.toUpperCase().replace(/[^A-Z0-9]/g,"").slice(0,10)),placeholder:"PROJ",className:"font-mono uppercase bg-muted/50",maxLength:10}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Used as ticket prefix (e.g., ",O||"PROJ","-1)"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(H,{htmlFor:"project-name",children:["Project Name ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(J,{id:"project-name",value:$,onChange:s=>se(s.target.value),placeholder:"My Project",className:"bg-muted/50"})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(H,{children:"Icon"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:Tt.map(s=>e.jsx("button",{type:"button",onClick:()=>fe(s),className:N("w-10 h-10 flex items-center justify-center rounded-lg border text-xl transition-all",te===s?"border-primary bg-primary/10":"border-border hover:border-primary/30"),children:s},s))})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(H,{children:"Color"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:It.map(s=>e.jsx("button",{type:"button",onClick:()=>be(s),className:N("w-10 h-10 rounded-lg border-2 transition-all",G===s?"border-primary scale-110":"border-transparent"),style:{backgroundColor:s}},s))})]})]}),e.jsxs("div",{className:"p-4 bg-muted/50 rounded-lg",children:[e.jsx("p",{className:"text-xs text-muted-foreground mb-2",children:"Preview"}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Xe,{icon:te,color:G,size:"lg"}),e.jsxs("div",{children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"text-xs font-mono font-bold px-2 py-0.5 rounded",style:{backgroundColor:`${G}20`,color:G},children:O||"KEY"})}),e.jsx("p",{className:"font-medium mt-1",children:$||"Project Name"})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-sm",children:"Import Iterations as Sprints"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[g?.iterations.length||0," iterations will become sprints"]})]}),e.jsx(de,{checked:Ne,onCheckedChange:ye})]}),e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"font-medium text-sm flex items-center gap-2",children:[e.jsx(je,{className:"h-4 w-4 text-primary"}),"Enable Bidirectional Sync"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Keep tickets synchronized with GitHub issues"})]}),e.jsx(de,{checked:ae,onCheckedChange:ve})]}),e.jsxs("div",{className:"flex items-center justify-between p-3 bg-muted/30 rounded-lg",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-sm",children:"Preserve Original Timestamps"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Use GitHub's created/updated dates"})]}),e.jsx(de,{checked:we,onCheckedChange:ke})]})]})]}),e.jsx(he,{value:"summary",className:"mt-4",children:e.jsx(St,{summary:ys,iterations:g?.iterations||[],projectKey:O,enableSync:ae})})]})}),m==="import"&&e.jsxs("div",{className:"space-y-6 py-8",children:[z.isPending&&e.jsxs("div",{className:"text-center",children:[e.jsx(V,{className:"h-12 w-12 animate-spin text-primary mx-auto mb-4"}),e.jsx("p",{className:"font-medium",children:"Importing from GitHub..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Creating project, sprints, and tickets"})]}),z.isError&&e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-destructive/10 flex items-center justify-center mx-auto mb-4",children:e.jsx(Es,{className:"h-6 w-6 text-destructive"})}),e.jsx("p",{className:"font-medium text-destructive",children:"Import Failed"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:z.error?.message||"An error occurred"}),e.jsx(f,{variant:"outline",className:"mt-4",onClick:()=>z.mutate(),children:"Try Again"})]}),U&&e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"w-16 h-16 rounded-full bg-green-500/10 flex items-center justify-center mx-auto mb-4",children:e.jsx(Z,{className:"h-8 w-8 text-green-500"})}),e.jsx("p",{className:"text-lg font-semibold",children:"Import Complete!"}),e.jsxs("div",{className:"grid grid-cols-3 gap-4 mt-6 max-w-md mx-auto",children:[e.jsxs("div",{className:"bg-card rounded-lg border border-border p-3 text-center",children:[e.jsx("p",{className:"text-2xl font-bold text-primary",children:"1"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Project"})]}),e.jsxs("div",{className:"bg-card rounded-lg border border-border p-3 text-center",children:[e.jsx("p",{className:"text-2xl font-bold text-amber-500",children:U.summary.sprintsCreated}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Sprints"})]}),e.jsxs("div",{className:"bg-card rounded-lg border border-border p-3 text-center",children:[e.jsx("p",{className:"text-2xl font-bold text-green-500",children:U.summary.ticketsCreated}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Tickets"})]})]}),e.jsxs("div",{className:"flex items-center justify-center gap-3 mt-6",children:[e.jsx(f,{variant:"outline",onClick:()=>c(!1),children:"Close"}),e.jsx(f,{onClick:()=>{c(!1),window.location.href=`/projects/${U.project.id}`},children:"View Project"})]})]})]})]}),m!=="import"&&e.jsxs("div",{className:"flex items-center justify-between pt-4 border-t border-border",children:[e.jsxs(f,{variant:"ghost",onClick:fs,disabled:!Ae,className:N(!Ae&&"invisible"),children:[e.jsx(Ls,{className:"h-4 w-4 mr-2"}),"Back"]}),e.jsxs(f,{onClick:bs,disabled:!js()||ne.isPending||ie.isPending||le.isPending||x==="pat"&&m==="connect"&&!b,className:"gap-2",children:[(ne.isPending||ie.isPending||le.isPending)&&e.jsx(V,{className:"h-4 w-4 animate-spin"}),m==="connect"&&x==="oauth"?e.jsxs(e.Fragment,{children:[e.jsx(Y,{className:"h-4 w-4"}),"Continue with GitHub"]}):m==="configure"?"Start Import":"Continue",e.jsx(A,{className:"h-4 w-4"})]})]})]})})}function At({projectId:i}){const{data:c,isLoading:r}=K({queryKey:["stats","project",i],queryFn:()=>_.stats.projectStats(i),staleTime:6e4});if(r)return e.jsxs("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Oe,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"animate-pulse",children:"..."})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(De,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"animate-pulse",children:"..."})]})]});const u=c?.tickets?.total??0,m=c?.sprints?.total??0,h=c?.sprints?.active??0;return e.jsxs("div",{className:"flex items-center gap-4 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Oe,{className:"h-3.5 w-3.5"}),e.jsxs("span",{children:[u," ",u===1?"ticket":"tickets"]})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(De,{className:"h-3.5 w-3.5"}),e.jsx("span",{children:h>0?e.jsxs(e.Fragment,{children:[h," active"]}):e.jsxs(e.Fragment,{children:[m," ",m===1?"sprint":"sprints"]})})]})]})}function aa(){const i=vs(),c=ze(),[r,u]=d.useState(""),[m,h]=d.useState(!1),[x,S]=d.useState(!1),[P,v]=d.useState(!1),{data:b,isLoading:l,error:n}=K({queryKey:["projects",{search:r,includeArchived:m}],queryFn:()=>_.projects.list({search:r||void 0,includeArchived:m})}),y=F({mutationFn:t=>_.projects.archive(t),onSuccess:()=>{C.success("Project archived"),c.invalidateQueries({queryKey:["projects"]})},onError:t=>{C.error(`Failed to archive: ${t.message}`)}}),g=F({mutationFn:t=>_.projects.delete(t),onSuccess:()=>{C.success("Project deleted"),c.invalidateQueries({queryKey:["projects"]})},onError:t=>{C.error(`Failed to delete: ${t.message}`)}}),a=b?.projects||[];return l?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(V,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):n?e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 gap-4",children:[e.jsx("p",{className:"text-destructive",children:"Failed to load projects"}),e.jsx(f,{variant:"outline",onClick:()=>c.invalidateQueries({queryKey:["projects"]}),children:"Retry"})]}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Projects"}),e.jsx("p",{className:"text-muted-foreground",children:"Manage your projects and ticket prefixes"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(f,{variant:"outline",onClick:()=>v(!0),className:"gap-2",children:[e.jsx(Y,{className:"h-4 w-4"}),"Import"]}),e.jsxs(f,{onClick:()=>S(!0),className:"gap-2",children:[e.jsx(Le,{className:"h-4 w-4"}),"New Project"]})]})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"relative flex-1 max-w-md",children:[e.jsx(Ve,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx("input",{type:"text",placeholder:"Search projects...",value:r,onChange:t=>u(t.target.value),className:"w-full field pl-10 pr-4"})]}),e.jsxs("label",{className:"flex items-center gap-2 text-sm text-muted-foreground cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:m,onChange:t=>h(t.target.checked),className:"rounded"}),"Show archived"]})]}),a.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 bg-muted/30 rounded-xl border border-dashed border-border",children:[e.jsx(Ds,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-muted-foreground mb-4",children:"No projects yet"}),e.jsxs(f,{onClick:()=>S(!0),variant:"outline",className:"gap-2",children:[e.jsx(Le,{className:"h-4 w-4"}),"Create your first project"]})]}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:a.map(t=>e.jsxs("div",{onClick:()=>i(`/projects/${t.id}`),className:N("group relative bg-card rounded-xl border border-border p-5 cursor-pointer transition-all","hover:border-primary/50 hover:shadow-lg hover:shadow-primary/5",t.status==="archived"&&"opacity-60"),children:[e.jsxs("div",{className:"flex items-start justify-between mb-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(Xe,{icon:t.icon,color:t.color,size:"md"}),e.jsxs("div",{children:[e.jsx("span",{className:"text-xs font-mono font-bold px-2 py-0.5 rounded",style:{backgroundColor:`${t.color}20`,color:t.color},children:t.key}),t.status==="archived"&&e.jsx("span",{className:"ml-2 text-xs text-muted-foreground",children:"(Archived)"})]})]}),e.jsxs(Os,{children:[e.jsx(Ks,{asChild:!0,children:e.jsx("button",{onClick:o=>o.stopPropagation(),className:"opacity-0 group-hover:opacity-100 transition-opacity p-1.5 hover:bg-muted rounded-lg",children:e.jsx(ot,{className:"h-4 w-4 text-muted-foreground"})})}),e.jsxs(Gs,{align:"end",className:"w-48",children:[e.jsxs(W,{onClick:o=>{o.stopPropagation(),i(`/projects/${t.id}/settings`)},children:[e.jsx(dt,{className:"h-4 w-4 mr-2"}),"Edit Project"]}),e.jsx(zs,{}),t.status==="archived"?e.jsxs(W,{onClick:o=>{o.stopPropagation(),C.info("Unarchive coming soon")},children:[e.jsx(_e,{className:"h-4 w-4 mr-2"}),"Restore Project"]}):e.jsxs(W,{onClick:o=>{o.stopPropagation(),y.mutate(t.id)},className:"text-amber-600",children:[e.jsx(mt,{className:"h-4 w-4 mr-2"}),"Archive Project"]}),e.jsxs(W,{onClick:o=>{o.stopPropagation(),window.confirm(`Delete project "${t.name}"? This cannot be undone.`)&&g.mutate(t.id)},className:"text-destructive",children:[e.jsx(ut,{className:"h-4 w-4 mr-2"}),"Delete Project"]})]})]})]}),e.jsx("h3",{className:"font-semibold mb-1",children:t.name}),e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2 mb-4",children:t.description||"No description"}),e.jsx(At,{projectId:t.id}),e.jsx($e,{className:"absolute right-4 top-1/2 -translate-y-1/2 h-5 w-5 text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity"})]},t.id))}),e.jsx(yt,{open:x,onOpenChange:S,onSuccess:()=>{c.invalidateQueries({queryKey:["projects"]})}}),e.jsx(Ft,{open:P,onOpenChange:v,onSuccess:()=>{c.invalidateQueries({queryKey:["projects"]})}})]})}export{aa as ProjectList};