cortex-react-components 3.3.0 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-Z54HOXSV.mjs → chunk-2254O4YT.mjs} +2 -2
- package/dist/{chunk-V6YEUAIH.mjs → chunk-3BYBIUZN.mjs} +3 -3
- package/dist/{chunk-XFJPL6FS.mjs → chunk-3IXZB3VP.mjs} +1 -1
- package/dist/{chunk-WJTVZ6CB.mjs → chunk-3NXXPFU2.mjs} +1 -1
- package/dist/{chunk-CONYNX7Y.mjs → chunk-4HKHDXKK.mjs} +3 -3
- package/dist/{chunk-DSVXGGGV.mjs → chunk-54AIO5ED.mjs} +2 -2
- package/dist/{chunk-7ZCW4XMR.mjs → chunk-64IBDKCH.mjs} +1 -1
- package/dist/{chunk-EJJITIA3.mjs → chunk-65ZDGR46.mjs} +5 -5
- package/dist/{chunk-I4MTJN23.mjs → chunk-6A7T3O6T.mjs} +6 -5
- package/dist/{chunk-HUZCVQP7.mjs → chunk-7IMTNL53.mjs} +1 -1
- package/dist/{chunk-IJ3E6ZXF.mjs → chunk-B2LFNC3C.mjs} +1 -1
- package/dist/{chunk-IDMTHUC4.mjs → chunk-B36NGEMF.mjs} +3 -3
- package/dist/{chunk-FABRRO2B.mjs → chunk-BAJ7NCAT.mjs} +1 -1
- package/dist/{chunk-4JHX6BW6.mjs → chunk-BEGQGEDH.mjs} +1 -1
- package/dist/{chunk-36W3BORX.mjs → chunk-BWS5MUG7.mjs} +1 -1
- package/dist/{chunk-5NGZXIP7.mjs → chunk-CI625DSA.mjs} +1 -1
- package/dist/{chunk-WX5QYPGU.mjs → chunk-CUUAA2TB.mjs} +1 -1
- package/dist/{chunk-ETG5N2OG.mjs → chunk-DOIUUDF6.mjs} +1 -1
- package/dist/{chunk-SSE3MQDP.mjs → chunk-DST7L2PX.mjs} +3 -3
- package/dist/{chunk-UETTBM3J.mjs → chunk-F6NJD6IG.mjs} +1 -1
- package/dist/{chunk-L4SNPNYU.mjs → chunk-FBCL4K4A.mjs} +1 -1
- package/dist/{chunk-IVOPNDSN.mjs → chunk-G5N5MCLS.mjs} +5 -5
- package/dist/{chunk-NQMJXY3N.mjs → chunk-GC7DB2Y5.mjs} +1 -1
- package/dist/{chunk-5CQITTLV.mjs → chunk-GMHZ7GGN.mjs} +1 -1
- package/dist/{chunk-C3CKYJ2F.mjs → chunk-GZRODHXY.mjs} +1 -1
- package/dist/{chunk-SM57JU3T.mjs → chunk-HCVN3YVW.mjs} +5 -5
- package/dist/{chunk-SSDRUPMS.mjs → chunk-HWSDSULO.mjs} +183 -36
- package/dist/{chunk-QPO45D6F.mjs → chunk-I2MVZVXE.mjs} +1 -1
- package/dist/chunk-IC4N2KYF.mjs +401 -0
- package/dist/{chunk-GGOGMLBY.mjs → chunk-JKVS2VFG.mjs} +4 -4
- package/dist/{chunk-OPJMXB4K.mjs → chunk-K4ZS4W4S.mjs} +2 -2
- package/dist/{chunk-Q6CUUDUR.mjs → chunk-LVLYUHSA.mjs} +1 -1
- package/dist/{chunk-UDCOG2XL.mjs → chunk-LY4RR7AL.mjs} +1 -1
- package/dist/{chunk-QMFGV3M5.mjs → chunk-LZUYY2G6.mjs} +2 -2
- package/dist/{chunk-XGHUG2WQ.mjs → chunk-MDG2I4PB.mjs} +1 -1
- package/dist/{chunk-YD7Q7IZX.mjs → chunk-MNJ5CMJM.mjs} +1 -1
- package/dist/{chunk-YY4VLYYH.mjs → chunk-MOMYX6OH.mjs} +26 -11
- package/dist/{chunk-EDYFH3EJ.mjs → chunk-NM7RODDO.mjs} +3 -3
- package/dist/{chunk-KOK3VCJZ.mjs → chunk-O5RKEF5N.mjs} +2 -2
- package/dist/chunk-PBIUFMQ7.mjs +595 -0
- package/dist/{chunk-GTHNG3Q7.mjs → chunk-PPESICX2.mjs} +1 -1
- package/dist/{chunk-F7JPOQIC.mjs → chunk-Q54XDKD6.mjs} +1 -1
- package/dist/{chunk-LTDXFLCW.mjs → chunk-QM3XSGNV.mjs} +13 -5
- package/dist/{chunk-LGGOEYDB.mjs → chunk-QU3TSSIT.mjs} +9 -9
- package/dist/{chunk-OCVHSV6Z.mjs → chunk-R4WRE5VN.mjs} +2 -2
- package/dist/{chunk-HMVIQFLN.mjs → chunk-S2JSIAMP.mjs} +1 -1
- package/dist/{chunk-4JSM5VYZ.mjs → chunk-SAVDOTMQ.mjs} +1 -1
- package/dist/{chunk-PE44IHZN.mjs → chunk-SBD4TWK2.mjs} +1 -1
- package/dist/{chunk-B7WVGDB6.mjs → chunk-SZJ6XME5.mjs} +1 -1
- package/dist/{chunk-URC56DLC.mjs → chunk-T2VDQBFT.mjs} +1 -1
- package/dist/{chunk-2D3EN2AX.mjs → chunk-T36HNGWV.mjs} +2 -2
- package/dist/{chunk-3BYULUMU.mjs → chunk-T62Q55Y5.mjs} +1 -1
- package/dist/{chunk-IBQBZNEA.mjs → chunk-T756T7P5.mjs} +1 -1
- package/dist/{chunk-HNBHBFLY.mjs → chunk-TZBPEFJY.mjs} +1 -1
- package/dist/{chunk-HQW5M4ND.mjs → chunk-U5XRK325.mjs} +1 -1
- package/dist/{chunk-4P5Q6UXF.mjs → chunk-UBFOKMYD.mjs} +5 -5
- package/dist/{chunk-6NRBLKM4.mjs → chunk-UM7KTWAX.mjs} +2 -2
- package/dist/{chunk-E5LGE3IW.mjs → chunk-W73LGNTH.mjs} +1 -1
- package/dist/{chunk-QETXXFRW.mjs → chunk-WNGLLRYA.mjs} +1 -1
- package/dist/{chunk-NVSA5BFC.mjs → chunk-XP74JZNW.mjs} +3 -3
- package/dist/{chunk-OXP3LJ53.mjs → chunk-XT7I7SJB.mjs} +4 -4
- package/dist/{chunk-JFXWP3RQ.mjs → chunk-Y7B7YO6Q.mjs} +1 -1
- package/dist/{chunk-XZFMQXYJ.mjs → chunk-ZD5DKC5T.mjs} +1 -1
- package/dist/{chunk-EC5I4CIO.mjs → chunk-ZJ5SRNYD.mjs} +1 -1
- package/dist/{chunk-LM4J7254.mjs → chunk-ZSGXRIK7.mjs} +7 -7
- package/dist/{chunk-MZVEK6A5.mjs → chunk-ZZQWZWMG.mjs} +19 -19
- package/dist/components/AdvancedComponents/AppSidebar.d.ts +1 -1
- package/dist/components/AdvancedComponents/AppSidebar.js +481 -302
- package/dist/components/AdvancedComponents/AppSidebar.mjs +4 -4
- package/dist/components/AdvancedComponents/index.js +481 -302
- package/dist/components/AdvancedComponents/index.mjs +4 -4
- package/dist/components/Blocks/Banner.mjs +6 -6
- package/dist/components/Blocks/CallToAction.mjs +6 -6
- package/dist/components/Blocks/CollapsibleArea.mjs +7 -7
- package/dist/components/Blocks/Content.mjs +7 -7
- package/dist/components/Blocks/FeaturesBlock.mjs +6 -6
- package/dist/components/Blocks/RelatedPosts.mjs +7 -7
- package/dist/components/Blocks/RenderBlocks.mjs +9 -9
- package/dist/components/Blocks/ReusableContentBlock.mjs +9 -9
- package/dist/components/Blocks/index.mjs +15 -15
- package/dist/components/CRM/CogeBoard.js +1 -1
- package/dist/components/CRM/CogeBoard.mjs +3 -3
- package/dist/components/CRM/DealDetails.js +1 -1
- package/dist/components/CRM/DealDetails.mjs +2 -2
- package/dist/components/CRM/KanbanBoard.js +1 -1
- package/dist/components/CRM/KanbanBoard.mjs +3 -3
- package/dist/components/CRM/NewDealForm.js +1 -1
- package/dist/components/CRM/NewDealForm.mjs +2 -2
- package/dist/components/CRM/index.js +1 -1
- package/dist/components/CRM/index.mjs +8 -8
- package/dist/components/Cards/ContentCard.mjs +6 -6
- package/dist/components/Cards/FeatureCard.mjs +6 -6
- package/dist/components/Cards/Image.js +1 -1
- package/dist/components/Cards/Image.mjs +2 -2
- package/dist/components/Cards/ImageProxy.js +1 -1
- package/dist/components/Cards/ImageProxy.mjs +2 -2
- package/dist/components/Cards/index.js +1 -1
- package/dist/components/Cards/index.mjs +12 -12
- package/dist/components/Chat/ChatInterface.mjs +11 -11
- package/dist/components/Chat/CopilotInterface.d.ts +1 -1
- package/dist/components/Chat/CopilotInterface.js +528 -331
- package/dist/components/Chat/CopilotInterface.mjs +17 -17
- package/dist/components/Chat/PartTypes/MessageHandler.mjs +9 -9
- package/dist/components/Chat/PartTypes/index.mjs +11 -11
- package/dist/components/Chat/chat-session-sidebar.d.ts +1 -1
- package/dist/components/Chat/demo-long-messages.js +528 -331
- package/dist/components/Chat/demo-long-messages.mjs +17 -17
- package/dist/components/Chat/demo-tests.js +528 -331
- package/dist/components/Chat/demo-tests.mjs +17 -17
- package/dist/components/Chat/demo.js +528 -331
- package/dist/components/Chat/demo.mjs +17 -17
- package/dist/components/Chat/example-usage.js +528 -331
- package/dist/components/Chat/example-usage.mjs +18 -18
- package/dist/components/Chat/example-with-vercel-ai.js +528 -331
- package/dist/components/Chat/example-with-vercel-ai.mjs +17 -17
- package/dist/components/Chat/index.js +528 -331
- package/dist/components/Chat/index.mjs +25 -25
- package/dist/components/DigitalColleagues/Views/TeamsIndexView.d.ts +1 -9
- package/dist/components/DigitalColleagues/Views/TeamsIndexView.js +23 -28
- package/dist/components/DigitalColleagues/Views/TeamsIndexView.mjs +5 -7
- package/dist/components/DigitalColleagues/index.d.ts +0 -18
- package/dist/components/DigitalColleagues/index.js +0 -16754
- package/dist/components/DigitalColleagues/test-data.d.ts +1 -112
- package/dist/components/DigitalColleagues/test-data.js +482 -308
- package/dist/components/DigitalColleagues/test-data.mjs +1 -5
- package/dist/components/Foundry/Knowledge/add-knowledge-modal.js +1 -1
- package/dist/components/Foundry/Knowledge/add-knowledge-modal.mjs +3 -3
- package/dist/components/Foundry/Knowledge/add-team-context.js +1 -1
- package/dist/components/Foundry/Knowledge/add-team-context.mjs +2 -2
- package/dist/components/Foundry/Knowledge/manage-team-context.js +1 -1
- package/dist/components/Foundry/Knowledge/manage-team-context.mjs +2 -2
- package/dist/components/Foundry/MainPage.mjs +3 -3
- package/dist/components/Foundry/ManagementSidebar.d.ts +2 -2
- package/dist/components/Foundry/ManagementSidebar.js +12 -4
- package/dist/components/Foundry/ManagementSidebar.mjs +1 -1
- package/dist/components/Foundry/Pages/dashboardpage.js +1424 -2040
- package/dist/components/Foundry/Pages/dashboardpage.mjs +25 -26
- package/dist/components/Foundry/RichText/index.js +1 -1
- package/dist/components/Foundry/RichText/index.mjs +5 -5
- package/dist/components/Foundry/RichText/plugins/image-plugin.js +1 -1
- package/dist/components/Foundry/RichText/plugins/image-plugin.mjs +2 -2
- package/dist/components/Foundry/RichText/plugins/toolbar-plugin.js +1 -1
- package/dist/components/Foundry/RichText/plugins/toolbar-plugin.mjs +4 -4
- package/dist/components/Foundry/Views/ColleaguesView.js +5 -4
- package/dist/components/Foundry/Views/ColleaguesView.mjs +3 -3
- package/dist/components/Foundry/Views/KnowledgeView.js +1 -1
- package/dist/components/Foundry/Views/KnowledgeView.mjs +12 -12
- package/dist/components/Foundry/Views/TeamsIndexView.js +6 -5
- package/dist/components/Foundry/Views/TeamsIndexView.mjs +5 -5
- package/dist/components/Foundry/Views/index.js +1352 -787
- package/dist/components/Foundry/Views/index.mjs +50 -49
- package/dist/components/{.archive → Foundry}/app-card.d.ts +1 -1
- package/dist/components/{DigitalColleagues/colleague-type-selection.js → Foundry/app-card.js} +89 -117
- package/dist/components/{DigitalColleagues/colleague-card.mjs → Foundry/app-card.mjs} +4 -5
- package/dist/components/Foundry/document-edit.js +1 -1
- package/dist/components/Foundry/document-edit.mjs +6 -6
- package/dist/components/Foundry/document-preview-examples.js +1 -1
- package/dist/components/Foundry/document-preview-examples.mjs +7 -7
- package/dist/components/Foundry/document-preview.js +1 -1
- package/dist/components/Foundry/document-preview.mjs +7 -7
- package/dist/components/Foundry/file-edit.js +1 -1
- package/dist/components/Foundry/file-edit.mjs +7 -7
- package/dist/components/Foundry/foundary-layout.js +481 -302
- package/dist/components/Foundry/foundary-layout.mjs +5 -5
- package/dist/components/Foundry/index.js +2748 -2868
- package/dist/components/Foundry/index.mjs +78 -79
- package/dist/components/Foundry/knowledge-browser.js +1 -1
- package/dist/components/Foundry/knowledge-browser.mjs +8 -8
- package/dist/components/Foundry/types.d.ts +26 -0
- package/dist/components/HeaderFooter/SectionHeading.mjs +7 -7
- package/dist/components/HeaderFooter/index.mjs +5 -5
- package/dist/components/Heros/DashboardHero/DashboardHero.js +5 -4
- package/dist/components/Heros/DashboardHero/DashboardHero.mjs +2 -2
- package/dist/components/Heros/DashboardHero/index.js +5 -4
- package/dist/components/Heros/DashboardHero/index.mjs +2 -2
- package/dist/components/Heros/HighImpact/index.mjs +7 -7
- package/dist/components/Heros/LowImpact/index.mjs +7 -7
- package/dist/components/Heros/MediumImpact/index.mjs +7 -7
- package/dist/components/Heros/PostHero/index.mjs +2 -2
- package/dist/components/Heros/RenderHero.mjs +10 -10
- package/dist/components/Heros/index.js +5 -4
- package/dist/components/Heros/index.mjs +15 -15
- package/dist/components/Layouts/OutputHeaderFooter.mjs +7 -7
- package/dist/components/Layouts/Print.mjs +11 -11
- package/dist/components/Layouts/SlideShow.mjs +13 -13
- package/dist/components/Layouts/index.mjs +17 -17
- package/dist/components/Payload/RichText/index.mjs +6 -6
- package/dist/components/Payload/RichText/serialize.mjs +6 -6
- package/dist/components/Payload/index.mjs +6 -6
- package/dist/components/Projects/AddEpicModal.js +1 -1
- package/dist/components/Projects/AddEpicModal.mjs +2 -2
- package/dist/components/Projects/AddFileModal.js +1 -1
- package/dist/components/Projects/AddFileModal.mjs +2 -2
- package/dist/components/Projects/AddSprintModal.js +1 -1
- package/dist/components/Projects/AddSprintModal.mjs +2 -2
- package/dist/components/Projects/AddTaskModal.js +1 -1
- package/dist/components/Projects/AddTaskModal.mjs +2 -2
- package/dist/components/Projects/EpicFilter.d.ts +6 -2
- package/dist/components/Projects/EpicFilter.js +6 -6
- package/dist/components/Projects/EpicFilter.mjs +6 -6
- package/dist/components/Projects/EpicsView.d.ts +12 -2
- package/dist/components/Projects/EpicsView.js +3980 -736
- package/dist/components/Projects/EpicsView.mjs +48 -6
- package/dist/components/Projects/FileView.js +6 -5
- package/dist/components/Projects/FileView.mjs +12 -12
- package/dist/components/Projects/GanttView.d.ts +13 -0
- package/dist/components/{DigitalColleagues/colleague-card.js → Projects/GanttView.js} +559 -260
- package/dist/components/{DigitalColleagues/digital-colleague-clone.mjs → Projects/GanttView.mjs} +7 -6
- package/dist/components/Projects/KanbanBoardView.js +6 -5
- package/dist/components/Projects/KanbanBoardView.mjs +17 -17
- package/dist/components/Projects/KanbanColumn.d.ts +1 -1
- package/dist/components/Projects/PlanningView.js +6 -5
- package/dist/components/Projects/PlanningView.mjs +5 -5
- package/dist/components/Projects/ProjectPage.d.ts +2 -2
- package/dist/components/Projects/ProjectPage.js +1727 -966
- package/dist/components/Projects/ProjectPage.mjs +30 -29
- package/dist/components/Projects/ProjectView.d.ts +1 -1
- package/dist/components/Projects/ProjectView.js +1209 -644
- package/dist/components/Projects/ProjectView.mjs +25 -24
- package/dist/components/Projects/ProjectsIndexView.js +6 -5
- package/dist/components/Projects/ProjectsIndexView.mjs +4 -4
- package/dist/components/Projects/SprintBoardView.d.ts +3 -0
- package/dist/components/Projects/SprintBoardView.js +252 -110
- package/dist/components/Projects/SprintBoardView.mjs +18 -18
- package/dist/components/Projects/TaskDetailsModal.js +1 -1
- package/dist/components/Projects/TaskDetailsModal.mjs +11 -11
- package/dist/components/Projects/TasksView.js +6 -5
- package/dist/components/Projects/TasksView.mjs +4 -4
- package/dist/components/Projects/business-unit-switcher.d.ts +1 -1
- package/dist/components/Projects/business-units.d.ts +1 -1
- package/dist/components/Projects/file-list.js +1 -1
- package/dist/components/Projects/file-list.mjs +8 -8
- package/dist/components/Projects/index.js +538 -231
- package/dist/components/Projects/index.mjs +23 -23
- package/dist/components/Projects/project-card.d.ts +1 -1
- package/dist/components/Projects/project-form.d.ts +1 -1
- package/dist/components/Projects/team-card.d.ts +1 -1
- package/dist/components/Projects/team-switcher-bar.d.ts +1 -1
- package/dist/components/Projects/test-data.d.ts +448 -29
- package/dist/components/dc-temp/dashboard-integration-example.js +498 -326
- package/dist/components/dc-temp/dashboard-integration-example.mjs +7 -7
- package/dist/components/dc-temp/index.d.ts +3 -3
- package/dist/components/dc-temp/index.js +3746 -2980
- package/dist/components/dc-temp/index.mjs +24 -22
- package/dist/components/dc-temp/mock-data.d.ts +1 -1
- package/dist/components/index.js +4129 -4210
- package/dist/components/index.mjs +174 -176
- package/dist/components/ui/command.js +1 -1
- package/dist/components/ui/command.mjs +2 -2
- package/dist/components/ui/dialog.js +1 -1
- package/dist/components/ui/dialog.mjs +1 -1
- package/dist/components/ui/index.js +1 -1
- package/dist/components/ui/index.mjs +2 -2
- package/dist/decorators/Intranet.css +54 -14
- package/dist/decorators/Intranet.mjs +103 -105
- package/dist/globals.css +54 -14
- package/dist/hooks/use-local-storage.d.ts +2 -1
- package/dist/hooks/use-local-storage.js +5 -4
- package/dist/hooks/use-local-storage.mjs +1 -1
- package/dist/index.js +4125 -4206
- package/dist/index.mjs +185 -187
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/pages/Blog.mjs +11 -11
- package/dist/pages/Documentation.mjs +3 -3
- package/dist/pages/IndexPage.mjs +14 -14
- package/dist/pages/Intranet.mjs +1 -1
- package/dist/pages/LandingPage.mjs +113 -115
- package/dist/pages/Page.mjs +15 -15
- package/dist/pages/Publish.mjs +104 -106
- package/dist/pages/Website.mjs +18 -18
- package/dist/sections/AboutSection.mjs +8 -8
- package/dist/sections/BlogDetail.mjs +7 -7
- package/dist/sections/BlogList.mjs +8 -8
- package/dist/sections/ContactSection.mjs +8 -8
- package/dist/sections/PageSections.mjs +113 -115
- package/dist/sections/PricingSection.mjs +8 -8
- package/dist/sections/ServiceDetail.mjs +7 -7
- package/dist/sections/ServiceDetailSection.mjs +7 -7
- package/dist/sections/ServiceSection.mjs +104 -106
- package/dist/sections/index.mjs +113 -115
- package/package.json +5 -2
- package/dist/chunk-5MMSWFVA.mjs +0 -364
- package/dist/chunk-7TDXZ32Q.mjs +0 -197
- package/dist/chunk-APXXTGT4.mjs +0 -424
- package/dist/chunk-BZENEU5C.mjs +0 -160
- package/dist/chunk-C444TUVA.mjs +0 -306
- package/dist/chunk-CNQTT5P3.mjs +0 -276
- package/dist/chunk-CQKCEXF2.mjs +0 -82
- package/dist/chunk-EKQB7NJA.mjs +0 -194
- package/dist/chunk-G4WW3ZTX.mjs +0 -1063
- package/dist/chunk-IWG2URAU.mjs +0 -74
- package/dist/chunk-IWSATDRG.mjs +0 -118
- package/dist/chunk-JRNDRMIC.mjs +0 -73
- package/dist/chunk-K2C4VMGF.mjs +0 -121
- package/dist/chunk-LQQ6C7FN.mjs +0 -365
- package/dist/chunk-M6ELOAGS.mjs +0 -136
- package/dist/chunk-NAUBZM7P.mjs +0 -183
- package/dist/chunk-NHDPHK6D.mjs +0 -72
- package/dist/chunk-R5MJWISX.mjs +0 -194
- package/dist/chunk-RKYMAFRJ.mjs +0 -92
- package/dist/chunk-SZBUXY6L.mjs +0 -121
- package/dist/chunk-VY6L37RQ.mjs +0 -103
- package/dist/chunk-X6UI73UN.mjs +0 -262
- package/dist/components/DigitalColleagues/AppSidebarLeft.d.ts +0 -47
- package/dist/components/DigitalColleagues/AppSidebarLeft.js +0 -3407
- package/dist/components/DigitalColleagues/AppSidebarLeft.mjs +0 -23
- package/dist/components/DigitalColleagues/DashboardHeader.d.ts +0 -8
- package/dist/components/DigitalColleagues/DashboardHeader.js +0 -2756
- package/dist/components/DigitalColleagues/DashboardHeader.mjs +0 -15
- package/dist/components/DigitalColleagues/DigitalColleageusLayout.css +0 -917
- package/dist/components/DigitalColleagues/DigitalColleageusLayout.d.ts +0 -28
- package/dist/components/DigitalColleagues/DigitalColleageusLayout.js +0 -4417
- package/dist/components/DigitalColleagues/DigitalColleageusLayout.mjs +0 -31
- package/dist/components/DigitalColleagues/MainPage.css +0 -917
- package/dist/components/DigitalColleagues/MainPage.d.ts +0 -3
- package/dist/components/DigitalColleagues/MainPage.js +0 -4080
- package/dist/components/DigitalColleagues/MainPage.mjs +0 -46
- package/dist/components/DigitalColleagues/ManagementSidebar.d.ts +0 -8
- package/dist/components/DigitalColleagues/ManagementSidebar.js +0 -99
- package/dist/components/DigitalColleagues/ManagementSidebar.mjs +0 -9
- package/dist/components/DigitalColleagues/Pages/dashboardpage.css +0 -917
- package/dist/components/DigitalColleagues/Pages/dashboardpage.d.ts +0 -18
- package/dist/components/DigitalColleagues/Pages/dashboardpage.js +0 -8514
- package/dist/components/DigitalColleagues/Pages/dashboardpage.mjs +0 -78
- package/dist/components/DigitalColleagues/README-document-edit.js +0 -2
- package/dist/components/DigitalColleagues/README-document-edit.mjs +0 -7
- package/dist/components/DigitalColleagues/README-document-preview.js +0 -2
- package/dist/components/DigitalColleagues/README-document-preview.mjs +0 -7
- package/dist/components/DigitalColleagues/SearchableSelect.css +0 -917
- package/dist/components/DigitalColleagues/SearchableSelect.d.ts +0 -16
- package/dist/components/DigitalColleagues/SearchableSelect.js +0 -2745
- package/dist/components/DigitalColleagues/SearchableSelect.mjs +0 -16
- package/dist/components/DigitalColleagues/Views/ColleaguesView.css +0 -917
- package/dist/components/DigitalColleagues/Views/ColleaguesView.d.ts +0 -14
- package/dist/components/DigitalColleagues/Views/ColleaguesView.js +0 -3795
- package/dist/components/DigitalColleagues/Views/ColleaguesView.mjs +0 -28
- package/dist/components/DigitalColleagues/Views/KnowledgeView.css +0 -917
- package/dist/components/DigitalColleagues/Views/KnowledgeView.d.ts +0 -11
- package/dist/components/DigitalColleagues/Views/KnowledgeView.docs.js +0 -2
- package/dist/components/DigitalColleagues/Views/KnowledgeView.docs.mjs +0 -7
- package/dist/components/DigitalColleagues/Views/KnowledgeView.js +0 -3935
- package/dist/components/DigitalColleagues/Views/KnowledgeView.mjs +0 -26
- package/dist/components/DigitalColleagues/Views/index.css +0 -917
- package/dist/components/DigitalColleagues/Views/index.d.ts +0 -7
- package/dist/components/DigitalColleagues/Views/index.js +0 -12284
- package/dist/components/DigitalColleagues/Views/index.mjs +0 -114
- package/dist/components/DigitalColleagues/colleague-card.css +0 -917
- package/dist/components/DigitalColleagues/colleague-card.d.ts +0 -12
- package/dist/components/DigitalColleagues/colleague-form.css +0 -917
- package/dist/components/DigitalColleagues/colleague-form.d.ts +0 -14
- package/dist/components/DigitalColleagues/colleague-form.js +0 -3086
- package/dist/components/DigitalColleagues/colleague-form.mjs +0 -22
- package/dist/components/DigitalColleagues/colleague-type-selection.css +0 -917
- package/dist/components/DigitalColleagues/colleague-type-selection.d.ts +0 -7
- package/dist/components/DigitalColleagues/colleague-type-selection.mjs +0 -16
- package/dist/components/DigitalColleagues/digital-colleague-clone.css +0 -917
- package/dist/components/DigitalColleagues/digital-colleague-clone.d.ts +0 -9
- package/dist/components/DigitalColleagues/digital-colleague-clone.js +0 -2828
- package/dist/components/DigitalColleagues/digital-colleague-options.css +0 -917
- package/dist/components/DigitalColleagues/digital-colleague-options.d.ts +0 -7
- package/dist/components/DigitalColleagues/digital-colleague-options.js +0 -2697
- package/dist/components/DigitalColleagues/digital-colleague-options.mjs +0 -16
- package/dist/components/DigitalColleagues/document-edit.css +0 -917
- package/dist/components/DigitalColleagues/document-edit.d.ts +0 -10
- package/dist/components/DigitalColleagues/document-edit.js +0 -3112
- package/dist/components/DigitalColleagues/document-edit.mjs +0 -20
- package/dist/components/DigitalColleagues/document-preview-examples.css +0 -917
- package/dist/components/DigitalColleagues/document-preview-examples.d.ts +0 -12
- package/dist/components/DigitalColleagues/document-preview-examples.js +0 -3433
- package/dist/components/DigitalColleagues/document-preview-examples.mjs +0 -151
- package/dist/components/DigitalColleagues/document-preview.css +0 -917
- package/dist/components/DigitalColleagues/document-preview.d.ts +0 -18
- package/dist/components/DigitalColleagues/document-preview.js +0 -3296
- package/dist/components/DigitalColleagues/document-preview.mjs +0 -21
- package/dist/components/DigitalColleagues/index.css +0 -917
- package/dist/components/DigitalColleagues/index.mjs +0 -200
- package/dist/components/DigitalColleagues/knowledge-browser.css +0 -917
- package/dist/components/DigitalColleagues/knowledge-browser.d.ts +0 -13
- package/dist/components/DigitalColleagues/knowledge-browser.js +0 -3581
- package/dist/components/DigitalColleagues/knowledge-browser.mjs +0 -23
- package/dist/components/DigitalColleagues/knowledge-search.css +0 -917
- package/dist/components/DigitalColleagues/knowledge-search.d.ts +0 -12
- package/dist/components/DigitalColleagues/knowledge-search.js +0 -2819
- package/dist/components/DigitalColleagues/knowledge-search.mjs +0 -20
- package/dist/components/DigitalColleagues/team-form.css +0 -917
- package/dist/components/DigitalColleagues/team-form.d.ts +0 -24
- package/dist/components/DigitalColleagues/team-form.js +0 -2836
- package/dist/components/DigitalColleagues/team-form.mjs +0 -20
- package/dist/components/DigitalColleagues/types.d.ts +0 -289
- package/dist/components/DigitalColleagues/types.js +0 -18
- package/dist/{chunk-RFQKQLNT.mjs → chunk-JJDC25TG.mjs} +3 -3
- package/dist/{chunk-GZGWWPCP.mjs → chunk-L666B5DN.mjs} +12 -12
- /package/dist/components/{DigitalColleagues/AppSidebarLeft.css → Foundry/app-card.css} +0 -0
- /package/dist/components/{DigitalColleagues/DashboardHeader.css → Projects/GanttView.css} +0 -0
|
@@ -2900,7 +2900,7 @@ var DialogContent = React4.forwardRef(({ className, children, ...props }, ref) =
|
|
|
2900
2900
|
{
|
|
2901
2901
|
ref,
|
|
2902
2902
|
className: cn(
|
|
2903
|
-
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
|
|
2903
|
+
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg max-h-[90vh] overflow-y-auto translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
|
|
2904
2904
|
className
|
|
2905
2905
|
),
|
|
2906
2906
|
...props,
|
|
@@ -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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
8670
|
-
|
|
8671
|
-
|
|
8672
|
-
|
|
8673
|
-
|
|
8674
|
-
|
|
8675
|
-
|
|
8676
|
-
|
|
8677
|
-
|
|
8678
|
-
|
|
8679
|
-
|
|
8680
|
-
|
|
8681
|
-
|
|
8682
|
-
|
|
8683
|
-
|
|
8684
|
-
|
|
8685
|
-
|
|
8686
|
-
|
|
8687
|
-
|
|
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: "
|
|
8692
|
-
/* @__PURE__ */ (0, import_jsx_runtime47.
|
|
8693
|
-
|
|
8694
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
9700
|
-
|
|
9701
|
-
|
|
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.
|
|
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:
|
|
9770
|
-
|
|
9771
|
-
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
|
|
9778
|
-
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
|
|
9782
|
-
|
|
9783
|
-
|
|
9784
|
-
|
|
9785
|
-
|
|
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
|
-
|
|
9980
|
+
"button",
|
|
9813
9981
|
{
|
|
9814
|
-
|
|
9815
|
-
|
|
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
|
-
|
|
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
|
-
|
|
9827
|
-
|
|
9828
|
-
|
|
9829
|
-
|
|
9830
|
-
|
|
9831
|
-
|
|
9832
|
-
|
|
9833
|
-
|
|
9834
|
-
|
|
9835
|
-
|
|
9836
|
-
|
|
9837
|
-
|
|
9838
|
-
|
|
9839
|
-
|
|
9840
|
-
|
|
9841
|
-
|
|
9842
|
-
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
9848
|
-
|
|
9849
|
-
|
|
9850
|
-
|
|
9851
|
-
|
|
9852
|
-
|
|
9853
|
-
|
|
9854
|
-
|
|
9855
|
-
|
|
9856
|
-
|
|
9857
|
-
|
|
9858
|
-
|
|
9859
|
-
|
|
9860
|
-
|
|
9861
|
-
|
|
9862
|
-
|
|
9863
|
-
|
|
9864
|
-
|
|
9865
|
-
|
|
9866
|
-
|
|
9867
|
-
|
|
9868
|
-
|
|
9869
|
-
|
|
9870
|
-
|
|
9871
|
-
|
|
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
|
-
|
|
10090
|
+
Input,
|
|
9878
10091
|
{
|
|
9879
|
-
|
|
9880
|
-
|
|
9881
|
-
|
|
9882
|
-
className: "
|
|
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.
|
|
9887
|
-
|
|
9888
|
-
|
|
9889
|
-
|
|
9890
|
-
|
|
9891
|
-
|
|
9892
|
-
|
|
9893
|
-
|
|
9894
|
-
|
|
9895
|
-
|
|
9896
|
-
|
|
9897
|
-
|
|
9898
|
-
|
|
9899
|
-
|
|
9900
|
-
|
|
9901
|
-
|
|
9902
|
-
|
|
9903
|
-
|
|
9904
|
-
|
|
9905
|
-
|
|
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.
|
|
9908
|
-
|
|
10121
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
10122
|
+
Textarea,
|
|
9909
10123
|
{
|
|
9910
|
-
|
|
9911
|
-
|
|
9912
|
-
|
|
9913
|
-
|
|
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
|
-
|
|
10208
|
+
Button,
|
|
9920
10209
|
{
|
|
9921
|
-
|
|
9922
|
-
|
|
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
|
-
|
|
9925
|
-
"
|
|
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
|
-
|
|
9931
|
-
|
|
9932
|
-
|
|
9933
|
-
|
|
9934
|
-
|
|
9935
|
-
|
|
9936
|
-
|
|
9937
|
-
}
|
|
9938
|
-
|
|
9939
|
-
|
|
9940
|
-
|
|
9941
|
-
|
|
9942
|
-
|
|
9943
|
-
|
|
9944
|
-
|
|
9945
|
-
|
|
9946
|
-
|
|
9947
|
-
|
|
9948
|
-
|
|
9949
|
-
|
|
9950
|
-
|
|
9951
|
-
|
|
9952
|
-
|
|
9953
|
-
|
|
9954
|
-
|
|
9955
|
-
|
|
9956
|
-
|
|
9957
|
-
|
|
9958
|
-
|
|
9959
|
-
|
|
9960
|
-
|
|
9961
|
-
|
|
9962
|
-
|
|
9963
|
-
|
|
9964
|
-
|
|
9965
|
-
|
|
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
|
};
|