@taskmark/ui 0.3.0 → 0.3.1
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/README.md +1 -1
- package/app/globals.css +25 -0
- package/app/layout.tsx +15 -5
- package/app/setup/page.tsx +1 -1
- package/bin/lib/resolve-board.mjs +1 -4
- package/components/board/app-bar.tsx +3 -0
- package/components/board/board-screen.tsx +61 -117
- package/components/board/changelog-panel.tsx +26 -0
- package/components/board/epic-list.tsx +2 -0
- package/components/board/list-view-switcher.tsx +7 -3
- package/components/board/markdown-content.tsx +21 -1
- package/components/board/mermaid-diagram.tsx +88 -0
- package/components/board/metric-stat-card.tsx +4 -4
- package/components/board/overall-tree-list.tsx +467 -0
- package/components/board/overall-work-items-list.tsx +5 -1
- package/components/board/points-heatmap.tsx +183 -0
- package/components/board/project-status-metrics-strip.tsx +5 -22
- package/components/board/static-board-app.tsx +29 -94
- package/components/board/status-badge.tsx +8 -0
- package/components/board/story-list.tsx +2 -0
- package/components/board/task-list.tsx +5 -1
- package/components/board/work-item-detail-body.tsx +123 -8
- package/components/board/work-items-list.tsx +2 -0
- package/components/theme-provider.tsx +39 -0
- package/components/theme-toggle.tsx +27 -0
- package/components/ui/sonner.tsx +2 -2
- package/dist/prod-next/BUILD_ID +1 -1
- package/dist/prod-next/build-manifest.json +6 -6
- package/dist/prod-next/react-loadable-manifest.json +391 -1
- package/dist/prod-next/server/app/_global-error/page.js +2 -2
- package/dist/prod-next/server/app/_global-error/page.js.nft.json +1 -1
- package/dist/prod-next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/prod-next/server/app/_global-error.html +1 -1
- package/dist/prod-next/server/app/_global-error.rsc +1 -1
- package/dist/prod-next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/prod-next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/prod-next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/prod-next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/prod-next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/prod-next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/prod-next/server/app/_not-found/page.js +2 -2
- package/dist/prod-next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/prod-next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/prod-next/server/app/_not-found.html +1 -1
- package/dist/prod-next/server/app/_not-found.rsc +19 -17
- package/dist/prod-next/server/app/_not-found.segments/_full.segment.rsc +19 -17
- package/dist/prod-next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/prod-next/server/app/_not-found.segments/_index.segment.rsc +8 -6
- package/dist/prod-next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/prod-next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/prod-next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/prod-next/server/app/api/taskmark-reload/route.js +1 -1
- package/dist/prod-next/server/app/api/taskmark-reload/route.js.nft.json +1 -1
- package/dist/prod-next/server/app/board/page.js +2 -2
- package/dist/prod-next/server/app/board/page.js.nft.json +1 -1
- package/dist/prod-next/server/app/board/page_client-reference-manifest.js +1 -1
- package/dist/prod-next/server/app/favicon.ico/route.js +1 -1
- package/dist/prod-next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/dist/prod-next/server/app/page.js +2 -2
- package/dist/prod-next/server/app/page.js.nft.json +1 -1
- package/dist/prod-next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/prod-next/server/app/setup/page.js +2 -2
- package/dist/prod-next/server/app/setup/page.js.nft.json +1 -1
- package/dist/prod-next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/dist/prod-next/server/chunks/102.js +90 -0
- package/dist/prod-next/server/chunks/11.js +1 -0
- package/dist/prod-next/server/chunks/1286.js +1 -0
- package/dist/prod-next/server/chunks/1412.js +38 -0
- package/dist/prod-next/server/chunks/1605.js +1 -0
- package/dist/prod-next/server/chunks/169.js +1 -0
- package/dist/prod-next/server/chunks/18.js +86 -0
- package/dist/prod-next/server/chunks/2.js +1 -0
- package/dist/prod-next/server/chunks/2022.js +1 -0
- package/dist/prod-next/server/chunks/2156.js +1 -0
- package/dist/prod-next/server/chunks/2157.js +1 -0
- package/dist/prod-next/server/chunks/2325.js +82 -0
- package/dist/prod-next/server/chunks/2838.js +1 -0
- package/dist/prod-next/server/chunks/2897.js +79 -0
- package/dist/prod-next/server/chunks/3227.js +1 -0
- package/dist/prod-next/server/chunks/3266.js +1 -0
- package/dist/prod-next/server/chunks/{192.js → 3307.js} +5 -5
- package/dist/prod-next/server/chunks/3387.js +19 -0
- package/dist/prod-next/server/chunks/3428.js +32 -0
- package/dist/prod-next/server/chunks/3479.js +1 -0
- package/dist/prod-next/server/chunks/367.js +115 -0
- package/dist/prod-next/server/chunks/3698.js +93 -0
- package/dist/prod-next/server/chunks/3709.js +148 -0
- package/dist/prod-next/server/chunks/41.js +1 -0
- package/dist/prod-next/server/chunks/4107.js +62 -0
- package/dist/prod-next/server/chunks/4569.js +34 -0
- package/dist/prod-next/server/chunks/{741.js → 4741.js} +1 -1
- package/dist/prod-next/server/chunks/4755.js +153 -0
- package/dist/prod-next/server/chunks/5002.js +1 -0
- package/dist/prod-next/server/chunks/5112.js +1 -0
- package/dist/prod-next/server/chunks/5289.js +8 -0
- package/dist/prod-next/server/chunks/5318.js +1 -0
- package/dist/prod-next/server/chunks/5452.js +23 -0
- package/dist/prod-next/server/chunks/5453.js +1 -0
- package/dist/prod-next/server/chunks/5749.js +27 -0
- package/dist/prod-next/server/chunks/5782.js +36 -0
- package/dist/prod-next/server/chunks/6163.js +104 -0
- package/dist/prod-next/server/chunks/6169.js +64 -0
- package/dist/prod-next/server/chunks/6208.js +172 -0
- package/dist/prod-next/server/chunks/6399.js +24 -0
- package/dist/prod-next/server/chunks/6496.js +1 -0
- package/dist/prod-next/server/chunks/6823.js +215 -0
- package/dist/prod-next/server/chunks/6888.js +1 -0
- package/dist/prod-next/server/chunks/6980.js +1 -0
- package/dist/prod-next/server/chunks/7245.js +77 -0
- package/dist/prod-next/server/chunks/7307.js +1 -0
- package/dist/prod-next/server/chunks/7372.js +287 -0
- package/dist/prod-next/server/chunks/7384.js +226 -0
- package/dist/prod-next/server/chunks/7516.js +1 -0
- package/dist/prod-next/server/chunks/7531.js +24 -0
- package/dist/prod-next/server/chunks/7591.js +1 -0
- package/dist/prod-next/server/chunks/7755.js +138 -0
- package/dist/prod-next/server/chunks/7916.js +1 -0
- package/dist/prod-next/server/chunks/8078.js +94 -0
- package/dist/prod-next/server/chunks/8253.js +41 -0
- package/dist/prod-next/server/chunks/8635.js +1 -0
- package/dist/prod-next/server/chunks/8688.js +1 -0
- package/dist/prod-next/server/chunks/8872.js +1 -0
- package/dist/prod-next/server/chunks/9006.js +1 -0
- package/dist/prod-next/server/chunks/9018.js +1 -0
- package/dist/prod-next/server/chunks/9047.js +1 -0
- package/dist/prod-next/server/chunks/9108.js +1 -0
- package/dist/prod-next/server/chunks/9280.js +256 -0
- package/dist/prod-next/server/chunks/9419.js +1 -0
- package/dist/prod-next/server/chunks/9430.js +1 -0
- package/dist/prod-next/server/chunks/9586.js +1 -0
- package/dist/prod-next/server/chunks/9775.js +1 -0
- package/dist/prod-next/server/chunks/992.js +1 -0
- package/dist/prod-next/server/chunks/9926.js +1 -0
- package/dist/prod-next/server/chunks/9984.js +8 -0
- package/dist/prod-next/server/middleware-build-manifest.js +1 -1
- package/dist/prod-next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/prod-next/server/pages/404.html +1 -1
- package/dist/prod-next/server/pages/500.html +1 -1
- package/dist/prod-next/server/server-reference-manifest.js +1 -1
- package/dist/prod-next/server/server-reference-manifest.json +1 -1
- package/dist/prod-next/server/webpack-runtime.js +1 -1
- package/dist/prod-next/static/chunks/1213.e5c6e70a79b5f7e6.js +24 -0
- package/dist/prod-next/static/chunks/1519.2f596e5f5af9ef57.js +62 -0
- package/dist/prod-next/static/chunks/1759-f5b8fb456f8fb420.js +1 -0
- package/dist/prod-next/static/chunks/1974.885c9a133b86d8a4.js +32 -0
- package/dist/prod-next/static/chunks/2280.6a7f540787704698.js +1 -0
- package/dist/prod-next/static/chunks/2521.7f745f50d30076e7.js +77 -0
- package/dist/prod-next/static/chunks/2585.4d6aa847c780c666.js +1 -0
- package/dist/prod-next/static/chunks/2589.1aad68c09021b1ac.js +1 -0
- package/dist/prod-next/static/chunks/2600.45ba17a0f756fc31.js +1 -0
- package/dist/prod-next/static/chunks/2619.9aac8983f30c7c8a.js +1 -0
- package/dist/prod-next/static/chunks/26d302b2.9f6383e42abdfe16.js +122 -0
- package/dist/prod-next/static/chunks/2768.305914f7900745b6.js +1 -0
- package/dist/prod-next/static/chunks/2931.c2acdbf72808b646.js +41 -0
- package/dist/prod-next/static/chunks/3012-838f69b72a0dc1b3.js +1 -0
- package/dist/prod-next/static/chunks/3016.406e568aa95ff867.js +1 -0
- package/dist/prod-next/static/chunks/3022.972047558a20553a.js +172 -0
- package/dist/prod-next/static/chunks/3064.3a2a1e7cd4fdca5f.js +1 -0
- package/dist/prod-next/static/chunks/3174.03fbed7b7d7a8256.js +1 -0
- package/dist/prod-next/static/chunks/3189.b048866768087750.js +1 -0
- package/dist/prod-next/static/chunks/3217.1a053843c58b70b5.js +24 -0
- package/dist/prod-next/static/chunks/3308.30b95d524f9c1daf.js +74 -0
- package/dist/prod-next/static/chunks/331.fc5d78e1e91daf43.js +1 -0
- package/dist/prod-next/static/chunks/3510.5d4d1c79533e080c.js +1 -0
- package/dist/prod-next/static/chunks/364.ce5400a9dd70b9dc.js +1 -0
- package/dist/prod-next/static/chunks/3661-1f08d73aaffb011d.js +1 -0
- package/dist/prod-next/static/chunks/370.57cfa27da8567918.js +1 -0
- package/dist/prod-next/static/chunks/3789.c418b69121761983.js +1 -0
- package/dist/prod-next/static/chunks/3794-c66b3d8325973459.js +32 -0
- package/dist/prod-next/static/chunks/3831.25ae62d10dccc27a.js +1 -0
- package/dist/prod-next/static/chunks/395.b41e9d76613d37b5.js +90 -0
- package/dist/prod-next/static/chunks/3a7aa434.93dbd20997cfd24f.js +82 -0
- package/dist/prod-next/static/chunks/4020.3cc19c463c49f969.js +23 -0
- package/dist/prod-next/static/chunks/4035.0acc428926d5c8dd.js +1 -0
- package/dist/prod-next/static/chunks/405.0902e4f6eb7bd9a2.js +215 -0
- package/dist/prod-next/static/chunks/4159.49ae537ff687bdc6.js +138 -0
- package/dist/prod-next/static/chunks/4208.384b381ca2757643.js +287 -0
- package/dist/prod-next/static/chunks/4263.ffa8d9bd8a0faaae.js +1 -0
- package/dist/prod-next/static/chunks/4561.d1a3aaca8bae3224.js +34 -0
- package/dist/prod-next/static/chunks/4592.d0f37bc216b9d988.js +93 -0
- package/dist/prod-next/static/chunks/4799.0dc7aa21bff2fd2a.js +1 -0
- package/dist/prod-next/static/chunks/4bd1b696-e356ca5ba0218e27.js +1 -0
- package/dist/prod-next/static/chunks/514.b804c51b26f5e126.js +1 -0
- package/dist/prod-next/static/chunks/5270.28592864d38e881c.js +1 -0
- package/dist/prod-next/static/chunks/52733464.3870f99cc446f9ff.js +1 -0
- package/dist/prod-next/static/chunks/5354.b559c717a607dc5c.js +1 -0
- package/dist/prod-next/static/chunks/5448.d3972d9fb464b54f.js +38 -0
- package/dist/prod-next/static/chunks/587.d52737d7288c11b4.js +1 -0
- package/dist/prod-next/static/chunks/5909.9e37f7b495b11995.js +115 -0
- package/dist/prod-next/static/chunks/5949.5504b3545fcc3d34.js +104 -0
- package/dist/prod-next/static/chunks/6322-4e97920c006f7933.js +1 -0
- package/dist/prod-next/static/chunks/6361.893d04ac34fa1b49.js +148 -0
- package/dist/prod-next/static/chunks/6774.8cd53427dbf32cac.js +86 -0
- package/dist/prod-next/static/chunks/6968.b80277c724dbc96e.js +1 -0
- package/dist/prod-next/static/chunks/7113.4b9e7ea870aa300a.js +8 -0
- package/dist/prod-next/static/chunks/7236.55a9728d35f5b8a6.js +1 -0
- package/dist/prod-next/static/chunks/7390.dde9b5bc2f6e24b8.js +1 -0
- package/dist/prod-next/static/chunks/7806.a903780fcfa3a30e.js +1 -0
- package/dist/prod-next/static/chunks/7997.be57e92e583fe635.js +1 -0
- package/dist/prod-next/static/chunks/8216.64a72d4d35ea7be0.js +1 -0
- package/dist/prod-next/static/chunks/830.5d5274d7ad1cb58e.js +1 -0
- package/dist/prod-next/static/chunks/8378.fa91de3406f554c9.js +226 -0
- package/dist/prod-next/static/chunks/8501.cd06aa1b0c7e1c6a.js +79 -0
- package/dist/prod-next/static/chunks/8663.6ec5792fb4952e45.js +27 -0
- package/dist/prod-next/static/chunks/872.96937e758ddce860.js +1 -0
- package/dist/prod-next/static/chunks/8803.75bde095fe3613f5.js +1 -0
- package/dist/prod-next/static/chunks/8863.72f5dbb820a0e4c3.js +1 -0
- package/dist/prod-next/static/chunks/90542734.f7a7b2972ef5a749.js +1 -0
- package/dist/prod-next/static/chunks/9379.5bc9c9343ec5a16c.js +64 -0
- package/dist/prod-next/static/chunks/9389.906fe7aa9cd6a170.js +1 -0
- package/dist/prod-next/static/chunks/9472.8818ee52cfa931a4.js +94 -0
- package/dist/prod-next/static/chunks/966.d6babbf8119162cc.js +1 -0
- package/dist/prod-next/static/chunks/9884.d4ac1a961b3366f1.js +36 -0
- package/dist/prod-next/static/chunks/9909.67cf9940b125243b.js +1 -0
- package/dist/prod-next/static/chunks/app/_global-error/page-8be5492b3b872a4c.js +1 -0
- package/dist/prod-next/static/chunks/app/_not-found/page-799e445a538b0024.js +1 -0
- package/dist/prod-next/static/chunks/app/api/taskmark-reload/route-8be5492b3b872a4c.js +1 -0
- package/dist/prod-next/static/chunks/app/board/page-5c181f45738daf1c.js +1 -0
- package/dist/prod-next/static/chunks/app/layout-21782e6d13a6f275.js +1 -0
- package/dist/prod-next/static/chunks/app/page-51bfe4356fe233e3.js +1 -0
- package/dist/prod-next/static/chunks/app/setup/page-3ccfba00c10f9b17.js +1 -0
- package/dist/prod-next/static/chunks/d3ac728e.7964f816a1ca64e5.js +1 -0
- package/dist/prod-next/static/chunks/e413bedd.3a12a8cb02e28fdf.js +153 -0
- package/dist/prod-next/static/chunks/ea233666.f00b64a7d99b4950.js +62 -0
- package/dist/prod-next/static/chunks/framework-711ef29bc66f648c.js +1 -0
- package/dist/prod-next/static/chunks/main-app-dd26d4f9d120646e.js +1 -0
- package/dist/prod-next/static/chunks/{main-bb33c46a9c25dee8.js → main-df4bcaed74f274eb.js} +2 -2
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/app-error-8be5492b3b872a4c.js +1 -0
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/forbidden-8be5492b3b872a4c.js +1 -0
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/global-error-45a0cf77e03361ed.js +1 -0
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/not-found-8be5492b3b872a4c.js +1 -0
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/unauthorized-8be5492b3b872a4c.js +1 -0
- package/dist/prod-next/static/chunks/webpack-713747aaa9716c4c.js +1 -0
- package/dist/prod-next/static/css/cb78d4b0062d9a3f.css +1 -0
- package/dist/public/taskmark-snapshot.json +1 -1
- package/lib/taskmark/board-index.ts +101 -0
- package/lib/taskmark/build-snapshot.ts +28 -7
- package/lib/taskmark/derive-parents.test.ts +23 -0
- package/lib/taskmark/derive-parents.ts +323 -0
- package/lib/taskmark/detail-load.ts +55 -7
- package/lib/taskmark/detail-types.ts +10 -2
- package/lib/taskmark/dev-reload-token.ts +1 -1
- package/lib/taskmark/discover.ts +4 -7
- package/lib/taskmark/epic-types.ts +2 -1
- package/lib/taskmark/flat-work-item-types.ts +1 -4
- package/lib/taskmark/identity.ts +3 -3
- package/lib/taskmark/item-types.ts +2 -1
- package/lib/taskmark/list-filters.test.ts +23 -0
- package/lib/taskmark/list-filters.ts +7 -2
- package/lib/taskmark/list-view-mode.test.ts +45 -0
- package/lib/taskmark/list-view-mode.ts +19 -8
- package/lib/taskmark/load-changelog.test.ts +32 -0
- package/lib/taskmark/load-changelog.ts +18 -0
- package/lib/taskmark/overall-tree.test.ts +196 -0
- package/lib/taskmark/overall-tree.ts +194 -0
- package/lib/taskmark/parse-detail.ts +5 -5
- package/lib/taskmark/parse-epics.ts +19 -16
- package/lib/taskmark/parse-flat-lists.ts +32 -28
- package/lib/taskmark/parse-items.ts +47 -9
- package/lib/taskmark/parse-stories.ts +18 -15
- package/lib/taskmark/points-calendar.test.ts +72 -0
- package/lib/taskmark/points-calendar.ts +86 -0
- package/lib/taskmark/project-metrics.ts +11 -7
- package/lib/taskmark/snapshot-types.ts +2 -0
- package/lib/taskmark/story-types.ts +2 -1
- package/lib/taskmark/table-sort.ts +4 -3
- package/lib/taskmark/timing.ts +29 -18
- package/lib/taskmark/validate.ts +1 -1
- package/lib/theme-cookie.test.ts +27 -0
- package/lib/theme-cookie.ts +43 -0
- package/package.json +3 -1
- package/public/taskmark-snapshot.json +1 -1
- package/dist/prod-next/server/chunks/463.js +0 -1
- package/dist/prod-next/server/chunks/54.js +0 -19
- package/dist/prod-next/server/chunks/57.js +0 -8
- package/dist/prod-next/server/chunks/724.js +0 -1
- package/dist/prod-next/static/chunks/4bd1b696-deb4a0a1da1923b0.js +0 -1
- package/dist/prod-next/static/chunks/613-6f794154d28bb75a.js +0 -1
- package/dist/prod-next/static/chunks/636-626c380f021b95c8.js +0 -1
- package/dist/prod-next/static/chunks/669-8103441c67b185da.js +0 -1
- package/dist/prod-next/static/chunks/701-df3ee5f1cf837b1a.js +0 -1
- package/dist/prod-next/static/chunks/794-25668765560cb197.js +0 -32
- package/dist/prod-next/static/chunks/909.932f2af3be7f1e89.js +0 -1
- package/dist/prod-next/static/chunks/app/_global-error/page-a1e3320be3da9be1.js +0 -1
- package/dist/prod-next/static/chunks/app/_not-found/page-0b3785af737e7968.js +0 -1
- package/dist/prod-next/static/chunks/app/api/taskmark-reload/route-a1e3320be3da9be1.js +0 -1
- package/dist/prod-next/static/chunks/app/board/page-636f60191db62f52.js +0 -1
- package/dist/prod-next/static/chunks/app/layout-856e8a282e69e7d0.js +0 -1
- package/dist/prod-next/static/chunks/app/page-562a33b50da7665b.js +0 -1
- package/dist/prod-next/static/chunks/app/setup/page-4cf527b758b1d51e.js +0 -1
- package/dist/prod-next/static/chunks/framework-b29f9083d3cda3b2.js +0 -1
- package/dist/prod-next/static/chunks/main-app-bfb36455d24b3e5a.js +0 -1
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/app-error-a1e3320be3da9be1.js +0 -1
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/forbidden-a1e3320be3da9be1.js +0 -1
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/global-error-dc53ab29e0491fe4.js +0 -1
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/not-found-a1e3320be3da9be1.js +0 -1
- package/dist/prod-next/static/chunks/next/dist/client/components/builtin/unauthorized-a1e3320be3da9be1.js +0 -1
- package/dist/prod-next/static/chunks/webpack-d33b8a6298c94a64.js +0 -1
- package/dist/prod-next/static/css/2e6ec4c80894e3c0.css +0 -1
- /package/dist/prod-next/static/{yyRnYAFQrJjF5_b5ZIeqh → EI1zQaa_kQ7DqUSE4o3Qo}/_buildManifest.js +0 -0
- /package/dist/prod-next/static/{yyRnYAFQrJjF5_b5ZIeqh → EI1zQaa_kQ7DqUSE4o3Qo}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=2,exports.ids=[2],exports.modules={6017:(a,b,c)=>{"use strict";c.d(b,{ProjectContributorsPanel:()=>i});var d=c(48249),e=c(62407),f=c(31168),g=c(33191),h=c(92281);function i({contributors:a,className:b}){return 0===a.length?(0,d.jsx)("p",{className:(0,g.cn)("text-sm text-muted-foreground",b),children:"No contributors yet."}):(0,d.jsx)(f.Bc,{delay:200,children:(0,d.jsx)("ul",{className:(0,g.cn)("grid grid-cols-1 gap-2 sm:grid-cols-2 md:grid-cols-3",b),"aria-label":"Project contributors",children:a.map(a=>{let b=a.name||"Unknown",c=a.email?`${b} \xb7 ${a.email}`:b,i=(0,h.yx)(a);return(0,d.jsxs)("li",{className:"flex min-w-0 items-center gap-2.5",children:[(0,d.jsxs)(f.m_,{children:[(0,d.jsx)(f.k$,{render:(0,d.jsx)("span",{className:"inline-flex shrink-0 cursor-default"}),"aria-label":c,children:(0,d.jsx)(e.eu,{size:"default",children:(0,d.jsx)(e.q5,{className:(0,g.cn)("bg-transparent font-semibold tracking-wide text-white !text-[7px]"),style:{backgroundColor:i},children:a.initials||"?"})})}),(0,d.jsx)(f.ZI,{side:"top",children:c})]}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"truncate text-sm font-medium leading-tight",children:b}),a.email?(0,d.jsx)("p",{className:"truncate font-mono text-xs text-muted-foreground",children:a.email}):null]})]},`${a.email}|${a.name}`)})})})}},11616:(a,b,c)=>{"use strict";c.d(b,{OverallTreeList:()=>B});var d=c(48249),e=c(67484),f=c(91995),g=c(21682),h=c(40988),i=c(75464),j=c(15732),k=c(97509),l=c(54958),m=c(67251),n=c(53778),o=c(64034),p=c(26284),q=c(63160),r=c(11923),s=c(17550),t=c(52297),u=c(13259);function v(a){let b=a.trim().toLowerCase();return"done"===b||"shelved"===b||"cancelled"===b}function w(a){let b=Date.parse(a);return Number.isFinite(b)?b:0}function x(a,b){let c=Number(v(a.status))-Number(v(b.status));if(0!==c)return c;let d=w(b.created)-w(a.created);if(0!==d)return d;let e=w(b.updated)-w(a.updated);return 0!==e?e:a.id.localeCompare(b.id)}function y(a){return{kind:a.type,id:a.id,title:a.title,status:a.status,size:a.size,points:a.points,tags:a.tags,reporters:a.reporters,resolvers:a.resolvers,created:a.created,updated:a.updated,completedAt:a.completedAt,filePath:a.filePath,children:[],workItemCount:0,doneWorkItemCount:0}}var z=c(33191);function A({node:a,level:b,expanded:c,selectedEpicId:e,selectedStoryId:j,onToggle:k}){let m="epic"===a.kind||"story"===a.kind,o=m&&c.has(a.id),q="epic"===a.kind&&a.id===e||"story"===a.kind&&a.id===j,r="epic"===a.kind?"No stories, tasks, or bugs under this epic yet.":"No tasks or bugs under this story yet.";return(0,d.jsxs)("div",{role:"none",children:[(0,d.jsxs)("div",{role:"treeitem","aria-level":b,"aria-expanded":m?o:void 0,"aria-selected":q,tabIndex:0,"data-state":q?"selected":void 0,onKeyDown:b=>{!m||"Enter"!==b.key&&" "!==b.key||b.target.closest("button")||(b.preventDefault(),k(a.id))},className:(0,z.cn)("grid min-h-12 grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-2 border-b px-2 py-1.5 outline-none transition-colors hover:bg-muted/40 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring sm:grid-cols-[minmax(0,1fr)_5rem_5rem_4rem_5.5rem_3rem]",(0,l.pb)(a.status),q&&"bg-muted/60"),children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",style:{paddingInlineStart:`${12*Math.max(0,b-1)}px`},children:[m?(0,d.jsx)(p.$,{type:"button",variant:"ghost",size:"icon",className:"size-11 shrink-0 sm:size-9","aria-label":`${o?"Collapse":"Expand"} ${a.id}`,"aria-expanded":o,onClick:()=>k(a.id),children:(0,d.jsx)(f.A,{className:(0,z.cn)("size-4 transition-transform",o&&"rotate-90")})}):(0,d.jsx)("span",{className:"w-11 shrink-0 sm:w-9","aria-hidden":!0}),(0,d.jsx)(l.wF,{type:a.kind}),(0,d.jsx)("div",{className:"min-w-0",children:(0,d.jsxs)("div",{className:"flex min-w-0 flex-wrap items-baseline gap-x-2",children:[(0,d.jsx)(i.nU,{id:a.id,created:a.created}),(0,d.jsx)("span",{className:"min-w-0 break-words font-medium leading-snug",children:a.title})]})})]}),(0,d.jsx)("div",{className:"sm:hidden",children:a.children.length>0?(0,d.jsx)(h.P,{done:a.doneWorkItemCount,total:a.workItemCount}):(0,d.jsx)(i.Bm,{status:a.status,solvedAt:a.completedAt})}),(0,d.jsx)("div",{className:"hidden sm:block",children:(0,d.jsx)(i.Aw,{size:a.size,points:a.points})}),(0,d.jsx)("div",{className:"hidden justify-center sm:flex",children:(0,d.jsx)(g.O,{reporters:a.reporters,resolvers:a.resolvers})}),(0,d.jsx)("div",{className:"hidden tabular-nums sm:block",children:a.children.length>0?a.workItemCount:"—"}),(0,d.jsx)("div",{className:"hidden justify-center sm:flex",children:a.children.length>0?(0,d.jsx)(h.P,{done:a.doneWorkItemCount,total:a.workItemCount}):(0,d.jsx)(i.Bm,{status:a.status,solvedAt:a.completedAt})}),(0,d.jsx)("div",{className:"hidden justify-end sm:flex pl-2",children:(0,d.jsx)(n.CP,{label:`View details for ${a.id}`,itemRef:{kind:"epic"===a.kind?"epic":"story"===a.kind?"story":"item",id:a.id,title:a.title,filePath:a.filePath,itemType:"task"===a.kind||"bug"===a.kind?a.kind:void 0}})}),(0,d.jsx)("div",{className:"col-span-2 flex justify-end sm:hidden pt-0.5",children:(0,d.jsx)(n.CP,{label:`View details for ${a.id}`,itemRef:{kind:"epic"===a.kind?"epic":"story"===a.kind?"story":"item",id:a.id,title:a.title,filePath:a.filePath,itemType:"task"===a.kind||"bug"===a.kind?a.kind:void 0}})})]}),o?(0,d.jsx)("div",{role:"group",children:a.children.length>0?a.children.map(a=>(0,d.jsx)(A,{node:a,level:b+1,expanded:c,selectedEpicId:e,selectedStoryId:j,onToggle:k},`${a.kind}:${a.id}:${a.filePath}`)):(0,d.jsx)("p",{className:"border-b py-3 pr-3 text-sm text-muted-foreground",style:{paddingInlineStart:`${12*b+44}px`},children:r})}):null]})}function B({list:a,workItemsByEpic:b,itemsByStory:c,selectedEpicId:f=null,selectedStoryId:g=null,countableCompletions:h=[],initialHideCompleted:i=!1}){let{project:l,errors:n}=a,p=e.useMemo(()=>a.epics.filter(a=>!(function(a){if("general"===a.title.trim().toLowerCase()||a.tags.some(a=>"general"===a.trim().toLowerCase()))return!0;let b=a.filePath.replace(/[/\\]epic\.md$/i,"").split(/[/\\]/).pop()??"";return b.toLowerCase().endsWith("-general")||"general"===b.toLowerCase()}(a)&&0===a.workItemCount)).map(a=>{var d;let e;return d=b[a.id],e=(d?.rows??[]).map(b=>{var d;let e;return d=c[`${a.id}::${b.id}`],e="story"===b.kind?(d?.items??[]).map(y).sort(x):[],{kind:b.kind,id:b.id,title:b.title,status:b.status,size:b.size,points:b.points,tags:b.tags,reporters:b.reporters,resolvers:b.resolvers,created:b.created,updated:b.updated,completedAt:b.completedAt,filePath:b.filePath,children:e,workItemCount:b.workItemCount,doneWorkItemCount:b.doneWorkItemCount}}).sort(x),{kind:"epic",id:a.id,title:a.title,status:a.status,size:a.size,points:a.points,tags:a.tags,reporters:a.reporters,resolvers:a.resolvers,created:a.created,updated:a.updated,completedAt:a.completedAt,filePath:a.filePath,children:e,workItemCount:a.workItemCount,doneWorkItemCount:a.doneWorkItemCount}}).sort(x),[a,b,c]),[w,z]=e.useState(""),[C,D]=(0,r.M)("epics",i),[E,F]=e.useState(t.er),[G,H]=e.useState(()=>[...f?[f]:[],...g?[g]:[]]);e.useEffect(()=>{let a=!0;return queueMicrotask(()=>{a&&H(a=>[...new Set([...a,...(l.id,[]),...f?[f]:[],...g?[g]:[]])])}),()=>{a=!1}},[l.id,f,g]);let I=e.useMemo(()=>(function a(b,c){return b.flatMap(b=>{let d=a(b.children,c);return(0,t.i)(c.query,b)&&(!c.hideCompleted||!v(b.status))&&(0,u.WS)(c.timeframe,b.completedAt)||0!==d.length?[{...b,children:d}]:[]})})(p,{query:w,hideCompleted:C,timeframe:E}),[p,w,C,E]),J=e.useMemo(()=>new Set([...G,...w.trim()?function a(b){return b.flatMap(b=>[...b.children.length>0?[b.id]:[],...a(b.children)])}(I):[]]),[G,I,w]),K=e.useMemo(()=>(function a(b){return b.flatMap(b=>[b,...a(b.children)])})(p).map(a=>a.completedAt),[p]),L=`${l.id}|${w}|${C}|${JSON.stringify(E)}`,{pageRows:M,page:N,pageSize:O,totalCount:P,totalPages:Q,setPage:R,setPageSize:S}=(0,q.K)(I,L);e.useEffect(()=>{if(!f)return;let a=I.findIndex(a=>a.id===f);a>=0&&R(Math.floor(a/O)+1)},[f,I,O,R]);let T=e.useCallback(a=>{H(b=>{let c=new Set(b);c.has(a)?c.delete(a):c.add(a);let d=[...c];try{var e;window.sessionStorage.setItem((e=l.id,`taskmark:overall-expanded:${e}`),JSON.stringify(d))}catch{}return d})},[l.id]),U=[...Object.values(b).flatMap(a=>a.errors),...Object.values(c).flatMap(a=>a.errors)],V=[...n.map(a=>({filePath:a.filePath,message:a.message})),...U];return(0,d.jsxs)(o.Zp,{children:[(0,d.jsxs)(o.aR,{children:[(0,d.jsx)(o.ZB,{className:"font-head text-xl",children:l.name}),p.length>0?(0,d.jsx)(o.X9,{children:(0,d.jsx)(m.r,{id:`overall-tree-timeframe-${l.id}`,value:E,onChange:F,completedAts:K,countableCompletions:h})}):null]}),(0,d.jsxs)(o.Wu,{className:"flex flex-col gap-4",children:[V.length>0?(0,d.jsxs)("div",{role:"status",className:"rounded border-2 border-destructive/40 bg-destructive/10 px-3 py-2 text-sm",children:[(0,d.jsxs)("p",{className:"font-medium text-destructive",children:[V.length," file",1===V.length?"":"s"," could not be parsed"]}),(0,d.jsx)("ul",{className:"mt-2 flex flex-col gap-1 font-mono text-xs text-muted-foreground",children:V.map((a,b)=>(0,d.jsxs)("li",{children:[(0,s._)(a.filePath),": ",a.message]},`${a.filePath}:${a.message}:${b}`))})]}):null,0===p.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"No epics in this board yet."}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.n,{searchId:`overall-tree-search-${l.id}`,query:w,onQueryChange:z,hideCompleted:C,onHideCompletedChange:D}),0===I.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"No work matches the current search or filters."}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"overflow-hidden rounded-md border",role:"tree",children:[(0,d.jsxs)("div",{className:"hidden grid-cols-[minmax(0,1fr)_5rem_5rem_4rem_5.5rem_3rem] gap-x-3 border-b bg-muted/30 px-2 py-2 text-xs font-medium text-muted-foreground sm:grid",children:[(0,d.jsx)("span",{children:"Work"}),(0,d.jsx)("span",{children:"Size"}),(0,d.jsx)("span",{className:"text-center",children:"People"}),(0,d.jsx)("span",{children:"Items"}),(0,d.jsx)("span",{className:"text-center",children:"Status"}),(0,d.jsx)("span",{className:"sr-only pl-2",children:"Actions"})]}),M.map(a=>(0,d.jsx)(A,{node:a,level:1,expanded:J,selectedEpicId:f,selectedStoryId:g,onToggle:T},`${a.id}:${a.filePath}`))]}),(0,d.jsx)(k.r,{page:N,totalPages:Q,totalCount:P,pageSize:O,onPageChange:R,onPageSizeChange:S})]})]})]})]})}},11784:(a,b,c)=>{"use strict";c.d(b,{WorkItemsList:()=>Q});var d=c(48249),e=c(67484),f=c(33191);function g({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,d.jsx)("table",{"data-slot":"table",className:(0,f.cn)("w-full caption-bottom text-sm",a),...b})})}function h({className:a,...b}){return(0,d.jsx)("thead",{"data-slot":"table-header",className:(0,f.cn)("[&_tr]:border-b",a),...b})}function i({className:a,...b}){return(0,d.jsx)("tbody",{"data-slot":"table-body",className:(0,f.cn)("[&_tr:last-child]:border-0",a),...b})}function j({className:a,...b}){return(0,d.jsx)("tr",{"data-slot":"table-row",className:(0,f.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",a),...b})}function k({className:a,...b}){return(0,d.jsx)("th",{"data-slot":"table-head",className:(0,f.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",a),...b})}function l({className:a,...b}){return(0,d.jsx)("td",{"data-slot":"table-cell",className:(0,f.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",a),...b})}var m=c(64034),n=c(54811),o=c(31168),p=c(54958);function q({id:a,title:b,kind:c="epic"}){return(0,d.jsx)(o.Bc,{children:(0,d.jsxs)(o.m_,{children:[(0,d.jsx)(o.k$,{render:(0,d.jsx)(n.E,{variant:"outline",className:(0,f.cn)("cursor-default font-mono text-xs",(0,p.YH)(c)),title:b||a}),children:a}),(0,d.jsx)(o.ZI,{children:b||a})]})})}var r=c(40988),s=c(75464),t=c(15732),u=c(97509),v=c(84382),w=c(86765);function x({label:a,sortKey:b,activeKey:c,direction:e,onSort:g,className:h,align:i="start"}){let j=c===b;return(0,d.jsx)(k,{"aria-sort":j?"asc"===e?"ascending":"descending":"none",className:(0,f.cn)("p-0",h),children:(0,d.jsxs)("button",{type:"button",onClick:()=>g(b),className:(0,f.cn)("inline-flex h-10 w-full items-center gap-1.5 px-2 font-medium whitespace-nowrap","rounded-sm hover:bg-muted/60 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",j?"text-foreground":"text-foreground/80","center"===i&&"justify-center text-center","end"===i&&"justify-end text-right","start"===i&&"justify-start text-left"),children:[(0,d.jsx)("span",{children:a}),j&&"asc"===e?(0,d.jsx)(v.A,{className:"size-3.5 shrink-0 text-foreground","aria-hidden":!0}):j&&"desc"===e?(0,d.jsx)(w.A,{className:"size-3.5 shrink-0 text-foreground","aria-hidden":!0}):null,(0,d.jsx)("span",{className:"sr-only",children:j?"asc"===e?"sorted ascending; activate to sort descending":"sorted descending; activate to clear sort":"activate to sort ascending"})]})})}var y=c(67251),z=c(53778),A=c(21682),B=c(63160),C=c(11923),D=c(67565);let E={XS:1,S:2,M:3,L:4,XL:5,XXL:6},F={E:1,S:2,T:3,B:4};function G(a){return a?.trim()?E[a.trim().toUpperCase()]??null:null}function H(a){let b=a.trim().match(/^([A-Za-z]+)-(\d+)$/);if(!b)return null;let c=b[1].toUpperCase();return{prefixRank:F[c]??100+c.charCodeAt(0),num:Number(b[2]),raw:a.trim()}}function I(a,b,c){if(null===a&&null===b)return 0;if(null===a)return 1;if(null===b)return -1;let d=a-b;return"asc"===c?d:-d}function J(a,b,c){let d=a?.trim()??"",e=b?.trim()??"";if(!d&&!e)return 0;if(!d)return 1;if(!e)return -1;let f=d.localeCompare(e,void 0,{sensitivity:"base",numeric:!0});return"asc"===c?f:-f}function K(a,b,c){var d,e;let f,g,h=a?.trim()??"",i=b?.trim()??"";if(!h&&!i)return 0;if(!h)return 1;if(!i)return -1;let j=(d=h,e=i,f=H(d),g=H(e),f&&g?f.prefixRank!==g.prefixRank?f.prefixRank-g.prefixRank:f.num!==g.num?f.num-g.num:f.raw.localeCompare(g.raw):d.localeCompare(e,void 0,{sensitivity:"base",numeric:!0}));return"asc"===c?j:-j}let L={epic:0,story:1,task:2,bug:3};function M(a){return a?.trim()?L[a.trim().toLowerCase()]??null:null}function N(a,b){let c=new Set,d=[];for(let e of[...a??[],...b??[]]){let a=(e.email||e.name||"").trim().toLowerCase();!a||c.has(a)||(c.add(a),d.push((e.name||e.email||"").trim().toLowerCase()))}return d.sort((a,b)=>a.localeCompare(b,void 0,{sensitivity:"base"})),d.join(", ")}var O=c(17550),P=c(52297);function Q({list:a,countableCompletions:b,initialHideCompleted:c=!1}){let{project:f,rows:n,errors:o}=a,[v,w]=(0,e.useState)(""),[E,F]=(0,C.M)("workItems",c),[H,L]=(0,e.useState)([]),[R,S]=(0,e.useState)([]),[T,U]=(0,e.useState)(P.er),{sort:V,onSort:W}=function(a=null){let[b,c]=(0,e.useState)(a);return{sort:b,onSort:(0,e.useCallback)(a=>{c(b=>b?.key!==a?{key:a,direction:"asc"}:"asc"===b.direction?{key:a,direction:"desc"}:null)},[])}}(),X=(0,e.useMemo)(()=>(0,P.z5)(n),[n]),Y=(0,e.useMemo)(()=>(0,P.j8)(n),[n]),Z=(0,e.useMemo)(()=>n.map(a=>a.completedAt),[n]),$=(0,e.useMemo)(()=>b??n.map(a=>({completedAt:a.completedAt,points:a.points})),[b,n]),_=(0,e.useMemo)(()=>(0,P.Eq)(n,{query:v,hideCompleted:E,parentKeys:H,selectedTags:R,timeframe:T}),[n,v,E,H,R,T]),aa=(0,e.useMemo)(()=>V?_.map((a,b)=>({row:a,index:b})).sort((a,b)=>{let c=function(a,b,c){var d,e,f,g,h,i,j,k,l,m;switch(c.key){case"id":return K(a.id,b.id,c.direction);case"title":return J(a.title,b.title,c.direction);case"size":let n,o;return d=a.size,e=b.size,f=c.direction,null!==(o=I(n=G(d),G(e),f))&&0!==o?o:0===o&&null!==n?0:J(d,e,f);case"epic":return function(a,b,c){let d=(a.epicTitle?.trim()||a.epicId?.trim()||"").toLowerCase(),e=(b.epicTitle?.trim()||b.epicId?.trim()||"").toLowerCase();if(!d&&!e)return K(a.epicId,b.epicId,c);if(!d)return 1;if(!e)return -1;let f=d.localeCompare(e,void 0,{sensitivity:"base"});return 0!==f?"asc"===c?f:-f:K(a.epicId,b.epicId,c)}(a,b,c.direction);case"points":return g=a.points,h=b.points,i=c.direction,I(null==g||Number.isNaN(g)?null:g,null==h||Number.isNaN(h)?null:h,i)??0;case"status":return function(a,b,c){let d=a?.trim()??"",e=b?.trim()??"";if(!d&&!e)return 0;if(!d)return 1;if(!e)return -1;let f=(0,D.LV)(d)-(0,D.LV)(e);return"asc"===c?f:-f}(a.status,b.status,c.direction);case"priority":return function(a,b,c){let d=a?.trim()??"",e=b?.trim()??"";if(!d&&!e)return 0;if(!d)return 1;if(!e)return -1;let f=(0,D.LO)(d)-(0,D.LO)(e);return"asc"===c?f:-f}(a.priority,b.priority,c.direction);case"type":let p,q;return j=a.kind??a.type,k=b.kind??b.type,l=c.direction,null!==(q=I(p=M(j),M(k),l))&&0!==q?q:0===q&&null!==p?0:J(j,k,l);case"people":return m=c.direction,J(N(a.reporters,a.resolvers),N(b.reporters,b.resolvers),m);default:return 0}}(a.row,b.row,V);return 0!==c?c:a.index-b.index}).map(({row:a})=>a):[..._],[_,V]),{pageRows:ab,page:ac,pageSize:ad,totalCount:ae,totalPages:af,setPage:ag,setPageSize:ah}=(0,B.K)(aa,[(0,P.ZK)(f.id,{query:v,hideCompleted:E,parentKeys:H,selectedTags:R,timeframe:T}),!V?"":`${V.key}:${V.direction}`].join("|")),ai=n.length>0,aj=!!v.trim()||E||H.length>0||R.length>0||(0,P.zi)(T);return(0,d.jsxs)(m.Zp,{children:[(0,d.jsxs)(m.aR,{children:[(0,d.jsx)(m.ZB,{className:"font-head text-xl",children:"Work items"}),(0,d.jsxs)(m.BT,{children:[(0,d.jsx)("span",{className:"font-medium text-foreground",children:f.name}),(0,d.jsx)("span",{className:"mt-1 block text-xs text-muted-foreground",children:"Stories and epic-direct tasks/bugs \xb7 open by status/priority/created; done by newest solved date"})]}),ai?(0,d.jsx)(m.X9,{children:(0,d.jsx)(y.r,{id:`workitems-timeframe-${f.id}`,value:T,onChange:U,completedAts:Z,countableCompletions:$})}):null]}),(0,d.jsxs)(m.Wu,{className:"flex flex-col gap-4",children:[o.length>0?(0,d.jsxs)("div",{role:"status",className:"rounded border-2 border-destructive/40 bg-destructive/10 px-3 py-2 text-sm",children:[(0,d.jsxs)("p",{className:"font-medium text-destructive",children:[o.length," issue",1===o.length?"":"s"," loading work items"]}),(0,d.jsx)("ul",{className:"mt-2 flex flex-col gap-1 font-mono text-xs text-muted-foreground",children:o.map(a=>(0,d.jsxs)("li",{children:[(0,O._)(a.filePath),": ",a.message]},`${a.filePath}:${a.message}`))})]}):null,ai?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(t.n,{searchId:`workitems-search-${f.id}`,query:v,onQueryChange:w,hideCompleted:E,onHideCompletedChange:F,parentOptions:X,parentKeys:H,onParentKeysChange:L,tagOptions:Y,selectedTags:R,onSelectedTagsChange:S}),0===_.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:aj?"No work items match the current search or filters.":"No stories or epic-direct tasks on this board yet."}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(g,{children:[(0,d.jsx)(h,{children:(0,d.jsxs)(j,{children:[(0,d.jsx)(k,{className:"w-10"}),(0,d.jsx)(x,{label:"ID",sortKey:"id",activeKey:V?.key??null,direction:V?.direction??null,onSort:W}),(0,d.jsx)(x,{label:"Type",sortKey:"type",activeKey:V?.key??null,direction:V?.direction??null,onSort:W}),(0,d.jsx)(x,{label:"Title",sortKey:"title",activeKey:V?.key??null,direction:V?.direction??null,onSort:W}),(0,d.jsx)(x,{label:"Epic",sortKey:"epic",activeKey:V?.key??null,direction:V?.direction??null,onSort:W}),(0,d.jsx)(x,{label:"Size",sortKey:"size",activeKey:V?.key??null,direction:V?.direction??null,onSort:W}),(0,d.jsx)(x,{label:"People",sortKey:"people",activeKey:V?.key??null,direction:V?.direction??null,onSort:W,className:"w-16 text-center"}),(0,d.jsx)(x,{label:"Priority",sortKey:"priority",activeKey:V?.key??null,direction:V?.direction??null,onSort:W,align:"center"}),(0,d.jsx)(x,{label:"Status",sortKey:"status",activeKey:V?.key??null,direction:V?.direction??null,onSort:W,align:"center"})]})}),(0,d.jsx)(i,{children:ab.map(a=>{let b="story"===a.kind?"story":"item";return(0,d.jsxs)(j,{className:(0,p.pb)(a.status),children:[(0,d.jsx)(l,{className:"w-10 pr-0",children:(0,d.jsx)(z.CP,{itemRef:{kind:b,id:a.id,title:a.title,filePath:a.filePath,itemType:"task"===a.kind||"bug"===a.kind?a.kind:void 0}})}),(0,d.jsx)(l,{children:(0,d.jsx)(s.nU,{id:a.id,created:a.created})}),(0,d.jsx)(l,{children:(0,d.jsx)(p.wF,{type:a.kind})}),(0,d.jsx)(l,{className:"max-w-[16rem] whitespace-normal font-medium",children:a.title}),(0,d.jsx)(l,{children:(0,d.jsx)(q,{id:a.epicId,title:a.epicTitle})}),(0,d.jsx)(l,{children:(0,d.jsx)(s.Aw,{size:a.size,points:a.points})}),(0,d.jsx)(l,{className:"text-center",children:(0,d.jsx)("div",{className:"flex justify-center",children:(0,d.jsx)(A.O,{reporters:a.reporters,resolvers:a.resolvers})})}),(0,d.jsx)(l,{className:"text-center",children:(0,d.jsx)("div",{className:"inline-flex w-full justify-center",children:(0,d.jsx)(p.YJ,{priority:a.priority})})}),(0,d.jsx)(l,{className:"text-center",children:(0,d.jsx)("div",{className:"inline-flex w-full justify-center",children:"story"===a.kind&&a.workItemCount>0?(0,d.jsx)(r.P,{done:a.doneWorkItemCount,total:a.workItemCount}):(0,d.jsx)(s.Bm,{status:a.status,solvedAt:a.completedAt})})})]},`${f.id}:${a.kind}:${a.id}:${a.filePath}`)})})]}),(0,d.jsx)(u.r,{page:ac,totalPages:af,totalCount:ae,pageSize:ad,onPageChange:ag,onPageSizeChange:ah})]})]}):(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"No stories or epic-direct tasks on this board yet."})]})]})}},11923:(a,b,c)=>{"use strict";c.d(b,{M:()=>f});var d=c(67484);let e={epics:"taskmark_hide_completed_epics",stories:"taskmark_hide_completed_stories",tasks:"taskmark_hide_completed_tasks",overallWorkItems:"taskmark_hide_completed_overall_work_items",workItems:"taskmark_hide_completed_work_items"};function f(a,b=!1){let[c,g]=(0,d.useState)(b);return[c,(0,d.useCallback)(b=>{!function(a,b){if("u"<typeof document)return;let c=e[a];document.cookie=`${c}=${b?"1":"0"}; path=/; max-age=31536000; SameSite=Lax`}(a,b),g(b)},[a])]}},11938:(a,b,c)=>{"use strict";c.d(b,{ListViewSwitcher:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ListViewSwitcher() from the server but ListViewSwitcher is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/list-view-switcher.tsx","ListViewSwitcher")},13259:(a,b,c)=>{"use strict";c.d(b,{D_:()=>w,G4:()=>o,Mh:()=>u,NB:()=>q,R5:()=>m,WS:()=>y,_i:()=>t,ad:()=>x,er:()=>k,iK:()=>p,oU:()=>r,xp:()=>n,z_:()=>s,zi:()=>l});var d=c(88128),e=c(56401),f=c(78586),g=c(88629),h=c(72066),i=c(77246),j=c(59812);let k={mode:"none"};function l(a){return"none"!==a.mode}function m(a){return"none"===a.mode?"none":"weeks"===a.mode?`w:${a.year}:${a.weekFrom}-${a.weekTo}`:`r:${a.from}:${a.to}`}function n(a){let b=a.getFullYear(),c=String(a.getMonth()+1).padStart(2,"0"),d=String(a.getDate()).padStart(2,"0");return`${b}-${c}-${d}`}function o(a){return{year:(0,d.p)(a),week:(0,e.s)(a)}}function p(a,b,c){let d=a,e=b+c;for(;e<1;)d-=1,e+=q(d);for(;e>q(d);)e-=q(d),d+=1;return{year:d,week:e}}function q(a){return(0,f.T)(new Date(a,11,28))}function r(a){let b={};for(let c of a){let a=(0,j.kT)(c);if(!a)continue;let{year:d,week:e}=o(a),f=b[d];f?(f.min=Math.min(f.min,e),f.max=Math.max(f.max,e)):b[d]={min:e,max:e}}return{years:Object.keys(b).map(Number).sort((a,b)=>a-b),weeksByYear:b}}function s(a=new Date){let{year:b,week:c}=o(a);return{year:b,weekFrom:Math.max(1,c-2),weekTo:c}}function t(a){return"weeks"===a.mode&&a.weekFrom!==a.weekTo}function u(a,b){return`${a}-W${b}`}function v(a){return"number"==typeof a&&Number.isFinite(a)&&a>0?a:0}function w(a){let b=new Map;for(let c of a){let a=(0,j.kT)(c.completedAt);if(!a)continue;let d=v(c.points);if(d<=0)continue;let{year:e,week:f}=o(a),g=u(e,f);b.set(g,(b.get(g)??0)+d)}return b}function x(a){let b=new Map;for(let c of a){let a=(0,j.kT)(c.completedAt);if(!a)continue;let d=v(c.points);if(d<=0)continue;let e=n(a);b.set(e,(b.get(e)??0)+d)}return b}function y(a,b){if("none"===a.mode)return!0;let c=(0,j.kT)(b);if(!c)return!1;if("weeks"===a.mode){let{year:b,week:d}=o(c);if(b!==a.year)return!1;let e=Math.min(a.weekFrom,a.weekTo),f=Math.max(a.weekFrom,a.weekTo);return d>=e&&d<=f}let d=(0,j.kT)(a.from),e=(0,j.kT)(a.to);if(!d||!e)return!1;let f=(0,g.o)(d<=e?d:e),k=(0,h.D)(d<=e?e:d);return(0,i.v)(c,{start:f,end:k})}},15377:(a,b,c)=>{"use strict";c.d(b,{WorkItemSheetProvider:()=>e});var d=c(77943);(0,d.registerClientReference)(function(){throw Error("Attempted to call useWorkItemSheet() from the server but useWorkItemSheet is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/work-item-sheet.tsx","useWorkItemSheet"),(0,d.registerClientReference)(function(){throw Error("Attempted to call hierarchyIdsForDetail() from the server but hierarchyIdsForDetail is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/work-item-sheet.tsx","hierarchyIdsForDetail"),(0,d.registerClientReference)(function(){throw Error("Attempted to call parentIdForDetail() from the server but parentIdForDetail is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/work-item-sheet.tsx","parentIdForDetail");let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call WorkItemSheetProvider() from the server but WorkItemSheetProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/work-item-sheet.tsx","WorkItemSheetProvider");(0,d.registerClientReference)(function(){throw Error("Attempted to call ViewWorkItemButton() from the server but ViewWorkItemButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/work-item-sheet.tsx","ViewWorkItemButton")},15732:(a,b,c)=>{"use strict";c.d(b,{n:()=>P});var d=c(48249),e=c(29813),f=c(45535),g=c(26284),h=c(52297),i=c(33191);function j({value:a,onChange:b,placeholder:c="Search by id or name…",className:k,id:l="list-search"}){return(0,d.jsxs)("div",{className:(0,i.cn)(h.z_,"min-w-[12rem] flex-1 max-w-sm",k),children:[(0,d.jsx)(e.A,{className:"size-3.5 shrink-0 text-muted-foreground","aria-hidden":!0}),(0,d.jsx)("input",{id:l,type:"search",value:a,onChange:a=>b(a.target.value),placeholder:c,className:"min-w-16 flex-1 bg-transparent outline-none placeholder:text-muted-foreground","aria-label":"Search by work item id or name"}),a?(0,d.jsx)(g.$,{type:"button",variant:"ghost",size:"icon-xs",className:"-mr-1 opacity-50 hover:opacity-100",onClick:()=>b(""),"aria-label":"Clear search",children:(0,d.jsx)(f.A,{className:"size-3.5"})}):null]})}var k=c(68704),l=c(19091),m=c(12505);function n({className:a,size:b="default",...c}){return(0,d.jsx)(l.l,{"data-slot":"switch","data-size":b,className:(0,i.cn)("peer group/switch relative inline-flex shrink-0 cursor-pointer items-center border-2 border-foreground transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary aria-invalid:border-destructive data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-checked:bg-primary data-disabled:cursor-not-allowed data-disabled:opacity-50",a),...c,children:(0,d.jsx)(m.p,{"data-slot":"switch-thumb",className:"pointer-events-none mx-0.5 block border-2 border-foreground bg-primary transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-5 group-data-[size=sm]/switch:data-checked:translate-x-4 data-checked:bg-background data-unchecked:translate-x-0"})})}function o({checked:a,onCheckedChange:b,id:c="hide-completed",className:e}){return(0,d.jsxs)(k.J,{htmlFor:c,className:(0,i.cn)("inline-flex h-8 cursor-pointer items-center gap-2 px-1 text-sm font-normal text-muted-foreground hover:text-foreground",e),children:[(0,d.jsx)(n,{id:c,size:"sm",checked:a,onCheckedChange:b,"aria-label":"Hide completed"}),"Hide completed"]})}var p=c(67484),q=c(61488),r=c(52899),s=c(48607),t=c(26447),u=c(1359),v=c(30250),w=c(35116),x=c(84412),y=c(720),z=c(65919),A=c(66853),B=c(26872),C=c(35471),D=c(21654);(0,D.F)("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",{variants:{align:{"inline-start":"order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]","inline-end":"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]","block-start":"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2","block-end":"order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"}},defaultVariants:{align:"inline-start"}}),(0,D.F)("flex items-center gap-2 text-sm shadow-none",{variants:{size:{xs:"h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",sm:"","icon-xs":"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}});let E=q.i;function F({className:a,side:b="bottom",sideOffset:c=6,align:e="start",alignOffset:f=0,anchor:g,...h}){return(0,d.jsx)(r.K,{children:(0,d.jsx)(s.o,{side:b,sideOffset:c,align:e,alignOffset:f,anchor:g,className:"isolate z-50",children:(0,d.jsx)(t.I,{"data-slot":"combobox-content","data-chips":!!g,className:(0,i.cn)("group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded border-2 bg-popover text-popover-foreground shadow-md duration-100 data-[chips=true]:min-w-(--anchor-width) data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...h})})})}function G({className:a,...b}){return(0,d.jsx)(u.e,{"data-slot":"combobox-list",className:(0,i.cn)("no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0",a),...b})}function H({className:a,children:b,...c}){return(0,d.jsxs)(v.x,{"data-slot":"combobox-item",className:(0,i.cn)("relative flex w-full cursor-default items-center gap-2 rounded-sm py-1 pr-8 pl-1.5 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground not-data-[variant=destructive]:data-highlighted:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",a),...c,children:[b,(0,d.jsx)(w.Q,{render:(0,d.jsx)("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center"}),children:(0,d.jsx)(C.A,{className:"pointer-events-none"})})]})}function I({className:a,...b}){return(0,d.jsx)(x.$,{"data-slot":"combobox-empty",className:(0,i.cn)("hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex",a),...b})}function J({className:a,...b}){return(0,d.jsx)(y.H,{"data-slot":"combobox-chips",className:(0,i.cn)("flex min-h-8 flex-wrap items-center gap-1 rounded border-2 bg-input bg-clip-padding px-2.5 py-1 text-sm shadow-sm transition-colors focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-primary has-aria-invalid:border-destructive has-data-[slot=combobox-chip]:px-1",a),...b})}function K({className:a,children:b,showRemove:c=!0,...e}){return(0,d.jsxs)(z.e,{"data-slot":"combobox-chip",className:(0,i.cn)("flex h-[calc(--spacing(5.25))] w-fit items-center justify-center gap-1 rounded-sm border-2 bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0",a),...e,children:[b,c&&(0,d.jsx)(A.a,{render:(0,d.jsx)(g.$,{variant:"ghost",size:"icon-xs"}),className:"-ml-1 opacity-50 hover:opacity-100","data-slot":"combobox-chip-remove",children:(0,d.jsx)(f.A,{className:"pointer-events-none"})})]})}function L({className:a,...b}){return(0,d.jsx)(B.o,{"data-slot":"combobox-chip-input",className:(0,i.cn)("min-w-16 flex-1 outline-none",a),...b})}function M(){return p.useRef(null)}function N({options:a,value:b,onChange:c,id:e="parent-filter"}){let f=M(),g=a.filter(a=>b.includes(a.key));return 0===a.length?(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"No parents on board"}):(0,d.jsxs)(E,{multiple:!0,items:a,value:g,onValueChange:a=>{c((a??[]).map(a=>a.key))},itemToStringLabel:a=>`${a.chipLabel} ${a.title} ${a.label}`,isItemEqualToValue:(a,b)=>a?.key===b?.key,children:[(0,d.jsxs)(J,{ref:f,className:(0,i.cn)(h.z_,"min-w-[16rem] max-w-md"),children:[g.map(a=>(0,d.jsx)(K,{children:a.chipLabel},a.key)),(0,d.jsx)(L,{id:e,placeholder:0===g.length?"Filter by parent epic or story…":"Add parent…","aria-label":"Filter by parent epic or story"})]}),(0,d.jsxs)(F,{anchor:f,className:"w-80",children:[(0,d.jsx)(I,{children:"No matching parents"}),(0,d.jsx)(G,{children:a=>(0,d.jsx)(H,{value:a,children:(0,d.jsx)("span",{className:"truncate",children:a.label})},a.key)})]})]})}function O({options:a,value:b,onChange:c,id:e="tags-filter"}){let f=M();return 0===a.length?(0,d.jsx)("span",{className:"text-xs text-muted-foreground",children:"No tags on board"}):(0,d.jsxs)(E,{multiple:!0,items:a,value:b,onValueChange:a=>c(a??[]),children:[(0,d.jsxs)(J,{ref:f,className:(0,i.cn)(h.z_,"min-w-[12rem] max-w-xs"),children:[b.map(a=>(0,d.jsx)(K,{children:a},a)),(0,d.jsx)(L,{id:e,placeholder:0===b.length?"Filter by tags…":"Add tag…","aria-label":"Filter by tags"})]}),(0,d.jsxs)(F,{anchor:f,children:[(0,d.jsx)(I,{children:"No matching tags"}),(0,d.jsx)(G,{children:a=>(0,d.jsx)(H,{value:a,children:a},a)})]})]})}function P({query:a,onQueryChange:b,hideCompleted:c,onHideCompletedChange:e,parentOptions:f,parentKeys:g=[],onParentKeysChange:h,tagOptions:k,selectedTags:l=[],onSelectedTagsChange:m,searchId:n,className:p}){let q=!!(f&&h),r=!!(k&&m);return(0,d.jsxs)("div",{className:(0,i.cn)("flex flex-wrap items-center gap-2 border-b border-border pb-3",p),role:"search",children:[(0,d.jsx)(j,{id:n,value:a,onChange:b}),q?(0,d.jsx)(N,{options:f,value:g,onChange:h}):null,r?(0,d.jsx)(O,{options:k,value:l,onChange:m}):null,(0,d.jsx)(o,{checked:c,onCheckedChange:e,id:n?`${n}-hide-completed`:void 0})]})}},17550:(a,b,c)=>{"use strict";function d(a){let b=a.replace(/\\/g,"/").split("/").filter(Boolean);return b[b.length-1]||a}c.d(b,{_:()=>d})},17771:(a,b,c)=>{"use strict";c.d(b,{AppBar:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call AppBar() from the server but AppBar is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/app-bar.tsx","AppBar")},18689:(a,b,c)=>{"use strict";c.d(b,{ChangelogPanel:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ChangelogPanel() from the server but ChangelogPanel is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/changelog-panel.tsx","ChangelogPanel")},19651:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"0014966349e518123f1fb8f15ae9207d9422ed4dd3":()=>d.HH,"00566f9a020d2e9c02bf15aa919f880c0e2a476cfc":()=>d.ap,"006839ae44e9ea0886604d7db5c62e5da636d150c9":()=>d.xS,"40667a83a15b7200835fa0a354a23e32226b9bb943":()=>d.s3,"6020da1a4422a94c96fa68432bbed44a06448c0d67":()=>Z,"607dcc05d485bfbac997998b08a70df649d011e9de":()=>Y,"6081a8fbc9ac5b6fc39063487c96b1467195bf08c8":()=>d.yJ,"60fc35e9e521c3a78cadf92e25212185983074de35":()=>d.RM});var d=c(61132),e=c(95349),f=c(71324),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(76427);let l=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function m(a){let b=a.startsWith("---")?a.replace(/^(---\r?\n[\s\S]*?\S)---(\r?\n)/,"$1\n---$2"):a,c=l.exec(b);if(!c)return null;let d=(0,k.qg)(c[1]);return!d||"object"!=typeof d||Array.isArray(d)?null:d}function n(a,b=""){return"string"==typeof a?a:"number"==typeof a||"boolean"==typeof a?String(a):b}function o(a){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return null}function p(a){return Array.isArray(a)?a.map(a=>n(a)).filter(Boolean):[]}function q(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b="string"==typeof a.name?a.name:"number"==typeof a.name?String(a.name):"",c="string"==typeof a.email?a.email:"number"==typeof a.email?String(a.email):"",d="string"==typeof a.initials?a.initials:"number"==typeof a.initials?String(a.initials):"";if(!b&&!c)return null;let e=b||c.split("@")[0]||"";return d||(d=function(a){let b=a.trim().split(/[\s\-_.]+/).filter(Boolean);if(0===b.length)return"?";if(1===b.length){let a=b[0];return(a.length>=2?a.slice(0,2):a.slice(0,1)).toUpperCase()}return(b[0][0]+b[b.length-1][0]).toUpperCase()}(e)),{name:e,email:c,initials:d.toUpperCase()}}(c);a&&b.push(a)}return b}function r(a){let b=a.replace(/^(---\r?\n[\s\S]*?\S)---(\r?\n)/,"$1\n---$2"),c=/^---\r?\n[\s\S]*?\r?\n---(?:\r?\n|$)/.exec(b);return c?b.slice(c[0].length).trim():a.trim()}function s(a){let b={},c=a.split(/\r?\n/),d=null,e=[],f=()=>{null!=d&&(b[d]=e.join("\n").trim(),e.length=0)};for(let a of c){let b=/^##\s+(.+?)\s*$/.exec(a);if(b){f(),d=b[1].trim();continue}null!=d&&e.push(a)}return f(),b}function t(a,...b){let c=Object.fromEntries(Object.entries(a).map(([a,b])=>[a.toLowerCase(),b]));for(let a of b){let b=c[a.toLowerCase()];if(null!=b&&""!==b)return b}return""}function u(a){let b=[];for(let c of a.split(/\r?\n/)){let a=/^\s*[-*]\s+\[([ xX])\]\s+(.*)$/.exec(c);a&&b.push({checked:"x"===a[1].toLowerCase(),text:a[2].trim()})}return b}function v(a){let b=a.split(/\r?\n/).map(a=>a.trim()).filter(Boolean);for(let a=0;a<b.length-1;a++){if(!b[a].startsWith("|"))continue;let c=w(b[a]),d=b[a+1];if(!d||!/^\|?\s*:?-{3,}/.test(d))continue;let e=[];for(let c=a+2;c<b.length&&b[c].startsWith("|");c++){let a=w(b[c]);a.every(a=>""===a||"—"===a||"-"===a)||e.push(a)}return{headers:c,rows:e}}return null}function w(a){let b=a.trim();return b.startsWith("|")&&(b=b.slice(1)),b.endsWith("|")&&(b=b.slice(0,-1)),b.split("|").map(a=>a.trim())}function x(a){if(!a)return[];let b=a.headers.map(a=>a.toLowerCase());return a.rows.map(a=>{let c={};return b.forEach((b,d)=>{c[b]=a[d]??""}),c})}function y(a,...b){for(let c of b){let b=a[c.toLowerCase()];if(null!=b&&""!==b)return b}for(let c of b){let b=Object.entries(a).find(([a])=>a.includes(c.toLowerCase()));if(b)return b[1]}return""}function z(a){let b=x(v(t(s(r(a)),"Work log"))),c=0,d=!1;for(let a of b){let b=Date.parse(y(a,"started (utc)","started")),e=Date.parse(y(a,"ended (utc)","ended"));Number.isFinite(b)&&Number.isFinite(e)&&!(e<b)&&(d=!0,c+=e-b)}return{actualMinutes:d?Math.floor(c/6e4):null,actualMs:d?c:null}}function A(a){return"boolean"==typeof a?a:"string"==typeof a&&"true"===a.toLowerCase()}function B(a){return x(v(a)).map(a=>({sha:y(a,"sha"),repo:y(a,"repo"),date:y(a,"date (utc)","date"),author:y(a,"author"),message:y(a,"message")}))}function C(a){return x(v(a)).map(a=>({session:y(a,"session"),actor:y(a,"actor"),started:y(a,"started (utc)","started"),ended:y(a,"ended (utc)","ended"),summary:y(a,"summary")}))}function D(a){return x(v(a)).map(a=>({index:y(a,"#","index"),when:y(a,"when (utc)","when"),kind:y(a,"kind"),author:y(a,"author"),summary:y(a,"summary")}))}function E(a,b,c){let d,e;try{d=m(a)}catch(a){return{ok:!1,filePath:b,message:a instanceof Error?a.message:"Invalid YAML frontmatter"}}if(!d)return{ok:!1,filePath:b,message:"Missing or invalid YAML frontmatter"};let f=n(d.id),g="epic"===(e=n(d.type).toLowerCase())||"story"===e||"task"===e||"bug"===e?e:"epic"===c?"epic":"story"===c?"story":f.startsWith("B-")?"bug":f.startsWith("E-")?"epic":f.startsWith("S-")?"story":"task",h=function(a,b,c,d){let e=n(a.id),f=n(a.title);if(!e||!f)return null;let g=z(b);return{id:e,title:f,type:d,status:n(a.status,"unknown"),priority:n(a.priority,"medium"),size:n(a.size,"—"),points:o(a.points),actualMinutes:g.actualMinutes,actualMs:g.actualMs,tags:p(a.tags),reporters:q(a.reporters),resolvers:q(a.resolvers),blocked:A(a.blocked),cancelled:A(a.cancelled),parent:n(a.parent),epic:n(a.epic),created:n(a.created),updated:n(a.updated),startedAt:n(a.started_at),completedAt:n(a.completed_at),filePath:c}}(d,a,b,g);if(!h)return{ok:!1,filePath:b,message:"Frontmatter requires id and title"};let i=s(r(a));if("epic"===g)return{ok:!0,detail:{...h,type:"epic",goal:t(i,"Goal"),scope:t(i,"Scope"),outOfScope:t(i,"Out of scope"),successMetrics:t(i,"Success metrics"),storiesMarkdown:t(i,"Stories"),children:[],promptFeedback:[],commits:B(t(i,"Commits")),workLog:C(t(i,"Work log"))}};if("story"===g){let a=t(i,"Acceptance criteria");return{ok:!0,detail:{...h,type:"story",userStory:t(i,"User story"),acceptanceCriteria:u(a),acceptanceCriteriaRaw:a,tasksMarkdown:t(i,"Tasks"),children:[],promptFeedback:D(t(i,"Prompt & feedback log","Prompt & feedback")),commits:B(t(i,"Commits")),workLog:C(t(i,"Work log"))}}}let j={...h,type:"bug"===g?"bug":"task",description:t(i,"Description"),acceptanceCriteria:"bug"===g?[]:u(t(i,"Acceptance criteria")),acceptanceCriteriaRaw:"bug"===g?"":t(i,"Acceptance criteria"),reproSteps:"bug"===g?t(i,"Repro steps"):"",fixCriteria:"bug"===g?t(i,"Fix criteria"):"",notes:t(i,"Notes"),promptFeedback:D(t(i,"Prompt & feedback log","Prompt & feedback")),commits:B(t(i,"Commits")),workLog:C(t(i,"Work log"))};if("bug"===g){let a=t(i,"Fix criteria");j.fixCriteria=a;let b=u(a);b.length>0&&(j.acceptanceCriteria=b,j.acceptanceCriteriaRaw=a)}return{ok:!0,detail:j}}function F(a,b,c){if(!b)return;let d=a.get(b);d?d.push(c):a.set(b,[c])}function G(a){let b=[],c=new Map,d=new Map;for(let e of function a(b){let c;try{c=h().readdirSync(b,{withFileTypes:!0})}catch{return[]}let d=[];for(let e of c){if(e.name.startsWith("."))continue;let c=j().join(b,e.name);if(e.isDirectory())if("items"===e.name){let a;try{a=h().readdirSync(c,{withFileTypes:!0})}catch{continue}for(let b of a)b.isFile()&&!b.name.startsWith(".")&&b.name.endsWith(".md")&&d.push(j().join(c,b.name))}else d.push(...a(c))}return d}(j().join(a,"epics")))try{let a=h().readFileSync(e,"utf8"),f=m(a);if(!f)continue;let g=n(f.type).toLowerCase(),i=n(f.id);if("task"!==g&&"bug"!==g||!i)continue;let j={filePath:e,raw:a,frontmatter:f,...z(a)};b.push(j),F(c,n(f.epic),j),F(d,n(f.parent),j)}catch{}return b.sort((a,b)=>a.filePath.localeCompare(b.filePath)),{boardPath:a,leaves:b,leavesByEpic:c,leavesByParent:d}}let H={XS:1,S:3,M:5,L:8,XL:13,XXL:21};function I(a){if(!a.trim())return null;let b=Date.parse(a);return Number.isFinite(b)?b:null}function J(a,b){return a.map(a=>({value:a,time:I(a)})).filter(a=>null!=a.time).sort((a,c)=>"min"===b?a.time-c.time:c.time-a.time)[0]?.value??""}function K(a,b,c,d){let e=new Map;for(let f of a)for(let a of b(f)){let b=c(a),g=e.get(b),h={id:f.id,title:f.title};if(g){d&&Object.assign(g,d(g,a)),g.workItems.some(a=>a.id===f.id)||g.workItems.push(h);continue}e.set(b,{...a,workItems:[h]})}return[...e.values()]}function L(a){return a.trim().replace(/\s+/g," ").toLowerCase()}function M(a){let b=L(a.actor),c=L(a.summary);return c?[b,c].join("\0"):[b,a.started,a.ended,""].join("\0")}function N(a,b){let c=J([a.started,b.started],"min"),d=J([a.ended,b.ended],"max");return{...a,started:c,ended:d}}function O(a,b){return a.sort((a,c)=>(I(b(a))??Number.MAX_SAFE_INTEGER)-(I(b(c))??Number.MAX_SAFE_INTEGER))}function P(a,b,c,d=G(a),e=!1){let f=("story"===c?d.leavesByParent.get(b)??[]:[...d.leavesByEpic.get(b)??[],...d.leavesByParent.get(b)??[]].filter((a,b,c)=>c.findIndex(b=>b.filePath===a.filePath)===b)).map(a=>(function(a,b){try{let c,{filePath:d,raw:e,frontmatter:f}=a,g=n(f.type).toLowerCase();if("task"!==g&&"bug"!==g)return null;let h=n(f.id);if(!h)return null;let i={actualMinutes:a.actualMinutes,actualMs:a.actualMs},j=b?E(e,d,"item"):null,k=j?.ok&&"epic"!==j.detail.type&&"story"!==j.detail.type?j.detail:null;return{id:h,title:n(f.title,h),parent:n(f.parent),epic:n(f.epic),status:n(f.status,"backlog"),points:(c=o(f.points),null!=c?Math.max(0,c):H[n(f.size).trim().toUpperCase()]??0),reporters:q(f.reporters),resolvers:q(f.resolvers),updated:n(f.updated),startedAt:n(f.started_at),completedAt:n(f.completed_at),...i,promptFeedback:k?.promptFeedback??[],commits:k?.commits??[],workLog:k?.workLog??[]}}catch{return null}})(a,e)).filter(a=>null!=a),g=function(a){if(0===a.length)return"backlog";let b=a.map(a=>a.trim().toLowerCase()),c=b.every(a=>"done"===a||"shelved"===a||"cancelled"===a);return c&&b.some(a=>"done"===a)?"done":c&&b.some(a=>"shelved"===a)?"shelved":c?"cancelled":b.every(a=>"backlog"===a)?"backlog":"in_progress"}(f.map(a=>a.status)),h=f.reduce((a,b)=>a+b.points,0),i=f.reduce((a,b)=>a+(b.actualMs??(b.actualMinutes??0)*6e4),0),j=f.filter(a=>"done"===a.status.trim().toLowerCase()||"shelved"===a.status.trim().toLowerCase()||"cancelled"===a.status.trim().toLowerCase());return{status:g,size:0===f.length?"—":h<=1?"XS":h<=3?"S":h<=5?"M":h<=8?"L":h<=13?"XL":"XXL",points:h,actualMinutes:Math.floor(i/6e4),actualMs:i,resolvers:function(a){let b=new Map;for(let c of a)for(let a of c.resolvers){let c=a.email.trim().toLowerCase()||a.name.trim().toLowerCase();c&&!b.has(c)&&b.set(c,a)}return[...b.values()]}(f),updated:J(f.map(a=>a.updated),"max"),startedAt:J(f.map(a=>a.startedAt),"min"),completedAt:j.length===f.length?J(j.map(a=>a.completedAt),"max"):"",promptFeedback:O(K(f,a=>a.promptFeedback,a=>[a.when,a.kind,a.author,a.summary].join("\0")),a=>a.when).map((a,b)=>({...a,index:String(b+1)})),commits:O(K(f,a=>a.commits,a=>[a.sha,a.repo,a.date,a.author,a.message].join("\0")),a=>a.date),workLog:O(K(f,a=>a.workLog,M,N),a=>a.started).map((a,b)=>({...a,session:String(b+1)})),leafCount:f.length,doneLeafCount:j.length}}function Q(a,b){let c,d=j().join(a,"epics");try{c=h().readdirSync(d,{withFileTypes:!0})}catch{return null}for(let a of c){if(!a.isDirectory()||a.name.startsWith("."))continue;let c=function(a,b){let c,d,e=j().join(a,"epic.md");if(!h().existsSync(e))return null;try{c=h().readFileSync(e,"utf8")}catch{return null}try{d=m(c)}catch{return null}if(!d)return null;let f=n(d.id),g=n(d.title);return f?{dirName:b,epicFile:e,id:f,title:g}:null}(j().join(d,a.name),a.name);if(c?.id===b)return c}return null}function R(a){let b,c=j().join(a,"items");try{b=h().readdirSync(c,{withFileTypes:!0})}catch{return[]}let d=[];for(let a of b)!(!a.isFile()||a.name.startsWith("."))&&a.name.endsWith(".md")&&d.push(j().join(c,a.name));return d.sort()}function S(a,b,c,d,e){let f,g,i;try{f=e?.raw??h().readFileSync(a,"utf8")}catch(d){return{error:{filePath:a,projectId:b.id,projectName:b.name,storyId:c,message:d instanceof Error?d.message:"Failed to read file"}}}try{g=e?.frontmatter??m(f)}catch(d){return{error:{filePath:a,projectId:b.id,projectName:b.name,storyId:c,message:d instanceof Error?d.message:"Invalid YAML frontmatter"}}}if(!g)return{error:{filePath:a,projectId:b.id,projectName:b.name,storyId:c,message:"Missing or invalid YAML frontmatter"}};let j=n(g.id),k=n(g.title);return j&&k?{item:{id:j,type:"bug"===(i=n(g.type).toLowerCase())?"bug":"task"===i?"task":j.startsWith("B-")?"bug":"task",title:k,status:n(g.status,"unknown"),priority:n(g.priority,"medium"),size:n(g.size,"—"),points:o(g.points),...e?{actualMinutes:e.actualMinutes,actualMs:e.actualMs}:z(f),tags:p(g.tags),reporters:q(g.reporters),resolvers:q(g.resolvers),created:n(g.created),updated:n(g.updated),completedAt:n(g.completed_at),parent:n(g.parent,c),epic:n(g.epic,d),filePath:a,project:{id:b.id,name:b.name,projectPath:b.projectPath,boardPath:b.boardPath}}}:{error:{filePath:a,projectId:b.id,projectName:b.name,storyId:c,message:"Frontmatter requires id and title"}}}function T(a){try{let b=h().readFileSync(a,"utf8"),c=m(b);if(!c)return null;let d=n(c.id),e=n(c.title);if(!d)return null;return{id:d,title:e,type:n(c.type).toLowerCase()}}catch{return null}}function U(a,b){if("epic"===a.type||a.id.startsWith("E-"))return{kind:"epic",id:a.id,title:a.title||a.id,filePath:b};if("story"===a.type||a.id.startsWith("S-"))return{kind:"story",id:a.id,title:a.title||a.id,filePath:b};if("task"===a.type||"bug"===a.type||a.id.startsWith("T-")||a.id.startsWith("B-")){let c="bug"===a.type||a.id.startsWith("B-")?"bug":"task";return{kind:"item",id:a.id,title:a.title||a.id,filePath:b,itemType:c}}return null}function V(a,b){let c,d=b.trim();if(!d)return null;let e=j().join(a,"epics");try{c=h().readdirSync(e,{withFileTypes:!0})}catch{return null}for(let a of c){let b;if(!a.isDirectory()||a.name.startsWith("."))continue;let c=j().join(e,a.name),f=j().join(c,"epic.md");if(h().existsSync(f)){let a=T(f);if(a?.id===d)return U(a,f)}let g=j().join(c,"items");try{for(let a of h().readdirSync(g)){if(!a.endsWith(".md")||a.startsWith("."))continue;let b=j().join(g,a),c=T(b);if(c?.id===d)return U(c,b)}}catch{}let i=j().join(c,"stories");try{b=h().readdirSync(i,{withFileTypes:!0})}catch{continue}for(let a of b){if(!a.isDirectory()||a.name.startsWith("."))continue;let b=j().join(i,a.name),c=j().join(b,"story.md");if(h().existsSync(c)){let a=T(c);if(a?.id===d)return U(a,c)}let e=j().join(b,"items");try{for(let a of h().readdirSync(e)){if(!a.endsWith(".md")||a.startsWith("."))continue;let b=j().join(e,a),c=T(b);if(c?.id===d)return U(c,b)}}catch{}}}return null}function W(a,b){let c=j().resolve(b);return a.find(a=>{var b;let d;return b=j().resolve(a.boardPath),""===(d=j().relative(b,c))||!d.startsWith("..")&&!j().isAbsolute(d)})??null}var X=c(24925);async function Y(a,b){let c=await (0,f.ek)(),d=(0,X.C)(c);if(0===d.projects.length)return{ok:!1,itemId:"string"==typeof a?a.trim():"",message:"No workspace configured"};let e=await (0,f.KQ)(),g=function(a,b){if(0===a.length)return null;if(b){let c=a.find(a=>a.id===b||a.boardPath===b);if(c)return c}return a[0]??null}(d.projects,d.autoconfig?null:e);return function(a,b,c){let d="string"==typeof b?b.trim():"";if(!d)return{ok:!1,itemId:"",message:"Missing work item id"};let e=c?.withinFilePath?.trim()||null;if(e){let b=W(a,e);if(!b)return{ok:!1,itemId:d,message:"File is outside configured Taskmark boards"};let c=V(b.boardPath,d);return c?{ok:!0,ref:c}:{ok:!1,itemId:d,message:`Work item ${d} was not found on this project board`}}let f=function(a,b,c){let d=c?.boardPath?.trim()||null;if(d){let c=a.find(a=>j().resolve(a.boardPath)===j().resolve(d)||a.boardPath===d)??null,e=V(c?.boardPath??d,b);return e?{...e,boardPath:c?.boardPath??d,projectId:c?.id??d}:null}let e=c?.preferProjectId?.trim()||null,f=e?[...a.filter(a=>a.id===e||a.boardPath===e),...a.filter(a=>a.id!==e&&a.boardPath!==e)]:a;if(e){let a=f[0];if(a&&(a.id===e||a.boardPath===e)){let c=V(a.boardPath,b);return c?{...c,boardPath:a.boardPath,projectId:a.id}:null}}for(let a of f){let c=V(a.boardPath,b);if(c)return{...c,boardPath:a.boardPath,projectId:a.id}}return null}(a,d,{boardPath:(c?.activeBoardPath?.trim()||null)??void 0});return f?{ok:!0,ref:{kind:f.kind,id:f.id,title:f.title,filePath:f.filePath,...f.itemType?{itemType:f.itemType}:{}}}:{ok:!1,itemId:d,message:`Work item ${d} was not found on the active board`}}(d.projects,a,{withinFilePath:b?.withinFilePath,activeBoardPath:g?.boardPath??null})}async function Z(a,b){let c=await (0,f.ek)(),d=(0,X.C)(c);return 0===d.projects.length?{ok:!1,filePath:a??"",message:"No workspace configured"}:function(a,b,c){let d;if(!b||"string"!=typeof b)return{ok:!1,filePath:b??"",message:"Missing file path"};let e=j().resolve(b);if(!e.endsWith(".md"))return{ok:!1,filePath:e,message:"Not a markdown file"};let f=W(a,e);if(!f)return{ok:!1,filePath:e,message:"File is outside configured Taskmark boards"};try{d=h().readFileSync(e,"utf8")}catch(a){return{ok:!1,filePath:e,message:a instanceof Error?a.message:"Failed to read file"}}let g=E(d,e,c);if(!g.ok||"epic"!==g.detail.type&&"story"!==g.detail.type)return g;let i=(void 0)??G(f.boardPath);return{ok:!0,detail:function(a,b,c){if("epic"===a.type){let d=[];for(let e of function(a,b,c){let d=Q(a.boardPath,b);if(!d)return{project:a,epicId:b,epicTitle:null,stories:[],errors:[{filePath:j().join(a.boardPath,"epics"),projectId:a.id,projectName:a.name,epicId:b,message:`Epic ${b} not found under this board`}]};let e=function(a){let b,c=j().join(a,"stories");try{b=h().readdirSync(c,{withFileTypes:!0})}catch{return[]}let d=[];for(let a of b){if(!a.isDirectory()||a.name.startsWith("."))continue;let b=j().join(c,a.name,"story.md");h().existsSync(b)&&d.push(b)}return d.sort()}(j().join(a.boardPath,"epics",d.dirName)),f=[],g=[];for(let d of e){let e=function(a,b,c,d){let e,f;try{e=h().readFileSync(a,"utf8")}catch(d){return{error:{filePath:a,projectId:b.id,projectName:b.name,epicId:c,message:d instanceof Error?d.message:"Failed to read file"}}}try{f=m(e)}catch(d){return{error:{filePath:a,projectId:b.id,projectName:b.name,epicId:c,message:d instanceof Error?d.message:"Invalid YAML frontmatter"}}}if(!f)return{error:{filePath:a,projectId:b.id,projectName:b.name,epicId:c,message:"Missing or invalid YAML frontmatter"}};let g=n(f.id),i=n(f.title);if(!g||!i)return{error:{filePath:a,projectId:b.id,projectName:b.name,epicId:c,message:"Frontmatter requires id and title"}};let j=P(b.boardPath,g,"story",d);return{story:{id:g,title:i,status:j.status,priority:n(f.priority,"medium"),size:j.size,points:j.points,actualMinutes:j.actualMinutes,actualMs:j.actualMs,tags:p(f.tags),reporters:q(f.reporters),resolvers:j.resolvers,created:n(f.created),updated:n(f.updated),completedAt:j.completedAt,parent:n(f.parent),epic:n(f.epic,c),workItemCount:j.leafCount,doneWorkItemCount:j.doneLeafCount,filePath:a,project:{id:b.id,name:b.name,projectPath:b.projectPath,boardPath:b.boardPath}}}}(d,a,b,c);e.story&&f.push(e.story),e.error&&g.push(e.error)}return f.sort((a,b)=>a.id.localeCompare(b.id)),{project:a,epicId:b,epicTitle:d.title||null,stories:f,errors:g}}(b,a.id,c).stories)d.push({id:e.id,title:e.title,type:"story",status:e.status,priority:e.priority,filePath:e.filePath});for(let e of function(a,b,c){let d=Q(a.boardPath,b);if(!d)return{project:a,epicId:b,storyId:b,storyTitle:null,items:[],errors:[{filePath:j().join(a.boardPath,"epics"),projectId:a.id,projectName:a.name,storyId:b,message:`Epic ${b} not found under this board`}]};let e=R(j().join(a.boardPath,"epics",d.dirName)),f=c?new Map((c.leavesByParent.get(b)??[]).map(a=>[a.filePath,a])):null,g=[],h=[];for(let c of e){let d=S(c,a,b,b,f?.get(c));d.item&&g.push(d.item),d.error&&h.push(d.error)}return g.sort((a,b)=>a.id.localeCompare(b.id)),{project:a,epicId:b,storyId:b,storyTitle:"Epic-direct",items:g,errors:h}}(b,a.id,c).items)d.push({id:e.id,title:e.title,type:e.type,status:e.status,priority:e.priority,filePath:e.filePath});return{...a,children:d}}if("story"===a.type){let d=a.epic||a.parent;if(!d)return a;let e=[];for(let f of function(a,b,c,d){let e=function(a,b,c){let d,e=Q(a,b);if(!e)return null;let f=j().join(a,"epics",e.dirName,"stories");try{d=h().readdirSync(f,{withFileTypes:!0})}catch{return null}for(let a of d){if(!a.isDirectory()||a.name.startsWith("."))continue;let b=function(a,b,c){let d,e,f=j().join(a,"story.md");if(!h().existsSync(f))return null;try{d=h().readFileSync(f,"utf8")}catch{return null}try{e=m(d)}catch{return null}if(!e)return null;let g=n(e.id),i=n(e.title);return g?{dirName:b,storyFile:f,id:g,title:i,epicDirName:c}:null}(j().join(f,a.name),a.name,e.dirName);if(b?.id===c)return b}return null}(a.boardPath,b,c);if(!e){let d=Q(a.boardPath,b);return{project:a,epicId:b,storyId:c,storyTitle:null,items:[],errors:[{filePath:d?j().join(a.boardPath,"epics",d.dirName,"stories"):j().join(a.boardPath,"epics"),projectId:a.id,projectName:a.name,storyId:c,message:d?`Story ${c} not found under epic ${b}`:`Epic ${b} not found under this board`}]}}let f=R(j().join(a.boardPath,"epics",e.epicDirName,"stories",e.dirName)),g=d?new Map((d.leavesByParent.get(c)??[]).map(a=>[a.filePath,a])):null,i=[],k=[];for(let d of f){let e=S(d,a,c,b,g?.get(d));e.item&&i.push(e.item),e.error&&k.push(e.error)}return i.sort((a,b)=>a.id.localeCompare(b.id)),{project:a,epicId:b,storyId:c,storyTitle:e.title||null,items:i,errors:k}}(b,d,a.id,c).items)e.push({id:f.id,title:f.title,type:f.type,status:f.status,priority:f.priority,filePath:f.filePath});return{...a,children:e}}return a}(function(a,b,c){if("epic"!==a.type&&"story"!==a.type)return a;let d=P(b.boardPath,a.id,a.type,c,!0);return{...a,status:d.status,size:d.size,points:d.points,actualMinutes:d.actualMinutes,actualMs:d.actualMs,resolvers:d.resolvers,updated:d.updated,startedAt:d.startedAt,completedAt:d.completedAt,promptFeedback:d.promptFeedback,commits:d.commits,workLog:d.workLog}}(g.detail,f,i),f,i)}}(d.projects,a,b)}(0,c(89337).D)([Y,Z]),(0,e.A)(Y,"607dcc05d485bfbac997998b08a70df649d011e9de",null),(0,e.A)(Z,"6020da1a4422a94c96fa68432bbed44a06448c0d67",null)},21682:(a,b,c)=>{"use strict";c.d(b,{O:()=>j,n:()=>k});var d=c(48249),e=c(62407),f=c(31168),g=c(33191),h=c(92281);function i({identity:a,label:b,className:c,size:j="sm"}){let k=(0,h.yx)(a);return(0,d.jsxs)(f.m_,{children:[(0,d.jsx)(f.k$,{render:(0,d.jsx)("span",{className:"inline-flex cursor-default"}),"aria-label":b,children:(0,d.jsx)(e.eu,{size:j,className:c,children:(0,d.jsx)(e.q5,{className:(0,g.cn)("bg-transparent font-semibold tracking-wide text-white !text-[7px]"),style:{backgroundColor:k},children:a.initials||"?"})})}),(0,d.jsx)(f.ZI,{side:"top",children:b})]})}function j({reporters:a,resolvers:b,className:c,empty:k=null}){let l=(0,h.Ox)(a,b);return 0===l.length?(0,d.jsx)(d.Fragment,{children:k}):(0,d.jsx)(f.Bc,{delay:200,children:(0,d.jsx)(e.Z7,{className:(0,g.cn)("justify-start",c),role:"group","aria-label":"Work item contributors",children:l.map(a=>(0,d.jsx)(i,{identity:a.identity,label:a.label},`${a.identity.email}|${a.identity.name}|${a.role}`))})})}function k({reporters:a,resolvers:b,className:c,empty:e="—"}){let j=(0,h.Ox)(a,b);if(0===j.length)return(0,d.jsx)(d.Fragment,{children:e});let l=[{role:"both",heading:"Created and developed by",people:j.filter(a=>"both"===a.role)},{role:"created",heading:"Created by",people:j.filter(a=>"created"===a.role)},{role:"resolved",heading:"Resolved by",people:j.filter(a=>"resolved"===a.role)}].filter(a=>a.people.length>0);return(0,d.jsx)(f.Bc,{delay:200,children:(0,d.jsx)("div",{className:(0,g.cn)("flex flex-col gap-3",c),"aria-label":"Work item contributors",children:l.map(a=>(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsx)("p",{className:"text-xs font-medium text-muted-foreground",children:a.heading}),(0,d.jsx)("ul",{className:"flex flex-col gap-2",children:a.people.map(a=>{let b=a.identity.name||"Unknown",c=a.identity.email;return(0,d.jsxs)("li",{className:"flex min-w-0 items-center gap-2.5",children:[(0,d.jsx)(i,{identity:a.identity,label:a.label,size:"default"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"truncate text-sm font-medium leading-tight",children:b}),c?(0,d.jsx)("p",{className:"truncate font-mono text-xs font-normal text-muted-foreground",children:c}):null]})]},`${a.identity.email}|${a.identity.name}|${a.role}`)})})]},a.role))})})}},23235:(a,b,c)=>{"use strict";c.d(b,{StaticBoardApp:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call StaticBoardApp() from the server but StaticBoardApp is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/static-board-app.tsx","StaticBoardApp")},27922:(a,b,c)=>{"use strict";c.d(b,{mx:()=>i,t0:()=>j,Yn:()=>h});let d="/taskmark-snapshot.json",e=null,f=null;async function g(){return e||(f||(f=fetch(d).then(a=>{if(!a.ok)throw Error(`Failed to load ${d}`);return a.json()}).then(a=>(e=a,a)).finally(()=>{f=null})),f)}function h(a){e=a}async function i(a){let b=(await g()).detailsByPath[a];return b?{ok:!0,detail:b}:{ok:!1,filePath:a,message:"Work item detail not found in static snapshot"}}async function j(a){let b=a.trim(),c=(await g()).refsById[b];return c?{ok:!0,ref:c}:{ok:!1,itemId:b,message:`Work item ${b} was not found`}}},28330:(a,b,c)=>{"use strict";c.d(b,{ListViewSwitcher:()=>r});var d=c(48249),e=c(67484),f=c(19099),g=c(53707),h=c(22392),i=c(64249),j=c(21654),k=c(33191);function l({className:a,orientation:b="horizontal",...c}){return(0,d.jsx)(g.p,{"data-slot":"tabs","data-orientation":b,className:(0,k.cn)("group/tabs flex gap-2 data-horizontal:flex-col",a),...c})}let m=(0,j.F)("group/tabs-list inline-flex w-fit items-center justify-center rounded p-1 text-muted-foreground group-data-horizontal/tabs:h-11 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none",{variants:{variant:{default:"border-2 bg-card shadow-sm",line:"gap-1 bg-transparent"}},defaultVariants:{variant:"default"}});function n({className:a,variant:b="default",...c}){return(0,d.jsx)(h.j,{"data-slot":"tabs-list","data-variant":b,className:(0,k.cn)(m({variant:b}),a),...c})}function o({className:a,...b}){return(0,d.jsx)(i.M,{"data-slot":"tabs-trigger",className:(0,k.cn)("relative inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded border-2 border-transparent px-4 py-2 text-sm font-head font-medium whitespace-nowrap text-foreground/60 transition-all group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[variant=default]/tabs-list:data-active:border-border group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent","data-active:bg-primary data-active:text-primary-foreground group-data-[variant=line]/tabs-list:data-active:text-foreground","after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-1 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-1 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",a),...b})}var p=c(67565);function q({activeView:a,selectedEpicId:b=null,selectedStoryId:c=null,hasChangelog:e=!1}){let g=(0,f.useRouter)(),h=(0,f.useSearchParams)().get("item"),i=(0,p.GQ)(e);return(0,d.jsx)(l,{value:a,onValueChange:a=>{"string"!=typeof a||g.push((0,p.cu)({view:a,epic:"overall"===a?b:null,story:"overall"===a?c:null,item:h}))},children:(0,d.jsx)(n,{"aria-label":"Board list view",children:i.map(a=>(0,d.jsx)(o,{value:a,children:p.pN[a]},a))})})}function r(a){let b=(0,p.GQ)(a.hasChangelog??!1);return(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)(l,{value:a.activeView,children:(0,d.jsx)(n,{"aria-label":"Board list view",children:b.map(a=>(0,d.jsx)(o,{value:a,disabled:!0,children:p.pN[a]},a))})}),children:(0,d.jsx)(q,{...a})})}},31168:(a,b,c)=>{"use strict";c.d(b,{Bc:()=>m,ZI:()=>p,k$:()=>o,m_:()=>n});var d=c(48249),e=c(93789),f=c(20214),g=c(70216),h=c(76677),i=c(76593),j=c(19777),k=c(82991),l=c(33191);function m({delay:a=0,...b}){return(0,d.jsx)(e.B,{"data-slot":"tooltip-provider",delay:a,...b})}function n({...a}){return(0,d.jsx)(f.s,{"data-slot":"tooltip",...a})}function o({...a}){return(0,d.jsx)(g.k,{"data-slot":"tooltip-trigger",...a})}function p({className:a,side:b="top",sideOffset:c=4,align:e="center",alignOffset:f=0,children:g,...m}){return(0,d.jsx)(h.K,{children:(0,d.jsx)(i.o,{align:e,alignOffset:f,side:b,sideOffset:c,className:"isolate z-50",children:(0,d.jsxs)(j.o,{"data-slot":"tooltip-content",className:(0,l.cn)("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...m,children:[g,(0,d.jsx)(k.P,{className:"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5"})]})})})}},40988:(a,b,c)=>{"use strict";c.d(b,{P:()=>p});var d=c(48249),e=c(338),f=c(18167),g=c(11428),h=c(42964),i=c(36087),j=c(33191);function k({className:a,children:b,value:c,...f}){return(0,d.jsxs)(e.w,{value:c,"data-slot":"progress",className:(0,j.cn)("flex flex-wrap gap-3",a),...f,children:[b,(0,d.jsx)(l,{children:(0,d.jsx)(m,{})})]})}function l({className:a,...b}){return(0,d.jsx)(f.X,{className:(0,j.cn)("relative flex h-4 w-full items-center overflow-hidden rounded border-2 bg-background",a),"data-slot":"progress-track",...b})}function m({className:a,...b}){return(0,d.jsx)(g.Z,{"data-slot":"progress-indicator",className:(0,j.cn)("h-full bg-primary transition-all",a),...b})}function n({className:a,...b}){return(0,d.jsx)(h.u,{className:(0,j.cn)("text-sm font-medium",a),"data-slot":"progress-label",...b})}function o({className:a,...b}){return(0,d.jsx)(i.D,{className:(0,j.cn)("ml-auto text-sm text-muted-foreground tabular-nums",a),"data-slot":"progress-value",...b})}function p({done:a,total:b,className:c}){let e=Math.max(0,Math.min(a,b)),f=b>0?Math.round(e/b*100):0;return(0,d.jsxs)(k,{value:f,className:(0,j.cn)("w-full min-w-[8rem] max-w-[12rem]",c),title:0===b?"No child work items":`${e} of ${b} done (${f}%)`,children:[(0,d.jsx)(n,{className:"text-xs",children:0===b?"No items":`${e}/${b} done`}),(0,d.jsx)(o,{className:"text-xs"})]})}},43537:(a,b,c)=>{Promise.resolve().then(c.bind(c,86266)),Promise.resolve().then(c.bind(c,81391)),Promise.resolve().then(c.bind(c,28330)),Promise.resolve().then(c.bind(c,11616)),Promise.resolve().then(c.bind(c,81025)),Promise.resolve().then(c.bind(c,6017)),Promise.resolve().then(c.bind(c,88382)),Promise.resolve().then(c.bind(c,53778)),Promise.resolve().then(c.bind(c,11784)),Promise.resolve().then(c.bind(c,10549))},47768:(a,b,c)=>{"use strict";c.d(b,{l:()=>aQ});var d=c(5735),e=c(91986),f=c(91970),g=c(17771),h=c(18689),i=c(11938),j=c(51951),k=c(50038),l=c(65409),m=c(29524),n=c(56607),o=c(83437),p=c(17305);function q({title:a,value:b,subtitle:c,icon:e,accentClassName:f,className:g}){return(0,d.jsxs)("div",{className:(0,p.cn)("flex min-h-[7.5rem] flex-col justify-between gap-3 border-2 border-black bg-card p-4 shadow-none",g),children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-card-foreground",children:a}),(0,d.jsx)("div",{className:(0,p.cn)("flex size-9 shrink-0 items-center justify-center border-2 border-black text-black shadow-[3px_3px_0_0_var(--shadow-color)]",f),"aria-hidden":!0,children:e})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,d.jsx)("p",{className:"font-head text-3xl font-bold leading-none tracking-tight text-card-foreground tabular-nums sm:text-4xl",children:b}),c?(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:c}):null]})]})}var r=c(77155);function s({metrics:a}){return(0,d.jsxs)("section",{className:"flex flex-col gap-4","aria-label":"Project status metrics",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-3",children:[(0,d.jsx)(q,{title:"Total work items",value:a.totalWorkItems,subtitle:"Stories, bugs, and tasks",accentClassName:"bg-violet-400",icon:(0,d.jsx)(l.A,{className:"size-4",strokeWidth:2.5})}),(0,d.jsx)(q,{title:"Complete work items",value:a.completeWorkItems,subtitle:"Status done",accentClassName:"bg-pink-400",icon:(0,d.jsx)(m.A,{className:"size-4",strokeWidth:2.5})}),(0,d.jsx)(q,{title:"Current week",value:a.currentWeekPointsDone,subtitle:a.currentWeekPointsDone>0?"pts done this ISO week":"No completed points this week",accentClassName:"bg-emerald-400",icon:(0,d.jsx)(n.A,{className:"size-4",strokeWidth:2.5})})]}),(0,d.jsxs)("div",{className:"border-2 border-black bg-card p-4",children:[(0,d.jsxs)("div",{className:"mb-3 flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex size-8 items-center justify-center border-2 border-black bg-amber-300 text-black shadow-[3px_3px_0_0_var(--shadow-color)]","aria-hidden":!0,children:(0,d.jsx)(o.A,{className:"size-4",strokeWidth:2.5})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-sm font-medium text-card-foreground",children:"Contributors"}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"People who reported or resolved work on this board"})]})]}),(0,d.jsx)(r.ProjectContributorsPanel,{contributors:a.contributors})]})]})}var t=c(23235),u=c(56483),v=c(15377),w=c(73024),x=c.n(w),y=c(76760),z=c.n(y),A=c(63294);let B=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/;function C(a){let b=a.startsWith("---")?a.replace(/^(---\r?\n[\s\S]*?\S)---(\r?\n)/,"$1\n---$2"):a,c=B.exec(b);if(!c)return null;let d=(0,A.qg)(c[1]);return!d||"object"!=typeof d||Array.isArray(d)?null:d}function D(a,b=""){return"string"==typeof a?a:"number"==typeof a||"boolean"==typeof a?String(a):b}function E(a){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&""!==a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return null}function F(a){return Array.isArray(a)?a.map(a=>D(a)).filter(Boolean):[]}function G(a){let b=a.replace(/^(---\r?\n[\s\S]*?\S)---(\r?\n)/,"$1\n---$2"),c=/^---\r?\n[\s\S]*?\r?\n---(?:\r?\n|$)/.exec(b);return c?b.slice(c[0].length).trim():a.trim()}function H(a){let b={},c=a.split(/\r?\n/),d=null,e=[],f=()=>{null!=d&&(b[d]=e.join("\n").trim(),e.length=0)};for(let a of c){let b=/^##\s+(.+?)\s*$/.exec(a);if(b){f(),d=b[1].trim();continue}null!=d&&e.push(a)}return f(),b}function I(a,...b){let c=Object.fromEntries(Object.entries(a).map(([a,b])=>[a.toLowerCase(),b]));for(let a of b){let b=c[a.toLowerCase()];if(null!=b&&""!==b)return b}return""}function J(a){let b=[];for(let c of a.split(/\r?\n/)){let a=/^\s*[-*]\s+\[([ xX])\]\s+(.*)$/.exec(c);a&&b.push({checked:"x"===a[1].toLowerCase(),text:a[2].trim()})}return b}function K(a){let b=a.split(/\r?\n/).map(a=>a.trim()).filter(Boolean);for(let a=0;a<b.length-1;a++){if(!b[a].startsWith("|"))continue;let c=L(b[a]),d=b[a+1];if(!d||!/^\|?\s*:?-{3,}/.test(d))continue;let e=[];for(let c=a+2;c<b.length&&b[c].startsWith("|");c++){let a=L(b[c]);a.every(a=>""===a||"—"===a||"-"===a)||e.push(a)}return{headers:c,rows:e}}return null}function L(a){let b=a.trim();return b.startsWith("|")&&(b=b.slice(1)),b.endsWith("|")&&(b=b.slice(0,-1)),b.split("|").map(a=>a.trim())}function M(a){if(!a)return[];let b=a.headers.map(a=>a.toLowerCase());return a.rows.map(a=>{let c={};return b.forEach((b,d)=>{c[b]=a[d]??""}),c})}function N(a,...b){for(let c of b){let b=a[c.toLowerCase()];if(null!=b&&""!==b)return b}for(let c of b){let b=Object.entries(a).find(([a])=>a.includes(c.toLowerCase()));if(b)return b[1]}return""}function O(a){let b=M(K(I(H(G(a)),"Work log"))),c=0,d=!1;for(let a of b){let b=Date.parse(N(a,"started (utc)","started")),e=Date.parse(N(a,"ended (utc)","ended"));Number.isFinite(b)&&Number.isFinite(e)&&!(e<b)&&(d=!0,c+=e-b)}return{actualMinutes:d?Math.floor(c/6e4):null,actualMs:d?c:null}}function P(a,b,c){if(!b)return;let d=a.get(b);d?d.push(c):a.set(b,[c])}function Q(a){let b=[],c=new Map,d=new Map;for(let e of function a(b){let c;try{c=x().readdirSync(b,{withFileTypes:!0})}catch{return[]}let d=[];for(let e of c){if(e.name.startsWith("."))continue;let c=z().join(b,e.name);if(e.isDirectory())if("items"===e.name){let a;try{a=x().readdirSync(c,{withFileTypes:!0})}catch{continue}for(let b of a)b.isFile()&&!b.name.startsWith(".")&&b.name.endsWith(".md")&&d.push(z().join(c,b.name))}else d.push(...a(c))}return d}(z().join(a,"epics")))try{let a=x().readFileSync(e,"utf8"),f=C(a);if(!f)continue;let g=D(f.type).toLowerCase(),h=D(f.id);if("task"!==g&&"bug"!==g||!h)continue;let i={filePath:e,raw:a,frontmatter:f,...O(a)};b.push(i),P(c,D(f.epic),i),P(d,D(f.parent),i)}catch{}return b.sort((a,b)=>a.filePath.localeCompare(b.filePath)),{boardPath:a,leaves:b,leavesByEpic:c,leavesByParent:d}}var R=c(76692);let S="overall",T={overall:"Overall",workitems:"Work items",changelog:"Changelog"},U=new Set(["all","stories","tasks","workitems"]),V={backlog:0,in_progress:1,blocked:2,done:3,shelved:4,cancelled:5},W={critical:0,high:1,medium:2,low:3};function X(a){return V[a.toLowerCase()]??50}function Y(a){return W[a.toLowerCase()]??50}function Z(a,b){let c,d=X(a.status)-X(b.status);if(0!==d)return d;if("done"===(c=a.status.trim().toLowerCase())||"shelved"===c||"cancelled"===c)return $(a,b,!0);let e=Y(a.priority)-Y(b.priority);return 0!==e?e:$(a,b,!1)}function $(a,b,c){let d=c?_(a):a.created?.trim()??"",e=c?_(b):b.created?.trim()??"";if(d&&e){let a=e.localeCompare(d);if(0!==a)return a}else if(d!==e)return d?-1:1;return a.id.localeCompare(b.id)}function _(a){let b=a.completedAt?.trim()??"";return b||(a.created?.trim()??"")}function aa(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){let a=function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b="string"==typeof a.name?a.name:"number"==typeof a.name?String(a.name):"",c="string"==typeof a.email?a.email:"number"==typeof a.email?String(a.email):"",d="string"==typeof a.initials?a.initials:"number"==typeof a.initials?String(a.initials):"";if(!b&&!c)return null;let e=b||c.split("@")[0]||"";return d||(d=function(a){let b=a.trim().split(/[\s\-_.]+/).filter(Boolean);if(0===b.length)return"?";if(1===b.length){let a=b[0];return(a.length>=2?a.slice(0,2):a.slice(0,1)).toUpperCase()}return(b[0][0]+b[b.length-1][0]).toUpperCase()}(e)),{name:e,email:c,initials:d.toUpperCase()}}(c);a&&b.push(a)}return b}function ab(a){if("general"===a.title.trim().toLowerCase()||a.tags.some(a=>"general"===a.trim().toLowerCase()))return!0;let b=a.filePath.replace(/[/\\]epic\.md$/i,"").split(/[/\\]/).pop()??"";return b.toLowerCase().endsWith("-general")||"general"===b.toLowerCase()}function ac(a){return"boolean"==typeof a?a:"string"==typeof a&&"true"===a.toLowerCase()}function ad(a){return M(K(a)).map(a=>({sha:N(a,"sha"),repo:N(a,"repo"),date:N(a,"date (utc)","date"),author:N(a,"author"),message:N(a,"message")}))}function ae(a){return M(K(a)).map(a=>({session:N(a,"session"),actor:N(a,"actor"),started:N(a,"started (utc)","started"),ended:N(a,"ended (utc)","ended"),summary:N(a,"summary")}))}function af(a){return M(K(a)).map(a=>({index:N(a,"#","index"),when:N(a,"when (utc)","when"),kind:N(a,"kind"),author:N(a,"author"),summary:N(a,"summary")}))}let ag={XS:1,S:3,M:5,L:8,XL:13,XXL:21};function ah(a){if(!a.trim())return null;let b=Date.parse(a);return Number.isFinite(b)?b:null}function ai(a,b){return a.map(a=>({value:a,time:ah(a)})).filter(a=>null!=a.time).sort((a,c)=>"min"===b?a.time-c.time:c.time-a.time)[0]?.value??""}function aj(a,b,c,d){let e=new Map;for(let f of a)for(let a of b(f)){let b=c(a),g=e.get(b),h={id:f.id,title:f.title};if(g){d&&Object.assign(g,d(g,a)),g.workItems.some(a=>a.id===f.id)||g.workItems.push(h);continue}e.set(b,{...a,workItems:[h]})}return[...e.values()]}function ak(a){return a.trim().replace(/\s+/g," ").toLowerCase()}function al(a){let b=ak(a.actor),c=ak(a.summary);return c?[b,c].join("\0"):[b,a.started,a.ended,""].join("\0")}function am(a,b){let c=ai([a.started,b.started],"min"),d=ai([a.ended,b.ended],"max");return{...a,started:c,ended:d}}function an(a,b){return a.sort((a,c)=>(ah(b(a))??Number.MAX_SAFE_INTEGER)-(ah(b(c))??Number.MAX_SAFE_INTEGER))}function ao(a,b,c,d=Q(a),e=!1){let f=("story"===c?d.leavesByParent.get(b)??[]:[...d.leavesByEpic.get(b)??[],...d.leavesByParent.get(b)??[]].filter((a,b,c)=>c.findIndex(b=>b.filePath===a.filePath)===b)).map(a=>(function(a,b){try{let c,{filePath:d,raw:e,frontmatter:f}=a,g=D(f.type).toLowerCase();if("task"!==g&&"bug"!==g)return null;let h=D(f.id);if(!h)return null;let i={actualMinutes:a.actualMinutes,actualMs:a.actualMs},j=b?function(a,b,c){var d;let e,f;try{e=C(a)}catch(a){return{ok:!1,filePath:b,message:a instanceof Error?a.message:"Invalid YAML frontmatter"}}if(!e)return{ok:!1,filePath:b,message:"Missing or invalid YAML frontmatter"};let g=D(e.id),h=(d=e,f=D(d.type).toLowerCase(),"epic"===f||"story"===f||"task"===f||"bug"===f?f:"epic"===c?"epic":"story"===c?"story":g.startsWith("B-")?"bug":g.startsWith("E-")?"epic":g.startsWith("S-")?"story":"task"),i=function(a,b,c,d){let e=D(a.id),f=D(a.title);if(!e||!f)return null;let g=O(b);return{id:e,title:f,type:d,status:D(a.status,"unknown"),priority:D(a.priority,"medium"),size:D(a.size,"—"),points:E(a.points),actualMinutes:g.actualMinutes,actualMs:g.actualMs,tags:F(a.tags),reporters:aa(a.reporters),resolvers:aa(a.resolvers),blocked:ac(a.blocked),cancelled:ac(a.cancelled),parent:D(a.parent),epic:D(a.epic),created:D(a.created),updated:D(a.updated),startedAt:D(a.started_at),completedAt:D(a.completed_at),filePath:c}}(e,a,b,h);if(!i)return{ok:!1,filePath:b,message:"Frontmatter requires id and title"};let j=H(G(a));if("epic"===h)return{ok:!0,detail:{...i,type:"epic",goal:I(j,"Goal"),scope:I(j,"Scope"),outOfScope:I(j,"Out of scope"),successMetrics:I(j,"Success metrics"),storiesMarkdown:I(j,"Stories"),children:[],promptFeedback:[],commits:ad(I(j,"Commits")),workLog:ae(I(j,"Work log"))}};if("story"===h){let a=I(j,"Acceptance criteria");return{ok:!0,detail:{...i,type:"story",userStory:I(j,"User story"),acceptanceCriteria:J(a),acceptanceCriteriaRaw:a,tasksMarkdown:I(j,"Tasks"),children:[],promptFeedback:af(I(j,"Prompt & feedback log","Prompt & feedback")),commits:ad(I(j,"Commits")),workLog:ae(I(j,"Work log"))}}}let k={...i,type:"bug"===h?"bug":"task",description:I(j,"Description"),acceptanceCriteria:"bug"===h?[]:J(I(j,"Acceptance criteria")),acceptanceCriteriaRaw:"bug"===h?"":I(j,"Acceptance criteria"),reproSteps:"bug"===h?I(j,"Repro steps"):"",fixCriteria:"bug"===h?I(j,"Fix criteria"):"",notes:I(j,"Notes"),promptFeedback:af(I(j,"Prompt & feedback log","Prompt & feedback")),commits:ad(I(j,"Commits")),workLog:ae(I(j,"Work log"))};if("bug"===h){let a=I(j,"Fix criteria");k.fixCriteria=a;let b=J(a);b.length>0&&(k.acceptanceCriteria=b,k.acceptanceCriteriaRaw=a)}return{ok:!0,detail:k}}(e,d,"item"):null,k=j?.ok&&"epic"!==j.detail.type&&"story"!==j.detail.type?j.detail:null;return{id:h,title:D(f.title,h),parent:D(f.parent),epic:D(f.epic),status:D(f.status,"backlog"),points:(c=E(f.points),null!=c?Math.max(0,c):ag[D(f.size).trim().toUpperCase()]??0),reporters:aa(f.reporters),resolvers:aa(f.resolvers),updated:D(f.updated),startedAt:D(f.started_at),completedAt:D(f.completed_at),...i,promptFeedback:k?.promptFeedback??[],commits:k?.commits??[],workLog:k?.workLog??[]}}catch{return null}})(a,e)).filter(a=>null!=a),g=function(a){if(0===a.length)return"backlog";let b=a.map(a=>a.trim().toLowerCase()),c=b.every(a=>"done"===a||"shelved"===a||"cancelled"===a);return c&&b.some(a=>"done"===a)?"done":c&&b.some(a=>"shelved"===a)?"shelved":c?"cancelled":b.every(a=>"backlog"===a)?"backlog":"in_progress"}(f.map(a=>a.status)),h=f.reduce((a,b)=>a+b.points,0),i=f.reduce((a,b)=>a+(b.actualMs??(b.actualMinutes??0)*6e4),0),j=f.filter(a=>"done"===a.status.trim().toLowerCase()||"shelved"===a.status.trim().toLowerCase()||"cancelled"===a.status.trim().toLowerCase());return{status:g,size:0===f.length?"—":h<=1?"XS":h<=3?"S":h<=5?"M":h<=8?"L":h<=13?"XL":"XXL",points:h,actualMinutes:Math.floor(i/6e4),actualMs:i,resolvers:function(a){let b=new Map;for(let c of a)for(let a of c.resolvers){let c=a.email.trim().toLowerCase()||a.name.trim().toLowerCase();c&&!b.has(c)&&b.set(c,a)}return[...b.values()]}(f),updated:ai(f.map(a=>a.updated),"max"),startedAt:ai(f.map(a=>a.startedAt),"min"),completedAt:j.length===f.length?ai(j.map(a=>a.completedAt),"max"):"",promptFeedback:an(aj(f,a=>a.promptFeedback,a=>[a.when,a.kind,a.author,a.summary].join("\0")),a=>a.when).map((a,b)=>({...a,index:String(b+1)})),commits:an(aj(f,a=>a.commits,a=>[a.sha,a.repo,a.date,a.author,a.message].join("\0")),a=>a.date),workLog:an(aj(f,a=>a.workLog,al,am),a=>a.started).map((a,b)=>({...a,session:String(b+1)})),leafCount:f.length,doneLeafCount:j.length}}function ap(a,b){let c=function(a){let b,c=z().join(a,"epics");try{b=x().readdirSync(c,{withFileTypes:!0})}catch{return[]}let d=[];for(let a of b){if(!a.isDirectory()||a.name.startsWith("."))continue;let b=z().join(c,a.name,"epic.md");x().existsSync(b)&&d.push(b)}return d.sort()}(a.boardPath),d=[],e=[];for(let f of c){let c=function(a,b,c){let d,e;try{d=x().readFileSync(a,"utf8")}catch(c){return{error:{filePath:a,projectId:b.id,projectName:b.name,message:c instanceof Error?c.message:"Failed to read file"}}}try{e=C(d)}catch(c){return{error:{filePath:a,projectId:b.id,projectName:b.name,message:c instanceof Error?c.message:"Invalid YAML frontmatter"}}}if(!e)return{error:{filePath:a,projectId:b.id,projectName:b.name,message:"Missing or invalid YAML frontmatter"}};let f=D(e.id),g=D(e.title);if(!f||!g)return{error:{filePath:a,projectId:b.id,projectName:b.name,message:"Frontmatter requires id and title"}};let h=ao(b.boardPath,f,"epic",c);return{epic:{id:f,title:g,status:h.status,priority:D(e.priority,"medium"),size:h.size,points:h.points,actualMinutes:h.actualMinutes,actualMs:h.actualMs,tags:F(e.tags),reporters:aa(e.reporters),resolvers:h.resolvers,created:D(e.created),updated:D(e.updated),completedAt:h.completedAt,workItemCount:h.leafCount,doneWorkItemCount:h.doneLeafCount,filePath:a,project:{id:b.id,name:b.name,projectPath:b.projectPath,boardPath:b.boardPath}}}}(f,a,b);c.epic&&d.push(c.epic),c.error&&e.push(c.error)}return d.sort((a,b)=>a.id.localeCompare(b.id)),{project:a,epics:[...d].sort((a,b)=>{let c=ab(a);return c!==ab(b)?c?-1:1:a.id.localeCompare(b.id)}),errors:e}}function aq(a,b){let c,d=z().join(a,"epics");try{c=x().readdirSync(d,{withFileTypes:!0})}catch{return null}for(let a of c){if(!a.isDirectory()||a.name.startsWith("."))continue;let c=function(a,b){let c,d,e=z().join(a,"epic.md");if(!x().existsSync(e))return null;try{c=x().readFileSync(e,"utf8")}catch{return null}try{d=C(c)}catch{return null}if(!d)return null;let f=D(d.id),g=D(d.title);return f?{dirName:b,epicFile:e,id:f,title:g}:null}(z().join(d,a.name),a.name);if(c?.id===b)return c}return null}function ar(a,b,c){let d=aq(a.boardPath,b);if(!d)return{project:a,epicId:b,epicTitle:null,stories:[],errors:[{filePath:z().join(a.boardPath,"epics"),projectId:a.id,projectName:a.name,epicId:b,message:`Epic ${b} not found under this board`}]};let e=function(a){let b,c=z().join(a,"stories");try{b=x().readdirSync(c,{withFileTypes:!0})}catch{return[]}let d=[];for(let a of b){if(!a.isDirectory()||a.name.startsWith("."))continue;let b=z().join(c,a.name,"story.md");x().existsSync(b)&&d.push(b)}return d.sort()}(z().join(a.boardPath,"epics",d.dirName)),f=[],g=[];for(let d of e){let e=function(a,b,c,d){let e,f;try{e=x().readFileSync(a,"utf8")}catch(d){return{error:{filePath:a,projectId:b.id,projectName:b.name,epicId:c,message:d instanceof Error?d.message:"Failed to read file"}}}try{f=C(e)}catch(d){return{error:{filePath:a,projectId:b.id,projectName:b.name,epicId:c,message:d instanceof Error?d.message:"Invalid YAML frontmatter"}}}if(!f)return{error:{filePath:a,projectId:b.id,projectName:b.name,epicId:c,message:"Missing or invalid YAML frontmatter"}};let g=D(f.id),h=D(f.title);if(!g||!h)return{error:{filePath:a,projectId:b.id,projectName:b.name,epicId:c,message:"Frontmatter requires id and title"}};let i=ao(b.boardPath,g,"story",d);return{story:{id:g,title:h,status:i.status,priority:D(f.priority,"medium"),size:i.size,points:i.points,actualMinutes:i.actualMinutes,actualMs:i.actualMs,tags:F(f.tags),reporters:aa(f.reporters),resolvers:i.resolvers,created:D(f.created),updated:D(f.updated),completedAt:i.completedAt,parent:D(f.parent),epic:D(f.epic,c),workItemCount:i.leafCount,doneWorkItemCount:i.doneLeafCount,filePath:a,project:{id:b.id,name:b.name,projectPath:b.projectPath,boardPath:b.boardPath}}}}(d,a,b,c);e.story&&f.push(e.story),e.error&&g.push(e.error)}return f.sort((a,b)=>a.id.localeCompare(b.id)),{project:a,epicId:b,epicTitle:d.title||null,stories:f,errors:g}}function as(a){let b,c=z().join(a,"items");try{b=x().readdirSync(c,{withFileTypes:!0})}catch{return[]}let d=[];for(let a of b)!(!a.isFile()||a.name.startsWith("."))&&a.name.endsWith(".md")&&d.push(z().join(c,a.name));return d.sort()}function at(a,b,c,d,e){let f,g,h;try{f=e?.raw??x().readFileSync(a,"utf8")}catch(d){return{error:{filePath:a,projectId:b.id,projectName:b.name,storyId:c,message:d instanceof Error?d.message:"Failed to read file"}}}try{g=e?.frontmatter??C(f)}catch(d){return{error:{filePath:a,projectId:b.id,projectName:b.name,storyId:c,message:d instanceof Error?d.message:"Invalid YAML frontmatter"}}}if(!g)return{error:{filePath:a,projectId:b.id,projectName:b.name,storyId:c,message:"Missing or invalid YAML frontmatter"}};let i=D(g.id),j=D(g.title);return i&&j?{item:{id:i,type:"bug"===(h=D(g.type).toLowerCase())?"bug":"task"===h?"task":i.startsWith("B-")?"bug":"task",title:j,status:D(g.status,"unknown"),priority:D(g.priority,"medium"),size:D(g.size,"—"),points:E(g.points),...e?{actualMinutes:e.actualMinutes,actualMs:e.actualMs}:O(f),tags:F(g.tags),reporters:aa(g.reporters),resolvers:aa(g.resolvers),created:D(g.created),updated:D(g.updated),completedAt:D(g.completed_at),parent:D(g.parent,c),epic:D(g.epic,d),filePath:a,project:{id:b.id,name:b.name,projectPath:b.projectPath,boardPath:b.boardPath}}}:{error:{filePath:a,projectId:b.id,projectName:b.name,storyId:c,message:"Frontmatter requires id and title"}}}function au(a,b,c,d){let e=function(a,b,c){let d,e=aq(a,b);if(!e)return null;let f=z().join(a,"epics",e.dirName,"stories");try{d=x().readdirSync(f,{withFileTypes:!0})}catch{return null}for(let a of d){if(!a.isDirectory()||a.name.startsWith("."))continue;let b=function(a,b,c){let d,e,f=z().join(a,"story.md");if(!x().existsSync(f))return null;try{d=x().readFileSync(f,"utf8")}catch{return null}try{e=C(d)}catch{return null}if(!e)return null;let g=D(e.id),h=D(e.title);return g?{dirName:b,storyFile:f,id:g,title:h,epicDirName:c}:null}(z().join(f,a.name),a.name,e.dirName);if(b?.id===c)return b}return null}(a.boardPath,b,c);if(!e){let d=aq(a.boardPath,b);return{project:a,epicId:b,storyId:c,storyTitle:null,items:[],errors:[{filePath:d?z().join(a.boardPath,"epics",d.dirName,"stories"):z().join(a.boardPath,"epics"),projectId:a.id,projectName:a.name,storyId:c,message:d?`Story ${c} not found under epic ${b}`:`Epic ${b} not found under this board`}]}}let f=as(z().join(a.boardPath,"epics",e.epicDirName,"stories",e.dirName)),g=d?new Map((d.leavesByParent.get(c)??[]).map(a=>[a.filePath,a])):null,h=[],i=[];for(let d of f){let e=at(d,a,c,b,g?.get(d));e.item&&h.push(e.item),e.error&&i.push(e.error)}return h.sort((a,b)=>a.id.localeCompare(b.id)),{project:a,epicId:b,storyId:c,storyTitle:e.title||null,items:h,errors:i}}function av(a,b,c){let d=aq(a.boardPath,b);if(!d)return{project:a,epicId:b,storyId:b,storyTitle:null,items:[],errors:[{filePath:z().join(a.boardPath,"epics"),projectId:a.id,projectName:a.name,storyId:b,message:`Epic ${b} not found under this board`}]};let e=as(z().join(a.boardPath,"epics",d.dirName)),f=c?new Map((c.leavesByParent.get(b)??[]).map(a=>[a.filePath,a])):null,g=[],h=[];for(let c of e){let d=at(c,a,b,b,f?.get(c));d.item&&g.push(d.item),d.error&&h.push(d.error)}return g.sort((a,b)=>a.id.localeCompare(b.id)),{project:a,epicId:b,storyId:b,storyTitle:"Epic-direct",items:g,errors:h}}function aw(a,b,c,d){let e=[],f=[],g=ar(a,b,d);for(let a of g.errors)f.push({filePath:a.filePath,message:a.message});let h=c??null??g.epicTitle;for(let a of g.stories)e.push({kind:"story",id:a.id,title:a.title,status:a.status,priority:a.priority,size:a.size,points:a.points,actualMinutes:a.actualMinutes,actualMs:a.actualMs,epicId:b,epicTitle:h??b,tags:a.tags,reporters:a.reporters,resolvers:a.resolvers,created:a.created,updated:a.updated,completedAt:a.completedAt,workItemCount:a.workItemCount,doneWorkItemCount:a.doneWorkItemCount,filePath:a.filePath,project:a.project});let i=av(a,b,d);for(let a of i.errors)f.push({filePath:a.filePath,message:a.message});for(let a of i.items)e.push({kind:a.type,id:a.id,title:a.title,status:a.status,priority:a.priority,size:a.size,points:a.points,actualMinutes:a.actualMinutes,actualMs:a.actualMs,epicId:b,epicTitle:h??b,tags:a.tags,reporters:a.reporters,resolvers:a.resolvers,created:a.created,updated:a.updated,completedAt:a.completedAt,workItemCount:0,doneWorkItemCount:0,filePath:a.filePath,project:a.project});return e.sort(Z),{project:a,epicId:b,epicTitle:h,rows:e,errors:f}}var ax=c(86612),ay=c(50425),az=c(11014);let aA=/^\d{4}-\d{2}-\d{2}$/,aB=new Set(["","null","—","-","n/a","N/A"]);function aC(a){let b=a?.trim()??"";if(!b||aB.has(b))return null;if(aA.test(b)){let[a,c,d]=b.split("-").map(Number),e=new Date(a,c-1,d);return(0,ay.f)(e)?e:null}try{let a=(0,az.H)(b);return(0,ay.f)(a)?a:null}catch{return null}}var aD=c(2110),aE=c(79347),aF=c(3170);function aG(a){return{year:(0,aD.p)(a),week:(0,aE.s)(a)}}function aH(a){return(0,aF.T)(new Date(a,11,28))}function aI(a,b){return`${a}-W${b}`}let aJ=new Set(["story","task","bug"]);function aK(a){return("task"===a.kind||"bug"===a.kind)&&"done"===a.status.trim().toLowerCase()&&!!a.completedAt.trim()}function aL(a,b){let c=ap(a,b),d=[];for(let e of c.epics){for(let c of(d.push({kind:"epic",id:e.id,status:e.status,points:e.points??0,completedAt:e.completedAt,reporters:e.reporters,resolvers:e.resolvers}),ar(a,e.id,b).stories))for(let f of(d.push({kind:"story",id:c.id,status:c.status,points:c.points??0,completedAt:c.completedAt,reporters:c.reporters,resolvers:c.resolvers}),au(a,e.id,c.id,b).items))d.push({kind:f.type,id:f.id,status:f.status,points:f.points??0,completedAt:f.completedAt,reporters:f.reporters,resolvers:f.resolvers});for(let c of av(a,e.id,b).items)d.push({kind:c.type,id:c.id,status:c.status,points:c.points??0,completedAt:c.completedAt,reporters:c.reporters,resolvers:c.resolvers})}return d}var aM=c(28715),aN=c(75220),aO=c(53641);function aP(a){return"string"==typeof a&&a.trim()?a.trim():null}async function aQ({searchParams:a}){var b,c,l,m;let n;if((0,aM.Z)()){let a,b=(a=z().join(process.cwd(),"public","taskmark-snapshot.json"),JSON.parse(x().readFileSync(a,"utf8")));return(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)("div",{className:"p-8 text-sm text-muted-foreground",children:"Loading board…"}),children:(0,d.jsx)(t.StaticBoardApp,{snapshot:b})})}let o=function(a){let b=(0,aN.nu)();if(b&&b.projects.length>0)return{masters:b.masters,projects:b.projects,source:b.source,autoconfig:!0};let c=[];for(let b of a){let a=function(a){let b,c,d=a.trim();if(!d)return{ok:!1,code:"empty",error:"Enter a master folder path."};let e=z().resolve(d);try{b=x().statSync(e)}catch(a){if("ENOENT"===(a&&"object"==typeof a&&"code"in a?String(a.code):""))return{ok:!1,code:"not_found",error:"Folder not found. Check the path and try again."};return{ok:!1,code:"unreadable",error:"Cannot read that folder. Check permissions and try again."}}if(!b.isDirectory())return{ok:!1,code:"not_directory",error:"That path is not a folder."};try{c=(0,aO.c7)(e)}catch{return{ok:!1,code:"unreadable",error:"Cannot scan that folder. Check permissions and try again."}}return 0===c.length?{ok:!1,code:"no_projects",error:"No Taskmark projects found in subfolders. Look for a nested taskmark/epics/ board, or a dedicated *-taskmark folder with epics/ at its root."}:{ok:!0,masterPath:e,projects:c}}(b);a.ok&&c.push(a.masterPath)}let d=(0,aO.tb)(c);return{masters:c,projects:d,source:"cookies",autoconfig:!1}}(await (0,R.ek)());0===o.projects.length&&(0,f.redirect)("/setup");let p=await (0,R.KQ)(),q=await (0,R.nG)(),r=function(a,b){if(0===a.length)return null;if(b){let c=a.find(a=>a.id===b||a.boardPath===b);if(c)return c}return a[0]??null}(o.projects,o.autoconfig?null:p);r||(0,f.redirect)("/setup");let w=await a,y=Q(r.boardPath),A=function(a){let b=z().join(a,"CHANGELOG.md");try{let a=x().readFileSync(b,"utf8");if(!a.trim())return null;return a}catch{return null}}(r.boardPath),B=null!=A,C=(b=w.view,c={hasChangelog:B},"overall"===(n="string"==typeof b?b.trim().toLowerCase():"")?"overall":U.has(n)?"workitems":"changelog"===n&&c?.hasChangelog?"changelog":S),D="overall"===C?aP(w.epic):null,E="overall"===C&&D?aP(w.story):null,F=ap(r,y),G=F.epics.length,H=F.errors.length,I=D?F.epics.find(a=>a.id===D)??null:null,J={},K={};if("overall"===C)for(let a of F.epics){let b=aw(r,a.id,a.title,y);for(let c of(J[a.id]=b,b.rows))"story"===c.kind&&(K[l=a.id,m=c.id,`${l}::${m}`]=au(r,a.id,c.id,y))}let L="workitems"===C?function(a,b){let c=ap(a,b),d=[],e=c.errors.map(a=>({filePath:a.filePath,message:a.message}));for(let f of c.epics){let c=aw(a,f.id,f.title,b);for(let a of c.errors)e.push({filePath:a.filePath,message:a.message});d.push(...c.rows)}return d.sort(Z),{project:a,rows:d,errors:e}}(r,y):null,M=aL(r,y),N=M.filter(aK).map(a=>({completedAt:a.completedAt,points:a.points})),O=function(a,b,c){let d=c??aL(a,b),{total:e,complete:f}=function(a){let b=0,c=0;for(let d of a){if(!aJ.has(d.kind))continue;let a=d.status.trim().toLowerCase();"cancelled"!==a&&(b+=1,"done"===a&&(c+=1))}return{total:b,complete:c}}(d),g=function(a,b=new Date){let c=aG(b),d=0;for(let b of a){if(!aK(b))continue;let a=aC(b.completedAt);if(!a)continue;let e=aG(a);e.year===c.year&&e.week===c.week&&(d+=Number.isFinite(b.points)?Math.max(0,b.points):0)}return d}(d),h=function(a,b=new Date){let c=a.filter(aK),d=null;for(let a of c){let b=aC(a.completedAt);b&&(!d||b.getTime()>d.getTime())&&(d=b)}if(!d)return{average:null,weekCount:0};let e=(0,ax.f)(d,-90),f=function(a,b){let c=a.getTime()<=b.getTime()?a:b,d=a.getTime()<=b.getTime()?b:a,{year:e,week:f}=aG(c),g=aG(d),h=[];for(let a=0;a<200&&(h.push({year:e,week:f}),e!==g.year||f!==g.week);a++){let a=function(a,b){let c=a,d=b+1;for(;d<1;)c-=1,d+=aH(c);for(;d>aH(c);)d-=aH(c),c+=1;return{year:c,week:d}}(e,f);e=a.year,f=a.week}return h}(e,d);if(0===f.length)return{average:null,weekCount:0};let g=aG(b),h=aI(g.year,g.week),i=new Map;for(let a of f){let b=aI(a.year,a.week);b!==h&&i.set(b,0)}for(let a of c){let b=aC(a.completedAt);if(!b||b.getTime()<e.getTime()||b.getTime()>d.getTime())continue;let{year:c,week:f}=aG(b),g=aI(c,f);if(!i.has(g))continue;let h=Number.isFinite(a.points)?Math.max(0,a.points):0;i.set(g,(i.get(g)??0)+h)}let j=[...i.values()].filter(a=>a>0);return 0===j.length?{average:null,weekCount:0}:{average:j.reduce((a,b)=>a+b,0)/j.length,weekCount:j.length}}(d);return{totalWorkItems:e,completeWorkItems:f,currentWeekPointsDone:g,currentSpeedPtsPerWeek:h.average,speedWeekCount:h.weekCount,contributors:function(a){let b=new Map;for(let c of a)for(let a of[...c.reporters,...c.resolvers]){let c=function(a,b){let c=a.trim().toLowerCase();return c?`e:${c}`:`n:${b.trim().toLowerCase()}`}(a.email,a.name),d=b.get(c);if(!d){b.set(c,{...a});continue}!d.name&&a.name&&(d.name=a.name),!d.email&&a.email&&(d.email=a.email),!d.initials&&a.initials&&(d.initials=a.initials)}return[...b.values()].sort((a,b)=>{let c=(a.name||a.email).toLowerCase(),d=(b.name||b.email).toLowerCase();return c!==d?c<d?-1:1:(a.email||"").localeCompare(b.email||"")})}(d)}}(r,y,M);return(0,d.jsx)(v.WorkItemSheetProvider,{children:(0,d.jsxs)("div",{className:"tm-surface min-h-svh",children:[(0,d.jsx)(g.AppBar,{projects:o.projects,activeProjectId:r.id,autoconfig:o.autoconfig}),(0,d.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-4 py-8",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"font-head text-3xl tracking-tight",children:"overall"===C?"Overall":T[C]}),(0,d.jsxs)("p",{className:"mt-1 text-sm text-muted-foreground",children:[r.name,"overall"===C?` \xb7 ${G} epic${1===G?"":"s"}`:"","overall"===C&&H>0?` \xb7 ${H} parse issue${1===H?"":"s"}`:"","workitems"===C&&L?` \xb7 ${L.rows.length} item${1===L.rows.length?"":"s"}`:"","overall"===C&&I?` \xb7 expanded ${I.id}`:"overall"===C&&D?` \xb7 epic ${D} not in list`:"","overall"===C&&E?` \xb7 story ${E}`:""]})]}),(0,d.jsx)(i.ListViewSwitcher,{activeView:C,selectedEpicId:D,selectedStoryId:E,hasChangelog:B})]}),(0,d.jsx)(s,{metrics:O}),"overall"===C?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.PointsHeatmap,{samples:N}),(0,d.jsx)(j.OverallTreeList,{list:F,workItemsByEpic:J,itemsByStory:K,selectedEpicId:D,selectedStoryId:E,countableCompletions:N,initialHideCompleted:q.epics})]}):null,"workitems"===C&&L?(0,d.jsx)(u.WorkItemsList,{list:L,countableCompletions:N,initialHideCompleted:q.workItems}):null,"changelog"===C&&A?(0,d.jsx)(h.ChangelogPanel,{markdown:A}):null]})]})})}},49895:(a,b,c)=>{"use strict";c.d(b,{$G:()=>f,Cp:()=>g,xp:()=>d,yQ:()=>e});let d=[10,25,50,100],e=25;function f(a){return d.includes(a)}function g(a,b,c){let d=f(c)?c:e,g=a.length,h=0===g?0:Math.ceil(g/d),i=0===h?1:Math.min(Math.max(1,Math.trunc(b)||1),h),j=(i-1)*d;return{pageRows:a.slice(j,j+d),totalCount:g,totalPages:h,page:i,pageSize:d}}},50038:(a,b,c)=>{"use strict";c.d(b,{PointsHeatmap:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call PointsHeatmap() from the server but PointsHeatmap is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/points-heatmap.tsx","PointsHeatmap")},51951:(a,b,c)=>{"use strict";c.d(b,{OverallTreeList:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call OverallTreeList() from the server but OverallTreeList is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/overall-tree-list.tsx","OverallTreeList")},52297:(a,b,c)=>{"use strict";c.d(b,{Eq:()=>j,ZK:()=>k,er:()=>d.er,i:()=>g,j8:()=>h,z5:()=>i,z_:()=>l,zi:()=>d.zi});var d=c(13259);function e(a){return`${a.kind}:${a.id}`}function f(a){return a.trim().toLowerCase()}function g(a,b){let c=f(a);return!c||b.id.toLowerCase().includes(c)||b.title.toLowerCase().includes(c)}function h(a){let b=new Set;for(let c of a)for(let a of c.tags??[]){let c=a.trim();c&&b.add(c)}return[...b].sort((a,b)=>a.localeCompare(b))}function i(a){let b=new Map,c=new Map;for(let d of a){if(d.epicId&&!b.has(d.epicId)){let a={kind:"epic",id:d.epicId,title:d.epicTitle};b.set(d.epicId,{...a,key:e(a),label:`Epic ${d.epicId}: ${d.epicTitle}`,chipLabel:d.epicId})}if("story"===d.kind&&!c.has(d.id)){let a={kind:"story",id:d.id,title:d.title};c.set(d.id,{...a,key:e(a),label:`Story ${d.id}: ${d.title}`,chipLabel:d.id})}}return[...[...b.values()].sort((a,b)=>a.id.localeCompare(b.id)),...[...c.values()].sort((a,b)=>a.id.localeCompare(b.id))]}function j(a,b){let c=b.parentKeys??(b.parentKey?[b.parentKey]:[]),e=b.timeframe??d.er;return a.filter(a=>{if(!g(b.query,a)||!function(a,b,c){let d;if(!a)return!0;let e=c?.total,f=c?.done;if(null!=e&&e>0&&null!=f)return null==e||null==f||!(e>0)||!(f>=e);return"done"!==(d=b.trim().toLowerCase())&&"shelved"!==d&&"cancelled"!==d}(b.hideCompleted,a.status,{done:a.doneWorkItemCount,total:a.workItemCount})||!function(a,b){if(0===a.length)return!0;if(!b||0===b.length)return!1;let c=new Set(b.map(a=>a.toLowerCase()));return a.some(a=>c.has(a.toLowerCase()))}(b.selectedTags,a.tags))return!1;if(c.length>0){var f;if(!a.epicId||(f={id:a.id,kind:a.kind,epicId:a.epicId},!(0===c.length||c.some(a=>{let b=function(a){if(!a)return null;let b=a.indexOf(":");if(b<=0)return null;let c=a.slice(0,b),d=a.slice(b+1);return("epic"===c||"story"===c)&&d?{kind:c,id:d}:null}(a);return!!b&&("epic"===b.kind?f.epicId===b.id:"story"===f.kind&&f.id===b.id)}))))return!1}return!!(0,d.WS)(e,a.completedAt)})}function k(a,b){let c=b.parentKeys??(b.parentKey?[b.parentKey]:[]),e=[...b.selectedTags].sort().join(","),g=[...c].sort().join(","),h=b.timeframe??d.er;return[a,f(b.query),b.hideCompleted?"1":"0",g,e,(0,d.R5)(h)].join("|")}d.er;let l="flex min-h-8 flex-wrap items-center gap-1 rounded border-2 bg-input bg-clip-padding px-2.5 py-1 text-sm shadow-sm transition-colors focus-within:outline-2 focus-within:outline-offset-2 focus-within:outline-primary"},53265:(a,b,c)=>{Promise.resolve().then(c.bind(c,17771)),Promise.resolve().then(c.bind(c,18689)),Promise.resolve().then(c.bind(c,11938)),Promise.resolve().then(c.bind(c,51951)),Promise.resolve().then(c.bind(c,50038)),Promise.resolve().then(c.bind(c,77155)),Promise.resolve().then(c.bind(c,23235)),Promise.resolve().then(c.bind(c,15377)),Promise.resolve().then(c.bind(c,56483)),Promise.resolve().then(c.bind(c,47613))},53778:(a,b,c)=>{"use strict";c.d(b,{CP:()=>as,WorkItemSheetProvider:()=>ar,Dt:()=>an});var d=c(48249),e=c(67484),f=c(4870),g=c(45535),h=c(80592),i=c(19099);function j(a){if(null==a||!Number.isFinite(a))return"—";let b=Math.max(0,Math.round(a));if(0===b)return"0ms";if(b<1e3)return`${b}ms`;if(b<6e4){let a=b/1e3;if(Number.isInteger(a)||b%1e3==0)return`${Math.round(a)}s`;let c=Math.round(100*a)/100;return`${c}s`}let c=Math.floor(b/1e3),d=Math.floor(c/28800),e=c%28800,f=Math.floor(e/3600),g=Math.floor((e%=3600)/60),h=e%60,i=[];return d>0&&i.push(`${d}d`),f>0&&i.push(`${f}h`),g>0&&i.push(`${g}m`),h>0&&0===d&&0===f&&i.push(`${h}s`),i.length>0?i.join(" "):"0ms"}var k=c(59812),l=c(54958),m=c(33191),n=c(21682),o=c(26284);function p({childrenItems:a,emptyLabel:b}){let{openDetail:c}=an();return 0===a.length?(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:b}):(0,d.jsx)("ul",{className:"flex w-full flex-col gap-2",children:a.map(a=>{let b="story"===a.type?"story":"item";return(0,d.jsx)("li",{className:"w-full",children:(0,d.jsxs)(o.$,{type:"button",variant:"outline",className:(0,m.cn)("h-auto w-full flex-col items-stretch gap-1.5 px-3 py-2.5 text-left font-normal whitespace-normal"),onClick:()=>c({kind:b,id:a.id,title:a.title,filePath:a.filePath,itemType:"task"===a.type||"bug"===a.type?a.type:void 0}),children:[(0,d.jsx)("span",{className:"w-full text-sm font-medium leading-snug",children:a.title}),(0,d.jsxs)("span",{className:"flex w-full flex-wrap items-center gap-1.5",children:[(0,d.jsx)("span",{className:"font-mono text-xs text-muted-foreground",children:a.id}),(0,d.jsx)(l.wF,{type:a.type}),(0,d.jsx)(l.Wh,{status:a.status}),(0,d.jsx)(l.YJ,{priority:a.priority})]})]})},`${a.type}:${a.id}:${a.filePath}`)})})}var q=c(86478),r=c(54811),s=c(89055),t=c(31168);function u({itemId:a}){let{openDetailById:b}=an();return a.trim()?(0,d.jsx)(o.$,{type:"button",variant:"link",className:"h-auto p-0 font-medium text-foreground underline-offset-2 hover:underline",onClick:()=>b(a),children:a}):"—"}function v({item:a,onOpen:b}){var c;return(0,d.jsx)(t.Bc,{children:(0,d.jsxs)(t.m_,{children:[(0,d.jsx)(t.k$,{render:(0,d.jsx)(r.E,{variant:"outline",title:a.title||a.id,className:(0,m.cn)("cursor-pointer font-mono text-xs",(0,l.YH)((c=a.id).startsWith("B-")?"bug":c.startsWith("E-")?"epic":c.startsWith("S-")?"story":"task")),render:(0,d.jsx)("button",{type:"button",onClick:()=>b(a.id)})}),children:a.id}),(0,d.jsx)(t.ZI,{children:a.title||a.id})]})})}function w({items:a}){let{openDetailById:b}=an();if(!a||0===a.length)return"—";let c=a.slice(0,2),e=a.slice(2);return(0,d.jsxs)("span",{className:"inline-flex flex-nowrap items-center gap-1 align-middle",children:[c.map(a=>(0,d.jsx)(v,{item:a,onOpen:b},a.id)),e.length>0?(0,d.jsx)(t.Bc,{children:(0,d.jsxs)(t.m_,{children:[(0,d.jsxs)(t.k$,{render:(0,d.jsx)(r.E,{variant:"outline",className:"cursor-default font-mono text-xs",title:e.map(a=>a.id).join(", ")}),children:["+",e.length]}),(0,d.jsx)(t.ZI,{children:(0,d.jsx)("ul",{className:"flex flex-col gap-0.5 text-left",children:e.map(a=>(0,d.jsxs)("li",{children:[(0,d.jsx)("span",{className:"font-mono",children:a.id}),a.title?` — ${a.title}`:null]},a.id))})})]})}):null]})}function x({detail:a}){let b=[{label:"Status",value:(0,d.jsx)(l.Wh,{status:a.status})},{label:"Priority",value:(0,d.jsx)(l.YJ,{priority:a.priority})},{label:"Size",value:a.size||"—"},{label:"Points",value:null==a.points?"—":String(a.points)},{label:"Actual",value:function(a,b){if(null!=a&&Number.isFinite(a))return j(a);if(null==b||!Number.isFinite(b))return"—";let c=Math.max(0,Math.round(b));return 0===c?"0m":j(6e4*c)}(a.actualMs,a.actualMinutes)},{label:"Parent",value:a.parent?(0,d.jsx)(u,{itemId:a.parent}):"—"},{label:"Epic",value:a.epic?(0,d.jsx)(u,{itemId:a.epic}):"—"},{label:"Created",value:(0,k.sC)(a.created)},{label:"Updated",value:(0,k.sC)(a.updated)},{label:"Started",value:(0,k.sC)(a.startedAt)},{label:"Completed",value:(0,k.sC)(a.completedAt)}];return(0,d.jsxs)("dl",{className:"grid w-full grid-cols-2 gap-x-4 gap-y-2 text-sm sm:grid-cols-3 lg:grid-cols-4",children:[b.map(a=>(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("dt",{className:"text-xs text-muted-foreground",children:a.label}),(0,d.jsx)("dd",{className:"mt-0.5 font-medium break-words",children:a.value})]},a.label)),a.tags.length>0?(0,d.jsxs)("div",{className:"col-span-full",children:[(0,d.jsx)("dt",{className:"text-xs text-muted-foreground",children:"Tags"}),(0,d.jsx)("dd",{className:"mt-1 flex flex-wrap gap-1",children:a.tags.map(a=>(0,d.jsx)(r.E,{variant:"secondary",children:a},a))})]}):null,(0,d.jsx)("div",{className:"col-span-full mt-1",children:(0,d.jsx)(n.n,{reporters:a.reporters,resolvers:a.resolvers,empty:null})})]})}function y({title:a,children:b}){return(0,d.jsxs)("section",{className:"flex w-full min-w-0 flex-col gap-2",children:[(0,d.jsx)("h3",{className:"font-head text-sm font-semibold tracking-tight",children:a}),(0,d.jsx)("div",{className:"w-full min-w-0",children:b})]})}function z({text:a}){return(0,d.jsx)(q.h,{text:a})}function A({items:a,raw:b}){return 0===a.length?b.trim()?(0,d.jsx)(z,{text:b}):(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"None noted."}):(0,d.jsx)("ul",{className:"flex flex-col gap-1.5 text-sm",children:a.map((a,b)=>(0,d.jsxs)("li",{className:"flex gap-2",children:[(0,d.jsx)("span",{"aria-hidden":!0,className:a.checked?"mt-0.5 size-4 shrink-0 rounded border-2 border-black bg-[var(--chart-4)]":"mt-0.5 size-4 shrink-0 rounded border-2 border-black bg-card"}),(0,d.jsx)("span",{className:a.checked?"min-w-0 flex-1 text-muted-foreground line-through":"min-w-0 flex-1",children:(0,d.jsx)(q.h,{text:a.text,inline:!0})})]},`${b}:${a.text}`))})}function B({rows:a}){if(0===a.length)return(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"No commits logged."});let b=a.some(a=>(a.workItems?.length??0)>0);return(0,d.jsx)("div",{className:"w-full overflow-x-auto rounded border-2 border-border",children:(0,d.jsxs)("table",{className:"w-full text-left text-xs",children:[(0,d.jsx)("thead",{className:"bg-muted/50 font-head",children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"px-2 py-1.5",children:"SHA"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Repo"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Date"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Author"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Message"}),b?(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Work items"}):null]})}),(0,d.jsx)("tbody",{children:a.map((a,c)=>(0,d.jsxs)("tr",{className:"border-t border-border",children:[(0,d.jsx)("td",{className:"px-2 py-1.5 font-mono",children:a.sha||"—"}),(0,d.jsx)("td",{className:"px-2 py-1.5",children:a.repo||"—"}),(0,d.jsx)("td",{className:"px-2 py-1.5 whitespace-nowrap",children:(0,k.sC)(a.date)}),(0,d.jsx)("td",{className:"px-2 py-1.5",children:a.author||"—"}),(0,d.jsx)("td",{className:"px-2 py-1.5",children:a.message||"—"}),b?(0,d.jsx)("td",{className:"px-2 py-1.5 whitespace-nowrap",children:(0,d.jsx)(w,{items:a.workItems})}):null]},`${a.sha}:${c}`))})]})})}function C({rows:a}){if(0===a.length)return(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"No work sessions logged."});let b=a.some(a=>(a.workItems?.length??0)>0);return(0,d.jsx)("div",{className:"w-full overflow-x-auto rounded border-2 border-border",children:(0,d.jsxs)("table",{className:"w-full text-left text-xs",children:[(0,d.jsx)("thead",{className:"bg-muted/50 font-head",children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"px-2 py-1.5",children:"#"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Actor"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Started"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Ended"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Summary"}),b?(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Work items"}):null]})}),(0,d.jsx)("tbody",{children:a.map((a,c)=>(0,d.jsxs)("tr",{className:"border-t border-border",children:[(0,d.jsx)("td",{className:"px-2 py-1.5 font-mono",children:a.session||"—"}),(0,d.jsx)("td",{className:"px-2 py-1.5",children:a.actor||"—"}),(0,d.jsx)("td",{className:"px-2 py-1.5 whitespace-nowrap",children:(0,k.sC)(a.started)}),(0,d.jsx)("td",{className:"px-2 py-1.5 whitespace-nowrap",children:(0,k.sC)(a.ended)}),(0,d.jsx)("td",{className:"px-2 py-1.5",children:a.summary||"—"}),b?(0,d.jsx)("td",{className:"px-2 py-1.5 whitespace-nowrap",children:(0,d.jsx)(w,{items:a.workItems})}):null]},`${a.session}:${c}`))})]})})}function D({rows:a}){if(0===a.length)return(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"No prompts logged."});let b=a.some(a=>(a.workItems?.length??0)>0);return(0,d.jsx)("div",{className:"w-full overflow-x-auto rounded border-2 border-border",children:(0,d.jsxs)("table",{className:"w-full text-left text-xs",children:[(0,d.jsx)("thead",{className:"bg-muted/50 font-head",children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"px-2 py-1.5",children:"#"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"When"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Kind"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Author"}),(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Summary"}),b?(0,d.jsx)("th",{className:"px-2 py-1.5",children:"Work items"}):null]})}),(0,d.jsx)("tbody",{children:a.map((a,c)=>(0,d.jsxs)("tr",{className:"border-t border-border",children:[(0,d.jsx)("td",{className:"px-2 py-1.5 font-mono",children:a.index||"—"}),(0,d.jsx)("td",{className:"px-2 py-1.5 whitespace-nowrap",children:(0,k.sC)(a.when)}),(0,d.jsx)("td",{className:"px-2 py-1.5",children:a.kind||"—"}),(0,d.jsx)("td",{className:"px-2 py-1.5",children:a.author||"—"}),(0,d.jsx)("td",{className:"px-2 py-1.5",children:a.summary||"—"}),b?(0,d.jsx)("td",{className:"px-2 py-1.5 whitespace-nowrap",children:(0,d.jsx)(w,{items:a.workItems})}):null]},`${a.index}:${c}`))})]})})}function E({detail:a}){return(0,d.jsxs)("div",{className:"flex w-full min-w-0 flex-col gap-5",children:[(0,d.jsx)(x,{detail:a}),(0,d.jsx)(s.w,{}),(0,d.jsx)(y,{title:"Goal",children:(0,d.jsx)(z,{text:a.goal})}),(0,d.jsx)(y,{title:"Scope",children:(0,d.jsx)(z,{text:a.scope})}),(0,d.jsx)(y,{title:"Out of scope",children:(0,d.jsx)(z,{text:a.outOfScope})}),(0,d.jsx)(y,{title:"Success metrics",children:(0,d.jsx)(z,{text:a.successMetrics})}),(0,d.jsx)(y,{title:"Stories & tasks",children:(0,d.jsx)(p,{childrenItems:a.children,emptyLabel:"No stories or epic-direct tasks yet."})}),(0,d.jsx)(y,{title:"Prompt & feedback",children:(0,d.jsx)(D,{rows:a.promptFeedback})}),(0,d.jsx)(y,{title:"Commits",children:(0,d.jsx)(B,{rows:a.commits})}),(0,d.jsx)(y,{title:"Work log",children:(0,d.jsx)(C,{rows:a.workLog})})]})}function F({detail:a}){return(0,d.jsxs)("div",{className:"flex w-full min-w-0 flex-col gap-5",children:[(0,d.jsx)(x,{detail:a}),(0,d.jsx)(s.w,{}),(0,d.jsx)(y,{title:"User story",children:(0,d.jsx)(z,{text:a.userStory})}),(0,d.jsx)(y,{title:"Acceptance criteria",children:(0,d.jsx)(A,{items:a.acceptanceCriteria,raw:a.acceptanceCriteriaRaw})}),(0,d.jsx)(y,{title:"Tasks",children:(0,d.jsx)(p,{childrenItems:a.children,emptyLabel:"No tasks or bugs under this story yet."})}),(0,d.jsx)(y,{title:"Prompt & feedback",children:(0,d.jsx)(D,{rows:a.promptFeedback})}),(0,d.jsx)(y,{title:"Commits",children:(0,d.jsx)(B,{rows:a.commits})}),(0,d.jsx)(y,{title:"Work log",children:(0,d.jsx)(C,{rows:a.workLog})})]})}function G({detail:a}){return(0,d.jsxs)("div",{className:"flex w-full min-w-0 flex-col gap-5",children:[(0,d.jsx)(x,{detail:a}),(0,d.jsx)(s.w,{}),(0,d.jsx)(y,{title:"Description",children:(0,d.jsx)(z,{text:a.description})}),"bug"===a.type?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(y,{title:"Repro steps",children:(0,d.jsx)(z,{text:a.reproSteps})}),(0,d.jsx)(y,{title:"Fix criteria",children:(0,d.jsx)(A,{items:a.acceptanceCriteria,raw:a.fixCriteria||a.acceptanceCriteriaRaw})})]}):(0,d.jsx)(y,{title:"Acceptance criteria",children:(0,d.jsx)(A,{items:a.acceptanceCriteria,raw:a.acceptanceCriteriaRaw})}),(0,d.jsx)(y,{title:"Notes",children:(0,d.jsx)(z,{text:a.notes})}),(0,d.jsx)(y,{title:"Prompt & feedback",children:(0,d.jsx)(D,{rows:a.promptFeedback})}),(0,d.jsx)(y,{title:"Commits",children:(0,d.jsx)(B,{rows:a.commits})}),(0,d.jsx)(y,{title:"Work log",children:(0,d.jsx)(C,{rows:a.workLog})})]})}function H({detail:a}){return"epic"===a.type?(0,d.jsx)(E,{detail:a}):"story"===a.type?(0,d.jsx)(F,{detail:a}):(0,d.jsx)(G,{detail:a})}function I({detail:a}){return(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,d.jsx)(l.wF,{type:a.type}),(0,d.jsx)(l.Wh,{status:a.status})]})}var J=c(69357);function K({className:a,...b}){return(0,d.jsx)(J.A,{"data-slot":"spinner",role:"status","aria-label":"Loading",className:(0,m.cn)("size-4 animate-spin",a),...b})}var L=c(56479),M=c(50039),N=c(91995);function O({className:a,...b}){return(0,d.jsx)("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",className:(0,m.cn)(a),...b})}function P({className:a,...b}){return(0,d.jsx)("ol",{"data-slot":"breadcrumb-list",className:(0,m.cn)("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground",a),...b})}function Q({className:a,...b}){return(0,d.jsx)("li",{"data-slot":"breadcrumb-item",className:(0,m.cn)("inline-flex items-center gap-1",a),...b})}function R({className:a,render:b,...c}){return(0,M.C)({defaultTagName:"a",props:(0,L.v6)({className:(0,m.cn)("font-head transition-colors hover:text-foreground",a)},c),render:b,state:{slot:"breadcrumb-link"}})}function S({className:a,...b}){return(0,d.jsx)("span",{"data-slot":"breadcrumb-page",role:"link","aria-disabled":"true","aria-current":"page",className:(0,m.cn)("font-medium text-foreground",a),...b})}function T({children:a,className:b,...c}){return(0,d.jsx)("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:(0,m.cn)("[&>svg]:size-3.5",b),...c,children:a??(0,d.jsx)(N.A,{})})}var U=c(16793),V=c(98823),W=c(44107),X=c(48939),Y=c(17193),Z=c(26829),$=c(94493);function _({...a}){return(0,d.jsx)(U.D,{"data-slot":"sheet",...a})}function aa({...a}){return(0,d.jsx)(V.Z,{"data-slot":"sheet-portal",...a})}function ab({className:a,...b}){return(0,d.jsx)(W.X,{"data-slot":"sheet-overlay",className:(0,m.cn)("fixed inset-0 z-50 bg-foreground/20 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs",a),...b})}function ac({className:a,children:b,side:c="right",showCloseButton:e=!0,...f}){return(0,d.jsxs)(aa,{children:[(0,d.jsx)(ab,{}),(0,d.jsxs)(X.h,{"data-slot":"sheet-content","data-side":c,className:(0,m.cn)("fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-md transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t-2 data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r-2 data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l-2 data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b-2 data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem] data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm",a),...f,children:[b,e&&(0,d.jsxs)(Y.H,{"data-slot":"sheet-close",render:(0,d.jsx)(o.$,{variant:"ghost",className:"absolute top-3 right-3",size:"icon-sm"}),children:[(0,d.jsx)(g.A,{}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function ad({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"sheet-header",className:(0,m.cn)("flex flex-col gap-0.5 p-4",a),...b})}function ae({className:a,...b}){return(0,d.jsx)(Z.L,{"data-slot":"sheet-title",className:(0,m.cn)("font-head text-base font-medium text-foreground",a),...b})}function af({className:a,...b}){return(0,d.jsx)($.r,{"data-slot":"sheet-description",className:(0,m.cn)("text-sm text-muted-foreground",a),...b})}var ag=c(27922),ah=c(17550);let ai="1"===process.env.NEXT_PUBLIC_TASKMARK_STATIC||"1"===process.env.TASKMARK_STATIC;async function aj(a,b){return ai?(0,ag.mx)(a):(await c.e(487).then(c.bind(c,10487))).loadWorkItemDetail(a,b)}async function ak(a,b){return ai?(0,ag.t0)(a):(await c.e(487).then(c.bind(c,10487))).resolveWorkItemById(a,b)}let al=e.createContext(null),am="item";function an(){let a=e.useContext(al);if(!a)throw Error("useWorkItemSheet must be used within WorkItemSheetProvider");return a}function ao({crumbs:a,onNavigate:b}){return 0===a.length?null:(0,d.jsx)(O,{children:(0,d.jsx)(P,{className:"font-mono text-xs gap-1",children:a.map((c,f)=>{let g=f===a.length-1;return(0,d.jsxs)(e.Fragment,{children:[f>0?(0,d.jsx)(T,{className:"[&>svg]:size-3"}):null,(0,d.jsx)(Q,{children:g?(0,d.jsx)(S,{className:"font-mono text-xs",children:c}):(0,d.jsx)(R,{className:"font-mono text-xs",href:`#${c}`,onClick:a=>{a.preventDefault(),b(c)},children:c})})]},`${c}-${f}`)})})})}function ap({children:a}){let b=(0,i.useRouter)(),c=(0,i.usePathname)(),h=(0,i.useSearchParams)(),j=h.get(am)?.trim()||null,[k,m]=e.useState(!1),[n,p]=e.useState({status:"idle"}),[q,r]=e.useState([]),s=e.useRef(0),u=e.useRef(null),v=e.useRef(null),w=e.useRef(!1),x=e.useRef(n);x.current=n;let y=e.useRef(k);y.current=k,e.useEffect(()=>{"ready"===n.status&&n.detail.filePath?v.current=n.detail.filePath:("loading"===n.status||"error"===n.status)&&n.ref.filePath?v.current=n.ref.filePath:"idle"===n.status&&(v.current=null)},[n]);let z=e.useCallback((a,d)=>{let e,f;if((h.get(am)?.trim()||null)===a)return;let g=(e=new URLSearchParams(h.toString()),a?e.set(am,a):e.delete(am),(f=e.toString())?`${c}?${f}`:c);"replace"===d?b.replace(g,{scroll:!1}):b.push(g,{scroll:!1})},[c,b,h]),A=e.useCallback((a,b)=>{var c;if("push"!==b||w.current||!y.current)return;let d="idle"===(c=x.current).status?null:"ready"===c.status?{id:c.detail.id,title:c.detail.title}:{id:c.ref.id,title:c.ref.title||c.ref.id};d&&d.id!==a&&r(a=>[...a,d])},[]),B=e.useCallback((a,b)=>{u.current=a.id,a.filePath&&(v.current=a.filePath),m(!0),p({status:"loading",ref:a}),aj(a.filePath,a.kind).then(c=>{b===s.current&&(c.ok?(v.current=c.detail.filePath||a.filePath,p({status:"ready",ref:a,detail:c.detail})):p({status:"error",ref:a,message:c.message,filePath:c.filePath}))})},[]),C=e.useCallback((a,b)=>{let c=b?.history??"push";A(a.id,c),B(a,++s.current),w.current||z(a.id,c)},[B,A,z]),D=e.useCallback((a,b)=>{let c=a.trim();if(!c)return;let d=b?.history??"push",e=b?.withinFilePath?.trim()||v.current||null;A(c,d);let f={kind:c.startsWith("E-")?"epic":c.startsWith("S-")?"story":"item",id:c,title:c,filePath:"",itemType:c.startsWith("B-")?"bug":c.startsWith("T-")?"task":void 0},g=++s.current;u.current=c,m(!0),p({status:"loading",ref:f}),w.current||z(c,d),ak(c,{withinFilePath:e}).then(a=>{if(g===s.current){if(!a.ok)return void p({status:"error",ref:f,message:a.message,filePath:""});B(a.ref,g)}})},[B,A,z]),E=e.useCallback(()=>{s.current+=1,u.current=null,v.current=null,m(!1),p({status:"idle"}),r([])},[]);e.useEffect(()=>{if(!j){null!=u.current&&E();return}u.current!==j&&(r(a=>a.length>0&&a[a.length-1]?.id===j?a.slice(0,-1):a),w.current=!0,D(j,{history:"replace"}),queueMicrotask(()=>{w.current=!1}))},[j,D,E]);let F=a=>{a?m(!0):(E(),z(null,"replace"))},G="loading"===n.status||"ready"===n.status||"error"===n.status?n.ref.id:"Work item",J="ready"===n.status?n.detail.title:"loading"===n.status||"error"===n.status?n.ref.title:"Work item detail",L="ready"===n.status?function(a){let b=a.id.trim();if(!b)return[];if("epic"===a.type)return[b];let c=(a.epic||"").trim(),d=(a.parent||"").trim(),e=[];return c?e.push(c):d.startsWith("E-")&&e.push(d),"story"===a.type||d&&d!==c&&d!==b&&!e.includes(d)&&e.push(d),e.includes(b)||e.push(b),e}(n.detail):"loading"===n.status||"error"===n.status?[n.ref.id]:[],M="ready"===n.status?function(a){if("epic"===a.type)return null;let b=a.id.trim(),c=(a.parent||"").trim();if(c&&c!==b)return c;let d=(a.epic||"").trim();return d&&d!==b?d:null}(n.detail):L.length>1?L[L.length-2]:null,[N,O]=e.useState(null);e.useEffect(()=>{if(!M)return void O(null);let a=!1;return O(null),ak(M,{withinFilePath:v.current}).then(b=>{a||(b.ok?O(b.ref.title||null):O(null))}),()=>{a=!0}},[M]);let P=N&&N!==M?`${M} \xb7 ${N}`:M?`Go to ${M}`:"";return(0,d.jsxs)(al.Provider,{value:{openDetail:C,openDetailById:D},children:[a,(0,d.jsx)(_,{open:k,onOpenChange:F,children:(0,d.jsxs)(ac,{side:"right",className:"w-full gap-0 overflow-hidden p-0 data-[side=right]:w-full data-[side=right]:sm:max-w-4xl data-[side=right]:lg:max-w-5xl data-[side=right]:xl:max-w-6xl",showCloseButton:!1,children:[(0,d.jsx)("div",{className:"flex shrink-0 items-center justify-between px-3 pt-3",children:(0,d.jsxs)(t.Bc,{delay:200,children:[M?(0,d.jsxs)(t.m_,{children:[(0,d.jsx)(t.k$,{render:(0,d.jsx)(o.$,{type:"button",variant:"ghost",size:"icon-sm","aria-label":N?`Go to ${M}: ${N}`:`Go to parent ${M}`,onClick:()=>D(M)}),children:(0,d.jsx)(f.A,{})}),(0,d.jsx)(t.ZI,{side:"bottom",children:P})]}):(0,d.jsx)(o.$,{type:"button",variant:"ghost",size:"icon-sm",className:"invisible pointer-events-none",tabIndex:-1,"aria-hidden":!0,children:(0,d.jsx)(f.A,{})}),(0,d.jsxs)(t.m_,{children:[(0,d.jsx)(t.k$,{render:(0,d.jsx)(o.$,{type:"button",variant:"ghost",size:"icon-sm","aria-label":"Close",onClick:()=>F(!1)}),children:(0,d.jsx)(g.A,{})}),(0,d.jsx)(t.ZI,{side:"bottom",children:"Close"})]})]})}),(0,d.jsxs)(ad,{className:"w-full border-b-2 border-border pt-2",children:[(0,d.jsxs)("div",{className:"flex w-full min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)(ao,{crumbs:L,onNavigate:a=>D(a)}),"ready"===n.status?(0,d.jsx)(I,{detail:n.detail}):"loading"===n.status||"error"===n.status?(0,d.jsx)(l.wF,{type:n.ref.itemType??("item"===n.ref.kind?"task":n.ref.kind)}):null]}),(0,d.jsx)(ae,{className:"w-full text-left text-lg leading-snug",children:J}),(0,d.jsxs)(af,{className:"sr-only",children:["Read-only detail view for ",G]})]}),(0,d.jsxs)("div",{className:"flex min-h-0 w-full flex-1 flex-col overflow-y-auto p-4",children:["loading"===n.status?(0,d.jsxs)("div",{role:"status",className:"flex flex-col items-center justify-center gap-3 py-16 text-sm text-muted-foreground",children:[(0,d.jsx)(K,{className:"size-6"}),"Loading ",n.ref.id,"…"]}):null,"error"===n.status?(0,d.jsxs)("div",{role:"alert",className:"w-full rounded border-2 border-destructive/40 bg-destructive/10 px-3 py-3 text-sm",children:[(0,d.jsxs)("p",{className:"font-medium text-destructive",children:["Could not load ",n.ref.id]}),(0,d.jsx)("p",{className:"mt-1 text-muted-foreground",children:n.message}),n.filePath?(0,d.jsx)("p",{className:"mt-2 break-all font-mono text-xs text-muted-foreground",children:(0,ah._)(n.filePath)}):null]}):null,"ready"===n.status?(0,d.jsx)("div",{className:"w-full min-w-0",children:(0,d.jsx)(H,{detail:n.detail})}):null,"idle"===n.status?(0,d.jsx)("p",{className:"py-12 text-center text-sm text-muted-foreground",children:"Select a work item to view its details."}):null]})]})})]})}let aq={openDetail:()=>{},openDetailById:()=>{}};function ar({children:a}){return(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)(al.Provider,{value:aq,children:a}),children:(0,d.jsx)(ap,{children:a})})}function as({itemRef:a,label:b}){let{openDetail:c}=an();return(0,d.jsx)(o.$,{type:"button",variant:"ghost",size:"icon-sm",className:"shrink-0","aria-label":b??`View ${a.id}`,onClick:b=>{b.preventDefault(),b.stopPropagation(),c(a)},children:(0,d.jsx)(h.A,{})})}},54811:(a,b,c)=>{"use strict";c.d(b,{E:()=>i});var d=c(56479),e=c(50039),f=c(21654),g=c(33191);let h=(0,f.F)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded border-2 px-2 py-0.5 text-xs font-head font-medium whitespace-nowrap shadow-sm transition-all focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive text-destructive-foreground [a]:hover:bg-destructive/90",outline:"bg-transparent text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"border-transparent bg-transparent shadow-none hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"border-transparent bg-transparent shadow-none text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function i({className:a,variant:b="default",render:c,...f}){return(0,e.C)({defaultTagName:"span",props:(0,d.v6)({className:(0,g.cn)(h({variant:b}),a)},f),render:c,state:{slot:"badge",variant:b}})}},54958:(a,b,c)=>{"use strict";c.d(b,{Wh:()=>i,YH:()=>h,YJ:()=>k,pb:()=>g,wF:()=>j});var d=c(48249),e=c(54811),f=c(33191);function g(a){return"shelved"===a.trim().toLowerCase()?"bg-[var(--chart-2)]/10 text-muted-foreground":void 0}function h(a){return"bug"===a?"border-black bg-destructive/15 text-destructive":"epic"===a?"border-black bg-[var(--chart-1)]/40 text-black":"story"===a?"border-black bg-[var(--chart-3)]/50 text-black":"border-black bg-[var(--chart-2)] text-black"}function i({status:a}){return(0,d.jsx)(e.E,{variant:"outline",className:(0,f.cn)(function(a){switch(a){case"done":return"border-black bg-[var(--chart-4)] text-black";case"shelved":return"border-black border-dashed bg-[var(--chart-2)]/45 text-foreground";case"in_progress":return"border-black bg-[var(--chart-1)] text-black";case"blocked":return"border-black bg-destructive text-destructive-foreground";case"cancelled":return"border-black bg-muted text-muted-foreground line-through";case"backlog":return"border-black bg-[var(--chart-3)] text-black";default:return"border-black bg-card text-foreground"}}(a)),children:a.replaceAll("_"," ")})}function j({type:a}){return(0,d.jsx)(e.E,{variant:"outline",className:(0,f.cn)(h(a)),children:a})}function k({priority:a}){return(0,d.jsx)(e.E,{variant:"outline",className:(0,f.cn)("capitalize",function(a){switch(a.toLowerCase()){case"critical":return"border-black bg-destructive text-destructive-foreground";case"high":return"border-black bg-[var(--chart-1)] text-black";case"medium":return"border-black bg-[var(--chart-3)] text-black";case"low":return"border-black bg-muted text-muted-foreground";default:return"border-black bg-card text-foreground"}}(a)),children:a.replaceAll("_"," ")})}},56483:(a,b,c)=>{"use strict";c.d(b,{WorkItemsList:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call WorkItemsList() from the server but WorkItemsList is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/work-items-list.tsx","WorkItemsList")},59812:(a,b,c)=>{"use strict";c.d(b,{kT:()=>i,sC:()=>j});var d=c(1692),e=c(70424),f=c(63887);let g=/^\d{4}-\d{2}-\d{2}$/,h=new Set(["","null","—","-","n/a","N/A"]);function i(a){let b=a?.trim()??"";if(!b||h.has(b))return null;if(g.test(b)){let[a,c,e]=b.split("-").map(Number),f=new Date(a,c-1,e);return(0,d.f)(f)?f:null}try{let a=(0,e.H)(b);return(0,d.f)(a)?a:null}catch{return null}}function j(a){let b=a?.trim()??"";if(!b||h.has(b))return"—";let c=i(b);return c?b.includes("T")||/\d{2}:\d{2}/.test(b)?(0,f.GP)(c,"MMM d, yyyy, HH:mm"):(0,f.GP)(c,"MMM d, yyyy"):b}},62407:(a,b,c)=>{"use strict";c.d(b,{Z7:()=>j,eu:()=>h,q5:()=>i});var d=c(48249);c(67484);var e=c(11887),f=c(29527),g=c(33191);function h({className:a,size:b="default",...c}){return(0,d.jsx)(e.C,{"data-slot":"avatar","data-size":b,className:(0,g.cn)("group/avatar relative flex size-8 shrink-0 rounded-full border-2 select-none data-[size=lg]:size-10 data-[size=sm]:size-6",a),...c})}function i({className:a,...b}){return(0,d.jsx)(f.q,{"data-slot":"avatar-fallback",className:(0,g.cn)("flex size-full items-center justify-center rounded-full bg-muted font-head text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",a),...b})}function j({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"avatar-group",className:(0,g.cn)("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",a),...b})}},63160:(a,b,c)=>{"use strict";c.d(b,{K:()=>f});var d=c(67484),e=c(49895);function f(a,b){let[c,f]=(0,d.useState)(1),[g,h]=(0,d.useState)(e.yQ);return{...(0,d.useMemo)(()=>(0,e.Cp)(a,c,g),[a,c,g]),setPage:f,setPageSize:function(a){h((0,e.$G)(a)?a:e.yQ),f(1)}}}},67251:(a,b,c)=>{"use strict";c.d(b,{r:()=>ad});var d=c(48249),e=c(67484),f=c(57188),g=c(52445),h=c(59938),i=c(28205),j=c(63887),k=c(94683),l=c(49543),m=c(45535),n=c(26284),o=c(34644),p=c(91995),q=c(69627),r=c(25385),s=c(57016),t=c(33191);function u({className:a,classNames:b,showOutsideDays:c=!0,fixedWeeks:e=!0,captionLayout:f="label",buttonVariant:g="ghost",locale:h,formatters:i,components:j,...k}){let l=(0,r.a)();return(0,d.jsx)(s.h,{showOutsideDays:c,fixedWeeks:e,className:(0,t.cn)("group/calendar bg-card p-2 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,a),captionLayout:f,locale:h,formatters:{formatMonthDropdown:(a,b)=>b?b.format(a,"LLL"):a.toLocaleString(h?.code,{month:"short"}),...i},classNames:{root:(0,t.cn)("w-fit",l.root),months:(0,t.cn)("relative flex flex-col gap-4 md:flex-row",l.months),month:(0,t.cn)("flex w-full flex-col gap-4",l.month),nav:(0,t.cn)("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",l.nav),button_previous:(0,t.cn)((0,n.r)({variant:g}),"size-(--cell-size) rounded border-2 p-0 shadow-sm select-none aria-disabled:opacity-50",l.button_previous),button_next:(0,t.cn)((0,n.r)({variant:g}),"size-(--cell-size) rounded border-2 p-0 shadow-sm select-none aria-disabled:opacity-50",l.button_next),month_caption:(0,t.cn)("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)",l.month_caption),dropdowns:(0,t.cn)("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium",l.dropdowns),dropdown_root:(0,t.cn)("relative rounded-(--cell-radius)",l.dropdown_root),dropdown:(0,t.cn)("absolute inset-0 bg-popover opacity-0",l.dropdown),caption_label:(0,t.cn)("font-head font-medium select-none","label"===f?"text-sm":"flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground",l.caption_label),month_grid:(0,t.cn)("w-full border-collapse",l.month_grid),weekdays:(0,t.cn)("flex",l.weekdays),weekday:(0,t.cn)("flex w-(--cell-size) items-center justify-center rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none",l.weekday),week:(0,t.cn)("mt-2 flex w-full",l.week),week_number_header:(0,t.cn)("w-(--cell-size) select-none",l.week_number_header),week_number:(0,t.cn)("text-[0.8rem] text-muted-foreground select-none",l.week_number),day:(0,t.cn)("group/day relative size-(--cell-size) rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)",k.showWeekNumber?"[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)":"[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)",l.day),range_start:(0,t.cn)("relative isolate z-0 rounded-l-(--cell-radius) bg-primary/30 after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-primary/30",l.range_start),range_middle:(0,t.cn)("rounded-none",l.range_middle),range_end:(0,t.cn)("relative isolate z-0 rounded-r-(--cell-radius) bg-primary/30 after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-primary/30",l.range_end),today:(0,t.cn)("rounded-(--cell-radius) border-2 border-primary text-foreground data-[selected=true]:rounded-none",l.today),outside:(0,t.cn)("text-muted-foreground aria-selected:text-muted-foreground",l.outside),disabled:(0,t.cn)("text-muted-foreground opacity-50",l.disabled),hidden:(0,t.cn)("invisible",l.hidden),...b},components:{Root:({className:a,rootRef:b,...c})=>(0,d.jsx)("div",{"data-slot":"calendar",ref:b,className:(0,t.cn)(a),...c}),Chevron:({className:a,orientation:b,...c})=>"left"===b?(0,d.jsx)(o.A,{className:(0,t.cn)("size-4",a),...c}):"right"===b?(0,d.jsx)(p.A,{className:(0,t.cn)("size-4",a),...c}):(0,d.jsx)(q.A,{className:(0,t.cn)("size-4",a),...c}),DayButton:({...a})=>(0,d.jsx)(v,{locale:h,...a}),WeekNumber:({children:a,...b})=>(0,d.jsx)("td",{...b,children:(0,d.jsx)("div",{className:"flex size-(--cell-size) items-center justify-center text-center",children:a})}),...j},...k})}function v({className:a,day:b,modifiers:c,locale:f,...g}){let h=(0,r.a)(),i=e.useRef(null);return e.useEffect(()=>{c.focused&&i.current?.focus()},[c.focused]),(0,d.jsx)(n.$,{variant:"ghost",size:"icon","data-day":`${b.date.getFullYear()}-${String(b.date.getMonth()+1).padStart(2,"0")}-${String(b.date.getDate()).padStart(2,"0")}`,"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:(0,t.cn)("relative isolate z-10 flex size-(--cell-size) flex-col items-center justify-center gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:outline-2 group-data-[focused=true]/day:outline-offset-2 group-data-[focused=true]/day:outline-primary data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:border-2 data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-primary/30 data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:border-2 data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:border-2 data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70",h.day,a),...g})}var w=c(94147),x=c(66125),y=c(13137),z=c(67525),A=c(83161);function B({...a}){return(0,d.jsx)(w.y,{"data-slot":"popover",...a})}function C({...a}){return(0,d.jsx)(x.W,{"data-slot":"popover-trigger",...a})}function D({className:a,align:b="center",alignOffset:c=0,side:e="bottom",sideOffset:f=4,...g}){return(0,d.jsx)(y.i,{children:(0,d.jsx)(z.U,{align:b,alignOffset:c,side:e,sideOffset:f,className:"isolate z-50",children:(0,d.jsx)(A.i,{"data-slot":"popover-content",className:(0,t.cn)("z-50 flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded border-2 bg-popover p-2.5 text-sm text-popover-foreground shadow-md outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...g})})})}var E=c(77360),F=c(94501),G=c(30851),H=c(15073),I=c(54364),J=c(92091),K=c(68650),L=c(42351),M=c(24281),N=c(32962),O=c(34656),P=c(60617),Q=c(86779),R=c(35471),S=c(85448);let T=E.H;function U({className:a,...b}){return(0,d.jsx)(F.y,{"data-slot":"select-value",className:(0,t.cn)("flex flex-1 text-left",a),...b})}function V({className:a,size:b="default",children:c,...e}){return(0,d.jsxs)(G.b,{"data-slot":"select-trigger","data-size":b,className:(0,t.cn)("flex w-fit items-center justify-between gap-1.5 rounded border-2 bg-input py-2 pr-2 pl-2.5 text-sm whitespace-nowrap shadow-sm transition-colors outline-none select-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive data-placeholder:text-muted-foreground data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",a),...e,children:[c,(0,d.jsx)(H.w,{render:(0,d.jsx)(q.A,{className:"pointer-events-none size-4 text-muted-foreground"})})]})}function W({className:a,children:b,side:c="bottom",sideOffset:e=4,align:f="center",alignOffset:g=0,alignItemWithTrigger:h=!0,...i}){return(0,d.jsx)(I.V,{children:(0,d.jsx)(J.l,{side:c,sideOffset:e,align:f,alignOffset:g,alignItemWithTrigger:h,className:"isolate z-50",children:(0,d.jsxs)(K.t,{"data-slot":"select-content","data-align-trigger":h,className:(0,t.cn)("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded border-2 bg-popover text-popover-foreground shadow-md duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",a),...i,children:[(0,d.jsx)(Y,{}),(0,d.jsx)(L.B,{children:b}),(0,d.jsx)(Z,{})]})})})}function X({className:a,children:b,...c}){return(0,d.jsxs)(M.e,{"data-slot":"select-item",className:(0,t.cn)("relative flex w-full cursor-default items-center gap-1.5 rounded-sm py-1 pr-8 pl-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",a),...c,children:[(0,d.jsx)(N.h,{className:"flex flex-1 shrink-0 gap-2 whitespace-nowrap",children:b}),(0,d.jsx)(O.h,{render:(0,d.jsx)("span",{className:"pointer-events-none absolute right-2 flex size-4 items-center justify-center"}),children:(0,d.jsx)(R.A,{className:"pointer-events-none"})})]})}function Y({className:a,...b}){return(0,d.jsx)(P.w,{"data-slot":"select-scroll-up-button",className:(0,t.cn)("top-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",a),...b,children:(0,d.jsx)(S.A,{})})}function Z({className:a,...b}){return(0,d.jsx)(Q.d,{"data-slot":"select-scroll-down-button",className:(0,t.cn)("bottom-0 z-10 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",a),...b,children:(0,d.jsx)(q.A,{})})}var $=c(89055),_=c(59812),aa=c(13259);let ab=new Intl.NumberFormat("en",{notation:"compact",compactDisplay:"short",maximumFractionDigits:1});function ac({points:a,className:b}){return a<=0?(0,d.jsx)("span",{className:(0,t.cn)("tabular-nums text-muted-foreground/40",b),children:"—"}):(0,d.jsx)("span",{className:(0,t.cn)("tabular-nums text-muted-foreground",b),children:ab.format(a)})}function ad({value:a,onChange:b,completedAts:c,countableCompletions:o,id:p="timeframe-filter",className:q}){let r,s,w=(0,e.useMemo)(()=>o?[...o]:c.map(a=>({completedAt:a,points:0})),[o,c]),x=(0,e.useMemo)(()=>(0,aa.oU)(c),[c]),y=(0,e.useMemo)(()=>(0,aa.D_)(w),[w]),z=(0,e.useMemo)(()=>(0,aa.ad)(w),[w]),A=x.years,E=A.length>1,F=(0,aa._i)(a),G=(0,e.useMemo)(()=>(0,aa.z_)(),[]),H=(0,e.useMemo)(()=>(0,aa.G4)(new Date),[]),I=(0,e.useMemo)(()=>(0,aa.iK)(H.year,H.week,-1),[H.year,H.week]),J=(0,e.useMemo)(()=>(0,aa.iK)(H.year,H.week,1),[H.year,H.week]),K=A.length>0?A[A.length-1]:G.year,[L,M]=(0,e.useState)(K),[N,O]=(0,e.useState)(!1),P=(0,e.useRef)(null),Q=A.length>0?A:[G.year],R="weeks"===a.mode?a.year:L,S=Q.length>1,Y=(0,e.useMemo)(()=>({min:1,max:(0,aa.NB)(R)}),[R]),Z="weeks"===a.mode?Math.min(a.weekFrom,a.weekTo):G.weekFrom,ae="weeks"===a.mode?Math.max(a.weekFrom,a.weekTo):G.weekTo,af=(0,aa.NB)(L),ag="range"===a.mode?{from:(0,_.kT)(a.from)??void 0,to:(0,_.kT)(a.to)??void 0}:void 0,[ah,ai]=(0,e.useState)(),aj="range"===a.mode?ag:ah,ak=(0,aa.zi)(a),al="weeks"===a.mode&&a.weekFrom===a.weekTo;function am(a,c,d){b({mode:"weeks",year:a,weekFrom:Math.min(c,d),weekTo:Math.max(c,d)})}let an=al?`ISO week ${(r=Math.min(Z,ae))===(s=Math.max(Z,ae))?`W${r}`:`W${r}–W${s}`} ${R}`:"Filter by solved ISO week",ao="range"===a.mode&&ag?.from&&ag?.to?`Date range ${(0,j.GP)(ag.from,"MMM d")} – ${(0,j.GP)(ag.to,"MMM d, yyyy")}`:"Filter by solved date range";return(0,d.jsxs)("div",{className:(0,t.cn)("flex flex-nowrap items-center gap-2",q),role:"group","aria-label":"Solved timeframe",children:[F?(0,d.jsxs)(d.Fragment,{children:[S?(0,d.jsxs)(T,{value:String(R),onValueChange:function(a){if(null==a)return;let b=Number(a);if(!Number.isFinite(b))return;let c=(0,aa.NB)(b),d=Math.min(Z,c),e=Math.min(ae,c);d===e&&e>1?am(b,e-1,e):d===e&&e<c?am(b,e,e+1):am(b,d,e)},children:[(0,d.jsx)(V,{id:`${p}-year`,size:"sm",className:"h-8 min-w-[4.75rem]","aria-label":"ISO week year",children:(0,d.jsx)(U,{})}),(0,d.jsx)(W,{children:Q.map(a=>(0,d.jsx)(X,{value:String(a),children:a},a))})]}):null,(0,d.jsxs)("div",{className:"inline-flex h-8 shrink-0 items-center overflow-hidden rounded border-2 border-black bg-input shadow-sm",role:"group","aria-label":"ISO week range",children:[(0,d.jsxs)(T,{value:String(Z),onValueChange:function(a){if(null==a)return;let b=Number(a);if(!Number.isFinite(b))return;let c=Math.max(b,ae);am(R,b,c)},children:[(0,d.jsx)(V,{id:`${p}-week-from`,size:"sm",className:"h-full min-w-[4.25rem] rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0","aria-label":"From ISO week",children:(0,d.jsx)(U,{children:a=>null!=a?`W${a}`:"From"})}),(0,d.jsx)(W,{children:Array.from({length:Y.max},(a,b)=>{let c=b+1;return(0,d.jsxs)(X,{value:String(c),disabled:c>ae,children:["W",c]},c)})})]}),(0,d.jsx)("span",{className:"shrink-0 px-0.5 font-mono text-xs text-muted-foreground","aria-hidden":!0,children:"–"}),(0,d.jsxs)(T,{value:String(ae),onValueChange:function(a){if(null==a)return;let b=Number(a);Number.isFinite(b)&&am(R,Math.min(Z,b),b)},children:[(0,d.jsx)(V,{id:`${p}-week-to`,size:"sm",className:"h-full min-w-[4.25rem] rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0","aria-label":"To ISO week",children:(0,d.jsx)(U,{children:a=>null!=a?`W${a}`:"To"})}),(0,d.jsx)(W,{children:Array.from({length:Y.max},(a,b)=>{let c=b+1;return(0,d.jsxs)(X,{value:String(c),disabled:c<Z,children:["W",c]},c)})})]})]})]}):(0,d.jsxs)(B,{open:N,onOpenChange:a=>{O(a),a&&M(H.year)},children:[(0,d.jsx)(C,{render:(0,d.jsx)(n.$,{id:`${p}-weeks-picker`,type:"button",variant:"outline",size:"icon-sm",className:(0,t.cn)("shrink-0",al&&"border-primary"),"aria-label":an,title:an}),children:(0,d.jsx)(k.A,{className:"size-3.5 opacity-70"})}),(0,d.jsxs)(D,{align:"end",className:"w-72 gap-0 p-0",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2 border-b border-border px-2.5 py-2",children:[(0,d.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:"Week"}),E?(0,d.jsxs)(T,{value:String(L),onValueChange:a=>{if(null==a)return;let b=Number(a);Number.isFinite(b)&&M(b)},children:[(0,d.jsx)(V,{size:"sm",className:"h-7 min-w-[4.5rem]","aria-label":"ISO week year",children:(0,d.jsx)(U,{})}),(0,d.jsx)(W,{children:A.map(a=>(0,d.jsx)(X,{value:String(a),children:a},a))})]}):(0,d.jsx)("span",{className:"font-mono text-xs tabular-nums text-muted-foreground",children:L})]}),(0,d.jsx)("div",{className:"max-h-56 overflow-y-auto p-1",role:"listbox","aria-label":`ISO weeks in ${L}`,children:Array.from({length:af},(b,c)=>{let e,k=c+1,{start:l,end:m}=(e=new Date(L,0,4),e=(0,f.v)(e,L),e=(0,g.O)(e,k),{start:(0,h.b)(e),end:(0,i.g)(e)}),n="weeks"===a.mode&&a.year===L&&a.weekFrom===k&&a.weekTo===k,o=L===H.year&&k===H.week,p=L===I.year&&k===I.week,q=L===J.year&&k===J.week,r=o?"Now":p?"Prev":q?"Next":null,s=y.get((0,aa.Mh)(L,k))??0,u=x.weeksByYear[L],v=!!(u&&k>=u.min&&k<=u.max);return(0,d.jsxs)("button",{ref:o?P:void 0,type:"button",role:"option","aria-selected":n,"aria-current":o?"date":void 0,className:(0,t.cn)("flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-sm outline-none hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent",n&&"bg-accent text-accent-foreground",!v&&!p&&!o&&!q&&"text-muted-foreground"),onClick:()=>{am(L,k,k),O(!1)},children:[(0,d.jsxs)("span",{className:"flex min-w-0 flex-1 items-center gap-1.5",children:[(0,d.jsxs)("span",{className:"font-mono text-xs tabular-nums",children:["W",k]}),r?(0,d.jsx)("span",{className:"rounded bg-primary/15 px-1 py-px text-[10px] font-medium tracking-wide text-primary uppercase",children:r}):null,(0,d.jsxs)("span",{className:"truncate text-xs text-muted-foreground",children:[(0,j.GP)(l,"MMM d")," – ",(0,j.GP)(m,"MMM d")]})]}),(0,d.jsx)(ac,{points:s,className:"shrink-0 text-xs"})]},k)})}),(0,d.jsx)($.w,{}),(0,d.jsxs)("div",{className:"flex flex-col gap-0.5 p-1.5",children:[(0,d.jsxs)(n.$,{type:"button",variant:"ghost",size:"sm",className:"h-8 w-full justify-start font-normal",onClick:()=>{am(I.year,I.week,I.week),M(I.year),O(!1)},children:["Previous week",(0,d.jsxs)("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:["W",I.week]})]}),(0,d.jsxs)(n.$,{type:"button",variant:"ghost",size:"sm",className:"h-8 w-full justify-start font-normal",onClick:function(){am(H.year,H.week,H.week),M(H.year),O(!1)},children:["This week",(0,d.jsxs)("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:["W",H.week]})]}),(0,d.jsxs)(n.$,{type:"button",variant:"ghost",size:"sm",className:"h-8 w-full justify-start font-normal",onClick:()=>{am(J.year,J.week,J.week),M(J.year),O(!1)},children:["Next week",(0,d.jsxs)("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:["W",J.week]})]}),(0,d.jsx)(n.$,{type:"button",variant:"ghost",size:"sm",className:"h-8 w-full justify-start font-normal",onClick:function(){let a=(0,aa.z_)(),b=Q.includes(a.year)?a.year:L,c=(0,aa.NB)(b),d=Math.min(a.weekTo,c),e=Math.max(1,Math.min(a.weekFrom,d));e===d&&(d=(e=d>1?d-1:d)===d&&d<c?d+1:d),am(b,e,d),M(b),O(!1)},children:"Select week range…"})]})]})]}),(0,d.jsxs)(B,{onOpenChange:b=>{b&&"range"!==a.mode&&ai(void 0)},children:[(0,d.jsx)(C,{render:(0,d.jsx)(n.$,{id:`${p}-dates`,type:"button",variant:"outline",size:"icon-sm",className:(0,t.cn)("shrink-0","range"===a.mode&&"border-primary"),"aria-label":ao,title:ao}),children:(0,d.jsx)(l.A,{className:"size-3.5 opacity-70"})}),(0,d.jsx)(D,{align:"end",className:"w-auto p-2",children:(0,d.jsx)(u,{mode:"range",numberOfMonths:1,selected:aj,onSelect:function(a){ai(a),a?.from&&a.to&&b({mode:"range",from:(0,aa.xp)(a.from),to:(0,aa.xp)(a.to)})},defaultMonth:aj?.from??aj?.to,className:"[--cell-size:--spacing(9)]",components:{DayButton:function(a){let b=(0,aa.xp)(a.day.date),c=z.get(b)??0;return(0,d.jsxs)(v,{...a,className:(0,t.cn)(a.className,"h-auto min-h-(--cell-size) gap-0.5 py-1"),children:[a.children,c>0?(0,d.jsx)("span",{className:"text-[9px] leading-none tabular-nums text-muted-foreground opacity-80",title:`${c} story point${1===c?"":"s"}`,children:ab.format(c)}):(0,d.jsx)("span",{className:"text-[9px] leading-none opacity-0",children:"0"})]})}}})})]}),ak?(0,d.jsx)(n.$,{type:"button",variant:"ghost",size:"icon-sm",className:"shrink-0 text-muted-foreground",onClick:function(){ai(void 0),b(aa.er)},"aria-label":"Clear timeframe filter",title:"Clear timeframe",children:(0,d.jsx)(m.A,{className:"size-3.5"})}):null]})}},67565:(a,b,c)=>{"use strict";c.d(b,{CJ:()=>i,GQ:()=>h,LO:()=>n,LV:()=>m,cu:()=>j,pN:()=>f});let d=["overall","workitems","changelog"],e="overall",f={overall:"Overall",workitems:"Work items",changelog:"Changelog"},g=new Set(["all","stories","tasks","workitems"]);function h(a){return a?[...d]:d.filter(a=>"changelog"!==a)}function i(a,b){let c="string"==typeof a?a.trim().toLowerCase():"";return"overall"===c?"overall":g.has(c)?"workitems":"changelog"===c&&b?.hasChangelog?"changelog":e}function j(a){let b=new URLSearchParams,c=a.view??e;c!==e&&b.set("view",c),"overall"===c&&(a.epic&&b.set("epic",a.epic),a.epic&&a.story&&b.set("story",a.story)),a.item&&b.set("item",a.item);let d=b.toString();return d?`/?${d}`:"/"}let k={backlog:0,in_progress:1,blocked:2,done:3,shelved:4,cancelled:5},l={critical:0,high:1,medium:2,low:3};function m(a){return k[a.toLowerCase()]??50}function n(a){return l[a.toLowerCase()]??50}},68704:(a,b,c)=>{"use strict";c.d(b,{J:()=>f});var d=c(48249);c(67484);var e=c(33191);function f({className:a,...b}){return(0,d.jsx)("label",{"data-slot":"label",className:(0,e.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",a),...b})}},75464:(a,b,c)=>{"use strict";c.d(b,{Aw:()=>k,Bm:()=>j,nU:()=>i});var d=c(48249),e=c(54958),f=c(31168),g=c(59812);function h({label:a,date:b,children:c,className:e}){let i=`${a} ${(0,g.sC)(b)}`;return(0,d.jsx)(f.Bc,{children:(0,d.jsxs)(f.m_,{children:[(0,d.jsx)(f.k$,{render:(0,d.jsx)("span",{className:e}),title:i,children:c}),(0,d.jsx)(f.ZI,{children:i})]})})}function i({id:a,created:b,children:c}){return(0,d.jsx)(h,{label:"Created",date:b,className:"font-mono text-xs",children:c??a})}function j({status:a,solvedAt:b}){let c=(0,d.jsx)(e.Wh,{status:a});return"done"!==a?c:(0,d.jsx)(h,{label:"Solved",date:b,children:c})}function k({size:a,points:b}){let c=a?.trim()?a:"—",e=null==b?"—":String(b),g=`Points ${e}`;return(0,d.jsx)(f.Bc,{children:(0,d.jsxs)(f.m_,{children:[(0,d.jsx)(f.k$,{render:(0,d.jsx)("span",{className:"cursor-default"}),title:g,children:c}),(0,d.jsx)(f.ZI,{children:g})]})})}},77155:(a,b,c)=>{"use strict";c.d(b,{ProjectContributorsPanel:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ProjectContributorsPanel() from the server but ProjectContributorsPanel is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/menda0/Projects/taskmark/taskmark-frontend/components/board/project-contributors-panel.tsx","ProjectContributorsPanel")},81025:(a,b,c)=>{"use strict";c.d(b,{PointsHeatmap:()=>r});var d=c(48249),e=c(63887),f=c(59938),g=c(723),h=c(28205),i=c(88629),j=c(5182),k=c(13259),l=c(33191);let m={0:"bg-white dark:bg-neutral-900",1:"bg-[#f0e8ff] dark:bg-[#2f2542]",2:"bg-[#e2d0ff] dark:bg-[#4c3a73]",3:"bg-[#d3b9ff] dark:bg-[#8368c0]",4:"bg-[#c4a1ff]"},n=["Mon","","Wed","","Fri","",""],o="0.75rem";function p(a){return 1===a?"1 story point":`${a} story points`}function q({day:a,maxPoints:b}){if(a.isFuture)return(0,d.jsx)("span",{"aria-hidden":!0,className:"size-3"});let c=function(a,b){if(a<=0||b<=0)return 0;let c=a/b;return c<=.25?1:c<=.5?2:c<=.75?3:4}(a.points,b),f=(0,l.cn)("size-3 rounded-[2px] border border-black/20 dark:border-white/15",m[c]),g=`${(0,e.GP)(a.date,"MMM d, yyyy")} \xb7 ${p(a.points)}`;return a.points<=0?(0,d.jsx)("span",{"aria-hidden":!0,title:g,className:f}):(0,d.jsx)("button",{type:"button",title:g,"aria-label":g,className:(0,l.cn)(f,"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary")})}function r({samples:a,now:b}){let c,{weeks:s,maxPoints:t,totalPoints:u,start:v,end:w}=function(a,b=new Date){let c=(0,k.ad)(a),d=(0,f.b)((0,g.k)(b,52)),e=(0,h.g)(b),l=(0,i.o)(b),m=[],n=0,o=0,p=d;for(;p.getTime()<=e.getTime();){let a=[];for(let b=0;b<7;b++){let d=(0,j.f)(p,b),e=(0,k.xp)(d),f=c.get(e)??0;n=Math.max(n,f),o+=f,a.push({date:d,key:e,points:f,isFuture:(0,i.o)(d).getTime()>l.getTime()})}m.push({key:(0,k.xp)(p),days:a}),p=(0,j.f)(p,7)}return{weeks:m,maxPoints:n,totalPoints:o,start:d,end:e}}(a,b),x=(c=null,s.map((a,b)=>{let d=a.days[0].date,f=d.getMonth(),g=null!==c&&f!==c;return(c=f,!g||b>=s.length-1)?"":(0,e.GP)(d,"MMM")})),y=`Story points completed per day between ${(0,e.GP)(v,"MMM d, yyyy")} and ${(0,e.GP)(w,"MMM d, yyyy")}: ${p(u)} in total.`;return(0,d.jsxs)("section",{className:"border-2 border-black bg-card p-4 shadow-[4px_4px_0_0_var(--shadow-color)]","aria-label":"Completed story points calendar",children:[(0,d.jsxs)("div",{className:"mb-3 flex flex-col gap-1 sm:flex-row sm:items-end sm:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"font-head text-base tracking-tight",children:"Story points"}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"Done tasks and bugs over the last year"})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:t>0?`${p(u)} completed`:"No completed story points in this window yet."})]}),(0,d.jsx)("p",{className:"sr-only",children:y}),(0,d.jsx)("div",{className:"overflow-x-auto pb-1",children:(0,d.jsxs)("div",{className:"mx-auto flex w-max gap-1.5",children:[(0,d.jsx)("div",{className:"grid shrink-0",style:{gridTemplateRows:`repeat(7, ${o})`,rowGap:"3px",paddingTop:`calc(${o} + 3px)`},"aria-hidden":!0,children:n.map((a,b)=>(0,d.jsx)("span",{className:"flex items-center pr-1 text-[9px] leading-none text-muted-foreground",children:a},`weekday-${b}`))}),(0,d.jsxs)("div",{className:"flex flex-col",style:{rowGap:"3px"},children:[(0,d.jsx)("div",{className:"grid",style:{gridTemplateColumns:`repeat(${s.length}, ${o})`,columnGap:"3px"},"aria-hidden":!0,children:x.map((a,b)=>(0,d.jsx)("span",{className:"h-3 whitespace-nowrap text-[9px] leading-3 text-muted-foreground",children:a},`month-${s[b]?.key??b}`))}),(0,d.jsx)("div",{className:"grid grid-flow-col",style:{gridTemplateRows:`repeat(7, ${o})`,gridAutoColumns:o,gap:"3px"},children:s.flatMap(a=>a.days.map(a=>(0,d.jsx)(q,{day:a,maxPoints:t},a.key)))})]})]})}),(0,d.jsxs)("div",{className:"mt-3 flex items-center justify-center gap-2 text-[10px] text-muted-foreground",children:[(0,d.jsx)("span",{children:"Less"}),(0,d.jsx)("div",{className:"flex items-center gap-1","aria-hidden":!0,children:[0,1,2,3,4].map(a=>(0,d.jsx)("span",{className:(0,l.cn)("size-3 rounded-[2px] border border-black/20 dark:border-white/15",m[a])},a))}),(0,d.jsx)("span",{children:"More"})]})]})}},81391:(a,b,c)=>{"use strict";c.d(b,{ChangelogPanel:()=>g});var d=c(48249),e=c(86478),f=c(64034);function g({markdown:a}){return(0,d.jsxs)(f.Zp,{children:[(0,d.jsxs)(f.aR,{children:[(0,d.jsx)(f.ZB,{className:"font-head text-xl",children:"Changelog"}),(0,d.jsx)(f.BT,{children:"Board-root CHANGELOG.md (Keep a Changelog)"})]}),(0,d.jsx)(f.Wu,{children:(0,d.jsx)(e.h,{text:a})})]})}},86266:(a,b,c)=>{"use strict";c.d(b,{AppBar:()=>o});var d=c(48249),e=c(99829);let f=(0,e.createServerReference)("40667a83a15b7200835fa0a354a23e32226b9bb943",e.callServer,void 0,e.findSourceMapURL,"selectActiveProject"),g=(0,e.createServerReference)("006839ae44e9ea0886604d7db5c62e5da636d150c9",e.callServer,void 0,e.findSourceMapURL,"openAddProject");var h=c(33191);function i({className:a,alt:b="Taskmark",width:c=40,height:e=45}){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("img",{src:"/tm_light.png",alt:b,width:c,height:e,className:(0,h.cn)("dark:hidden",a)}),(0,d.jsx)("img",{src:"/tm_dark.png",alt:"","aria-hidden":!0,width:c,height:e,className:(0,h.cn)("hidden dark:block",a)})]})}var j=c(60525),k=c(10090),l=c(8696),m=c(26284);function n(){let{setTheme:a}=(0,l.D)();return(0,d.jsxs)(m.$,{type:"button",variant:"outline",size:"icon","aria-label":"Switch between light and dark theme",title:"Switch between light and dark theme",onClick:()=>{a(document.documentElement.classList.contains("dark")?"light":"dark")},children:[(0,d.jsx)(j.A,{className:"hidden size-4 dark:block"}),(0,d.jsx)(k.A,{className:"size-4 dark:hidden"})]})}function o({projects:a,activeProjectId:b,autoconfig:c=!1}){return(0,d.jsx)("header",{className:"sticky top-0 z-40 border-b-2 border-border bg-card/95 shadow-sm backdrop-blur",children:(0,d.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-wrap items-center gap-3 px-4 pt-3.5 pb-4",children:[(0,d.jsxs)("div",{className:"group flex min-w-0 flex-1 items-center gap-3 transition-[gap] duration-200 group-hover:gap-4",children:[(0,d.jsx)(i,{alt:"",width:40,height:45,className:"mb-0.5 h-10 w-auto shrink-0 origin-center select-none object-contain transition-transform duration-200 group-hover:scale-110"}),(0,d.jsxs)("div",{className:"flex min-w-0 flex-col gap-0.5",children:[(0,d.jsx)("p",{className:"w-fit cursor-default font-head text-2xl leading-none tracking-tight",children:(0,d.jsxs)("span",{className:"relative inline-block transition-transform duration-200 group-hover:-rotate-2",children:["Taskmark",(0,d.jsx)("svg",{"aria-hidden":!0,viewBox:"0 0 120 10",preserveAspectRatio:"none",className:"pointer-events-none absolute -bottom-1.5 -left-1 h-2.5 w-[calc(100%+1rem)] origin-left text-primary opacity-0 transition-opacity duration-200 group-hover:opacity-100",children:(0,d.jsx)("path",{fill:"currentColor",d:"M1 5.2 L119 3.2 L119 8.8 L1 5.9 Z"})})]})}),(0,d.jsx)("p",{className:"truncate text-xs text-muted-foreground transition-transform duration-200 group-hover:translate-y-1",children:"Product memory for agent work"})]})]}),c?null:(0,d.jsxs)("form",{action:f,className:"flex min-w-0 flex-wrap items-center gap-2",children:[(0,d.jsx)("label",{htmlFor:"projectId",className:"sr-only",children:"Active project"}),(0,d.jsx)("select",{id:"projectId",name:"projectId",defaultValue:b,onChange:a=>{a.currentTarget.form?.requestSubmit()},className:"max-w-[20rem] rounded border-2 border-border bg-input px-3 py-1.5 text-sm shadow-sm outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring",children:a.map(b=>(0,d.jsx)("option",{value:b.id,children:function(a,b){let c=b.filter(b=>b.name===a.name);if(c.length<=1)return a.name;let d=c.findIndex(b=>b.id===a.id)+1;return`${a.name} (${d})`}(b,a)},b.id))}),(0,d.jsx)("noscript",{children:(0,d.jsx)(m.$,{type:"submit",size:"sm",variant:"outline",children:"Switch project"})})]}),c?null:(0,d.jsx)("form",{action:g,children:(0,d.jsx)(m.$,{type:"submit",variant:"outline",size:"sm",children:"Add project"})}),(0,d.jsx)(n,{})]})})}},86478:(a,b,c)=>{"use strict";c.d(b,{h:()=>k});var d=c(48249),e=c(67484),f=c(77405),g=c(36815);function h({chart:a}){(0,e.useId)().replace(/:/g,"");let[b,c]=(0,e.useState)(!1),[f,g]=(0,e.useState)(null),[i,j]=(0,e.useState)(null);return i?(0,d.jsxs)("div",{className:"my-2 rounded border-2 border-border bg-muted p-3",children:[(0,d.jsx)("p",{className:"text-xs text-destructive",children:i}),(0,d.jsx)("pre",{className:"mt-2 overflow-x-auto font-mono text-xs",children:a})]}):f?(0,d.jsx)("div",{className:"tm-mermaid my-2 max-w-full overflow-x-auto",dangerouslySetInnerHTML:{__html:f}}):(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"Rendering diagram…"})}var i=c(33191);let j=(0,i.cn)("tm-md text-sm leading-relaxed text-foreground","[&_p]:my-2","[&_h1]:mt-3 [&_h1]:mb-2 [&_h1]:font-head [&_h1]:text-lg [&_h1]:font-semibold","[&_h2]:mt-3 [&_h2]:mb-2 [&_h2]:font-head [&_h2]:text-base [&_h2]:font-semibold","[&_h3]:mt-2.5 [&_h3]:mb-1.5 [&_h3]:font-head [&_h3]:text-sm [&_h3]:font-semibold","[&_h4]:mt-2 [&_h4]:mb-1 [&_h4]:font-head [&_h4]:text-sm [&_h4]:font-semibold","[&_ul]:my-2 [&_ul]:list-disc [&_ul]:pl-5","[&_ol]:my-2 [&_ol]:list-decimal [&_ol]:pl-5","[&_li]:my-0.5 [&_li]:leading-relaxed","[&_blockquote]:my-2 [&_blockquote]:border-l-2 [&_blockquote]:border-border [&_blockquote]:pl-3 [&_blockquote]:text-muted-foreground","[&_a]:underline [&_a]:underline-offset-2 [&_a]:hover:text-primary","[&_code]:rounded [&_code]:bg-muted [&_code]:px-1 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[0.85em]","[&_pre]:my-2 [&_pre]:overflow-x-auto [&_pre]:rounded [&_pre]:border-2 [&_pre]:border-border [&_pre]:bg-muted [&_pre]:p-3","[&_pre_code]:bg-transparent [&_pre_code]:p-0","[&_hr]:my-3 [&_hr]:border-border","[&_table]:my-2 [&_table]:w-full [&_table]:border-collapse [&_table]:text-left [&_table]:text-xs","[&_th]:border [&_th]:border-border [&_th]:bg-muted/50 [&_th]:px-2 [&_th]:py-1.5 [&_th]:font-head","[&_td]:border [&_td]:border-border [&_td]:px-2 [&_td]:py-1.5","[&_strong]:font-semibold","[&_em]:italic","[&_del]:text-muted-foreground [&_del]:line-through","[&_img]:my-2 [&_img]:max-w-full [&_img]:rounded");function k({text:a,className:b,inline:c=!1}){let l=a.trim();if(!l)return c?null:(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"None noted."});let m=(0,d.jsx)(f.oz,{remarkPlugins:[g.A],components:c?{p:({children:a})=>(0,d.jsx)("span",{children:a}),h1:({children:a})=>(0,d.jsx)("span",{className:"font-semibold",children:a}),h2:({children:a})=>(0,d.jsx)("span",{className:"font-semibold",children:a}),h3:({children:a})=>(0,d.jsx)("span",{className:"font-semibold",children:a}),ul:({children:a})=>(0,d.jsx)("span",{children:a}),ol:({children:a})=>(0,d.jsx)("span",{children:a}),li:({children:a})=>(0,d.jsxs)("span",{children:[a," "]})}:{pre({children:a}){let b,c=(b=Array.isArray(a)?a[0]:a,(0,e.isValidElement)(b)&&(b.props.className??"").includes("language-mermaid")?String(b.props.children??"").replace(/\n$/,""):null);return null!==c?(0,d.jsx)(h,{chart:c}):(0,d.jsx)("pre",{children:a})}},children:l});return c?(0,d.jsx)("span",{className:(0,i.cn)("text-sm leading-relaxed text-foreground",b),children:m}):(0,d.jsx)("div",{className:(0,i.cn)(j,b),children:m})}},88382:(a,b,c)=>{"use strict";c.d(b,{StaticBoardApp:()=>x});var d=c(48249),e=c(67484),f=c(19099),g=c(86266),h=c(81391),i=c(28330),j=c(11616),k=c(81025),l=c(54183),m=c(8006),n=c(68513),o=c(35195),p=c(33191);function q({title:a,value:b,subtitle:c,icon:e,accentClassName:f,className:g}){return(0,d.jsxs)("div",{className:(0,p.cn)("flex min-h-[7.5rem] flex-col justify-between gap-3 border-2 border-black bg-card p-4 shadow-none",g),children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsx)("p",{className:"text-sm font-medium text-card-foreground",children:a}),(0,d.jsx)("div",{className:(0,p.cn)("flex size-9 shrink-0 items-center justify-center border-2 border-black text-black shadow-[3px_3px_0_0_var(--shadow-color)]",f),"aria-hidden":!0,children:e})]}),(0,d.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,d.jsx)("p",{className:"font-head text-3xl font-bold leading-none tracking-tight text-card-foreground tabular-nums sm:text-4xl",children:b}),c?(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:c}):null]})]})}var r=c(6017);function s({metrics:a}){return(0,d.jsxs)("section",{className:"flex flex-col gap-4","aria-label":"Project status metrics",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 gap-3 sm:grid-cols-3",children:[(0,d.jsx)(q,{title:"Total work items",value:a.totalWorkItems,subtitle:"Stories, bugs, and tasks",accentClassName:"bg-violet-400",icon:(0,d.jsx)(l.A,{className:"size-4",strokeWidth:2.5})}),(0,d.jsx)(q,{title:"Complete work items",value:a.completeWorkItems,subtitle:"Status done",accentClassName:"bg-pink-400",icon:(0,d.jsx)(m.A,{className:"size-4",strokeWidth:2.5})}),(0,d.jsx)(q,{title:"Current week",value:a.currentWeekPointsDone,subtitle:a.currentWeekPointsDone>0?"pts done this ISO week":"No completed points this week",accentClassName:"bg-emerald-400",icon:(0,d.jsx)(n.A,{className:"size-4",strokeWidth:2.5})})]}),(0,d.jsxs)("div",{className:"border-2 border-black bg-card p-4",children:[(0,d.jsxs)("div",{className:"mb-3 flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex size-8 items-center justify-center border-2 border-black bg-amber-300 text-black shadow-[3px_3px_0_0_var(--shadow-color)]","aria-hidden":!0,children:(0,d.jsx)(o.A,{className:"size-4",strokeWidth:2.5})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-sm font-medium text-card-foreground",children:"Contributors"}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"People who reported or resolved work on this board"})]})]}),(0,d.jsx)(r.ProjectContributorsPanel,{contributors:a.contributors})]})]})}var t=c(11784),u=c(53778),v=c(67565),w=c(27922);function x({snapshot:a}){e.useMemo(()=>((0,w.Yn)(a),null),[a]);let b=(0,f.useSearchParams)(),c=a.changelogMarkdown?.trim()?a.changelogMarkdown:null,l=null!=c,m=(0,v.CJ)(b.get("view")??void 0,{hasChangelog:l}),n="overall"===m&&b.get("epic")?.trim()||null,o="overall"===m&&n&&b.get("story")?.trim()||null,p=a.project,q=a.epics,r=q.epics.length,y=q.errors.length,z=a.hideCompletedDefaults,A=a.countableCompletions,B=a.statusMetrics,C=a.workItemsView,D=n?q.epics.find(a=>a.id===n)??null:null;return(0,d.jsx)(u.WorkItemSheetProvider,{children:(0,d.jsxs)("div",{className:"tm-surface min-h-svh",children:[(0,d.jsx)(g.AppBar,{projects:a.projects,activeProjectId:p.id,autoconfig:!0}),(0,d.jsxs)("div",{className:"mx-auto flex w-full max-w-5xl flex-col gap-6 px-4 py-8",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"font-head text-3xl tracking-tight",children:"overall"===m?"Overall":v.pN[m]}),(0,d.jsxs)("p",{className:"mt-1 text-sm text-muted-foreground",children:[p.name,"overall"===m?` \xb7 ${r} epic${1===r?"":"s"}`:"","overall"===m&&y>0?` \xb7 ${y} parse issue${1===y?"":"s"}`:"","workitems"===m?` \xb7 ${C.rows.length} item${1===C.rows.length?"":"s"}`:"","overall"===m&&D?` \xb7 expanded ${D.id}`:"overall"===m&&n?` \xb7 epic ${n} not in list`:"","overall"===m&&o?` \xb7 story ${o}`:""]})]}),(0,d.jsx)(i.ListViewSwitcher,{activeView:m,selectedEpicId:n,selectedStoryId:o,hasChangelog:l})]}),(0,d.jsx)(s,{metrics:B}),"overall"===m?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.PointsHeatmap,{samples:A}),(0,d.jsx)(j.OverallTreeList,{list:q,workItemsByEpic:a.workItemsByEpic,itemsByStory:a.itemsByStory,selectedEpicId:n,selectedStoryId:o,countableCompletions:A,initialHideCompleted:z.epics})]}):null,"workitems"===m?(0,d.jsx)(t.WorkItemsList,{list:C,countableCompletions:A,initialHideCompleted:z.workItems}):null,"changelog"===m&&c?(0,d.jsx)(h.ChangelogPanel,{markdown:c}):null]})]})})}},89055:(a,b,c)=>{"use strict";c.d(b,{w:()=>g});var d=c(48249),e=c(69394),f=c(33191);function g({className:a,orientation:b="horizontal",...c}){return(0,d.jsx)(e.w,{"data-slot":"separator",orientation:b,className:(0,f.cn)("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch",a),...c})}},92281:(a,b,c)=>{"use strict";function d(a,b){let c=a.trim().toLowerCase();return c?`e:${c}`:`n:${b.trim().toLowerCase()}`}function e(a,b){let c=new Map;for(let b of a){let a=d(b.email,b.name),e=c.get(a);e?(e.created=!0,!e.identity.name&&b.name&&(e.identity.name=b.name),!e.identity.email&&b.email&&(e.identity.email=b.email),e.identity.initials||(e.identity.initials=b.initials)):c.set(a,{identity:{...b},created:!0,resolved:!1})}for(let a of b){let b=d(a.email,a.name),e=c.get(b);e?(e.resolved=!0,!e.identity.name&&a.name&&(e.identity.name=a.name),!e.identity.email&&a.email&&(e.identity.email=a.email),e.identity.initials||(e.identity.initials=a.initials)):c.set(b,{identity:{...a},created:!1,resolved:!0})}let e=[];for(let a of c.values()){let b,c,d=a.identity.name||"Unknown";a.created&&a.resolved?(b="both",c=`Reported and implemented by ${d}`):a.created?(b="created",c=`Reported by ${d}`):(b="resolved",c=`Implemented by ${d}`),e.push({identity:a.identity,role:b,label:c})}return e}c.d(b,{Ox:()=>e,yx:()=>g});let f=["#0f766e","#1d4ed8","#7c3aed","#be185d","#b45309","#047857","#c2410c","#4338ca","#0e7490","#a16207","#9f1239","#166534","#6d28d9","#0369a1","#9a3412","#115e59"];function g(a){let b=function(a){let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)>>>0;return b}((a.initials||"").trim().toUpperCase()||(a.email||a.name||"?").toLowerCase())%f.length;return f[b]}},97509:(a,b,c)=>{"use strict";c.d(b,{r:()=>m});var d=c(48249),e=c(63883),f=c(34644),g=c(91995),h=c(32847),i=c(26284),j=c(68704),k=c(49895),l=c(33191);function m({page:a,totalPages:b,totalCount:c,pageSize:n,onPageChange:o,onPageSizeChange:p,className:q}){if(0===c)return null;let r=Math.max(b,1),s=a<=1,t=a>=r,u=Math.min(a*n,c);return(0,d.jsxs)("div",{className:(0,l.cn)("flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",q),children:[(0,d.jsxs)("p",{className:"text-xs text-muted-foreground tabular-nums",children:[(a-1)*n+1,"–",u," of ",c,(0,d.jsx)("span",{className:"mx-1.5 text-border",children:"\xb7"}),"Page ",a," of ",r]}),(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,d.jsx)(j.J,{htmlFor:"list-page-size",className:"text-xs text-muted-foreground",children:"Rows"}),(0,d.jsx)("select",{id:"list-page-size",className:"h-8 rounded border-2 border-border bg-input px-2 text-sm shadow-sm outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary",value:n,onChange:a=>p(Number(a.target.value)),children:k.xp.map(a=>(0,d.jsx)("option",{value:a,children:a},a))})]}),(0,d.jsxs)("nav",{"aria-label":"Pagination",className:"flex items-center gap-0.5",children:[(0,d.jsx)(i.$,{type:"button",variant:"outline",size:"icon-sm","aria-label":"First page",disabled:s,onClick:()=>o(1),children:(0,d.jsx)(e.A,{})}),(0,d.jsx)(i.$,{type:"button",variant:"outline",size:"icon-sm","aria-label":"Previous page",disabled:s,onClick:()=>o(a-1),children:(0,d.jsx)(f.A,{})}),(0,d.jsx)(i.$,{type:"button",variant:"outline",size:"icon-sm","aria-label":"Next page",disabled:t,onClick:()=>o(a+1),children:(0,d.jsx)(g.A,{})}),(0,d.jsx)(i.$,{type:"button",variant:"outline",size:"icon-sm","aria-label":"Last page",disabled:t,onClick:()=>o(r),children:(0,d.jsx)(h.A,{})})]})]})]})}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=2022,exports.ids=[2022],exports.modules={32022:(a,b,c)=>{c.d(b,{diagram:()=>m});var d=c(59093),e=c(4328);c(5675),c(12644);var f=c(58715),g=c(95097),h=c(92325),i=(0,h.lz)().Railroad.parser.LangiumParser,j=(0,g.K)(a=>{switch(a.$type){case"RailroadTerminalExpr":return{type:"terminal",value:a.value};case"RailroadNonTerminalExpr":return{type:"nonterminal",name:a.name};case"RailroadSpecialExpr":return{type:"special",text:a.text};case"RailroadSequenceExpr":{let b=a.elements.map(j);return 1===b.length?b[0]:{type:"sequence",elements:b}}case"RailroadChoiceExpr":{let b=a.alternatives.map(j);return 1===b.length?b[0]:{type:"choice",alternatives:b}}case"RailroadOptionalExpr":return{type:"optional",element:j(a.element)};case"RailroadOneOrMoreExpr":return{type:"repetition",element:j(a.element),min:1,max:1/0};case"RailroadZeroOrMoreExpr":return{type:"repetition",element:j(a.element),min:0,max:1/0};default:throw Error(`Unsupported railroad expression: ${a.$type}`)}},"transformExpression"),k=(0,g.K)(a=>({name:a.name,definition:j(a.definition)}),"transformRule"),l=(0,g.K)(a=>{(0,e.S)(a,d.db),a.title&&d.db.setTitle(a.title),a.rules.map(a=>d.db.addRule(k(a)))},"populateDb"),m={parser:{parse:(0,g.K)(a=>{d.db.clear(),f.R.debug("[Railroad Parser] Starting Langium parse");let b=i.parse(a);if(b.lexerErrors.length>0||b.parserErrors.length>0)throw new h.zg(b);let c=b.value;f.R.debug("[Railroad Parser] Parsed rules:",c.rules.length),l(c),f.R.debug("[Railroad Parser] Parse complete")},"parse"),parser:{yy:d.db}},db:d.db,renderer:d.U,styles:d.$}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=2156,exports.ids=[2156],exports.modules={4328:(a,b,c)=>{function d(a,b){a.accDescr&&b.setAccDescription?.(a.accDescr),a.accTitle&&b.setAccTitle?.(a.accTitle),a.title&&b.setDiagramTitle?.(a.title)}c.d(b,{S:()=>d}),(0,c(95097).K)(d,"populateCommonDb")},62156:(a,b,c)=>{c.d(b,{diagram:()=>ad});var d=c(4328),e=c(34950),f=c(12644),g=c(58715),h=c(95097),i=c(92325),j=c(69085),k="position frame",l="frame positioned",m="position relation",n="relation positioned",o=(0,h.K)(function(a){g.R.debug("options str",a)},"setOptions"),p=(0,h.K)(function(){return{}},"getOptions"),q=(0,h.K)(function(){r(),(0,f.IU)()},"clear");function r(){u={}}(0,h.K)(r,"reset");var s=f.UI.eventmodeling,t=(0,h.K)(()=>(0,e.$t)({...s,...(0,f.zj)().eventmodeling}),"getConfig"),u={};function v(){let a=z,{ast:b}=u,c=y();if(!b)throw Error("No data for EventModel");return b.frames.forEach((d,e)=>{let f=G(d,b.dataEntities,c);a=W(a,{$kind:k,index:e,frame:d,textProps:f}),N(d)?(g.R.debug("source frame",d.sourceFrames),b.frames.filter(a=>d.sourceFrames.some(b=>b.$refText===a.name)).forEach(b=>{a=W(a,{$kind:m,index:e,frame:d,sourceFrame:b})})):a=W(a,{$kind:m,index:e,frame:d})}),a={...a,sortedSwimlanesArray:K(a.swimlanes)}}function w(a){u.ast=a}(0,h.K)(v,"getState"),(0,h.K)(w,"setAst");var x={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};function y(){return x}(0,h.K)(y,"getDiagramProps");var z={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function A(a){let b=a.split(".");if(2===b.length)return b[0]}function B(a){let b=a.split(".");return 2===b.length?b[1]:a}function C(a,b){if(b&&0!==b.length)return Object.values(a).find(a=>a.namespace===b)}function D(a,b,c){return Math.max(b,...Object.keys(a).filter(a=>{let d=Number.parseInt(a);return d>b&&d<c}).map(a=>Number.parseInt(a)))+1}function E(a,b){let c=A(a.entityIdentifier),d=C(b,c);switch(a.modelEntityType){case"ui":case"pcr":case"processor":if(d)return{index:d.index,label:d.namespace||x.labelUiAutomation};if(c)return{index:D(b,0,100),label:x.labelUiAutomationPrefix+c};return{index:0,label:x.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":if(d)return{index:d.index,label:d.namespace||x.labelCommandReadModel};if(c)return{index:D(b,100,200),label:x.labelCommandReadModelPrefix+c};return{index:100,label:x.labelCommandReadModel};default:if(d)return{index:d.index,label:d.namespace||x.labelEvents};if(c)return{index:D(b,200,300),label:x.labelEventsPrefix+c};return{index:200,label:x.labelEvents}}}function F(a){let{themeVariables:b}=(0,f.zj)();switch(a.modelEntityType){case"ui":return{fill:b.emUiFill??"white",stroke:b.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:b.emProcessorFill??"#edb3f6",stroke:b.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:b.emReadModelFill??"#d3f1a2",stroke:b.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:b.emCommandFill??"#bcd6fe",stroke:b.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:b.emEventFill??"#ffb778",stroke:b.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}function G(a,b,c){let d,h=(0,f.zj)(),i=(0,f.jZ)(B(a.entityIdentifier)??"",h),j={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"<br/>"},k=(0,e.bH)(i,c.textMaxWidth,j),l=`<b>${k}</b>`;if(a.dataInlineValue&&(d=(d=(d=a.dataInlineValue).substring(d.indexOf("{")+1)).substring(0,d.lastIndexOf("}")-1),d=(0,f.jZ)(d,h),d=(d=(0,e.bH)(d,c.textMaxWidth,j)).replaceAll(" "," ")),a.dataReference){let g=b.find(b=>b.name===a.dataReference?.$refText);g&&(d=(d=(d=g.dataBlockValue).substring(d.indexOf("{\n")+2)).substring(0,d.lastIndexOf("}")-1),d=(0,f.jZ)(d,h),d=(d=(0,e.bH)(d,c.textMaxWidth,j)).replaceAll(" "," ")+"<br/>")}let m=void 0!==d;m&&(l+=`<br/><br/><code style="text-align: left; display: block;max-width:${c.textMaxWidth}px">${d}</code>`);let n={fontSize:j.fontSize,fontWeight:j.fontWeight,fontFamily:j.fontFamily},o=(0,e.PX)(l,n),p={content:l,width:m?o.width/3:o.width,height:o.height};return g.R.debug(`[${a.name}] ${a.entityIdentifier} text`,p),p}function H(a,b){let c=F(b.frame),d={width:b.textProps.width+2*x.boxTextPadding,height:b.textProps.height+2*x.boxTextPadding};return[{$kind:l,frame:b.frame,index:b.index,visual:c,dimension:d,textProps:b.textProps}]}function I(a,b,c){return void 0===b?x.contentStartX:b.index===a.index&&a.r?a.r+x.boxPadding:void 0===c?x.contentStartX:c.r-x.boxOverlap+x.boxPadding}function J(a,b){return Math.max(...a.map(a=>a.r),b)}function K(a){return Object.values(a).sort((a,b)=>a.index-b.index)}function L(a,b){let c,d=E(b.frame,a.swimlanes);c=d.index in a.swimlanes?a.swimlanes[d.index]:{index:d.index,label:d.label,r:0,y:d.index*x.swimlaneMinHeight+x.swimlaneGap,height:x.swimlaneMinHeight,maxHeight:x.swimlaneMinHeight};let e=a.boxes.length>0?a.boxes[a.boxes.length-1]:void 0,f=void 0!==a.previousSwimlaneNumber?a.swimlanes[a.previousSwimlaneNumber]:void 0,g={width:Math.max(x.boxMinWidth,Math.min(x.boxMaxWidth,b.dimension.width))+2*x.boxPadding,height:Math.max(x.boxMinHeight,Math.min(x.boxMaxHeight,b.dimension.height))+2*x.boxPadding},h=I(c,f,e),i=h+g.width+x.boxPadding,j=J(Object.values(a.swimlanes),i);c.r=h+g.width,c.maxHeight=Math.max(c.maxHeight,g.height),c.height=Math.max(x.swimlaneMinHeight,c.maxHeight)+2*x.swimlanePadding;let k={x:h,y:x.swimlanePadding+c.y,r:i,dimension:g,leftSibling:!1,swimlane:c,visual:b.visual,text:b.textProps.content,frame:b.frame,index:b.index},l={...a,boxes:[...a.boxes,k],swimlanes:{...a.swimlanes,[`${c.index}`]:c},previousSwimlaneNumber:d.index,previousFrame:b.frame,maxR:j},m=K(l.swimlanes);m.length>0&&(m[0].y=0);for(let a=1;a<m.length;a++){let b=m[a],c=m[a-1];b.y=c.y+c.height+x.swimlaneGap}return l}function M(a,b){return 0===a&&0===b.sourceFrames.length}function N(a){return void 0!==a.sourceFrames&&null!==a.sourceFrames&&a.sourceFrames.length>0}function O(a,b){if(null!=b)return a.find(a=>a.frame.name===b.name)}function P(a,b,c){if(!(c<0))for(let d=c;d>=0;d--){let c=a[d];if(c.swimlane.index!==b)return c}}function Q(a,b){let c;if((0,i.F5)(b.frame)||M(b.index,b.frame))return[];let d=O(a.boxes,b.frame);if(void 0===d)throw Error(`Target box not found for frame ${b.frame.name}`);return void 0===(c=b.sourceFrame?O(a.boxes,b.sourceFrame):P(a.boxes,d.swimlane.index,b.index-1))?[]:[{$kind:n,frame:b.frame,index:b.index,sourceBox:c,targetBox:d}]}function R(a,b){let c={visual:{fill:"none",stroke:"#000"},source:{x:b.sourceBox.x,y:b.sourceBox.y},target:{x:b.targetBox.x,y:b.targetBox.y},sourceBox:b.sourceBox,targetBox:b.targetBox};return{...a,relations:[...a.relations,c]}}(0,h.K)(A,"extractNamespace"),(0,h.K)(B,"extractName"),(0,h.K)(C,"findSwimlaneByNamespace"),(0,h.K)(D,"findNextAvailableIndex"),(0,h.K)(E,"calculateSwimlaneProps"),(0,h.K)(F,"calculateEntityVisualProps"),(0,h.K)(G,"calculateTextProps"),(0,h.K)(H,"decidePositionFrame"),(0,h.K)(I,"calculateX"),(0,h.K)(J,"calculateMaxRight"),(0,h.K)(K,"sortedSwimlanesArray"),(0,h.K)(L,"evolveFramePositioned"),(0,h.K)(M,"isFirstFrame"),(0,h.K)(N,"hasSourceFrame"),(0,h.K)(O,"findBoxByFrame"),(0,h.K)(P,"findBoxByLineIndex"),(0,h.K)(Q,"decidePositionRelation"),(0,h.K)(R,"evolveRelationPositioned");var S={[k]:H,[m]:Q},T={[l]:L,[n]:R};function U(a,b){let c=S[b.$kind];if(null==c)return[];let d=c(a,b);return g.R.debug("decided events",d),d}function V(a,b){let c=b.reduce((a,b)=>{let c=T[b.$kind];return null==c?a:c(a,b)},a);return g.R.debug("evolve events",{state:a,newState:c,events:b}),c}function W(a,b){let c=U(a,b);return V(a,c)}(0,h.K)(U,"decide"),(0,h.K)(V,"evolve"),(0,h.K)(W,"dispatch");var X={getConfig:t,setOptions:o,getOptions:p,clear:q,setAccTitle:f.SV,getAccTitle:f.iN,getAccDescription:f.m7,setAccDescription:f.EI,setDiagramTitle:f.ke,getDiagramTitle:f.ab,setAst:w,getDiagramProps:y,getState:v},Y={parse:(0,h.K)(async a=>{let b=await (0,i.qg)("eventmodeling",a);g.R.debug(b),X.setAst(b),(0,d.S)(b,X)},"parse")},Z=(0,f.D7)(),$=Z?.eventmodeling;function _(a,b){return c=>{let d=c.swimlane.y+b.swimlanePadding,e=a.append("g").attr("class","em-box");e.append("rect").attr("x",c.x).attr("y",d).attr("rx","3").attr("width",c.dimension.width).attr("height",c.dimension.height).attr("stroke",c.visual.stroke).attr("fill",c.visual.fill),e.append("foreignObject").attr("x",c.x+b.boxPadding).attr("y",d+10).attr("width",c.dimension.width-2*b.boxPadding).attr("height",c.dimension.height-2*b.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(c.text)}}function aa(a,b){return a>b}function ab(a,b,c,d){return e=>{let f,h,i=e.sourceBox.swimlane.y+b.swimlanePadding,j=e.targetBox.swimlane.y+b.swimlanePadding,k=aa(i,j),l=e.sourceBox.x+2*e.sourceBox.dimension.width/3,m=e.targetBox.x+e.targetBox.dimension.width/3;g.R.debug(`rendering relation up=${k} for `,{sourceBox:e.sourceBox,targetBox:e.targetBox}),k?(f=i,h=j+e.targetBox.dimension.height):(f=i+e.sourceBox.dimension.height,h=j);let n=d.emRelationStroke??e.visual.stroke;a.append("path").attr("class","em-relation").attr("fill",e.visual.fill).attr("stroke",n).attr("stroke-width","1").attr("marker-end",`url(#${c})`).attr("d",`M${l} ${f} L${m} ${h}`)}}function ac(a,b,c,d){return e=>{let f=a.append("g").attr("class","em-swimlane"),g=d.emSwimlaneBackgroundOdd??"rgb(250,250,250)",h=d.emSwimlaneBackgroundStroke??"rgb(240,240,240)";f.append("rect").attr("x",0).attr("y",e.y).attr("rx","3").attr("width",b+c.swimlanePadding).attr("height",e.height).attr("fill",g).attr("stroke",h),f.append("text").attr("font-weight",c.swimlaneTextFontWeight).attr("x",30).attr("y",e.y+30).text(e.label)}}(0,h.K)(_,"renderD3Box"),(0,h.K)(aa,"dirUpwards"),(0,h.K)(ab,"renderD3Relation"),(0,h.K)(ac,"renderD3Swimlane");var ad={parser:Y,db:X,renderer:{draw:(0,h.K)(function(a,b,c,d){if(g.R.debug("in eventmodeling renderer",a+"\n","id:",b,c),!$)throw Error("EventModeling config not found");let e=d.db,{themeVariables:h,eventmodeling:i}=(0,f.D7)(),k=(0,j.Ltv)(`[id="${b}"]`),l=e.getDiagramProps(),m=e.getState(),n=`em-arrowhead-${b}`,o=h.emArrowhead??"#000000";m.sortedSwimlanesArray.forEach(ac(k,m.maxR,l,h)),m.boxes.forEach(_(k,l)),m.relations.forEach(ab(k,l,n,h)),k.append("defs").append("marker").attr("id",n).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",o),(0,f.mj)(void 0,k,i?.padding??30,i?.useMaxWidth)},"draw")},styles:(0,h.K)(a=>"","getStyles")}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=2157,exports.ids=[2157],exports.modules={22157:(a,b,c)=>{c.d(b,{createEventModelingServices:()=>d.g});var d=c(58302);c(9824)}};
|