cortex-react-components 3.3.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/dist/{chunk-SSDRUPMS.mjs → chunk-2BKXIIFJ.mjs} +183 -36
  2. package/dist/{chunk-XFJPL6FS.mjs → chunk-3DWDGYDG.mjs} +1 -1
  3. package/dist/{chunk-WX5QYPGU.mjs → chunk-3K6EVFOW.mjs} +1 -1
  4. package/dist/{chunk-HLEMFDTD.mjs → chunk-3R2LCGLI.mjs} +1 -1
  5. package/dist/{chunk-JFXWP3RQ.mjs → chunk-3RYHYKVQ.mjs} +1 -1
  6. package/dist/{chunk-VMYEV3FG.mjs → chunk-4YRR74Y4.mjs} +1 -1
  7. package/dist/{chunk-PJZ5PWKP.mjs → chunk-5OGDBGXG.mjs} +1 -1
  8. package/dist/{chunk-I4MTJN23.mjs → chunk-6A7T3O6T.mjs} +6 -5
  9. package/dist/{chunk-KIZUBPPQ.mjs → chunk-6GO5N6ZP.mjs} +1 -1
  10. package/dist/{chunk-EJJITIA3.mjs → chunk-6LF4K7ER.mjs} +4 -4
  11. package/dist/{chunk-URC56DLC.mjs → chunk-6S7EQDLL.mjs} +1 -1
  12. package/dist/{chunk-EC5I4CIO.mjs → chunk-7HHLKQE4.mjs} +2 -2
  13. package/dist/{chunk-RFQKQLNT.mjs → chunk-7LM2P6N3.mjs} +4 -4
  14. package/dist/{chunk-IJ3E6ZXF.mjs → chunk-AZ5MV7NO.mjs} +1 -1
  15. package/dist/{chunk-V6YEUAIH.mjs → chunk-CV7GOXGO.mjs} +2 -2
  16. package/dist/{chunk-L4SNPNYU.mjs → chunk-D3AHBPI5.mjs} +2 -2
  17. package/dist/{chunk-FABRRO2B.mjs → chunk-DRLNETNN.mjs} +1 -1
  18. package/dist/{chunk-OXP3LJ53.mjs → chunk-DVWMM7AI.mjs} +4 -4
  19. package/dist/{chunk-HUZCVQP7.mjs → chunk-EEVXIKNB.mjs} +1 -1
  20. package/dist/{chunk-Z54HOXSV.mjs → chunk-ETV6EEYB.mjs} +1 -1
  21. package/dist/{chunk-EDYFH3EJ.mjs → chunk-F6SQTC6R.mjs} +4 -4
  22. package/dist/{chunk-IVOPNDSN.mjs → chunk-G5N5MCLS.mjs} +5 -5
  23. package/dist/{chunk-NVSA5BFC.mjs → chunk-GR45UN4U.mjs} +2 -2
  24. package/dist/{chunk-QETXXFRW.mjs → chunk-HNVHGBNE.mjs} +1 -1
  25. package/dist/{chunk-QPO45D6F.mjs → chunk-I2MVZVXE.mjs} +1 -1
  26. package/dist/chunk-IC4N2KYF.mjs +401 -0
  27. package/dist/{chunk-MZVEK6A5.mjs → chunk-IM5B557Z.mjs} +16 -16
  28. package/dist/{chunk-Q6CUUDUR.mjs → chunk-IQ67MHAY.mjs} +1 -1
  29. package/dist/{chunk-OCVHSV6Z.mjs → chunk-IWQEM5KO.mjs} +2 -2
  30. package/dist/{chunk-TDOOQIMQ.mjs → chunk-J5GM5CJK.mjs} +2 -2
  31. package/dist/chunk-JCSRFM37.mjs +595 -0
  32. package/dist/{chunk-QMFGV3M5.mjs → chunk-JOGVCBYP.mjs} +1 -1
  33. package/dist/{chunk-4P5Q6UXF.mjs → chunk-JWMQOARK.mjs} +1 -1
  34. package/dist/{chunk-DSVXGGGV.mjs → chunk-K5ZNBHQO.mjs} +1 -1
  35. package/dist/{chunk-YY4VLYYH.mjs → chunk-KJVAS4I7.mjs} +26 -11
  36. package/dist/{chunk-XZFMQXYJ.mjs → chunk-KMGTUNRZ.mjs} +1 -1
  37. package/dist/{chunk-ETG5N2OG.mjs → chunk-KYY7BMXI.mjs} +1 -1
  38. package/dist/{chunk-SSE3MQDP.mjs → chunk-LRMDRQRJ.mjs} +2 -2
  39. package/dist/{chunk-LGGOEYDB.mjs → chunk-LRTEGIZ7.mjs} +10 -10
  40. package/dist/{chunk-XGHUG2WQ.mjs → chunk-MDG2I4PB.mjs} +1 -1
  41. package/dist/{chunk-HMVIQFLN.mjs → chunk-N5HTSJLI.mjs} +1 -1
  42. package/dist/{chunk-IDMTHUC4.mjs → chunk-N5Q2DYUR.mjs} +1 -1
  43. package/dist/{chunk-7ZCW4XMR.mjs → chunk-NSYYRG6A.mjs} +1 -1
  44. package/dist/{chunk-CONYNX7Y.mjs → chunk-NUAJQK4H.mjs} +1 -1
  45. package/dist/{chunk-LM4J7254.mjs → chunk-OR3XMMEK.mjs} +9 -9
  46. package/dist/{chunk-EGZL4DVZ.mjs → chunk-PAXCURFR.mjs} +1 -1
  47. package/dist/{chunk-RC6YHGVV.mjs → chunk-PE7KJR4A.mjs} +1 -1
  48. package/dist/{chunk-LTDXFLCW.mjs → chunk-QDO6BAAN.mjs} +12 -4
  49. package/dist/{chunk-NQMJXY3N.mjs → chunk-QJGBUBSB.mjs} +1 -1
  50. package/dist/{chunk-YD7Q7IZX.mjs → chunk-QJQ66DYZ.mjs} +1 -1
  51. package/dist/{chunk-WJTVZ6CB.mjs → chunk-RNHGLZYP.mjs} +1 -1
  52. package/dist/{chunk-2D3EN2AX.mjs → chunk-SJI6X5DK.mjs} +2 -2
  53. package/dist/{chunk-4JHX6BW6.mjs → chunk-TZH6L2OH.mjs} +1 -1
  54. package/dist/{chunk-OPJMXB4K.mjs → chunk-UCK4TW63.mjs} +4 -4
  55. package/dist/{chunk-36W3BORX.mjs → chunk-WAR2OXXK.mjs} +1 -1
  56. package/dist/{chunk-SM57JU3T.mjs → chunk-WZBXR7J3.mjs} +5 -5
  57. package/dist/{chunk-LPK5R32M.mjs → chunk-X4GP2O3Y.mjs} +1 -1
  58. package/dist/{chunk-6NRBLKM4.mjs → chunk-XCZCWSOY.mjs} +2 -2
  59. package/dist/{chunk-KOK3VCJZ.mjs → chunk-Y4KJTMKO.mjs} +1 -1
  60. package/dist/{chunk-YFOEG4PP.mjs → chunk-Z6MYLHDW.mjs} +1 -1
  61. package/dist/components/AdvancedComponents/AppSidebar.d.ts +1 -1
  62. package/dist/components/AdvancedComponents/AppSidebar.js +480 -301
  63. package/dist/components/AdvancedComponents/AppSidebar.mjs +3 -3
  64. package/dist/components/AdvancedComponents/index.js +480 -301
  65. package/dist/components/AdvancedComponents/index.mjs +3 -3
  66. package/dist/components/Blocks/Banner.mjs +8 -8
  67. package/dist/components/Blocks/CallToAction.mjs +8 -8
  68. package/dist/components/Blocks/CollapsibleArea.mjs +9 -9
  69. package/dist/components/Blocks/Content.mjs +9 -9
  70. package/dist/components/Blocks/FeaturesBlock.mjs +8 -8
  71. package/dist/components/Blocks/ImageBlock.mjs +3 -3
  72. package/dist/components/Blocks/MediaBlock.mjs +3 -3
  73. package/dist/components/Blocks/RelatedPosts.mjs +10 -10
  74. package/dist/components/Blocks/RenderBlocks.mjs +11 -11
  75. package/dist/components/Blocks/ReusableContentBlock.mjs +11 -11
  76. package/dist/components/Blocks/index.mjs +18 -18
  77. package/dist/components/CRM/index.mjs +3 -3
  78. package/dist/components/Cards/ContentCard.mjs +8 -8
  79. package/dist/components/Cards/FeatureCard.mjs +8 -8
  80. package/dist/components/Cards/index.mjs +14 -14
  81. package/dist/components/Chat/ChatInterface.mjs +11 -11
  82. package/dist/components/Chat/CopilotInterface.d.ts +1 -1
  83. package/dist/components/Chat/CopilotInterface.js +527 -330
  84. package/dist/components/Chat/CopilotInterface.mjs +16 -16
  85. package/dist/components/Chat/PartTypes/MessageHandler.mjs +9 -9
  86. package/dist/components/Chat/PartTypes/index.mjs +11 -11
  87. package/dist/components/Chat/chat-session-sidebar.d.ts +1 -1
  88. package/dist/components/Chat/demo-long-messages.js +527 -330
  89. package/dist/components/Chat/demo-long-messages.mjs +16 -16
  90. package/dist/components/Chat/demo-tests.js +527 -330
  91. package/dist/components/Chat/demo-tests.mjs +16 -16
  92. package/dist/components/Chat/demo.js +527 -330
  93. package/dist/components/Chat/demo.mjs +16 -16
  94. package/dist/components/Chat/example-usage.js +527 -330
  95. package/dist/components/Chat/example-usage.mjs +16 -16
  96. package/dist/components/Chat/example-with-vercel-ai.js +527 -330
  97. package/dist/components/Chat/example-with-vercel-ai.mjs +16 -16
  98. package/dist/components/Chat/index.js +527 -330
  99. package/dist/components/Chat/index.mjs +21 -21
  100. package/dist/components/DeliveryLead/DeliveryLeadSubmissionWithList.mjs +2 -2
  101. package/dist/components/DeliveryLead/index.mjs +4 -4
  102. package/dist/components/DigitalColleagues/Views/TeamsIndexView.d.ts +1 -9
  103. package/dist/components/DigitalColleagues/Views/TeamsIndexView.js +22 -27
  104. package/dist/components/DigitalColleagues/Views/TeamsIndexView.mjs +4 -6
  105. package/dist/components/DigitalColleagues/index.d.ts +0 -18
  106. package/dist/components/DigitalColleagues/index.js +0 -16754
  107. package/dist/components/DigitalColleagues/test-data.d.ts +1 -112
  108. package/dist/components/DigitalColleagues/test-data.js +482 -308
  109. package/dist/components/DigitalColleagues/test-data.mjs +1 -5
  110. package/dist/components/Foundry/AppSidebarLeft.mjs +3 -3
  111. package/dist/components/Foundry/Knowledge/add-knowledge-modal.mjs +3 -3
  112. package/dist/components/Foundry/Knowledge/add-team-context.mjs +3 -3
  113. package/dist/components/Foundry/MainPage.mjs +7 -7
  114. package/dist/components/Foundry/ManagementSidebar.d.ts +2 -2
  115. package/dist/components/Foundry/ManagementSidebar.js +11 -3
  116. package/dist/components/Foundry/ManagementSidebar.mjs +1 -1
  117. package/dist/components/Foundry/Pages/dashboardpage.js +1423 -2039
  118. package/dist/components/Foundry/Pages/dashboardpage.mjs +23 -24
  119. package/dist/components/Foundry/RichText/index.mjs +3 -3
  120. package/dist/components/Foundry/RichText/plugins/toolbar-plugin.mjs +2 -2
  121. package/dist/components/Foundry/Views/ColleaguesView.js +5 -4
  122. package/dist/components/Foundry/Views/ColleaguesView.mjs +3 -3
  123. package/dist/components/Foundry/Views/KnowledgeView.mjs +10 -10
  124. package/dist/components/Foundry/Views/TeamsIndexView.js +5 -4
  125. package/dist/components/Foundry/Views/TeamsIndexView.mjs +4 -4
  126. package/dist/components/Foundry/Views/index.js +1350 -785
  127. package/dist/components/Foundry/Views/index.mjs +50 -49
  128. package/dist/components/{.archive → Foundry}/app-card.d.ts +1 -1
  129. package/dist/components/{DigitalColleagues/colleague-type-selection.js → Foundry/app-card.js} +89 -117
  130. package/dist/components/{DigitalColleagues/colleague-card.mjs → Foundry/app-card.mjs} +4 -5
  131. package/dist/components/Foundry/document-edit.mjs +4 -4
  132. package/dist/components/Foundry/document-preview-examples.mjs +5 -5
  133. package/dist/components/Foundry/document-preview.mjs +5 -5
  134. package/dist/components/Foundry/file-edit.mjs +7 -7
  135. package/dist/components/Foundry/foundary-layout.js +480 -301
  136. package/dist/components/Foundry/foundary-layout.mjs +4 -4
  137. package/dist/components/Foundry/index.js +2746 -2866
  138. package/dist/components/Foundry/index.mjs +78 -79
  139. package/dist/components/Foundry/knowledge-browser.mjs +6 -6
  140. package/dist/components/Foundry/types.d.ts +26 -0
  141. package/dist/components/HeaderFooter/Header.mjs +1 -1
  142. package/dist/components/HeaderFooter/SectionHeading.mjs +9 -9
  143. package/dist/components/HeaderFooter/index.mjs +5 -5
  144. package/dist/components/Heros/DashboardHero/DashboardHero.js +5 -4
  145. package/dist/components/Heros/DashboardHero/DashboardHero.mjs +2 -2
  146. package/dist/components/Heros/DashboardHero/index.js +5 -4
  147. package/dist/components/Heros/DashboardHero/index.mjs +2 -2
  148. package/dist/components/Heros/HighImpact/index.mjs +9 -9
  149. package/dist/components/Heros/LowImpact/index.mjs +9 -9
  150. package/dist/components/Heros/MediumImpact/index.mjs +9 -9
  151. package/dist/components/Heros/PostHero/index.mjs +3 -3
  152. package/dist/components/Heros/RenderHero.mjs +12 -12
  153. package/dist/components/Heros/index.js +5 -4
  154. package/dist/components/Heros/index.mjs +19 -19
  155. package/dist/components/Layouts/OutputHeaderFooter.mjs +11 -11
  156. package/dist/components/Layouts/Print.mjs +15 -15
  157. package/dist/components/Layouts/SlideShow.mjs +17 -17
  158. package/dist/components/Layouts/index.mjs +21 -21
  159. package/dist/components/Menus/SidebarLeft.mjs +3 -3
  160. package/dist/components/Menus/SidebarLeftMulti.mjs +3 -3
  161. package/dist/components/Menus/SidebarRight.mjs +3 -3
  162. package/dist/components/Menus/index.mjs +5 -5
  163. package/dist/components/Payload/CollectionArchive/index.mjs +4 -4
  164. package/dist/components/Payload/Media/index.mjs +2 -2
  165. package/dist/components/Payload/PayloadCard/index.mjs +3 -3
  166. package/dist/components/Payload/RichText/index.mjs +8 -8
  167. package/dist/components/Payload/RichText/serialize.mjs +8 -8
  168. package/dist/components/Payload/index.mjs +10 -10
  169. package/dist/components/Projects/EpicFilter.d.ts +6 -2
  170. package/dist/components/Projects/EpicFilter.js +6 -6
  171. package/dist/components/Projects/EpicFilter.mjs +6 -6
  172. package/dist/components/Projects/EpicsView.d.ts +12 -2
  173. package/dist/components/Projects/EpicsView.js +3980 -736
  174. package/dist/components/Projects/EpicsView.mjs +46 -4
  175. package/dist/components/Projects/FileView.js +5 -4
  176. package/dist/components/Projects/FileView.mjs +11 -11
  177. package/dist/components/Projects/GanttView.d.ts +13 -0
  178. package/dist/components/{DigitalColleagues/colleague-card.js → Projects/GanttView.js} +559 -260
  179. package/dist/components/{DigitalColleagues/digital-colleague-clone.mjs → Projects/GanttView.mjs} +7 -6
  180. package/dist/components/Projects/KanbanBoardView.js +5 -4
  181. package/dist/components/Projects/KanbanBoardView.mjs +16 -16
  182. package/dist/components/Projects/KanbanColumn.d.ts +1 -1
  183. package/dist/components/Projects/PlanningView.js +5 -4
  184. package/dist/components/Projects/PlanningView.mjs +3 -3
  185. package/dist/components/Projects/ProjectPage.d.ts +2 -2
  186. package/dist/components/Projects/ProjectPage.js +1725 -964
  187. package/dist/components/Projects/ProjectPage.mjs +29 -28
  188. package/dist/components/Projects/ProjectView.d.ts +1 -1
  189. package/dist/components/Projects/ProjectView.js +1207 -642
  190. package/dist/components/Projects/ProjectView.mjs +24 -23
  191. package/dist/components/Projects/ProjectsIndexView.js +5 -4
  192. package/dist/components/Projects/ProjectsIndexView.mjs +4 -4
  193. package/dist/components/Projects/SprintBoardView.d.ts +3 -0
  194. package/dist/components/Projects/SprintBoardView.js +251 -109
  195. package/dist/components/Projects/SprintBoardView.mjs +16 -16
  196. package/dist/components/Projects/TaskDetailsModal.mjs +10 -10
  197. package/dist/components/Projects/TasksView.js +5 -4
  198. package/dist/components/Projects/TasksView.mjs +3 -3
  199. package/dist/components/Projects/business-unit-switcher.d.ts +1 -1
  200. package/dist/components/Projects/business-units.d.ts +1 -1
  201. package/dist/components/Projects/file-list.mjs +8 -8
  202. package/dist/components/Projects/index.js +537 -230
  203. package/dist/components/Projects/index.mjs +24 -24
  204. package/dist/components/Projects/project-card.d.ts +1 -1
  205. package/dist/components/Projects/project-form.d.ts +1 -1
  206. package/dist/components/Projects/team-card.d.ts +1 -1
  207. package/dist/components/Projects/team-switcher-bar.d.ts +1 -1
  208. package/dist/components/Projects/test-data.d.ts +448 -29
  209. package/dist/components/dc-temp/dashboard-integration-example.js +497 -325
  210. package/dist/components/dc-temp/dashboard-integration-example.mjs +6 -6
  211. package/dist/components/dc-temp/index.d.ts +3 -3
  212. package/dist/components/dc-temp/index.js +3745 -2979
  213. package/dist/components/dc-temp/index.mjs +24 -22
  214. package/dist/components/dc-temp/mock-data.d.ts +1 -1
  215. package/dist/components/index.js +4128 -4209
  216. package/dist/components/index.mjs +176 -178
  217. package/dist/components/ui/index.mjs +9 -9
  218. package/dist/components/ui/sidebar.mjs +2 -2
  219. package/dist/decorators/Intranet.css +54 -14
  220. package/dist/decorators/Intranet.mjs +103 -105
  221. package/dist/globals.css +54 -14
  222. package/dist/hooks/use-local-storage.d.ts +2 -1
  223. package/dist/hooks/use-local-storage.js +5 -4
  224. package/dist/hooks/use-local-storage.mjs +1 -1
  225. package/dist/index.js +4124 -4205
  226. package/dist/index.mjs +187 -189
  227. package/dist/metafile-cjs.json +1 -1
  228. package/dist/metafile-esm.json +1 -1
  229. package/dist/pages/Blog.mjs +15 -15
  230. package/dist/pages/Documentation.mjs +7 -7
  231. package/dist/pages/IndexPage.mjs +20 -20
  232. package/dist/pages/Intranet.mjs +4 -4
  233. package/dist/pages/LandingPage.mjs +113 -115
  234. package/dist/pages/Page.mjs +19 -19
  235. package/dist/pages/Publish.mjs +104 -106
  236. package/dist/pages/Website.mjs +20 -20
  237. package/dist/sections/AboutSection.mjs +10 -10
  238. package/dist/sections/BlogDetail.mjs +9 -9
  239. package/dist/sections/BlogList.mjs +10 -10
  240. package/dist/sections/BlogListSection.mjs +5 -5
  241. package/dist/sections/ContactSection.mjs +10 -10
  242. package/dist/sections/PageSections.mjs +113 -115
  243. package/dist/sections/PricingSection.mjs +10 -10
  244. package/dist/sections/ServiceDetail.mjs +9 -9
  245. package/dist/sections/ServiceDetailSection.mjs +9 -9
  246. package/dist/sections/ServiceSection.mjs +104 -106
  247. package/dist/sections/index.mjs +113 -115
  248. package/package.json +5 -2
  249. package/dist/chunk-5MMSWFVA.mjs +0 -364
  250. package/dist/chunk-7TDXZ32Q.mjs +0 -197
  251. package/dist/chunk-APXXTGT4.mjs +0 -424
  252. package/dist/chunk-BZENEU5C.mjs +0 -160
  253. package/dist/chunk-C444TUVA.mjs +0 -306
  254. package/dist/chunk-CNQTT5P3.mjs +0 -276
  255. package/dist/chunk-CQKCEXF2.mjs +0 -82
  256. package/dist/chunk-EKQB7NJA.mjs +0 -194
  257. package/dist/chunk-G4WW3ZTX.mjs +0 -1063
  258. package/dist/chunk-IWG2URAU.mjs +0 -74
  259. package/dist/chunk-IWSATDRG.mjs +0 -118
  260. package/dist/chunk-JRNDRMIC.mjs +0 -73
  261. package/dist/chunk-K2C4VMGF.mjs +0 -121
  262. package/dist/chunk-LQQ6C7FN.mjs +0 -365
  263. package/dist/chunk-M6ELOAGS.mjs +0 -136
  264. package/dist/chunk-NAUBZM7P.mjs +0 -183
  265. package/dist/chunk-NHDPHK6D.mjs +0 -72
  266. package/dist/chunk-R5MJWISX.mjs +0 -194
  267. package/dist/chunk-RKYMAFRJ.mjs +0 -92
  268. package/dist/chunk-SZBUXY6L.mjs +0 -121
  269. package/dist/chunk-VY6L37RQ.mjs +0 -103
  270. package/dist/chunk-X6UI73UN.mjs +0 -262
  271. package/dist/components/DigitalColleagues/AppSidebarLeft.d.ts +0 -47
  272. package/dist/components/DigitalColleagues/AppSidebarLeft.js +0 -3407
  273. package/dist/components/DigitalColleagues/AppSidebarLeft.mjs +0 -23
  274. package/dist/components/DigitalColleagues/DashboardHeader.d.ts +0 -8
  275. package/dist/components/DigitalColleagues/DashboardHeader.js +0 -2756
  276. package/dist/components/DigitalColleagues/DashboardHeader.mjs +0 -15
  277. package/dist/components/DigitalColleagues/DigitalColleageusLayout.css +0 -917
  278. package/dist/components/DigitalColleagues/DigitalColleageusLayout.d.ts +0 -28
  279. package/dist/components/DigitalColleagues/DigitalColleageusLayout.js +0 -4417
  280. package/dist/components/DigitalColleagues/DigitalColleageusLayout.mjs +0 -31
  281. package/dist/components/DigitalColleagues/MainPage.css +0 -917
  282. package/dist/components/DigitalColleagues/MainPage.d.ts +0 -3
  283. package/dist/components/DigitalColleagues/MainPage.js +0 -4080
  284. package/dist/components/DigitalColleagues/MainPage.mjs +0 -46
  285. package/dist/components/DigitalColleagues/ManagementSidebar.d.ts +0 -8
  286. package/dist/components/DigitalColleagues/ManagementSidebar.js +0 -99
  287. package/dist/components/DigitalColleagues/ManagementSidebar.mjs +0 -9
  288. package/dist/components/DigitalColleagues/Pages/dashboardpage.css +0 -917
  289. package/dist/components/DigitalColleagues/Pages/dashboardpage.d.ts +0 -18
  290. package/dist/components/DigitalColleagues/Pages/dashboardpage.js +0 -8514
  291. package/dist/components/DigitalColleagues/Pages/dashboardpage.mjs +0 -78
  292. package/dist/components/DigitalColleagues/README-document-edit.js +0 -2
  293. package/dist/components/DigitalColleagues/README-document-edit.mjs +0 -7
  294. package/dist/components/DigitalColleagues/README-document-preview.js +0 -2
  295. package/dist/components/DigitalColleagues/README-document-preview.mjs +0 -7
  296. package/dist/components/DigitalColleagues/SearchableSelect.css +0 -917
  297. package/dist/components/DigitalColleagues/SearchableSelect.d.ts +0 -16
  298. package/dist/components/DigitalColleagues/SearchableSelect.js +0 -2745
  299. package/dist/components/DigitalColleagues/SearchableSelect.mjs +0 -16
  300. package/dist/components/DigitalColleagues/Views/ColleaguesView.css +0 -917
  301. package/dist/components/DigitalColleagues/Views/ColleaguesView.d.ts +0 -14
  302. package/dist/components/DigitalColleagues/Views/ColleaguesView.js +0 -3795
  303. package/dist/components/DigitalColleagues/Views/ColleaguesView.mjs +0 -28
  304. package/dist/components/DigitalColleagues/Views/KnowledgeView.css +0 -917
  305. package/dist/components/DigitalColleagues/Views/KnowledgeView.d.ts +0 -11
  306. package/dist/components/DigitalColleagues/Views/KnowledgeView.docs.js +0 -2
  307. package/dist/components/DigitalColleagues/Views/KnowledgeView.docs.mjs +0 -7
  308. package/dist/components/DigitalColleagues/Views/KnowledgeView.js +0 -3935
  309. package/dist/components/DigitalColleagues/Views/KnowledgeView.mjs +0 -26
  310. package/dist/components/DigitalColleagues/Views/index.css +0 -917
  311. package/dist/components/DigitalColleagues/Views/index.d.ts +0 -7
  312. package/dist/components/DigitalColleagues/Views/index.js +0 -12284
  313. package/dist/components/DigitalColleagues/Views/index.mjs +0 -114
  314. package/dist/components/DigitalColleagues/colleague-card.css +0 -917
  315. package/dist/components/DigitalColleagues/colleague-card.d.ts +0 -12
  316. package/dist/components/DigitalColleagues/colleague-form.css +0 -917
  317. package/dist/components/DigitalColleagues/colleague-form.d.ts +0 -14
  318. package/dist/components/DigitalColleagues/colleague-form.js +0 -3086
  319. package/dist/components/DigitalColleagues/colleague-form.mjs +0 -22
  320. package/dist/components/DigitalColleagues/colleague-type-selection.css +0 -917
  321. package/dist/components/DigitalColleagues/colleague-type-selection.d.ts +0 -7
  322. package/dist/components/DigitalColleagues/colleague-type-selection.mjs +0 -16
  323. package/dist/components/DigitalColleagues/digital-colleague-clone.css +0 -917
  324. package/dist/components/DigitalColleagues/digital-colleague-clone.d.ts +0 -9
  325. package/dist/components/DigitalColleagues/digital-colleague-clone.js +0 -2828
  326. package/dist/components/DigitalColleagues/digital-colleague-options.css +0 -917
  327. package/dist/components/DigitalColleagues/digital-colleague-options.d.ts +0 -7
  328. package/dist/components/DigitalColleagues/digital-colleague-options.js +0 -2697
  329. package/dist/components/DigitalColleagues/digital-colleague-options.mjs +0 -16
  330. package/dist/components/DigitalColleagues/document-edit.css +0 -917
  331. package/dist/components/DigitalColleagues/document-edit.d.ts +0 -10
  332. package/dist/components/DigitalColleagues/document-edit.js +0 -3112
  333. package/dist/components/DigitalColleagues/document-edit.mjs +0 -20
  334. package/dist/components/DigitalColleagues/document-preview-examples.css +0 -917
  335. package/dist/components/DigitalColleagues/document-preview-examples.d.ts +0 -12
  336. package/dist/components/DigitalColleagues/document-preview-examples.js +0 -3433
  337. package/dist/components/DigitalColleagues/document-preview-examples.mjs +0 -151
  338. package/dist/components/DigitalColleagues/document-preview.css +0 -917
  339. package/dist/components/DigitalColleagues/document-preview.d.ts +0 -18
  340. package/dist/components/DigitalColleagues/document-preview.js +0 -3296
  341. package/dist/components/DigitalColleagues/document-preview.mjs +0 -21
  342. package/dist/components/DigitalColleagues/index.css +0 -917
  343. package/dist/components/DigitalColleagues/index.mjs +0 -200
  344. package/dist/components/DigitalColleagues/knowledge-browser.css +0 -917
  345. package/dist/components/DigitalColleagues/knowledge-browser.d.ts +0 -13
  346. package/dist/components/DigitalColleagues/knowledge-browser.js +0 -3581
  347. package/dist/components/DigitalColleagues/knowledge-browser.mjs +0 -23
  348. package/dist/components/DigitalColleagues/knowledge-search.css +0 -917
  349. package/dist/components/DigitalColleagues/knowledge-search.d.ts +0 -12
  350. package/dist/components/DigitalColleagues/knowledge-search.js +0 -2819
  351. package/dist/components/DigitalColleagues/knowledge-search.mjs +0 -20
  352. package/dist/components/DigitalColleagues/team-form.css +0 -917
  353. package/dist/components/DigitalColleagues/team-form.d.ts +0 -24
  354. package/dist/components/DigitalColleagues/team-form.js +0 -2836
  355. package/dist/components/DigitalColleagues/team-form.mjs +0 -20
  356. package/dist/components/DigitalColleagues/types.d.ts +0 -289
  357. package/dist/components/DigitalColleagues/types.js +0 -18
  358. package/dist/{chunk-GGOGMLBY.mjs → chunk-AKMJBGUU.mjs} +3 -3
  359. package/dist/{chunk-AEFGMCK3.mjs → chunk-D5KV6INF.mjs} +3 -3
  360. package/dist/{chunk-SNG6OKEL.mjs → chunk-FTVOJKVA.mjs} +3 -3
  361. package/dist/{chunk-GZGWWPCP.mjs → chunk-L666B5DN.mjs} +12 -12
  362. package/dist/{chunk-2YHN7ZCJ.mjs → chunk-NKRBXAPF.mjs} +3 -3
  363. /package/dist/components/{DigitalColleagues/AppSidebarLeft.css → Foundry/app-card.css} +0 -0
  364. /package/dist/components/{DigitalColleagues/DashboardHeader.css → Projects/GanttView.css} +0 -0
@@ -6893,15 +6893,16 @@ function useLocalStorage(key, initialValue) {
6893
6893
  return initialValue;
6894
6894
  }
6895
6895
  });
6896
- const setValue = (value) => {
6896
+ const setValue = (0, import_react19.useCallback)((value) => {
6897
6897
  try {
6898
- setStoredValue(value);
6898
+ const valueToStore = value instanceof Function ? value(storedValue) : value;
6899
+ setStoredValue(valueToStore);
6899
6900
  if (typeof window !== "undefined") {
6900
- window.localStorage.setItem(key, JSON.stringify(value));
6901
+ window.localStorage.setItem(key, JSON.stringify(valueToStore));
6901
6902
  }
6902
6903
  } catch (error) {
6903
6904
  }
6904
- };
6905
+ }, [key, storedValue]);
6905
6906
  (0, import_react19.useEffect)(() => {
6906
6907
  setValue(storedValue);
6907
6908
  }, []);
@@ -8317,6 +8318,7 @@ var import_react25 = __toESM(require("react"));
8317
8318
  var import_lucide_react18 = require("lucide-react");
8318
8319
  var import_jsx_runtime47 = require("react/jsx-runtime");
8319
8320
  var SprintBoardView = ({
8321
+ projectId,
8320
8322
  initialTasks = [],
8321
8323
  initialEpics = [],
8322
8324
  initialSprints = [],
@@ -8332,6 +8334,8 @@ var SprintBoardView = ({
8332
8334
  onAddEpic,
8333
8335
  // Sprint handlers
8334
8336
  onAddSprint,
8337
+ onUpdateSprint,
8338
+ onDeleteSprint,
8335
8339
  onAddComment,
8336
8340
  onUploadFile,
8337
8341
  onDeleteFile,
@@ -8343,9 +8347,16 @@ var SprintBoardView = ({
8343
8347
  const [colleagues, setColleagues] = (0, import_react25.useState)([]);
8344
8348
  const [users, setUsers] = (0, import_react25.useState)([]);
8345
8349
  const [selectedSprintIds, setSelectedSprintIds] = useLocalStorage(
8346
- "sprintBoardView_selectedSprints",
8350
+ `sprintBoardView_selectedSprints${projectId ? `_${projectId}` : ""}`,
8347
8351
  []
8348
8352
  );
8353
+ const [editingSprintId, setEditingSprintId] = (0, import_react25.useState)(null);
8354
+ const [sprintEditForm, setSprintEditForm] = (0, import_react25.useState)({
8355
+ name: "",
8356
+ description: "",
8357
+ startDate: "",
8358
+ endDate: ""
8359
+ });
8349
8360
  const [isAddTaskModalOpen, setIsAddTaskModalOpen] = (0, import_react25.useState)(false);
8350
8361
  const [isAddEpicModalOpen, setIsAddEpicModalOpen] = (0, import_react25.useState)(false);
8351
8362
  const [isAddSprintModalOpen, setIsAddSprintModalOpen] = (0, import_react25.useState)(false);
@@ -8392,6 +8403,8 @@ var SprintBoardView = ({
8392
8403
  const next = getHash(initialSprints);
8393
8404
  if (next !== prevSprintHash.current) {
8394
8405
  setSprints(initialSprints);
8406
+ const validIds = new Set(initialSprints.map((s) => s.id.toString()));
8407
+ setSelectedSprintIds(selectedSprintIds.filter((id) => validIds.has(id)));
8395
8408
  prevSprintHash.current = next;
8396
8409
  }
8397
8410
  }, [initialSprints]);
@@ -8536,6 +8549,34 @@ var SprintBoardView = ({
8536
8549
  onAddSprint?.(sprintData);
8537
8550
  setIsAddSprintModalOpen(false);
8538
8551
  };
8552
+ const handleSprintEditStart = (sprint) => {
8553
+ setEditingSprintId(sprint.id.toString());
8554
+ setSprintEditForm({
8555
+ name: sprint.name,
8556
+ description: sprint.description || "",
8557
+ startDate: sprint.startDate ? new Date(sprint.startDate).toISOString().split("T")[0] : "",
8558
+ endDate: sprint.endDate ? new Date(sprint.endDate).toISOString().split("T")[0] : ""
8559
+ });
8560
+ };
8561
+ const handleSprintEditSave = () => {
8562
+ if (!editingSprintId) return;
8563
+ onUpdateSprint?.(editingSprintId, sprintEditForm);
8564
+ setSprints(
8565
+ (prev) => prev.map(
8566
+ (s) => s.id.toString() === editingSprintId ? { ...s, ...sprintEditForm } : s
8567
+ )
8568
+ );
8569
+ setEditingSprintId(null);
8570
+ };
8571
+ const handleSprintEditCancel = () => {
8572
+ setEditingSprintId(null);
8573
+ setSprintEditForm({ name: "", description: "", startDate: "", endDate: "" });
8574
+ };
8575
+ const handleDeleteSprint = (sprintId) => {
8576
+ onDeleteSprint?.(sprintId);
8577
+ setSprints((prev) => prev.filter((s) => s.id.toString() !== sprintId));
8578
+ setSelectedSprintIds(selectedSprintIds.filter((id) => id !== sprintId));
8579
+ };
8539
8580
  const handleTaskClick = (task) => {
8540
8581
  setSelectedTask(task);
8541
8582
  onTaskClick?.(task);
@@ -8666,37 +8707,138 @@ var SprintBoardView = ({
8666
8707
  return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8667
8708
  "div",
8668
8709
  {
8669
- className: `p-3 rounded-lg border cursor-pointer transition-all ${isSelected ? "bg-primary/10 border-primary/30 ring-1 ring-primary/20" : canSelect ? "bg-card border-border hover:border-primary/50 hover:bg-muted/50" : "bg-muted/30 border-border/30 opacity-60"}`,
8670
- onClick: () => {
8671
- if (canSelect) {
8672
- toggleSprintView(sprint.id.toString());
8673
- } else if (isSelected) {
8674
- toggleSprintView(sprint.id.toString());
8675
- }
8676
- },
8677
- children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-start justify-between", children: [
8678
- /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex-1 min-w-0", children: [
8679
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "font-medium text-sm text-foreground truncate", children: sprint.name }),
8680
- sprint.description && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "text-xs text-muted-foreground line-clamp-2 mt-1", children: sprint.description }),
8681
- sprint.startDate && sprint.endDate && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center gap-1 mt-2 text-xs text-muted-foreground", children: [
8682
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react18.Calendar, { className: "h-3 w-3" }),
8683
- /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
8684
- new Date(sprint.startDate).toLocaleDateString(),
8685
- " -",
8686
- " ",
8687
- new Date(sprint.endDate).toLocaleDateString()
8688
- ] })
8710
+ className: `p-3 rounded-lg border transition-all ${isSelected ? "bg-primary/10 border-primary/30 ring-1 ring-primary/20" : canSelect ? "bg-card border-border" : "bg-muted/30 border-border/30 opacity-60"}`,
8711
+ children: editingSprintId === sprint.id.toString() ? /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "space-y-3", children: [
8712
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8713
+ Input,
8714
+ {
8715
+ value: sprintEditForm.name,
8716
+ onChange: (e) => setSprintEditForm((prev) => ({ ...prev, name: e.target.value })),
8717
+ className: "text-sm",
8718
+ placeholder: "Sprint name"
8719
+ }
8720
+ ),
8721
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8722
+ Textarea,
8723
+ {
8724
+ value: sprintEditForm.description,
8725
+ onChange: (e) => setSprintEditForm((prev) => ({
8726
+ ...prev,
8727
+ description: e.target.value
8728
+ })),
8729
+ className: "text-sm min-h-[60px]",
8730
+ placeholder: "Sprint description"
8731
+ }
8732
+ ),
8733
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "grid grid-cols-2 gap-2", children: [
8734
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
8735
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("label", { className: "text-xs text-muted-foreground block mb-1", children: "Start Date" }),
8736
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8737
+ Input,
8738
+ {
8739
+ type: "date",
8740
+ value: sprintEditForm.startDate,
8741
+ onChange: (e) => setSprintEditForm((prev) => ({
8742
+ ...prev,
8743
+ startDate: e.target.value
8744
+ })),
8745
+ className: "text-sm"
8746
+ }
8747
+ )
8748
+ ] }),
8749
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
8750
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("label", { className: "text-xs text-muted-foreground block mb-1", children: "End Date" }),
8751
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8752
+ Input,
8753
+ {
8754
+ type: "date",
8755
+ value: sprintEditForm.endDate,
8756
+ onChange: (e) => setSprintEditForm((prev) => ({
8757
+ ...prev,
8758
+ endDate: e.target.value
8759
+ })),
8760
+ className: "text-sm"
8761
+ }
8762
+ )
8689
8763
  ] })
8690
8764
  ] }),
8691
- /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "ml-2 flex items-center gap-2", children: [
8692
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Badge, { variant: "secondary", className: "text-xs", children: taskCount }),
8693
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8694
- "div",
8765
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex gap-2", children: [
8766
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
8767
+ Button,
8768
+ {
8769
+ size: "sm",
8770
+ onClick: handleSprintEditSave,
8771
+ className: "flex-1",
8772
+ children: [
8773
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react18.Check, { className: "h-3 w-3 mr-1" }),
8774
+ "Save"
8775
+ ]
8776
+ }
8777
+ ),
8778
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
8779
+ Button,
8695
8780
  {
8696
- className: `h-4 w-4 rounded border-2 transition-all ${isSelected ? "bg-primary border-primary" : "border-muted-foreground hover:border-foreground"}`
8781
+ size: "sm",
8782
+ variant: "outline",
8783
+ onClick: handleSprintEditCancel,
8784
+ className: "flex-1",
8785
+ children: [
8786
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react18.X, { className: "h-3 w-3 mr-1" }),
8787
+ "Cancel"
8788
+ ]
8697
8789
  }
8698
8790
  )
8699
8791
  ] })
8792
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { children: [
8793
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-start justify-between", children: [
8794
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex-1 min-w-0", children: [
8795
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "font-medium text-sm text-foreground truncate", children: sprint.name }),
8796
+ sprint.description && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("p", { className: "text-xs text-muted-foreground line-clamp-2 mt-1", children: sprint.description }),
8797
+ sprint.startDate && sprint.endDate && /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "flex items-center gap-1 mt-2 text-xs text-muted-foreground", children: [
8798
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react18.Calendar, { className: "h-3 w-3" }),
8799
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { children: [
8800
+ new Date(sprint.startDate).toLocaleDateString(),
8801
+ " -",
8802
+ " ",
8803
+ new Date(sprint.endDate).toLocaleDateString()
8804
+ ] })
8805
+ ] })
8806
+ ] }),
8807
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "ml-2 flex items-center gap-1", children: [
8808
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Badge, { variant: "secondary", className: "text-xs", children: taskCount }),
8809
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8810
+ Button,
8811
+ {
8812
+ size: "sm",
8813
+ variant: "ghost",
8814
+ onClick: () => handleSprintEditStart(sprint),
8815
+ className: "h-6 w-6 p-0",
8816
+ children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react18.Edit2, { className: "h-3 w-3" })
8817
+ }
8818
+ ),
8819
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8820
+ Button,
8821
+ {
8822
+ size: "sm",
8823
+ variant: "ghost",
8824
+ onClick: () => handleDeleteSprint(sprint.id.toString()),
8825
+ className: "h-6 w-6 p-0 text-destructive hover:text-destructive",
8826
+ children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_lucide_react18.Trash2, { className: "h-3 w-3" })
8827
+ }
8828
+ )
8829
+ ] })
8830
+ ] }),
8831
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
8832
+ Button,
8833
+ {
8834
+ variant: isSelected ? "default" : "outline",
8835
+ size: "sm",
8836
+ className: "w-full mt-2 text-xs h-7",
8837
+ onClick: () => toggleSprintView(sprint.id.toString()),
8838
+ disabled: !isSelected && selectedSprintIds.length >= 3,
8839
+ children: isSelected ? "Deselect" : selectedSprintIds.length >= 3 ? "Limit reached" : "Select"
8840
+ }
8841
+ )
8700
8842
  ] })
8701
8843
  },
8702
8844
  sprint.id
@@ -9612,17 +9754,25 @@ var import_react27 = require("react");
9612
9754
  var import_lucide_react20 = require("lucide-react");
9613
9755
  var import_jsx_runtime49 = require("react/jsx-runtime");
9614
9756
  var EpicsView = ({
9757
+ projectId,
9615
9758
  tasks,
9616
9759
  epics,
9617
9760
  sprints,
9761
+ colleagues = [],
9618
9762
  onUpdateTask,
9619
9763
  onTaskClick,
9620
9764
  onAddTaskToEpic,
9621
9765
  onAddEpic,
9622
9766
  onUpdateEpic,
9623
- onDeleteEpic
9767
+ onDeleteEpic,
9768
+ onDeleteTask,
9769
+ onAddComment,
9770
+ onUploadFile,
9771
+ onDeleteFile,
9772
+ onFileUpdate
9624
9773
  }) => {
9625
9774
  const [availableEpics, setAvailableEpics] = (0, import_react27.useState)(epics);
9775
+ const [availableTasks, setAvailableTasks] = (0, import_react27.useState)(tasks);
9626
9776
  const [draggedTask, setDraggedTask] = (0, import_react27.useState)(null);
9627
9777
  const [editingEpic, setEditingEpic] = (0, import_react27.useState)(null);
9628
9778
  const [editForm, setEditForm] = (0, import_react27.useState)({});
@@ -9630,16 +9780,29 @@ var EpicsView = ({
9630
9780
  const [isAddEpicModalOpen, setIsAddEpicModalOpen] = (0, import_react27.useState)(false);
9631
9781
  const [isAddTaskModalOpen, setIsAddTaskModalOpen] = (0, import_react27.useState)(false);
9632
9782
  const [addTaskEpic, setAddTaskEpic] = (0, import_react27.useState)(null);
9783
+ const [selectedTask, setSelectedTask] = (0, import_react27.useState)(null);
9784
+ const [selectedEpicIds, setSelectedEpicIds] = useLocalStorage(
9785
+ `epicsView_selectedEpics${projectId ? `_${projectId}` : ""}`,
9786
+ []
9787
+ );
9788
+ const [isEpicSelectorOpen, setIsEpicSelectorOpen] = (0, import_react27.useState)(false);
9633
9789
  const heroRef = (0, import_react27.useRef)(null);
9634
9790
  const containerRef = (0, import_react27.useRef)(null);
9635
9791
  (0, import_react27.useEffect)(() => {
9636
9792
  setAvailableEpics(epics);
9793
+ const validIds = new Set(epics.map((e) => e.id.toString()));
9794
+ setSelectedEpicIds((prev) => prev.filter((id) => validIds.has(id)));
9637
9795
  }, [epics]);
9796
+ (0, import_react27.useEffect)(() => {
9797
+ setAvailableTasks(tasks);
9798
+ if (selectedTask) {
9799
+ setSelectedTask(tasks.find((t) => t.id === selectedTask.id) || null);
9800
+ }
9801
+ }, [tasks]);
9638
9802
  (0, import_react27.useEffect)(() => {
9639
9803
  const measureHeroHeight = () => {
9640
9804
  if (heroRef.current) {
9641
- const height = heroRef.current.offsetHeight;
9642
- setHeroHeight(height);
9805
+ setHeroHeight(heroRef.current.offsetHeight);
9643
9806
  }
9644
9807
  };
9645
9808
  measureHeroHeight();
@@ -9664,6 +9827,12 @@ var EpicsView = ({
9664
9827
  }, 300);
9665
9828
  return () => clearTimeout(timer);
9666
9829
  }, [editingEpic]);
9830
+ const visibleEpics = selectedEpicIds.length === 0 ? availableEpics : availableEpics.filter((e) => selectedEpicIds.includes(e.id.toString()));
9831
+ const toggleEpicView = (epicId) => {
9832
+ setSelectedEpicIds(
9833
+ (prev) => prev.includes(epicId) ? prev.filter((id) => id !== epicId) : [...prev, epicId]
9834
+ );
9835
+ };
9667
9836
  const handleDragStart = (task) => {
9668
9837
  setDraggedTask(task);
9669
9838
  };
@@ -9673,14 +9842,41 @@ var EpicsView = ({
9673
9842
  const handleDrop = (e, epicId) => {
9674
9843
  e.preventDefault();
9675
9844
  if (draggedTask && extractId(draggedTask.epic).toString() !== epicId) {
9676
- onUpdateTask(draggedTask.id.toString(), {
9677
- epic: Number(epicId)
9678
- });
9845
+ onUpdateTask(draggedTask.id.toString(), { epic: Number(epicId) });
9846
+ setAvailableTasks(
9847
+ (prev) => prev.map((t) => t.id === draggedTask.id ? { ...t, epic: Number(epicId) } : t)
9848
+ );
9679
9849
  setDraggedTask(null);
9680
9850
  }
9681
9851
  };
9682
9852
  const getTasksByEpic = (epicId) => {
9683
- return tasks.filter((task) => extractId(task.epic).toString() === epicId);
9853
+ return availableTasks.filter((task) => extractId(task.epic).toString() === epicId);
9854
+ };
9855
+ const handleTaskClick = (task) => {
9856
+ setSelectedTask(task);
9857
+ onTaskClick?.(task);
9858
+ };
9859
+ const handleUpdateTask = async (taskId, updates) => {
9860
+ setAvailableTasks(
9861
+ (prev) => prev.map((t) => t.id === Number(taskId) ? { ...t, ...updates } : t)
9862
+ );
9863
+ if (selectedTask?.id === Number(taskId)) {
9864
+ setSelectedTask((prev) => prev ? { ...prev, ...updates } : null);
9865
+ }
9866
+ await onUpdateTask(taskId, updates);
9867
+ };
9868
+ const handleDeleteTask = async (taskId) => {
9869
+ setAvailableTasks((prev) => prev.filter((t) => t.id !== Number(taskId)));
9870
+ if (selectedTask?.id === Number(taskId)) {
9871
+ setSelectedTask(null);
9872
+ }
9873
+ await onDeleteTask?.(taskId);
9874
+ };
9875
+ const handleRemoveFromEpic = (task) => {
9876
+ onUpdateTask(task.id.toString(), { epic: null });
9877
+ setAvailableTasks(
9878
+ (prev) => prev.map((t) => t.id === task.id ? { ...t, epic: null } : t)
9879
+ );
9684
9880
  };
9685
9881
  const handleEditEpic = (epic) => {
9686
9882
  setEditingEpic(epic.id.toString());
@@ -9689,19 +9885,15 @@ var EpicsView = ({
9689
9885
  description: epic.description,
9690
9886
  confidence: epic.confidence,
9691
9887
  phase: epic.phase
9692
- // progress: epic.progress || 0, // This is a number, not a string
9693
9888
  });
9694
9889
  };
9695
9890
  const handleSaveEdit = async () => {
9696
9891
  if (editingEpic && editForm.name) {
9697
9892
  await onUpdateEpic(editingEpic.toString(), editForm);
9698
9893
  setAvailableEpics(
9699
- (prev) => prev.map((epic) => {
9700
- if (epic.id.toString() === editingEpic) {
9701
- return { ...epic, ...editForm };
9702
- }
9703
- return epic;
9704
- })
9894
+ (prev) => prev.map(
9895
+ (epic) => epic.id.toString() === editingEpic ? { ...epic, ...editForm } : epic
9896
+ )
9705
9897
  );
9706
9898
  setEditingEpic(null);
9707
9899
  setEditForm({});
@@ -9717,6 +9909,7 @@ var EpicsView = ({
9717
9909
  )) {
9718
9910
  await onDeleteEpic(epicId);
9719
9911
  setAvailableEpics((prev) => prev.filter((epic) => epic.id.toString() !== epicId));
9912
+ setSelectedEpicIds((prev) => prev.filter((id) => id !== epicId));
9720
9913
  }
9721
9914
  };
9722
9915
  const getPhaseLabel = (phase) => {
@@ -9759,218 +9952,315 @@ var EpicsView = ({
9759
9952
  }
9760
9953
  }
9761
9954
  ) }),
9762
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex-1 min-h-0 mt-8", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9955
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex-1 min-h-0 mt-8", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
9763
9956
  "div",
9764
9957
  {
9765
- className: "h-full overflow-y-auto",
9958
+ className: "h-full overflow-y-auto no-scrollbar",
9766
9959
  style: {
9767
9960
  height: heroHeight > 0 ? `calc(100vh - ${heroHeight + 120}px)` : "calc(100vh - 12rem)"
9768
9961
  },
9769
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6 auto-rows-max", children: availableEpics.map((epic) => {
9770
- const epicTasks = getTasksByEpic(epic.id.toString());
9771
- const totalPoints = epicTasks.reduce(
9772
- (sum, task) => sum + (task.storyPoints || 0),
9773
- 0
9774
- );
9775
- const availableHeight = heroHeight > 0 ? `calc(100vh - ${heroHeight + 200}px)` : "calc(100vh - 14rem)";
9776
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
9777
- Card,
9778
- {
9779
- className: `flex flex-col ${editingEpic === epic.id.toString() ? "h-auto" : ""} bg-card shadow-sm`,
9780
- style: {
9781
- height: editingEpic === epic.id.toString() ? "auto" : availableHeight,
9782
- minHeight: "400px"
9783
- },
9784
- onDragOver: handleDragOver,
9785
- onDrop: (e) => handleDrop(e, epic.id.toString()),
9786
- children: [
9787
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "p-4 border-b border-border", children: editingEpic === epic.id.toString() ? (
9788
- /* Edit Mode */
9789
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "space-y-4", children: [
9790
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center justify-between", children: [
9791
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9792
- Input,
9793
- {
9794
- value: editForm.name || "",
9795
- onChange: (e) => setEditForm({ ...editForm, name: e.target.value }),
9796
- placeholder: "Epic name",
9797
- className: "font-semibold"
9798
- }
9799
- ),
9800
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex gap-2 ml-2", children: [
9801
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9802
- Button,
9803
- {
9804
- size: "sm",
9805
- variant: "ghost",
9806
- onClick: handleSaveEdit,
9807
- className: "p-1 h-8 w-8",
9808
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Check, { className: "h-4 w-4" })
9809
- }
9810
- ),
9962
+ children: [
9963
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "mb-4", children: [
9964
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Card, { className: "p-3 bg-card shadow-sm", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center justify-between", children: [
9965
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-3", children: [
9966
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { children: [
9967
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h3", { className: "font-semibold text-foreground text-sm", children: "Epics" }),
9968
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "text-xs text-muted-foreground", children: selectedEpicIds.length === 0 ? "All showing" : `${selectedEpicIds.length}/${availableEpics.length} selected` })
9969
+ ] }),
9970
+ selectedEpicIds.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-2", children: [
9971
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-xs text-muted-foreground", children: "Viewing:" }),
9972
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex flex-wrap gap-1", children: visibleEpics.map((epic) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
9973
+ "div",
9974
+ {
9975
+ className: "flex items-center gap-1 bg-primary/10 text-primary px-2 py-0.5 rounded text-xs",
9976
+ children: [
9977
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: `w-2 h-2 rounded-full ${epic.color}` }),
9978
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "max-w-[80px] truncate", children: epic.name }),
9811
9979
  /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9812
- Button,
9980
+ "button",
9813
9981
  {
9814
- size: "sm",
9815
- variant: "ghost",
9816
- onClick: handleCancelEdit,
9817
- className: "p-1 h-8 w-8",
9982
+ onClick: () => toggleEpicView(epic.id.toString()),
9983
+ className: "ml-0.5 hover:bg-primary/20 h-8 rounded p-0.5",
9818
9984
  children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.X, { className: "h-4 w-4" })
9819
9985
  }
9820
9986
  )
9821
- ] })
9987
+ ]
9988
+ },
9989
+ epic.id
9990
+ )) })
9991
+ ] })
9992
+ ] }),
9993
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
9994
+ Button,
9995
+ {
9996
+ onClick: () => setIsEpicSelectorOpen(!isEpicSelectorOpen),
9997
+ variant: "outline",
9998
+ size: "sm",
9999
+ className: "gap-1",
10000
+ children: [
10001
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Layers, { className: "h-3 w-3" }),
10002
+ isEpicSelectorOpen ? "Close" : "Select"
10003
+ ]
10004
+ }
10005
+ )
10006
+ ] }) }),
10007
+ isEpicSelectorOpen && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10008
+ "div",
10009
+ {
10010
+ className: "fixed inset-0 bg-black/20 z-[5]",
10011
+ onClick: () => setIsEpicSelectorOpen(false)
10012
+ }
10013
+ ),
10014
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10015
+ "div",
10016
+ {
10017
+ className: `fixed top-0 right-0 h-full w-80 bg-background border-l shadow-xl z-10 transition-all duration-300 ease-in-out ${isEpicSelectorOpen ? "translate-x-0 opacity-100 visible" : "translate-x-full opacity-0 invisible"}`,
10018
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Card, { className: "h-full rounded-none border-0 flex flex-col", children: [
10019
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "p-4 border-b bg-muted/30 flex-shrink-0", children: [
10020
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center justify-between", children: [
10021
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h3", { className: "font-semibold text-foreground text-base", children: "Select Epics" }),
10022
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10023
+ Button,
10024
+ {
10025
+ variant: "ghost",
10026
+ size: "sm",
10027
+ onClick: () => setIsEpicSelectorOpen(false),
10028
+ className: "h-8 w-8 p-0",
10029
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.X, { className: "h-4 w-4" })
10030
+ }
10031
+ )
9822
10032
  ] }),
9823
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9824
- Textarea,
10033
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "text-sm text-muted-foreground mt-1", children: "Filter which epics to display. Select none to show all." })
10034
+ ] }),
10035
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex flex-col flex-1 p-4 min-h-0", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "space-y-2 flex-1 overflow-y-auto no-scrollbar", children: availableEpics.length > 0 ? availableEpics.map((epic) => {
10036
+ const isSelected = selectedEpicIds.includes(epic.id.toString());
10037
+ const taskCount = availableTasks.filter(
10038
+ (t) => extractId(t.epic) === epic.id
10039
+ ).length;
10040
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
10041
+ "div",
9825
10042
  {
9826
- value: editForm.description || "",
9827
- onChange: (e) => setEditForm({ ...editForm, description: e.target.value }),
9828
- placeholder: "Epic description",
9829
- className: "text-sm min-h-[60px]"
9830
- }
9831
- ),
9832
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "grid grid-cols-2 gap-2", children: [
9833
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { children: [
9834
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("label", { className: "text-xs text-muted-foreground", children: "Confidence" }),
9835
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
9836
- "select",
9837
- {
9838
- value: editForm.confidence || epic.confidence,
9839
- onChange: (e) => setEditForm({
9840
- ...editForm,
9841
- confidence: e.target.value
9842
- }),
9843
- className: "flex h-8 w-full rounded-md border border-input bg-background px-3 py-2 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
9844
- children: [
9845
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("option", { value: "low", children: "Low" }),
9846
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("option", { value: "medium", children: "Medium" }),
9847
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("option", { value: "high", children: "High" })
9848
- ]
9849
- }
9850
- )
9851
- ] }),
9852
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { children: [
9853
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("label", { className: "text-xs text-muted-foreground", children: "Phase" }),
9854
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9855
- "select",
9856
- {
9857
- value: editForm.phase?.toString() || epic.phase.toString(),
9858
- onChange: (e) => setEditForm({ ...editForm, phase: parseInt(e.target.value) }),
9859
- className: "flex h-8 w-full rounded-md border border-input bg-background px-3 py-2 text-xs ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
9860
- children: [1, 2, 3, 4, 5, 6, 7, 8, 9].map((phase) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("option", { value: phase.toString(), children: [
9861
- "Phase ",
9862
- phase
9863
- ] }, phase))
9864
- }
9865
- )
9866
- ] })
9867
- ] })
9868
- ] })
9869
- ) : (
9870
- /* Display Mode */
9871
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
9872
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [
9873
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: `w-4 h-4 rounded-full ${epic.color}` }),
9874
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h3", { className: "font-semibold text-foreground select-none flex-1", children: epic.name }),
9875
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex gap-1", children: [
10043
+ className: `p-3 rounded-lg border transition-all ${isSelected ? "bg-primary/10 border-primary/30 ring-1 ring-primary/20" : "bg-card border-border"}`,
10044
+ children: [
10045
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center justify-between", children: [
10046
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-2 flex-1 min-w-0", children: [
10047
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: `w-3 h-3 rounded-full flex-shrink-0 ${epic.color}` }),
10048
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "font-medium text-sm text-foreground truncate", children: epic.name })
10049
+ ] }),
10050
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "ml-2 flex items-center gap-1", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { variant: "secondary", className: "text-xs", children: taskCount }) })
10051
+ ] }),
10052
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10053
+ Button,
10054
+ {
10055
+ variant: isSelected ? "default" : "outline",
10056
+ size: "sm",
10057
+ className: "w-full mt-2 text-xs h-7",
10058
+ onClick: () => toggleEpicView(epic.id.toString()),
10059
+ children: isSelected ? "Deselect" : "Select"
10060
+ }
10061
+ )
10062
+ ]
10063
+ },
10064
+ epic.id
10065
+ );
10066
+ }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "text-sm text-muted-foreground text-center py-8", children: "No epics yet. Add one to get started." }) }) })
10067
+ ] })
10068
+ }
10069
+ )
10070
+ ] }),
10071
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 gap-3 auto-rows-max", children: visibleEpics.map((epic) => {
10072
+ const epicTasks = getTasksByEpic(epic.id.toString());
10073
+ const totalPoints = epicTasks.reduce(
10074
+ (sum, task) => sum + (task.storyPoints || 0),
10075
+ 0
10076
+ );
10077
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
10078
+ Card,
10079
+ {
10080
+ className: "flex flex-col bg-card shadow-sm",
10081
+ style: { maxHeight: "420px" },
10082
+ onDragOver: handleDragOver,
10083
+ onDrop: (e) => handleDrop(e, epic.id.toString()),
10084
+ children: [
10085
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "p-3 border-b border-border flex-shrink-0", children: editingEpic === epic.id.toString() ? (
10086
+ /* Edit Mode */
10087
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "space-y-3", children: [
10088
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center justify-between", children: [
9876
10089
  /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9877
- Button,
10090
+ Input,
9878
10091
  {
9879
- size: "sm",
9880
- variant: "ghost",
9881
- onClick: () => handleEditEpic(epic),
9882
- className: "p-1 h-8 w-8",
9883
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Edit2, { className: "h-3 w-3" })
10092
+ value: editForm.name || "",
10093
+ onChange: (e) => setEditForm({ ...editForm, name: e.target.value }),
10094
+ placeholder: "Epic name",
10095
+ className: "font-semibold text-sm"
9884
10096
  }
9885
10097
  ),
9886
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9887
- Button,
9888
- {
9889
- size: "sm",
9890
- variant: "ghost",
9891
- onClick: () => handleDeleteEpic(epic.id.toString()),
9892
- className: "p-1 h-8 w-8 hover:bg-destructive/10 hover:text-destructive",
9893
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Trash2, { className: "h-3 w-3" })
9894
- }
9895
- )
9896
- ] })
9897
- ] }),
9898
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-wrap gap-2 mb-3", children: [
9899
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Badge, { className: `text-xs ${getConfidenceColor(epic.confidence)}`, children: [
9900
- epic.confidence,
9901
- " confidence"
9902
- ] }),
9903
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Badge, { variant: "outline", className: "text-xs", children: [
9904
- "Phase ",
9905
- epic.phase
10098
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex gap-1 ml-2", children: [
10099
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10100
+ Button,
10101
+ {
10102
+ size: "sm",
10103
+ variant: "ghost",
10104
+ onClick: handleSaveEdit,
10105
+ className: "p-1 h-7 w-7",
10106
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Check, { className: "h-3 w-3" })
10107
+ }
10108
+ ),
10109
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10110
+ Button,
10111
+ {
10112
+ size: "sm",
10113
+ variant: "ghost",
10114
+ onClick: handleCancelEdit,
10115
+ className: "p-1 h-7 w-7",
10116
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.X, { className: "h-3 w-3" })
10117
+ }
10118
+ )
10119
+ ] })
9906
10120
  ] }),
9907
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
9908
- Badge,
10121
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10122
+ Textarea,
9909
10123
  {
9910
- variant: "secondary",
9911
- className: "text-xs bg-muted text-muted-foreground",
9912
- children: [
9913
- epicTasks.length,
9914
- " tasks"
9915
- ]
10124
+ value: editForm.description || "",
10125
+ onChange: (e) => setEditForm({ ...editForm, description: e.target.value }),
10126
+ placeholder: "Epic description",
10127
+ className: "text-xs min-h-[50px]"
9916
10128
  }
9917
10129
  ),
10130
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "grid grid-cols-2 gap-2", children: [
10131
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { children: [
10132
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("label", { className: "text-xs text-muted-foreground", children: "Confidence" }),
10133
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
10134
+ "select",
10135
+ {
10136
+ value: editForm.confidence || epic.confidence,
10137
+ onChange: (e) => setEditForm({
10138
+ ...editForm,
10139
+ confidence: e.target.value
10140
+ }),
10141
+ className: "flex h-7 w-full rounded-md border border-input bg-background px-2 py-1 text-xs ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
10142
+ children: [
10143
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("option", { value: "low", children: "Low" }),
10144
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("option", { value: "medium", children: "Medium" }),
10145
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("option", { value: "high", children: "High" })
10146
+ ]
10147
+ }
10148
+ )
10149
+ ] }),
10150
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { children: [
10151
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("label", { className: "text-xs text-muted-foreground", children: "Phase" }),
10152
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10153
+ "select",
10154
+ {
10155
+ value: editForm.phase?.toString() || epic.phase.toString(),
10156
+ onChange: (e) => setEditForm({ ...editForm, phase: parseInt(e.target.value) }),
10157
+ className: "flex h-7 w-full rounded-md border border-input bg-background px-2 py-1 text-xs ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
10158
+ children: [1, 2, 3, 4, 5, 6, 7, 8, 9].map((phase) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("option", { value: phase.toString(), children: [
10159
+ "Phase ",
10160
+ phase
10161
+ ] }, phase))
10162
+ }
10163
+ )
10164
+ ] })
10165
+ ] })
10166
+ ] })
10167
+ ) : (
10168
+ /* Display Mode */
10169
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(import_jsx_runtime49.Fragment, { children: [
10170
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex items-center gap-1.5 mb-1.5", children: [
10171
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: `w-3 h-3 rounded-full flex-shrink-0 ${epic.color}` }),
10172
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("h3", { className: "font-semibold text-foreground text-sm select-none flex-1 truncate", children: epic.name }),
10173
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex gap-0.5", children: [
10174
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10175
+ Button,
10176
+ {
10177
+ size: "sm",
10178
+ variant: "ghost",
10179
+ onClick: () => handleEditEpic(epic),
10180
+ className: "p-1 h-6 w-6",
10181
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Edit2, { className: "h-3 w-3" })
10182
+ }
10183
+ ),
10184
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10185
+ Button,
10186
+ {
10187
+ size: "sm",
10188
+ variant: "ghost",
10189
+ onClick: () => handleDeleteEpic(epic.id.toString()),
10190
+ className: "p-1 h-6 w-6 hover:bg-destructive/10 hover:text-destructive",
10191
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Trash2, { className: "h-3 w-3" })
10192
+ }
10193
+ )
10194
+ ] })
10195
+ ] }),
10196
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-wrap gap-1 mb-2", children: [
10197
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { className: `text-xs px-1.5 py-0 ${getConfidenceColor(epic.confidence)}`, children: epic.confidence }),
10198
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Badge, { variant: "outline", className: "text-xs px-1.5 py-0", children: getPhaseLabel(epic.phase) }),
10199
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(Badge, { variant: "secondary", className: "text-xs px-1.5 py-0 bg-muted text-muted-foreground", children: [
10200
+ epicTasks.length,
10201
+ "t \xB7 ",
10202
+ totalPoints,
10203
+ "pt"
10204
+ ] })
10205
+ ] }),
10206
+ epic.description && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "text-xs text-muted-foreground mb-2 select-none line-clamp-2", children: epic.description }),
9918
10207
  /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
9919
- Badge,
10208
+ Button,
9920
10209
  {
9921
- variant: "secondary",
9922
- className: "text-xs bg-muted text-muted-foreground",
10210
+ onClick: () => {
10211
+ setIsAddTaskModalOpen(true);
10212
+ setAddTaskEpic(epic);
10213
+ },
10214
+ variant: "outline",
10215
+ size: "sm",
10216
+ className: "w-full gap-1 h-7 text-xs",
9923
10217
  children: [
9924
- totalPoints,
9925
- " pts"
10218
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Plus, { className: "h-3 w-3" }),
10219
+ "Add Task"
9926
10220
  ]
9927
10221
  }
9928
10222
  )
9929
- ] }),
9930
- epic.description && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("p", { className: "text-sm text-muted-foreground mb-3 select-none", children: epic.description }),
9931
- /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(
9932
- Button,
9933
- {
9934
- onClick: () => {
9935
- setIsAddTaskModalOpen(true);
9936
- setAddTaskEpic(epic);
9937
- },
9938
- variant: "outline",
9939
- size: "sm",
9940
- className: "w-full gap-2",
9941
- children: [
9942
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Plus, { className: "h-4 w-4" }),
9943
- "Add Task"
9944
- ]
9945
- }
9946
- )
9947
- ] })
9948
- ) }),
9949
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex-1 p-4 overflow-y-auto", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9950
- "div",
9951
- {
9952
- className: `space-y-3 min-h-[200px] border-2 border-dashed rounded p-3 transition-colors ${draggedTask ? "border-primary bg-primary/10" : "border-border"}`,
9953
- children: epicTasks.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-col items-center justify-center h-32 text-muted-foreground border-2 border-dashed border-border rounded-lg", children: [
9954
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Move, { className: "h-8 w-8 mb-2" }),
9955
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-sm select-none", children: "Drop tasks here" })
9956
- ] }) : epicTasks.map((task) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
9957
- TaskCard,
9958
- {
9959
- task,
9960
- epic,
9961
- onDragStart: handleDragStart,
9962
- onTaskClick,
9963
- isCompact: true
9964
- },
9965
- task.id
9966
- ))
9967
- }
9968
- ) })
9969
- ]
9970
- },
9971
- epic.id
9972
- );
9973
- }) })
10223
+ ] })
10224
+ ) }),
10225
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "flex-1 p-2 overflow-y-auto no-scrollbar min-h-0", children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10226
+ "div",
10227
+ {
10228
+ className: `space-y-2 min-h-[80px] border-2 border-dashed rounded p-2 transition-colors ${draggedTask ? "border-primary bg-primary/10" : "border-border"}`,
10229
+ children: epicTasks.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "flex flex-col items-center justify-center h-16 text-muted-foreground", children: [
10230
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.Move, { className: "h-5 w-5 mb-1" }),
10231
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "text-xs select-none", children: "Drop tasks here" })
10232
+ ] }) : epicTasks.map((task) => /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "relative group", children: [
10233
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10234
+ TaskCard,
10235
+ {
10236
+ task,
10237
+ epic,
10238
+ onDragStart: handleDragStart,
10239
+ onTaskClick: handleTaskClick,
10240
+ isCompact: true
10241
+ }
10242
+ ),
10243
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10244
+ "button",
10245
+ {
10246
+ onClick: (e) => {
10247
+ e.stopPropagation();
10248
+ handleRemoveFromEpic(task);
10249
+ },
10250
+ title: "Remove from epic",
10251
+ className: "absolute top-1 right-1 opacity-0 group-hover:opacity-100 transition-opacity bg-background/80 hover:bg-destructive/10 hover:text-destructive rounded p-0.5",
10252
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react20.X, { className: "h-3 w-3" })
10253
+ }
10254
+ )
10255
+ ] }, task.id))
10256
+ }
10257
+ ) })
10258
+ ]
10259
+ },
10260
+ epic.id
10261
+ );
10262
+ }) })
10263
+ ]
9974
10264
  }
9975
10265
  ) })
9976
10266
  ] }),
@@ -9993,6 +10283,23 @@ var EpicsView = ({
9993
10283
  defaultEpicId: addTaskEpic?.id.toString() || "",
9994
10284
  sprints
9995
10285
  }
10286
+ ),
10287
+ selectedTask && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
10288
+ TaskDetailsModal,
10289
+ {
10290
+ isOpen: !!selectedTask,
10291
+ onClose: () => setSelectedTask(null),
10292
+ initialTask: selectedTask,
10293
+ epics: availableEpics,
10294
+ sprints,
10295
+ onUpdateTask: handleUpdateTask,
10296
+ onDeleteTask: handleDeleteTask,
10297
+ onAddComment,
10298
+ colleagues,
10299
+ onUploadFile,
10300
+ onDeleteFile,
10301
+ onFileUpdate
10302
+ }
9996
10303
  )
9997
10304
  ] });
9998
10305
  };