@leanspec/ui 0.2.11 → 0.2.12
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/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +4 -4
- package/.next/standalone/packages/ui/.next/routes-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +12 -12
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/health/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/health/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/health/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/health/route.js +6 -0
- package/.next/standalone/packages/ui/.next/server/app/api/health/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/health/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/health/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/dependency-graph/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/metadata/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js +3 -3
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/tags/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js +2 -2
- package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js +4 -3
- package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/search/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/search/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/search/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/search/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/search/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/search/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/search/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/health/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/health/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/health/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/health/route.js +6 -0
- package/.next/standalone/packages/ui/.next/server/app/health/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/health/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/health/route_client-reference-manifest.js +2 -0
- package/.next/standalone/packages/ui/.next/server/app/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_head.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +10 -10
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__01a010d2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__18006869._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__2fd8e63b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3c009811._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__408867af._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__4913ae11._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__493dafb5._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__4d45fba5._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__545bd045._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__580debd3._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__597227b1._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5db43dd1._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6575637c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65eaee03._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__77b7bda2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__77f9d159._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__896a68f6._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a3e5f47e._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__ab055d16._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b79da708._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__c1a0f4ae._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f00a3584._.js +21 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f96cec8f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fa0c3244._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/_4126d0be._.js +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_health_route_actions_7e273251.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_search_route_actions_4d98696f.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_health_route_actions_38d6c859.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_b8c1af87._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/1ce3b_dagre-d3-es_src_dagre_index_f9cad90b.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_8167bfdd._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_039fb02e._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_c5b1d4f9._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_0a7c215c._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_0b254b71._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_40ab38d1._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_a32f523e._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_ffd8fbee._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_bf4b42a9._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_blockDiagram-VD42YOAC_mjs_99bfbaf9._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_blockDiagram-VD42YOAC_mjs_0326ef3f._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_c4Diagram-YG6GDRKO_mjs_4dc38eb2._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_chunk-ABZYJK2D_mjs_41e4ef7c._.js +79 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_chunk-B4BG7PRW_mjs_152d6b7c._.js +162 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_chunk-DI55MBZ5_mjs_2e49cdd9._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_chunk-DI55MBZ5_mjs_f803dc6e._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_chunk-FMBD7UC4_mjs_69c9238e._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_chunk-FMBD7UC4_mjs_82165e98._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_chunk-JA3XYJ7Z_mjs_9d45fac6._.js +62 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_chunk-JZLCHNYA_mjs_e1210981._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_chunk-JZLCHNYA_mjs_4c3bae8d._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_chunk-MI3HLSF2_mjs_4494daf0._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_chunk-MI3HLSF2_mjs_90225bf8._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_chunk-QXUST7PY_mjs_3e69582d._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_chunk-QXUST7PY_mjs_1558ec21._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_chunk-S3R3BYOJ_mjs_365fb61d._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_chunk-TZMSLE5B_mjs_72a0311f._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_chunk-TZMSLE5B_mjs_e3843d9c._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_dagre-6UL2VRFP_mjs_ced7f41d._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_diagram-PSM6KHXK_mjs_f109b802._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_diagram-PSM6KHXK_mjs_67034ee5._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_erDiagram-Q2GNP2WA_mjs_b238a129._.js +57 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_flowDiagram-NV44I4VS_mjs_c11db931._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_flowDiagram-NV44I4VS_mjs_9c68d218._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-NY62KEGX_mjs_bc2124c8._.js +65 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_journeyDiagram-XKPGCS4Q_mjs_c6224fc8._.js +136 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_kanban-definition-3W4ZIXB7_mjs_550640fc._.js +81 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_quadrantDiagram-AYHSOK5B_mjs_bef56c71._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_requirementDiagram-UZGBJVZJ_mjs_ff9d68c3._.js +61 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_sankeyDiagram-TZEHDZUN_mjs_9fa014df._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_sankeyDiagram-TZEHDZUN_mjs_2b6523f9._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_sequenceDiagram-WL72ISMW_mjs_4d5ee2b1._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_sequenceDiagram-WL72ISMW_mjs_07d830e2._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_stateDiagram-FKZM4ZOC_mjs_f874f344._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{931bf_mermaid_dist_chunks_mermaid_core_timeline-definition-IT6M3QCI_mjs_96b04d43._.js → 2d2f0_mermaid_dist_chunks_mermaid_core_timeline-definition-IT6M3QCI_mjs_f287eaf9._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_chunks_mermaid_core_xychartDiagram-PRI3JC2R_mjs_fd2f9ec2._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/2d2f0_mermaid_dist_mermaid_core_mjs_06200ddd._.js +9 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{f0bdc_katex_dist_katex_mjs_27a6c950._.js → 79abc_katex_dist_katex_mjs_4541e3ed._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__c8c18f4f._.js → [root-of-the-server]__1260c5f7._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__5f4adfc8._.js → [root-of-the-server]__1cb959c5._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__26326a5f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__0749b2a9._.js → [root-of-the-server]__4cd3ba60._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6a435090._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__1c4b3bf2._.js → [root-of-the-server]__70286e1b._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__63c456e1._.js → [root-of-the-server]__8002df87._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__835e8eac._.js +64 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0ac14791._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0d858c33._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0dbcf841._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_154a7c34._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_2258175d._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_3b71bf0a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_621be400._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_622e0934._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_634df2de._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_73cbd742._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9b6b1366._.js +5 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_e451c97d._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/a3abb_lodash-es_39467f98._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/a3abb_lodash-es_39b3309d._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/a3abb_lodash-es_71968945._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/a3abb_lodash-es_8c3798ec._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/a3abb_lodash-es_f7e6e959._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_03d68913._.js +28 -28
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_5237fdd7._.js → node_modules__pnpm_11fc8cad._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_a3f2a370._.js → node_modules__pnpm_1e176d07._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_2b810caa._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_3ac36b29._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_3d74497b._.js +31 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_4a28a77d._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_4a7b3c19._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_30b0b05a._.js → node_modules__pnpm_59960f1e._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_61f8ccc0._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_6697cd90._.js +26 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_73c425a0._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_74354499._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_763657ac._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_797a2ca8._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_7dfb1bd9._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_87b4580a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_88964c5f._.js +45 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8991f9c5._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_76d4233c._.js → node_modules__pnpm_8cfd2093._.js} +3 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_94550f9f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_979654f9._.js +264 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_9f109f32._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_c766836f._.js → node_modules__pnpm_acea603d._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_cce16695._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_ccfd2c1b._.js +17 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_d627b170._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_b23175bb._.js → node_modules__pnpm_da2d2764._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_da99d8e9._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e7a691d1._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_c22df304._.js → node_modules__pnpm_ea8cde4a._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_472d6274._.js → node_modules__pnpm_effb98fb._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_context-client_tsx_0ded8336._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_dependencies_dependencies-client_tsx_481976b3._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-client_tsx_01341e35._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/middleware-build-manifest.js +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
- package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
- package/.next/{static/chunks/7b70989270600907.js → standalone/packages/ui/.next/static/chunks/033e84ae4e602451.js} +2 -2
- package/.next/standalone/packages/ui/.next/static/chunks/{414a78f7b9b58d11.js → 0e1982b1a6cbd127.js} +2 -2
- package/.next/standalone/packages/ui/.next/static/chunks/12a7420acd028ffb.js +1 -0
- package/.next/{static/chunks/df7e61b074dee049.js → standalone/packages/ui/.next/static/chunks/1acfae010fd77014.js} +1 -1
- package/.next/{static/chunks/3013cefdf3bb0932.js → standalone/packages/ui/.next/static/chunks/1f73933498bb3f89.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/{af643629ba393b18.js → 219b7d9e437c6bd8.js} +2 -2
- package/.next/standalone/packages/ui/.next/static/chunks/23a1e247c32bcc61.js +93 -0
- package/.next/standalone/packages/ui/.next/static/chunks/25e71c18d7f735b0.js +77 -0
- package/.next/{static/chunks/42eab565a0419f25.js → standalone/packages/ui/.next/static/chunks/2769a6addee16819.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/2a07a20aeed845d2.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/3717f57c910514ee.js +4 -0
- package/.next/standalone/packages/ui/.next/static/chunks/3f5728744987b056.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/4205e1e99dbad846.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/484a82e3fed783b5.js +262 -0
- package/.next/standalone/packages/ui/.next/static/chunks/486b12d42e9f2e10.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/4928acec2f0a27a0.js +15 -0
- package/.next/standalone/packages/ui/.next/static/chunks/4c0bd06c9ef55bdf.js +63 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{b900efab2eee69a0.js → 4d8d7e62c2743f71.js} +2 -2
- package/.next/standalone/packages/ui/.next/static/chunks/4f2bc7a7a6b05a8b.js +55 -0
- package/.next/standalone/packages/ui/.next/static/chunks/4fead4c15e38b33e.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{f88536b96f1df686.js → 529ac1f084e36f1a.js} +1 -1
- package/.next/{static/chunks/6483096c16d96f2c.js → standalone/packages/ui/.next/static/chunks/55761e35a8946a1d.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/{5fffdea0623d8a25.js → 584bad9cf2498405.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/5cf25a8967a2f486.js +215 -0
- package/.next/standalone/packages/ui/.next/static/chunks/61d65fe807f69413.js +62 -0
- package/.next/standalone/packages/ui/.next/static/chunks/625c67f1826b0214.js +24 -0
- package/.next/standalone/packages/ui/.next/static/chunks/63d8fd1597f46aba.js +3 -0
- package/.next/standalone/packages/ui/.next/static/chunks/6d040eb901b4e641.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/76af2698c6233ad3.js +60 -0
- package/.next/{static/chunks/37f2e45cf97245d9.js → standalone/packages/ui/.next/static/chunks/7ff2a1996be67419.js} +1 -1
- package/.next/{static/chunks/2136b3131f74188f.js → standalone/packages/ui/.next/static/chunks/808ed0f189237446.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/81316016a1163994.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/83a8941b869553c2.js +43 -0
- package/.next/standalone/packages/ui/.next/static/chunks/83ad0e374ba914bb.js +1 -0
- package/.next/{static/chunks/8ff23db3e3143bc7.js → standalone/packages/ui/.next/static/chunks/86922861a757bcb1.js} +1 -1
- package/.next/{static/chunks/a0b34f852bfa3d1b.js → standalone/packages/ui/.next/static/chunks/962e5cad8ea716fc.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/98f112e5f904766f.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{31c5e577f282adb3.js → 9bb03156564e344d.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/9c6d5fb76690228a.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{3f94c1ef6e27c8bd.js → 9d851c7076be779f.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/9f415807575a9834.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a1d3de9e7615662e.js +160 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a7fdfeea5fd894c1.js +59 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a8a3989305bcc136.js +215 -0
- package/.next/standalone/packages/ui/.next/static/chunks/ab47f453990e66ac.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{72dde43947381f78.js → acb938ef1d4fb5ac.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/acbfbe8ec48b9d30.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c44a73bf08ad2744.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{6c862b0bdb79830a.js → c5cbf4348920e18a.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/c5ff5834cc40cc53.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c795916b36aa4427.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/cf8d56af13058933.js +29 -0
- package/.next/standalone/packages/ui/.next/static/chunks/d0abae9ec6f86e28.js +24 -0
- package/.next/standalone/packages/ui/.next/static/chunks/d19b45f04737fd17.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/d267fa95a802a93e.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/d857534107a61f01.js +13 -0
- package/.next/{static/chunks/642374ace530e2bd.js → standalone/packages/ui/.next/static/chunks/d9d11dc692443713.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/dd4d5318fe76181b.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/e3b72bcd2506a85d.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{192b2f6118d057e2.js → e63644fc036e8e8f.js} +15 -15
- package/.next/{static/chunks/c8bad5d62c56feb2.js → standalone/packages/ui/.next/static/chunks/ea1a170f520100f6.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f1d2ff2b44324a2f.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f30b1d00c76e6487.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f669ccd352a5dddd.js +1 -0
- package/.next/{static/chunks/16b742746668b9d6.js → standalone/packages/ui/.next/static/chunks/f8c965a996875e30.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/{1490995adc7829e2.js → f9737eb4b7281392.js} +1 -1
- package/.next/{static/chunks/turbopack-b52299a351b6f041.js → standalone/packages/ui/.next/static/chunks/turbopack-ee7289036a2ef92e.js} +1 -1
- package/.next/standalone/packages/ui/bin/ui.js +0 -0
- package/.next/standalone/packages/ui/package.json +30 -30
- package/.next/standalone/packages/ui/src/app/api/health/route.ts +9 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +8 -1
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/route.ts +1 -1
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/route.ts +15 -0
- package/.next/standalone/packages/ui/src/app/api/projects/[id]/stats/route.ts +1 -1
- package/.next/standalone/packages/ui/src/app/api/projects/route.ts +1 -1
- package/.next/standalone/packages/ui/src/app/api/search/route.ts +54 -0
- package/.next/standalone/packages/ui/src/app/health/route.ts +9 -0
- package/.next/standalone/packages/ui/src/lib/spec-utils/frontmatter.ts +18 -15
- package/.next/standalone/packages/ui-components/package.json +20 -20
- package/.next/standalone/packages/ui-vite/package.json +24 -17
- package/.next/standalone/packages/ui-vite/src/components/Layout.tsx +6 -2
- package/.next/standalone/packages/ui-vite/src/components/MermaidDiagram.tsx +82 -0
- package/.next/standalone/packages/ui-vite/src/hooks/useKeyboardShortcuts.ts +5 -0
- package/.next/standalone/packages/ui-vite/src/pages/DashboardPage.tsx +421 -0
- package/.next/standalone/packages/ui-vite/src/pages/DependenciesPage.tsx +222 -36
- package/.next/standalone/packages/ui-vite/src/pages/SpecDetailPage.tsx +24 -1
- package/.next/standalone/packages/ui-vite/src/pages/StatsPage.tsx +172 -45
- package/.next/standalone/packages/ui-vite/src/router.tsx +3 -2
- package/.next/{standalone/packages/ui/.next/static/chunks/7b70989270600907.js → static/chunks/033e84ae4e602451.js} +2 -2
- package/.next/static/chunks/{414a78f7b9b58d11.js → 0e1982b1a6cbd127.js} +2 -2
- package/.next/static/chunks/12a7420acd028ffb.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/df7e61b074dee049.js → static/chunks/1acfae010fd77014.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/3013cefdf3bb0932.js → static/chunks/1f73933498bb3f89.js} +1 -1
- package/.next/static/chunks/{af643629ba393b18.js → 219b7d9e437c6bd8.js} +2 -2
- package/.next/static/chunks/23a1e247c32bcc61.js +93 -0
- package/.next/static/chunks/25e71c18d7f735b0.js +77 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/42eab565a0419f25.js → static/chunks/2769a6addee16819.js} +1 -1
- package/.next/static/chunks/2a07a20aeed845d2.js +1 -0
- package/.next/static/chunks/3717f57c910514ee.js +4 -0
- package/.next/static/chunks/3f5728744987b056.js +10 -0
- package/.next/static/chunks/4205e1e99dbad846.js +1 -0
- package/.next/static/chunks/484a82e3fed783b5.js +262 -0
- package/.next/static/chunks/486b12d42e9f2e10.js +1 -0
- package/.next/static/chunks/4928acec2f0a27a0.js +15 -0
- package/.next/static/chunks/4c0bd06c9ef55bdf.js +63 -0
- package/.next/static/chunks/{b900efab2eee69a0.js → 4d8d7e62c2743f71.js} +2 -2
- package/.next/static/chunks/4f2bc7a7a6b05a8b.js +55 -0
- package/.next/static/chunks/4fead4c15e38b33e.js +1 -0
- package/.next/static/chunks/{f88536b96f1df686.js → 529ac1f084e36f1a.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/6483096c16d96f2c.js → static/chunks/55761e35a8946a1d.js} +1 -1
- package/.next/static/chunks/{5fffdea0623d8a25.js → 584bad9cf2498405.js} +1 -1
- package/.next/static/chunks/5cf25a8967a2f486.js +215 -0
- package/.next/static/chunks/61d65fe807f69413.js +62 -0
- package/.next/static/chunks/625c67f1826b0214.js +24 -0
- package/.next/static/chunks/63d8fd1597f46aba.js +3 -0
- package/.next/static/chunks/6d040eb901b4e641.js +1 -0
- package/.next/static/chunks/76af2698c6233ad3.js +60 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/37f2e45cf97245d9.js → static/chunks/7ff2a1996be67419.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/2136b3131f74188f.js → static/chunks/808ed0f189237446.js} +1 -1
- package/.next/static/chunks/81316016a1163994.js +1 -0
- package/.next/static/chunks/83a8941b869553c2.js +43 -0
- package/.next/static/chunks/83ad0e374ba914bb.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/8ff23db3e3143bc7.js → static/chunks/86922861a757bcb1.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/a0b34f852bfa3d1b.js → static/chunks/962e5cad8ea716fc.js} +1 -1
- package/.next/static/chunks/98f112e5f904766f.js +1 -0
- package/.next/static/chunks/{31c5e577f282adb3.js → 9bb03156564e344d.js} +1 -1
- package/.next/static/chunks/9c6d5fb76690228a.js +1 -0
- package/.next/static/chunks/{3f94c1ef6e27c8bd.js → 9d851c7076be779f.js} +1 -1
- package/.next/static/chunks/9f415807575a9834.js +1 -0
- package/.next/static/chunks/a1d3de9e7615662e.js +160 -0
- package/.next/static/chunks/a7fdfeea5fd894c1.js +59 -0
- package/.next/static/chunks/a8a3989305bcc136.js +215 -0
- package/.next/static/chunks/ab47f453990e66ac.js +1 -0
- package/.next/static/chunks/{72dde43947381f78.js → acb938ef1d4fb5ac.js} +1 -1
- package/.next/static/chunks/acbfbe8ec48b9d30.js +1 -0
- package/.next/static/chunks/c44a73bf08ad2744.js +1 -0
- package/.next/static/chunks/{6c862b0bdb79830a.js → c5cbf4348920e18a.js} +1 -1
- package/.next/static/chunks/c5ff5834cc40cc53.js +1 -0
- package/.next/static/chunks/c795916b36aa4427.js +5 -0
- package/.next/static/chunks/cf8d56af13058933.js +29 -0
- package/.next/static/chunks/d0abae9ec6f86e28.js +24 -0
- package/.next/static/chunks/d19b45f04737fd17.js +1 -0
- package/.next/static/chunks/d267fa95a802a93e.js +1 -0
- package/.next/static/chunks/d857534107a61f01.js +13 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/642374ace530e2bd.js → static/chunks/d9d11dc692443713.js} +1 -1
- package/.next/static/chunks/dd4d5318fe76181b.js +1 -0
- package/.next/static/chunks/e3b72bcd2506a85d.js +2 -0
- package/.next/static/chunks/{192b2f6118d057e2.js → e63644fc036e8e8f.js} +15 -15
- package/.next/{standalone/packages/ui/.next/static/chunks/c8bad5d62c56feb2.js → static/chunks/ea1a170f520100f6.js} +1 -1
- package/.next/static/chunks/f1d2ff2b44324a2f.js +2 -0
- package/.next/static/chunks/f30b1d00c76e6487.js +1 -0
- package/.next/static/chunks/f669ccd352a5dddd.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/16b742746668b9d6.js → static/chunks/f8c965a996875e30.js} +1 -1
- package/.next/static/chunks/{1490995adc7829e2.js → f9737eb4b7281392.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/turbopack-b52299a351b6f041.js → static/chunks/turbopack-ee7289036a2ef92e.js} +1 -1
- package/package.json +44 -44
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0ca8ab51._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__46661652._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5633d75c._.js +0 -21
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__7c3f68e4._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8d6c6cff._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__97ce74ed._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a05c13bb._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a1582fad._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b6844128._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__be4523bf._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e8070afd._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e891242e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_14bcb343._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_545e404c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_69a771f4._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_6b7380f1._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_82045c93._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_b7cdc48c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_bedf0a4e._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_d3fd96f5._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/_eef7dd10._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/641df_lodash-es_057c0674._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/641df_lodash-es_4b57a3a3._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/641df_lodash-es_4d3de843._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/641df_lodash-es_5f3103e1._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/641df_lodash-es_bcc35893._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/641df_lodash-es_f2ef1919._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_c4Diagram-YG6GDRKO_mjs_0683be9f._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-ABZYJK2D_mjs_4034a85b._.js +0 -79
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-B4BG7PRW_mjs_3190ac39._.js +0 -162
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-JA3XYJ7Z_mjs_4c9b0254._.js +0 -62
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_chunk-S3R3BYOJ_mjs_0c8df0bf._.js +0 -4
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_dagre-6UL2VRFP_mjs_2a0e551c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_erDiagram-Q2GNP2WA_mjs_2956542e._.js +0 -57
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_f71564d9._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-NY62KEGX_mjs_fe41f076._.js +0 -65
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_journeyDiagram-XKPGCS4Q_mjs_8b9c3e68._.js +0 -136
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_kanban-definition-3W4ZIXB7_mjs_d8e6de34._.js +0 -81
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_quadrantDiagram-AYHSOK5B_mjs_50c2110d._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_requirementDiagram-UZGBJVZJ_mjs_8f86dea7._.js +0 -61
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_stateDiagram-FKZM4ZOC_mjs_2bd67ce9._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_chunks_mermaid_core_xychartDiagram-PRI3JC2R_mjs_7eec04e0._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/931bf_mermaid_dist_mermaid_core_mjs_1c407865._.js +0 -9
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a34731d8._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b0d6e2ad._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__e4a2bcdd._.js +0 -64
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14e94498._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_228deb98._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_3e8b1549._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_55d5049a._.js +0 -5
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_6766b4f3._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_6901fbea._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_c9ad4c99._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1120b57c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_157f6c24._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1aec4342._.js +0 -17
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_2a29db83._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_3ba1438c._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_69372f5b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_7434d351._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_7791e3b8._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_88c8b88b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_b247a526._.js +0 -264
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_c17f27b1._.js +0 -45
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e175b92a._.js +0 -31
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e440897f._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e8075f9b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_ea1bddc7._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_f732d0bb._.js +0 -26
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_f919ef4a._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/038fb2d565c88582.js +0 -2
- package/.next/standalone/packages/ui/.next/static/chunks/051e1aa02e4b28a5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/0def4e3de105a498.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/1104de0c16e0b792.js +0 -59
- package/.next/standalone/packages/ui/.next/static/chunks/19e520f0833c8219.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/1a910f137d27fff0.js +0 -63
- package/.next/standalone/packages/ui/.next/static/chunks/1c6db91bce771c18.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/2b8dd40cfd46d975.js +0 -60
- package/.next/standalone/packages/ui/.next/static/chunks/305b74f3c20cb4ef.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/39691fae9a3463fe.js +0 -262
- package/.next/standalone/packages/ui/.next/static/chunks/3a683a37eeba41f4.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/3bb1648a5b264c9d.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/4610aea3ca2e69eb.js +0 -2
- package/.next/standalone/packages/ui/.next/static/chunks/49acb2b7b420dc50.js +0 -13
- package/.next/standalone/packages/ui/.next/static/chunks/4e85dea329906168.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/525d6cb99a13c44a.js +0 -215
- package/.next/standalone/packages/ui/.next/static/chunks/5295f0e82fd2a6d3.js +0 -24
- package/.next/standalone/packages/ui/.next/static/chunks/53c8177744c358e1.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/567bc31005c31006.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/56894ea818ee2a54.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/64543dbd7a7a99b7.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/6f3c460ef90843d6.js +0 -215
- package/.next/standalone/packages/ui/.next/static/chunks/8287406f2fe1c1c3.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/85b2b8ec762b7c79.js +0 -62
- package/.next/standalone/packages/ui/.next/static/chunks/89a8f922ce491ce9.js +0 -93
- package/.next/standalone/packages/ui/.next/static/chunks/8e74116482d87a39.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/93f68e12f388e2bb.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/942cf63b4032c808.js +0 -29
- package/.next/standalone/packages/ui/.next/static/chunks/97c8160044aea609.js +0 -77
- package/.next/standalone/packages/ui/.next/static/chunks/9f111762e88812e3.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a95be4ea7999efee.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/abaf0381e8007624.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/c762baa705e11b30.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d35b70bce9e2e4a3.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/d43971093c91d3b2.js +0 -160
- package/.next/standalone/packages/ui/.next/static/chunks/dc394e2327882613.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/dd8e053aa48c6398.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/ddc7726e19e5e25c.js +0 -43
- package/.next/standalone/packages/ui/.next/static/chunks/e20849e3abe63aa5.js +0 -55
- package/.next/standalone/packages/ui/.next/static/chunks/e2792c100b4041a1.js +0 -15
- package/.next/standalone/packages/ui/.next/static/chunks/e3bc96a996e2a314.js +0 -24
- package/.next/standalone/packages/ui/.next/static/chunks/e5aab2c562822175.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efbbc4dc4b32a270.js +0 -4
- package/.next/standalone/packages/ui/.next/static/chunks/fcf01915df415518.js +0 -1
- package/.next/static/chunks/038fb2d565c88582.js +0 -2
- package/.next/static/chunks/051e1aa02e4b28a5.js +0 -1
- package/.next/static/chunks/0def4e3de105a498.js +0 -1
- package/.next/static/chunks/1104de0c16e0b792.js +0 -59
- package/.next/static/chunks/19e520f0833c8219.js +0 -1
- package/.next/static/chunks/1a910f137d27fff0.js +0 -63
- package/.next/static/chunks/1c6db91bce771c18.js +0 -1
- package/.next/static/chunks/2b8dd40cfd46d975.js +0 -60
- package/.next/static/chunks/305b74f3c20cb4ef.js +0 -1
- package/.next/static/chunks/39691fae9a3463fe.js +0 -262
- package/.next/static/chunks/3a683a37eeba41f4.js +0 -1
- package/.next/static/chunks/3bb1648a5b264c9d.js +0 -1
- package/.next/static/chunks/4610aea3ca2e69eb.js +0 -2
- package/.next/static/chunks/49acb2b7b420dc50.js +0 -13
- package/.next/static/chunks/4e85dea329906168.js +0 -1
- package/.next/static/chunks/525d6cb99a13c44a.js +0 -215
- package/.next/static/chunks/5295f0e82fd2a6d3.js +0 -24
- package/.next/static/chunks/53c8177744c358e1.js +0 -1
- package/.next/static/chunks/567bc31005c31006.js +0 -1
- package/.next/static/chunks/56894ea818ee2a54.js +0 -1
- package/.next/static/chunks/64543dbd7a7a99b7.js +0 -1
- package/.next/static/chunks/6f3c460ef90843d6.js +0 -215
- package/.next/static/chunks/8287406f2fe1c1c3.js +0 -1
- package/.next/static/chunks/85b2b8ec762b7c79.js +0 -62
- package/.next/static/chunks/89a8f922ce491ce9.js +0 -93
- package/.next/static/chunks/8e74116482d87a39.js +0 -1
- package/.next/static/chunks/93f68e12f388e2bb.js +0 -1
- package/.next/static/chunks/942cf63b4032c808.js +0 -29
- package/.next/static/chunks/97c8160044aea609.js +0 -77
- package/.next/static/chunks/9f111762e88812e3.js +0 -1
- package/.next/static/chunks/a95be4ea7999efee.js +0 -5
- package/.next/static/chunks/abaf0381e8007624.js +0 -1
- package/.next/static/chunks/c762baa705e11b30.js +0 -1
- package/.next/static/chunks/d35b70bce9e2e4a3.js +0 -10
- package/.next/static/chunks/d43971093c91d3b2.js +0 -160
- package/.next/static/chunks/dc394e2327882613.js +0 -3
- package/.next/static/chunks/dd8e053aa48c6398.js +0 -1
- package/.next/static/chunks/ddc7726e19e5e25c.js +0 -43
- package/.next/static/chunks/e20849e3abe63aa5.js +0 -55
- package/.next/static/chunks/e2792c100b4041a1.js +0 -15
- package/.next/static/chunks/e3bc96a996e2a314.js +0 -24
- package/.next/static/chunks/e5aab2c562822175.js +0 -1
- package/.next/static/chunks/efbbc4dc4b32a270.js +0 -4
- package/.next/static/chunks/fcf01915df415518.js +0 -1
- /package/.next/standalone/packages/ui/.next/static/{go0tWfyUzaZ0Q5O1ihd6x → 42z5C6Wiqc0rFyIDpNUDz}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{go0tWfyUzaZ0Q5O1ihd6x → 42z5C6Wiqc0rFyIDpNUDz}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{go0tWfyUzaZ0Q5O1ihd6x → 42z5C6Wiqc0rFyIDpNUDz}/_ssgManifest.js +0 -0
- /package/.next/static/{go0tWfyUzaZ0Q5O1ihd6x → 42z5C6Wiqc0rFyIDpNUDz}/_buildManifest.js +0 -0
- /package/.next/static/{go0tWfyUzaZ0Q5O1ihd6x → 42z5C6Wiqc0rFyIDpNUDz}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{go0tWfyUzaZ0Q5O1ihd6x → 42z5C6Wiqc0rFyIDpNUDz}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[599302,a=>{"use strict";let b;var c=a.i(982746),d=a.i(280940),e=a.i(262158);let f=d.useEffect;function g(a){if(void 0!==a)switch(typeof a){case"number":return a;case"string":if(a.endsWith("px"))return parseFloat(a)}}let h=null;function i({containerElement:a,direction:b,isRtl:c,scrollOffset:d}){if("horizontal"===b&&c)switch(function(a=!1){if(null===h||a){let a=document.createElement("div"),b=a.style;b.width="50px",b.height="50px",b.overflow="scroll",b.direction="rtl";let c=document.createElement("div"),d=c.style;return d.width="100px",d.height="100px",a.appendChild(c),document.body.appendChild(a),a.scrollLeft>0?h="positive-descending":(a.scrollLeft=1,h=0===a.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(a),h}return h}()){case"negative":return-d;case"positive-descending":if(a){let{clientWidth:b,scrollLeft:c,scrollWidth:d}=a;return d-b-c}}return d}function j(a,b="Assertion error"){if(!a)throw console.error(b),Error(b)}function k(a,b){if(a===b)return!0;if(!!a!=!!b||(j(void 0!==a),j(void 0!==b),Object.keys(a).length!==Object.keys(b).length))return!1;for(let c in a)if(!Object.is(b[c],a[c]))return!1;return!0}function l({cachedBounds:a,itemCount:b,itemSize:c}){if(0===b)return 0;if("number"==typeof c)return b*c;{let c=a.get(0===a.size?0:a.size-1);return j(void 0!==c,"Unexpected bounds cache miss"),b*((c.scrollOffset+c.size)/a.size)}}function m({cachedBounds:a,containerScrollOffset:b,containerSize:c,itemCount:d,overscanCount:e}){let f=d-1,g=0,h=-1,i=0,j=-1,k=0;for(;k<f;){let c=a.get(k);if(c.scrollOffset+c.size>b)break;k++}for(i=Math.max(0,(g=k)-e);k<f;){let d=a.get(k);if(d.scrollOffset+d.size>=b+c)break;k++}return j=Math.min(d-1,(h=Math.min(f,k))+e),g<0&&(g=0,h=-1,i=0,j=-1),{startIndexVisible:g,stopIndexVisible:h,startIndexOverscan:i,stopIndexOverscan:j}}function n(a,b){let{ariaAttributes:c,style:d,...e}=a,{ariaAttributes:f,style:g,...h}=b;return k(c,f)&&k(d,g)&&k(e,h)}function o({children:a,className:b,defaultHeight:e=0,listRef:h,onResize:o,onRowsRendered:p,overscanCount:q=3,rowComponent:r,rowCount:s,rowHeight:t,rowProps:u,tagName:v="div",style:w,...x}){let y=(0,d.useMemo)(()=>u,Object.values(u)),z=(0,d.useMemo)(()=>(0,d.memo)(r,n),[r]),[A,B]=(0,d.useState)(null),C=null!=t&&"object"==typeof t&&"getAverageRowHeight"in t&&"function"==typeof t.getAverageRowHeight,{getCellBounds:D,getEstimatedSize:E,scrollToIndex:F,startIndexOverscan:G,startIndexVisible:H,stopIndexOverscan:I,stopIndexVisible:J}=function({containerElement:a,containerStyle:b,defaultContainerSize:c=0,direction:e,isRtl:h=!1,itemCount:n,itemProps:o,itemSize:p,onResize:q,overscanCount:r}){var s;let t,[u,v]=(0,d.useState)({startIndexVisible:0,startIndexOverscan:0,stopIndexVisible:-1,stopIndexOverscan:-1}),{startIndexVisible:w,startIndexOverscan:x,stopIndexVisible:y,stopIndexOverscan:z}={startIndexVisible:Math.min(n-1,u.startIndexVisible),startIndexOverscan:Math.min(n-1,u.startIndexOverscan),stopIndexVisible:Math.min(n-1,u.stopIndexVisible),stopIndexOverscan:Math.min(n-1,u.stopIndexOverscan)},{height:A=c,width:B=c}=function({box:a,defaultHeight:b,defaultWidth:c,disabled:e,element:h,mode:i,style:j}){let{styleHeight:k,styleWidth:l}=(0,d.useMemo)(()=>({styleHeight:g(j?.height),styleWidth:g(j?.width)}),[j?.height,j?.width]),[m,n]=(0,d.useState)({height:b,width:c}),o=e||"only-height"===i&&void 0!==k||"only-width"===i&&void 0!==l||void 0!==k&&void 0!==l;return f(()=>{if(null===h||o)return;let b=new ResizeObserver(a=>{for(let b of a){let{contentRect:a,target:c}=b;h===c&&n(b=>b.height===a.height&&b.width===a.width?b:{height:a.height,width:a.width})}});return b.observe(h,{box:a}),()=>{b?.unobserve(h)}},[a,o,h,k,l]),(0,d.useMemo)(()=>({height:k??m.height,width:l??m.width}),[m,k,l])}({defaultHeight:"vertical"===e?c:void 0,defaultWidth:"horizontal"===e?c:void 0,element:a,mode:"vertical"===e?"only-height":"only-width",style:b}),C=(0,d.useRef)({height:0,width:0}),D="vertical"===e?A:B,E=function({containerSize:a,itemSize:b}){let c;return"string"==typeof b?(j(b.endsWith("%"),`Invalid item size: "${b}"; string values must be percentages (e.g. "100%")`),j(void 0!==a,"Container size must be defined if a percentage item size is specified"),c=a*parseInt(b)/100):c=b,c}({containerSize:D,itemSize:p});(0,d.useLayoutEffect)(()=>{if("function"==typeof q){let a=C.current;(a.height!==A||a.width!==B)&&(q({height:A,width:B},{...a}),a.height=A,a.width=B)}},[A,q,B]);let F=function({itemCount:a,itemProps:b,itemSize:c}){return(0,d.useMemo)(()=>(function({itemCount:a,itemProps:b,itemSize:c}){let d=new Map;return{get(e){for(j(e<a,`Invalid index ${e}`);d.size-1<e;){let a,f=d.size;switch(typeof c){case"function":a=c(f,b);break;case"number":a=c}if(0===f)d.set(f,{size:a,scrollOffset:0});else{let b=d.get(f-1);j(void 0!==b,`Unexpected bounds cache miss for index ${e}`),d.set(f,{scrollOffset:b.scrollOffset+b.size,size:a})}}let f=d.get(e);return j(void 0!==f,`Unexpected bounds cache miss for index ${e}`),f},set(a,b){d.set(a,b)},get size(){return d.size}}})({itemCount:a,itemProps:b,itemSize:c}),[a,b,c])}({itemCount:n,itemProps:o,itemSize:E}),G=(0,d.useCallback)(a=>F.get(a),[F]),H=(0,d.useCallback)(()=>l({cachedBounds:F,itemCount:n,itemSize:E}),[F,n,E]),I=(0,d.useCallback)(b=>m({cachedBounds:F,containerScrollOffset:i({containerElement:a,direction:e,isRtl:h,scrollOffset:b}),containerSize:D,itemCount:n,overscanCount:r}),[F,a,D,e,h,n,r]);return f(()=>{v(I(("vertical"===e?a?.scrollTop:a?.scrollLeft)??0))},[a,e,I]),f(()=>{if(!a)return;let b=()=>{v(b=>{let{scrollLeft:c,scrollTop:d}=a,f=m({cachedBounds:F,containerScrollOffset:i({containerElement:a,direction:e,isRtl:h,scrollOffset:"vertical"===e?d:c}),containerSize:D,itemCount:n,overscanCount:r});return k(f,b)?b:f})};return a.addEventListener("scroll",b),()=>{a.removeEventListener("scroll",b)}},[F,a,D,e,n,r]),{getCellBounds:G,getEstimatedSize:H,scrollToIndex:(s=({align:b="auto",containerScrollOffset:c,index:d})=>{let f=function({align:a,cachedBounds:b,index:c,itemCount:d,itemSize:e,containerScrollOffset:f,containerSize:g}){if(c<0||c>=d)throw RangeError(`Invalid index specified: ${c}`,{cause:`Index ${c} is not within the range of 0 - ${d-1}`});let h=l({cachedBounds:b,itemCount:d,itemSize:e}),i=b.get(c),j=Math.max(0,Math.min(h-g,i.scrollOffset)),k=Math.max(0,i.scrollOffset-g+i.size);switch("smart"===a&&(a=f>=k&&f<=j?"auto":"center"),a){case"start":return j;case"end":return k;case"center":return i.scrollOffset<=g/2?0:i.scrollOffset+i.size/2>=h-g/2?h-g:i.scrollOffset+i.size/2-g/2;default:return f>=k&&f<=j?f:f<k?k:j}}({align:b,cachedBounds:F,containerScrollOffset:c,containerSize:D,index:d,itemCount:n,itemSize:E});if(a){if(f=i({containerElement:a,direction:e,isRtl:h,scrollOffset:f}),"function"!=typeof a.scrollTo){let a=I(f);k(u,a)||v(a)}return f}},t=(0,d.useRef)(()=>{throw Error("Cannot call during render.")}),f(()=>{t.current=s},[s]),(0,d.useCallback)(a=>t.current?.(a),[t])),startIndexOverscan:x,startIndexVisible:w,stopIndexOverscan:z,stopIndexVisible:y}}({containerElement:A,containerStyle:w,defaultContainerSize:e,direction:"vertical",itemCount:s,itemProps:y,itemSize:(0,d.useMemo)(()=>C?a=>t.getRowHeight(a)??t.getAverageRowHeight():t,[C,t]),onResize:o,overscanCount:q});(0,d.useImperativeHandle)(h,()=>({get element(){return A},scrollToRow({align:a="auto",behavior:b="auto",index:c}){let d=F({align:a,containerScrollOffset:A?.scrollTop??0,index:c});"function"==typeof A?.scrollTo&&A.scrollTo({behavior:b,top:d})}}),[A,F]),f(()=>{if(!A)return;let a=Array.from(A.children).filter((a,b)=>{if(a.hasAttribute("aria-hidden"))return!1;let c=`${G+b}`;return a.setAttribute("data-react-window-index",c),!0});if(C)return t.observeRowElements(a)},[A,C,t,G,I]),(0,d.useEffect)(()=>{G>=0&&I>=0&&p&&p({startIndex:H,stopIndex:J},{startIndex:G,stopIndex:I})},[p,G,H,I,J]);let K=(0,d.useMemo)(()=>{let a=[];if(s>0)for(let b=G;b<=I;b++){let c=D(b);a.push((0,d.createElement)(z,{...y,ariaAttributes:{"aria-posinset":b+1,"aria-setsize":s,role:"listitem"},key:b,index:b,style:{position:"absolute",left:0,transform:`translateY(${c.scrollOffset}px)`,height:C?void 0:c.size,width:"100%"}}))}return a},[z,D,C,s,y,G,I]),L=(0,c.jsx)("div",{"aria-hidden":!0,style:{height:E(),width:"100%",zIndex:-1}});return(0,d.createElement)(v,{role:"list",...x,className:b,ref:B,style:{position:"relative",maxHeight:"100%",flexGrow:1,overflowY:"auto",...w}},K,a,L)}d.useState,d.useRef,d.useState,d.useRef;var p=a.i(793090),q=a.i(629620),r=a.i(141270),s=a.i(914174),t=a.i(863535);let u=(0,t.default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]);var v=a.i(406334),w=a.i(227725),x=a.i(882479),y=a.i(96151),z=a.i(915929),A=a.i(687052),B=a.i(322570),C=a.i(890075);let D={specs:[],signature:null,scrollTop:0,activeSpecId:null},E=[],F=new Set,G=new Set,H=new Set;function I(){for(let a of F)a()}var J=a.i(523897);a.i(150144);var K=a.i(713372);let L=d.useEffect;function M({initialSpecs:a=[],currentSpecId:b,currentSubSpec:f,onSpecHover:g,className:h}){let i,j,{t:k}=(0,K.useTranslation)("common"),[l,m]=d.useState(""),[n,t]=d.useState("all"),[F,I]=d.useState("all"),[M,N]=d.useState("all"),[O,P]=d.useState(!1),[Q,R]=d.useState(()=>!1),[S,T]=d.useState(!1),[U,V]=d.useState(!1),W=d.useRef(null);d.useRef(null),d.useRef(!1);let X=d.useRef(null);d.useRef(0),d.useRef(!1),d.useRef(!0);let Y=(i=d.useCallback(a=>(G.add(a),()=>{G.delete(a)}),[]),(0,d.useSyncExternalStore)(i,()=>D.specs,()=>E)),Z=(j=d.useCallback(a=>(H.add(a),()=>{H.delete(a)}),[]),(0,d.useSyncExternalStore)(j,()=>D.activeSpecId,()=>null)),$=d.useMemo(()=>Y.length>0?Y:a,[Y,a]),_=b||Z||"";d.useEffect(()=>{V(!0)},[]),d.useEffect(()=>{document.documentElement.style.setProperty("--specs-nav-sidebar-width",Q?"0px":"280px"),localStorage.setItem("specs-nav-sidebar-collapsed",String(Q))},[Q]),d.useEffect(()=>{T(!1)},[_,f]);let aa=d.useMemo(()=>{let a=$;if(l){let b=l.toLowerCase();a=a.filter(a=>a.title?.toLowerCase().includes(b)||a.specName.toLowerCase().includes(b)||a.specNumber?.toString().includes(b))}return"all"!==n&&(a=a.filter(a=>a.status===n)),"all"!==F&&(a=a.filter(a=>a.priority===F)),"all"!==M&&(a=a.filter(a=>a.tags?.includes(M))),console.debug(a),a},[$,l,n,F,M]),ab=d.useMemo(()=>{let a=new Set;return $.forEach(b=>{b.tags?.forEach(b=>a.add(b))}),Array.from(a).sort()},[$]),ac="all"!==n||"all"!==F||"all"!==M,ad=d.useMemo(()=>[...aa].sort((a,b)=>(b.specNumber||0)-(a.specNumber||0)),[aa]);L(()=>{},[]),L(()=>{},[ad,_]),d.useEffect(()=>{},[]);let{getSpecUrl:ae}=(0,J.useProjectUrl)(),af=d.useCallback(a=>{let{index:b,style:d}=a,h=ad[b],i=h.id===_,j=h.title||h.specName,l=ae(h.specNumber||h.id);return(0,c.jsx)("div",{style:d,className:"px-1",children:(0,c.jsx)("div",{className:"mb-0.5",children:(0,c.jsx)("div",{className:"flex items-center gap-0.5",children:(0,c.jsxs)(y.Tooltip,{children:[(0,c.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,c.jsxs)(e.default,{ref:i&&!f?W:null,href:l,onMouseEnter:()=>g?.(h.specNumber?.toString()||h.id),className:(0,A.cn)("w-full flex flex-col gap-1 p-1.5 rounded-md text-sm transition-colors",i?"bg-accent text-accent-foreground font-medium":"hover:bg-accent/50"),children:[(0,c.jsxs)("div",{className:"flex items-center gap-1.5",children:[h.specNumber&&(0,c.jsxs)("span",{className:"text-xs font-mono text-muted-foreground shrink-0",children:["#",h.specNumber.toString().padStart(3,"0")]}),(0,c.jsx)("span",{className:"truncate text-xs leading-relaxed",children:j})]}),(0,c.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[h.status&&(0,c.jsxs)(y.Tooltip,{children:[(0,c.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,c.jsx)("div",{children:(0,c.jsx)(x.StatusBadge,{status:h.status,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,c.jsx)(y.TooltipContent,{side:"right",children:(0,x.getStatusLabel)(h.status)})]}),h.priority&&(0,c.jsxs)(y.Tooltip,{children:[(0,c.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,c.jsx)("div",{children:(0,c.jsx)(B.PriorityBadge,{priority:h.priority,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,c.jsx)(y.TooltipContent,{side:"right",children:(0,B.getPriorityLabel)(h.priority)})]}),"number"==typeof h.subSpecsCount&&h.subSpecsCount>0&&(0,c.jsx)("span",{className:"text-[10px] text-muted-foreground",children:k("specsNavSidebar.badges.subSpecs",{count:h.subSpecsCount})}),h.updatedAt&&(0,c.jsx)("span",{className:"text-[10px] text-muted-foreground",children:(0,C.formatRelativeTime)(h.updatedAt)})]})]})}),(0,c.jsx)(y.TooltipContent,{side:"right",className:"max-w-[300px]",children:(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)("div",{className:"font-semibold",children:j}),(0,c.jsx)("div",{className:"text-xs text-muted-foreground",children:h.specName})]})})]})})})})},[ad,_,f,g,ae,k]),ag=d.useMemo(()=>600,[]),ah=d.useMemo(()=>d.memo(o),[]);return(0,c.jsxs)(y.TooltipProvider,{delayDuration:700,children:[S&&(0,c.jsx)("div",{className:"fixed inset-0 bg-black/50 z-40 lg:hidden",onClick:()=>T(!1)}),(0,c.jsxs)("div",{className:(0,A.cn)("relative flex-shrink-0",h),children:[(0,c.jsxs)("aside",{className:(0,A.cn)("border-r border-border bg-background flex flex-col overflow-hidden transition-all duration-300","hidden lg:flex lg:sticky lg:top-14 lg:h-[calc(100vh-3.5rem)]",U&&Q?"lg:w-0 lg:border-r-0":"lg:w-[280px]",S&&"fixed inset-y-0 left-0 z-[60] flex w-[280px]"),children:[(0,c.jsxs)("div",{className:"p-4 border-b border-border",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,c.jsx)("h2",{className:"font-semibold text-sm",children:k("specsNavSidebar.title")}),(0,c.jsxs)("div",{className:"flex items-center gap-1",children:[(0,c.jsxs)(y.Tooltip,{children:[(0,c.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,c.jsx)(w.Button,{variant:O||ac?"default":"ghost",size:"sm",onClick:()=>P(!O),className:"h-6 w-6 p-0",children:(0,c.jsx)(u,{className:"h-4 w-4"})})}),(0,c.jsx)(y.TooltipContent,{side:"bottom",children:O?k("specsNavSidebar.toggleFilters.hide"):k("specsNavSidebar.toggleFilters.show")})]}),(0,c.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>T(!1),className:"h-6 w-6 p-0 lg:hidden",children:(0,c.jsx)(s.X,{className:"h-4 w-4"})}),(0,c.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>R(!0),className:"h-6 w-6 p-0 hidden lg:flex lg:items-center lg:justify-center",children:(0,c.jsx)(q.ChevronLeft,{className:"h-4 w-4"})})]})]}),O&&(0,c.jsxs)("div",{className:"space-y-2 mb-3 pb-3 border-b border-border",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:k("specsNavSidebar.filtersLabel")}),ac&&(0,c.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>{t("all"),I("all"),N("all")},className:"h-5 text-xs px-2 py-0",children:k("specsNavSidebar.clearFilters")})]}),(0,c.jsxs)(z.Select,{value:n,onValueChange:t,children:[(0,c.jsx)(z.SelectTrigger,{className:"h-8 text-xs",children:(0,c.jsx)(z.SelectValue,{placeholder:k("specsNavSidebar.select.status.label")})}),(0,c.jsxs)(z.SelectContent,{children:[(0,c.jsx)(z.SelectItem,{value:"all",children:k("specsNavSidebar.select.status.all")}),(0,c.jsx)(z.SelectItem,{value:"planned",children:k("status.planned")}),(0,c.jsx)(z.SelectItem,{value:"in-progress",children:k("status.inProgress")}),(0,c.jsx)(z.SelectItem,{value:"complete",children:k("status.complete")}),(0,c.jsx)(z.SelectItem,{value:"archived",children:k("status.archived")})]})]}),(0,c.jsxs)(z.Select,{value:F,onValueChange:I,children:[(0,c.jsx)(z.SelectTrigger,{className:"h-8 text-xs",children:(0,c.jsx)(z.SelectValue,{placeholder:k("specsNavSidebar.select.priority.label")})}),(0,c.jsxs)(z.SelectContent,{children:[(0,c.jsx)(z.SelectItem,{value:"all",children:k("specsNavSidebar.select.priority.all")}),(0,c.jsx)(z.SelectItem,{value:"low",children:k("priority.low")}),(0,c.jsx)(z.SelectItem,{value:"medium",children:k("priority.medium")}),(0,c.jsx)(z.SelectItem,{value:"high",children:k("priority.high")}),(0,c.jsx)(z.SelectItem,{value:"critical",children:k("priority.critical")})]})]}),ab.length>0&&(0,c.jsxs)(z.Select,{value:M,onValueChange:N,children:[(0,c.jsx)(z.SelectTrigger,{className:"h-8 text-xs",children:(0,c.jsx)(z.SelectValue,{placeholder:k("specsNavSidebar.select.tag.label")})}),(0,c.jsxs)(z.SelectContent,{children:[(0,c.jsx)(z.SelectItem,{value:"all",children:k("specsNavSidebar.select.tag.all")}),ab.map(a=>(0,c.jsx)(z.SelectItem,{value:a,children:a},a))]})]})]}),(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsx)(p.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,c.jsx)(v.Input,{placeholder:k("specsNavSidebar.searchPlaceholder"),value:l,onChange:a=>m(a.target.value),className:"pl-8 h-9 border-border"})]})]}),(0,c.jsx)("div",{className:"flex-1 overflow-hidden",children:0===ad.length?(0,c.jsx)("div",{className:"text-center py-8 text-sm text-muted-foreground",children:k("specsNavSidebar.noResults")}):(0,c.jsx)(ah,{listRef:X,defaultHeight:ag,rowCount:ad.length,rowHeight:72,overscanCount:5,rowComponent:af,rowProps:{}})})]}),U&&Q&&(0,c.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>R(!1),className:"hidden lg:items-center lg:justify-center lg:flex h-6 w-6 p-0 fixed z-50 top-20 -translate-y-1 -translate-x-1/2 left-[calc(var(--main-sidebar-width,240px))] bg-background border",children:(0,c.jsx)(r.ChevronRight,{className:"h-4 w-4"})})]})]})}var N=a.i(416119),O=a.i(836180);a.s(["ERROR_REVALIDATE_EVENT",()=>3,"FOCUS_EVENT",()=>0,"MUTATE_EVENT",()=>2,"RECONNECT_EVENT",()=>1],869111);var P=Object.prototype.hasOwnProperty;let Q=new WeakMap,R=()=>{},S=R(),T=Object,U=a=>a===S,V=(a,b)=>({...a,...b}),W={},X={},Y="undefined",Z=typeof document!=Y,$=!1,_=(a,b)=>{let c=Q.get(a);return[()=>!U(b)&&a.get(b)||W,d=>{if(!U(b)){let e=a.get(b);b in X||(X[b]=e),c[5](b,V(e,d),e||W)}},c[6],()=>!U(b)&&b in X?X[b]:!U(b)&&a.get(b)||W]},aa=!0,[ab,ac]=[R,R],ad={initFocus:a=>(Z&&document.addEventListener("visibilitychange",a),ab("focus",a),()=>{Z&&document.removeEventListener("visibilitychange",a),ac("focus",a)}),initReconnect:a=>{let b=()=>{aa=!0,a()},c=()=>{aa=!1};return ab("online",b),ab("offline",c),()=>{ac("online",b),ac("offline",c)}}},ae=!d.default.useId,af=!0,ag=d.useEffect,ah="undefined"!=typeof navigator&&navigator.connection;!af&&ah&&(["slow-2g","2g"].includes(ah.effectiveType)||ah.saveData);let ai=new WeakMap,aj=(a,b)=>a===`[object ${b}]`,ak=0,al=a=>{let b,c,d=typeof a,e=T.prototype.toString.call(a),f=aj(e,"Date"),g=aj(e,"RegExp"),h=aj(e,"Object");if(T(a)!==a||f||g)b=f?a.toJSON():"symbol"==d?a.toString():"string"==d?JSON.stringify(a):""+a;else{if(b=ai.get(a))return b;if(b=++ak+"~",ai.set(a,b),Array.isArray(a)){for(c=0,b="@";c<a.length;c++)b+=al(a[c])+",";ai.set(a,b)}if(h){b="#";let d=T.keys(a).sort();for(;!U(c=d.pop());)U(a[c])||(b+=c+":"+al(a[c])+",");ai.set(a,b)}}return b},am=a=>{if("function"==typeof a)try{a=a()}catch(b){a=""}let b=a;return[a="string"==typeof a?a:(Array.isArray(a)?a.length:a)?al(a):"",b]},an=0,ao=()=>++an;async function ap(...a){let[b,c,d,e]=a,f=V({populateCache:!0,throwOnError:!0},"boolean"==typeof e?{revalidate:e}:e||{}),g=f.populateCache,h=f.rollbackOnError,i=f.optimisticData,j=f.throwOnError;if("function"==typeof c){let a=[];for(let d of b.keys())!/^\$(inf|sub)\$/.test(d)&&c(b.get(d)._k)&&a.push(d);return Promise.all(a.map(k))}return k(c);async function k(c){let e,[k]=am(c);if(!k)return;let[l,m]=_(b,k),[n,o,p,q]=Q.get(b),r=()=>{let a=n[k];return("function"==typeof f.revalidate?f.revalidate(l().data,c):!1!==f.revalidate)&&(delete p[k],delete q[k],a&&a[0])?a[0](2).then(()=>l().data):l().data};if(a.length<3)return r();let s=d,t=!1,u=ao();o[k]=[u,0];let v=!U(i),w=l(),x=w.data,y=w._c,z=U(y)?x:y;if(v&&m({data:i="function"==typeof i?i(z,x):i,_c:z}),"function"==typeof s)try{s=s(z)}catch(a){e=a,t=!0}if(s&&"function"==typeof s.then){let a;if(s=await s.catch(a=>{e=a,t=!0}),u!==o[k][0]){if(t)throw e;return s}t&&v&&(a=e,"function"==typeof h?h(a):!1!==h)&&(g=!0,m({data:z,_c:S}))}if(g&&!t&&("function"==typeof g?m({data:g(s,z),error:S,_c:S}):m({data:s,error:S,_c:S})),o[k][1]=ao(),Promise.resolve(r()).then(()=>{m({_c:S})}),t){if(j)throw e;return}return s}}let aq=(a,b)=>{if(!Q.has(a)){V(ad,b);let c=Object.create(null),d=ap.bind(S,a),e=Object.create(null),f=(a,b)=>{let c=e[a]||[];return e[a]=c,c.push(b),()=>c.splice(c.indexOf(b),1)},g=(b,c,d)=>{a.set(b,c);let f=e[b];if(f)for(let a of f)a(c,d)},h=()=>{Q.has(a)||Q.set(a,[c,Object.create(null),Object.create(null),Object.create(null),d,g,f])};return h(),[a,d,h,R]}return[a,Q.get(a)[4]]},[ar,as]=aq(new Map),at=V({onLoadingSlow:R,onSuccess:R,onError:R,onErrorRetry:(a,b,c,d,e)=>{let f=c.errorRetryCount,g=e.retryCount,h=~~((Math.random()+.5)*(1<<(g<8?g:8)))*c.errorRetryInterval;(U(f)||!(g>f))&&setTimeout(d,h,e)},onDiscarded:R,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:5e3,focusThrottleInterval:5e3,dedupingInterval:2e3,loadingTimeout:3e3,compare:function a(b,c){var d,e;if(b===c)return!0;if(b&&c&&(d=b.constructor)===c.constructor){if(d===Date)return b.getTime()===c.getTime();if(d===RegExp)return b.toString()===c.toString();if(d===Array){if((e=b.length)===c.length)for(;e--&&a(b[e],c[e]););return -1===e}if(!d||"object"==typeof b){for(d in e=0,b)if(P.call(b,d)&&++e&&!P.call(c,d)||!(d in c)||!a(b[d],c[d]))return!1;return Object.keys(c).length===e}}return b!=b&&c!=c},isPaused:()=>!1,cache:ar,mutate:as,fallback:{}},{isOnline:()=>aa,isVisible:()=>{let a=Z&&document.visibilityState;return U(a)||"hidden"!==a}}),au=(a,b)=>{let c=V(a,b);if(b){let{use:d,fallback:e}=a,{use:f,fallback:g}=b;d&&f&&(c.use=d.concat(f)),e&&g&&(c.fallback=V(e,g))}return c},av=(0,d.createContext)({});var aw=a.i(869111);let ax=!1,ay=(ax?window.__SWR_DEVTOOLS_USE__:[]).concat(a=>(b,c,d)=>{let e=c&&((...a)=>{let[d]=am(b),[,,,e]=Q.get(ar);if(d.startsWith("$inf$"))return c(...a);let f=e[d];return U(f)?c(...a):(delete e[d],f)});return a(b,e,d)});ax&&(window.__SWR_DEVTOOLS_REACT__=d.default);let az=()=>{},aA=az(),aB=(new WeakMap,d.default.use||(a=>{switch(a.status){case"pending":throw a;case"fulfilled":return a.value;case"rejected":throw a.reason;default:throw a.status="pending",a.then(b=>{a.status="fulfilled",a.value=b},b=>{a.status="rejected",a.reason=b}),a}})),aC={dedupe:!0},aD=Promise.resolve(S);T.defineProperty(a=>{let{value:b}=a,c=(0,d.useContext)(av),e="function"==typeof b,f=(0,d.useMemo)(()=>e?b(c):b,[e,c,b]),g=(0,d.useMemo)(()=>e?f:au(c,f),[e,c,f]),h=f&&f.provider,i=(0,d.useRef)(S);h&&!i.current&&(i.current=aq(h(g.cache||ar),f));let j=i.current;return j&&(g.cache=j[0],g.mutate=j[1]),ag(()=>{if(j)return j[2]&&j[2](),j[3]},[]),(0,d.createElement)(av.Provider,V(a,{value:g}))},"defaultValue",{value:at});let aE=(b=(a,b,c)=>{let{cache:e,compare:f,suspense:g,fallbackData:h,revalidateOnMount:i,revalidateIfStale:j,refreshInterval:k,refreshWhenHidden:l,refreshWhenOffline:m,keepPreviousData:n}=c,[o,p,q,r]=Q.get(e),[s,t]=am(a),u=(0,d.useRef)(!1),v=(0,d.useRef)(!1),w=(0,d.useRef)(s),x=(0,d.useRef)(b),y=(0,d.useRef)(c),z=()=>y.current.isVisible()&&y.current.isOnline(),[A,B,C,D]=_(e,s),E=(0,d.useRef)({}).current,F=U(h)?U(c.fallback)?S:c.fallback[s]:h,G=(a,b)=>{for(let c in E)if("data"===c){if(!f(a[c],b[c])&&(!U(a[c])||!f(R,b[c])))return!1}else if(b[c]!==a[c])return!1;return!0},H=(0,d.useMemo)(()=>{let a=!!s&&!!b&&(U(i)?!y.current.isPaused()&&!g&&!1!==j:i),c=b=>{let c=V(b);return(delete c._k,a)?{isValidating:!0,isLoading:!0,...c}:c},d=A(),e=D(),f=c(d),h=d===e?f:c(e),k=f;return[()=>{let a=c(A());return G(a,k)?(k.data=a.data,k.isLoading=a.isLoading,k.isValidating=a.isValidating,k.error=a.error,k):(k=a,a)},()=>h]},[e,s]),I=(0,O.useSyncExternalStore)((0,d.useCallback)(a=>C(s,(b,c)=>{G(c,b)||a()}),[e,s]),H[0],H[1]),J=!u.current,K=o[s]&&o[s].length>0,L=I.data,M=U(L)?F&&"function"==typeof F.then?aB(F):F:L,N=I.error,P=(0,d.useRef)(M),R=n?U(L)?U(P.current)?M:P.current:L:M,T=(!K||!!U(N))&&(J&&!U(i)?i:!y.current.isPaused()&&(g?!U(M)&&j:U(M)||j)),W=!!(s&&b&&J&&T),X=U(I.isValidating)?W:I.isValidating,Y=U(I.isLoading)?W:I.isLoading,Z=(0,d.useCallback)(async a=>{let b,d,e=x.current;if(!s||!e||v.current||y.current.isPaused())return!1;let g=!0,h=a||{},i=!q[s]||!h.dedupe,j=()=>ae?!v.current&&s===w.current&&u.current:s===w.current,k={isValidating:!1,isLoading:!1},l=()=>{B(k)},m=()=>{let a=q[s];a&&a[1]===d&&delete q[s]},n={isValidating:!0};U(A().data)&&(n.isLoading=!0);try{if(i&&(B(n),c.loadingTimeout&&U(A().data)&&setTimeout(()=>{g&&j()&&y.current.onLoadingSlow(s,c)},c.loadingTimeout),q[s]=[e(t),ao()]),[b,d]=q[s],b=await b,i&&setTimeout(m,c.dedupingInterval),!q[s]||q[s][1]!==d)return i&&j()&&y.current.onDiscarded(s),!1;k.error=S;let a=p[s];if(!U(a)&&(d<=a[0]||d<=a[1]||0===a[1]))return l(),i&&j()&&y.current.onDiscarded(s),!1;let h=A().data;k.data=f(h,b)?h:b,i&&j()&&y.current.onSuccess(b,s,c)}catch(c){m();let a=y.current,{shouldRetryOnError:b}=a;!a.isPaused()&&(k.error=c,i&&j())&&(a.onError(c,s,a),(!0===b||"function"==typeof b&&b(c))&&(!y.current.revalidateOnFocus||!y.current.revalidateOnReconnect||z())&&a.onErrorRetry(c,s,a,a=>{let b=o[s];b&&b[0]&&b[0](aw.ERROR_REVALIDATE_EVENT,a)},{retryCount:(h.retryCount||0)+1,dedupe:!0}))}return g=!1,l(),!0},[s,e]),$=(0,d.useCallback)((...a)=>ap(e,w.current,...a),[]);if(ag(()=>{x.current=b,y.current=c,U(L)||(P.current=L)}),ag(()=>{var a;let b;if(!s)return;let c=Z.bind(S,aC),d=0;y.current.revalidateOnFocus&&(d=Date.now()+y.current.focusThrottleInterval);let e=(a=(a,b={})=>{if(a==aw.FOCUS_EVENT){let a=Date.now();y.current.revalidateOnFocus&&a>d&&z()&&(d=a+y.current.focusThrottleInterval,c())}else if(a==aw.RECONNECT_EVENT)y.current.revalidateOnReconnect&&z()&&c();else if(a==aw.MUTATE_EVENT)return Z();else if(a==aw.ERROR_REVALIDATE_EVENT)return Z(b)},(b=o[s]||(o[s]=[])).push(a),()=>{let c=b.indexOf(a);c>=0&&(b[c]=b[b.length-1],b.pop())});if(v.current=!1,w.current=s,u.current=!0,B({_k:t}),T&&!q[s])if(U(M)||af)c();else setTimeout(c,1);return()=>{v.current=!0,e()}},[s]),ag(()=>{let a;function b(){let b="function"==typeof k?k(A().data):k;b&&-1!==a&&(a=setTimeout(c,b))}function c(){!A().error&&(l||y.current.isVisible())&&(m||y.current.isOnline())?Z(aC).then(b):b()}return b(),()=>{a&&(clearTimeout(a),a=-1)}},[k,l,m,s]),(0,d.useDebugValue)(R),g){let a=s&&U(M);if(!ae&&af&&a)throw Error("Fallback data is required when using Suspense in SSR.");a&&(x.current=b,y.current=c,v.current=!1);let d=r[s];if(aB(!U(d)&&a?$(d):aD),!U(N)&&a)throw N;let e=a?Z(aC):aD;!U(R)&&a&&(e.status="fulfilled",e.value=!0),aB(e)}return{mutate:$,get data(){return E.data=!0,R},get error(){return E.error=!0,N},get isValidating(){return E.isValidating=!0,X},get isLoading(){return E.isLoading=!0,Y}}},function(...a){let c,e=(c=(0,d.useContext)(av),(0,d.useMemo)(()=>V(at,c),[c])),[f,g,h]="function"==typeof a[1]?[a[0],a[1],a[2]||{}]:[a[0],null,(null===a[1]?a[2]:a[1])||{}],i=au(e,h),j=b,{use:k}=i,l=(k||[]).concat(ay);for(let a=l.length;a--;)j=l[a](j);return j(f,g||i.fetcher||null,i)});var aF=a.i(459500),aG=a.i(316828),aH=a.i(312750),aI=a.i(524172),aJ=a.i(297557),aK=a.i(659358),aL=a.i(800966),aM=a.i(262936),aN=a.i(532418);function aO({createdAt:a,updatedAt:b,completedAt:d,status:e,className:f}){let{t:g,i18n:h}=(0,K.useTranslation)("common"),i=[];return(a&&i.push({label:g("specTimeline.events.created"),date:a,isActive:!0,isFuture:!1,icon:aJ.Clock,color:"text-blue-600"}),"in-progress"===e||"complete"===e||"archived"===e?i.push({label:g("specTimeline.events.inProgress"),date:b||a,isActive:!0,isFuture:!1,icon:aK.PlayCircle,color:"text-orange-600"}):i.push({label:g("specTimeline.events.inProgress"),date:null,isActive:!1,isFuture:!0,icon:aN.Circle,color:"text-muted-foreground"}),"complete"===e||"archived"===e?i.push({label:g("specTimeline.events.complete"),date:d||b,isActive:!0,isFuture:!1,icon:aL.CheckCircle2,color:"text-green-600"}):i.push({label:g("specTimeline.events.complete"),date:null,isActive:!1,isFuture:!0,icon:aN.Circle,color:"text-muted-foreground"}),"archived"===e&&i.push({label:g("specTimeline.events.archived"),date:b,isActive:!0,isFuture:!1,icon:aM.Archive,color:"text-gray-600"}),0===i.length)?null:(0,c.jsx)("div",{className:(0,A.cn)("flex items-start gap-2",f),children:i.map((a,b)=>{let d=a.icon,e=b===i.length-1,f=e?null:i[b+1],j=a.date&&f?.date&&!f.isFuture?(0,C.formatDuration)(a.date,f.date,h.language):"";return(0,c.jsxs)("div",{className:"flex items-center gap-2 flex-1",children:[(0,c.jsxs)("div",{className:"flex flex-col items-center gap-1 min-w-0",children:[(0,c.jsx)("div",{className:(0,A.cn)("w-8 h-8 rounded-full border-2 bg-background flex items-center justify-center shrink-0",a.isActive&&!a.isFuture?"border-primary":"border-muted-foreground/40"),children:d&&(0,c.jsx)(d,{className:(0,A.cn)("h-4 w-4",a.isActive&&!a.isFuture?"text-primary":"text-muted-foreground/60")})}),(0,c.jsx)("div",{className:(0,A.cn)("text-xs font-medium text-center whitespace-nowrap",a.isActive&&!a.isFuture?"text-foreground":"text-muted-foreground"),children:a.label}),(0,c.jsxs)("div",{className:"text-[10px] text-center min-h-[14px]",children:[a.date&&!a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground",children:(0,C.formatRelativeTime)(a.date,h.language)}),!a.date&&a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/70",children:g("specTimeline.state.awaiting")}),a.date&&a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/70",children:g("specTimeline.state.queued")}),!a.date&&!a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/60",children:g("specTimeline.state.pending")})]})]}),!e&&(0,c.jsxs)("div",{className:"flex flex-col items-center flex-1 min-w-4 gap-0.5",children:[(0,c.jsx)("div",{className:(0,A.cn)("h-0.5 w-full",a.isActive&&!a.isFuture?"bg-primary":"bg-muted-foreground/40")}),j&&(0,c.jsx)("div",{className:"text-[10px] text-muted-foreground font-medium whitespace-nowrap",children:j})]})]},b)})})}var aP=a.i(247338);a.i(294783);var aQ=a.i(156916);let aR=["planned","in-progress","complete","archived"],aS={planned:{icon:aJ.Clock,labelKey:"status.planned",className:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},"in-progress":{icon:aK.PlayCircle,labelKey:"status.inProgress",className:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400"},complete:{icon:aL.CheckCircle2,labelKey:"status.complete",className:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},archived:{icon:aM.Archive,labelKey:"status.archived",className:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"}};function aT({specId:a,currentStatus:b,onUpdate:e,disabled:f=!1,projectId:g}){let[h,i]=d.useState(b||"planned"),[j,k]=d.useState(!1),[l,m]=d.useState(null),{t:n}=(0,K.useTranslation)("common"),o=async b=>{if(b!==h){i(b),k(!0),m(null);try{let c=`/api/projects/${g}/specs/${a}/metadata`,d=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:b})});if(!d.ok){let a=await d.json();throw Error(a.error||"Failed to update status")}e?.(b),aQ.toast.success(n("editors.statusSuccess"))}catch(b){i(h);let a=b instanceof Error?b.message:"Failed to update";m(a),aQ.toast.error(n("editors.statusError"),{description:a}),console.error("Status update failed:",b)}finally{k(!1)}}},p=aS[h]||aS.planned,q=p.icon,r=n(p.labelKey);return(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsxs)(z.Select,{value:h,onValueChange:a=>o(a),disabled:f||j,children:[(0,c.jsx)(z.SelectTrigger,{className:(0,A.cn)("h-7 w-fit min-w-[120px] border-0 px-2 text-xs font-medium",p.className,j&&"opacity-70"),"aria-label":n("editors.changeStatus"),children:(0,c.jsxs)("div",{className:"flex items-center gap-1.5",children:[j?(0,c.jsx)(aP.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,c.jsx)(q,{className:"h-3.5 w-3.5"}),(0,c.jsx)(z.SelectValue,{children:r})]})}),(0,c.jsx)(z.SelectContent,{children:aR.map(a=>{let b=aS[a],d=b.icon;return(0,c.jsx)(z.SelectItem,{value:a,className:"pl-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(d,{className:"h-4 w-4"}),(0,c.jsx)("span",{children:n(b.labelKey)})]})},a)})})]}),l&&(0,c.jsx)("div",{className:"absolute top-full left-0 mt-1 text-xs text-destructive",children:l})]})}var aU=a.i(853206),aV=a.i(283695),aW=a.i(792804),aX=a.i(845566);let aY=["low","medium","high","critical"],aZ={critical:{icon:aU.AlertCircle,labelKey:"priority.critical",className:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},high:{icon:aV.ArrowUp,labelKey:"priority.high",className:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400"},medium:{icon:aW.Minus,labelKey:"priority.medium",className:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},low:{icon:aX.ArrowDown,labelKey:"priority.low",className:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"}};function a$({specId:a,currentPriority:b,onUpdate:e,disabled:f=!1,projectId:g}){let[h,i]=d.useState(b||"medium"),[j,k]=d.useState(!1),[l,m]=d.useState(null),{t:n}=(0,K.useTranslation)("common"),o=async b=>{if(b!==h){i(b),k(!0),m(null);try{let c=`/api/projects/${g}/specs/${a}/metadata`,d=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:b})});if(!d.ok){let a=await d.json();throw Error(a.error||"Failed to update priority")}e?.(b),aQ.toast.success(n("editors.prioritySuccess"))}catch(b){i(h);let a=b instanceof Error?b.message:n("editors.priorityError");m(a),aQ.toast.error(n("editors.priorityError"),{description:a}),console.error("Priority update failed:",b)}finally{k(!1)}}},p=aZ[h]||aZ.medium,q=p.icon,r=n(p.labelKey);return(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsxs)(z.Select,{value:h,onValueChange:a=>o(a),disabled:f||j,children:[(0,c.jsx)(z.SelectTrigger,{className:(0,A.cn)("h-7 w-fit min-w-[100px] border-0 px-2 text-xs font-medium",p.className,j&&"opacity-70"),"aria-label":n("editors.changePriority"),children:(0,c.jsxs)("div",{className:"flex items-center gap-1.5",children:[j?(0,c.jsx)(aP.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,c.jsx)(q,{className:"h-3.5 w-3.5"}),(0,c.jsx)(z.SelectValue,{children:r})]})}),(0,c.jsx)(z.SelectContent,{children:aY.map(a=>{let b=aZ[a],d=b.icon;return(0,c.jsx)(z.SelectItem,{value:a,className:"pl-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(d,{className:"h-4 w-4"}),(0,c.jsx)("span",{children:n(b.labelKey)})]})},a)})})]}),l&&(0,c.jsx)("div",{className:"absolute top-full left-0 mt-1 text-xs text-destructive",children:l})]})}var a_=a.i(479220),a0=a.i(837717),a1=a.i(285232),a2=a.i(964952);function a3({specId:a,currentTags:b,onUpdate:e,disabled:f=!1,projectId:g}){let[h,i]=d.useState(b||[]),[j,k]=d.useState([]),[l,m]=d.useState(!1),[n,o]=d.useState(null),[p,q]=d.useState(!1),[r,t]=d.useState(""),{t:u}=(0,K.useTranslation)("common");d.useEffect(()=>{p&&0===j.length&&(async()=>{try{let a=`/api/projects/${g}/tags`,b=await fetch(a);if(b.ok){let a=await b.json();k(a.tags||[])}}catch(a){console.error("Failed to fetch tags:",a)}})()},[p,j.length,g]);let v=async b=>{i(b),m(!0),o(null);try{let c=`/api/projects/${g}/specs/${a}/metadata`,d=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:b})});if(!d.ok){let a=await d.json();throw Error(a.error||"Failed to update tags")}e?.(b),aQ.toast.success(u("editors.tagsSuccess"))}catch(b){i(h);let a=b instanceof Error?b.message:u("editors.tagsError");o(a),aQ.toast.error(u("editors.tagsError"),{description:a}),console.error("Tags update failed:",b)}finally{m(!1)}},x=a=>{let b=a.trim().toLowerCase();b&&(h.includes(b)?o(u("editors.tagExists")):(v([...h,b]),t(""),q(!1)))},y=d.useMemo(()=>{let a=r.toLowerCase();return j.filter(a=>!h.includes(a)).filter(b=>!a||b.toLowerCase().includes(a))},[j,h,r]),z=r.trim()&&!h.includes(r.trim().toLowerCase())&&!j.includes(r.trim().toLowerCase());return(0,c.jsx)("div",{className:"relative",children:(0,c.jsxs)("div",{className:"flex gap-1 flex-wrap items-center",children:[h.map(a=>(0,c.jsxs)(a0.Badge,{variant:"outline",className:(0,A.cn)("text-xs pr-1 gap-1",f&&"opacity-50"),children:[a,!f&&(0,c.jsx)("button",{onClick:()=>{v(h.filter(b=>b!==a))},disabled:l,className:"ml-1 rounded-full hover:bg-muted p-0.5 transition-colors","aria-label":u("editors.removeTag",{tag:a}),children:(0,c.jsx)(s.X,{className:"h-3 w-3"})})]},a)),!f&&(0,c.jsxs)(a1.Popover,{open:p,onOpenChange:q,children:[(0,c.jsx)(a1.PopoverTrigger,{asChild:!0,children:(0,c.jsx)(w.Button,{variant:"outline",size:"sm",className:"h-6 px-2 text-xs",disabled:l,"aria-label":u("editors.addTag"),children:l?(0,c.jsx)(aP.Loader2,{className:"h-3 w-3 animate-spin"}):(0,c.jsx)(a_.Plus,{className:"h-3 w-3"})})}),(0,c.jsxs)(a1.PopoverContent,{className:"w-56 p-0",align:"start",children:[(0,c.jsxs)(a2.Command,{children:[(0,c.jsx)(a2.CommandInput,{placeholder:u("editors.searchTag"),value:r,onValueChange:t}),(0,c.jsxs)(a2.CommandList,{children:[(0,c.jsx)(a2.CommandEmpty,{children:z?(0,c.jsxs)(a2.CommandItem,{onSelect:()=>x(r),className:"cursor-pointer",children:[(0,c.jsx)(a_.Plus,{className:"mr-2 h-4 w-4"}),u("editors.createTag",{tag:r.trim().toLowerCase()})]}):(0,c.jsx)("span",{className:"text-muted-foreground px-2 py-1.5 text-sm",children:u("editors.noTagResults")})}),y.length>0&&(0,c.jsx)(a2.CommandGroup,{heading:u("editors.existingTags"),children:y.slice(0,10).map(a=>(0,c.jsx)(a2.CommandItem,{value:a,onSelect:()=>x(a),className:"cursor-pointer",children:a},a))}),z&&y.length>0&&(0,c.jsx)(a2.CommandGroup,{heading:u("editors.createSection"),children:(0,c.jsxs)(a2.CommandItem,{onSelect:()=>x(r),className:"cursor-pointer",children:[(0,c.jsx)(a_.Plus,{className:"mr-2 h-4 w-4"}),u("editors.createTag",{tag:r.trim().toLowerCase()})]})})]})]}),n&&(0,c.jsx)("p",{className:"text-xs text-destructive px-2 pb-2",children:n})]})]})]})})}function a4({children:a,fallback:b=null}){let[e,f]=d.useState(!1);return(d.useEffect(()=>{f(!0)},[]),e)?(0,c.jsx)(c.Fragment,{children:a}):(0,c.jsx)(c.Fragment,{children:b})}function a5({href:a,children:b,currentSpecNumber:d,projectId:f,...g}){if(!a)return(0,c.jsx)("a",{...g,children:b});let h=function(a,b,c){if(a.startsWith("#")||a.startsWith("http://")||a.startsWith("https://"))return a;let d=(a,b)=>{let d=c?`/projects/${c}/specs/${a}`:`/specs/${a}`;return b?`${d}?subspec=${b}`:d},e=a.match(/^\.\/([^/]+\.md)$/);if(e&&b){let a=e[1];return"README.md"!==a?d(b,a):d(b)}let f=a.match(/^\.\.\/(\d+)-[^/]+\/?([^/]+\.md)?$/);if(f){let a=parseInt(f[1],10),b=f[2];return b&&"README.md"!==b?d(a,b):d(a)}return a}(a,d,f),i=h.startsWith("http://")||h.startsWith("https://"),j=h.startsWith("#");return i||j?(0,c.jsx)("a",{href:h,...g,target:i?"_blank":void 0,rel:i?"noopener noreferrer":void 0,children:b}):(0,c.jsx)(e.default,{href:h,...g,className:"text-primary hover:underline",children:b})}var a6=a.i(87140),a7=a.i(731751),a8=a.i(183214),a9=a.i(398293),ba=a.i(231008),bb=a.i(53897),bc=a.i(669153);let bd="#64748b",be={planned:aJ.Clock,"in-progress":aK.PlayCircle,complete:aL.CheckCircle2,archived:aM.Archive},bf={critical:aU.AlertCircle,high:aV.ArrowUp,medium:aW.Minus,low:aX.ArrowDown},bg={planned:"border-blue-400/70 bg-blue-400/10 text-blue-900 dark:text-blue-200","in-progress":"border-orange-400/70 bg-orange-400/10 text-orange-900 dark:text-orange-200",complete:"border-green-400/70 bg-green-400/10 text-green-900 dark:text-green-200",archived:"border-gray-400/70 bg-gray-400/10 text-gray-600 dark:text-gray-300"},bh={rankdir:"LR",align:"UL",nodesep:60,ranksep:120,marginx:40,marginy:40},bi=d.memo(function({data:a}){let b=a.status?be[a.status]||aJ.Clock:null,d=a.priority?bf[a.priority]||aW.Minus:null,{t:e}=(0,K.useTranslation)("common"),f=bg[a.status||a.tone]||bg.planned,g="current"===a.tone?"ring-2 ring-primary/40 shadow-lg":"";return(0,c.jsxs)("div",{className:(0,A.cn)("flex w-[280px] flex-col gap-1.5 rounded-xl border-2 px-5 py-4 text-base shadow-md transition-colors",f,g,a.interactive&&"cursor-pointer hover:border-primary/70 hover:shadow-lg"),children:[(0,c.jsx)(bc.Handle,{type:"target",position:bc.Position.Left,className:"opacity-0"}),(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/70",children:a.badge}),(b||d)&&(0,c.jsxs)("div",{className:"flex items-center gap-1",children:[b&&(0,c.jsx)("div",{className:(0,A.cn)("rounded p-1 flex items-center justify-center","planned"===a.status&&"bg-blue-500/20","in-progress"===a.status&&"bg-orange-500/20","complete"===a.status&&"bg-green-500/20","archived"===a.status&&"bg-gray-500/20"),title:a.status?e(`status.${a.status}`):void 0,children:(0,c.jsx)(b,{className:(0,A.cn)("h-3 w-3","planned"===a.status&&"text-blue-600 dark:text-blue-400","in-progress"===a.status&&"text-orange-600 dark:text-orange-400","complete"===a.status&&"text-green-600 dark:text-green-400","archived"===a.status&&"text-gray-500 dark:text-gray-400")})}),d&&(0,c.jsx)("div",{className:(0,A.cn)("rounded p-1 flex items-center justify-center","critical"===a.priority&&"bg-red-500/20","high"===a.priority&&"bg-orange-500/20","medium"===a.priority&&"bg-blue-500/20","low"===a.priority&&"bg-gray-500/20"),title:a.priority?e(`priority.${a.priority}`):void 0,children:(0,c.jsx)(d,{className:(0,A.cn)("h-3 w-3","critical"===a.priority&&"text-red-600 dark:text-red-400","high"===a.priority&&"text-orange-600 dark:text-orange-400","medium"===a.priority&&"text-blue-600 dark:text-blue-400","low"===a.priority&&"text-gray-500 dark:text-gray-400")})})]})]}),(0,c.jsx)("span",{className:"text-base font-semibold leading-snug",children:a.label}),a.subtitle&&(0,c.jsx)("span",{className:"text-sm text-muted-foreground/80",children:a.subtitle}),(0,c.jsx)(bc.Handle,{type:"source",position:bc.Position.Right,className:"opacity-0"})]})});bi.displayName="SpecNode";let bj={specNode:bi};function bk(a){if(a.specNumber){let b=a.specNumber.toString().padStart(3,"0"),c=a.title||a.specName.replace(/[-_]/g," ").trim();return`#${b} ${c}`}return a.title||a.specName}function bl(a,b){let c=a.specNumber||a.specName.match(/^(\d+)/)?.[1];return b?`/projects/${b}/specs/${c}`:`/specs/${c}`}function bm(a,b,c){return`${a}-${c}-${b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||c}`}function bn({relationships:a,specNumber:b,specTitle:e,projectId:f}){let g=(0,N.useRouter)(),[h,i]=d.useState(null),{t:j,i18n:k}=(0,K.useTranslation)("common"),l=d.useMemo(()=>{var c;let d,g,h,i;return c={currentBadge:j("dependencyGraph.badges.current"),currentSubtitle:j("dependencyGraph.badges.currentSubtitle"),dependsOnBadge:j("dependencyGraph.badges.dependsOn"),dependsOnSubtitle:j("dependencyGraph.badges.dependsOnSubtitle"),requiredByBadge:j("dependencyGraph.badges.requiredBy"),requiredBySubtitle:j("dependencyGraph.badges.requiredBySubtitle")},d=[],g=[],h={id:"current-spec",type:"specNode",data:{label:b?`#${b.toString().padStart(3,"0")} ${e}`:e,badge:c.currentBadge,subtitle:c.currentSubtitle,tone:"current",status:a.current.status,priority:a.current.priority,interactive:!1,isCurrent:!0},position:{x:0,y:0},draggable:!1,selectable:!1,sourcePosition:bc.Position.Right,targetPosition:bc.Position.Left},d.push(h),a.dependsOn?.forEach((a,b)=>{let e=bm("precedence",a.specName,b),i=c.dependsOnSubtitle;"complete"===a.status?i="Completed":"in-progress"===a.status?i="In progress":"planned"===a.status?i="Must complete first":"archived"===a.status&&(i="Archived"),d.push({id:e,type:"specNode",data:{label:bk(a),badge:c.dependsOnBadge,subtitle:i,tone:"precedence",status:a.status,priority:a.priority,href:bl(a,f),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:bc.Position.Right,targetPosition:bc.Position.Left}),g.push({id:`edge-${e}-current`,source:e,target:h.id,type:"smoothstep",markerEnd:{type:bc.MarkerType.ArrowClosed,color:bd,width:28,height:28},style:{stroke:bd,strokeWidth:3}})}),a.requiredBy?.forEach((b,e)=>{let i=bm("required-by",b.specName,e),j=c.requiredBySubtitle,k="complete"===a.current.status||"archived"===a.current.status;"complete"===b.status?j="Completed":"in-progress"===b.status?j="In progress":"planned"===b.status?j=k?"Can proceed":"Blocked by this spec":"archived"===b.status&&(j="Archived"),d.push({id:i,type:"specNode",data:{label:bk(b),badge:c.requiredByBadge,subtitle:j,tone:"required-by",status:b.status,priority:b.priority,href:bl(b,f),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:bc.Position.Right,targetPosition:bc.Position.Left}),g.push({id:`edge-current-${i}`,source:h.id,target:i,type:"smoothstep",markerEnd:{type:bc.MarkerType.ArrowClosed,color:bd,width:28,height:28},style:{stroke:bd,strokeWidth:3}})}),(i=new a8.default.graphlib.Graph).setGraph(bh),i.setDefaultEdgeLabel(()=>({})),d.forEach(a=>{i.setNode(a.id,{width:280,height:110})}),g.forEach(a=>{i.setEdge(a.source,a.target)}),a8.default.layout(i),{nodes:d.map(a=>{let{x:b,y:c}=i.node(a.id);return{...a,position:{x:b-140,y:c-55}}}),edges:g}},[a,b,e,f,j,k.language]),m=d.useCallback(a=>{i(a),requestAnimationFrame(()=>{a.fitView({padding:.4,duration:350})})},[]);d.useEffect(()=>{h&&h.fitView({padding:.4,duration:350})},[h,l.nodes]);let n=d.useCallback((a,b)=>{!b?.data||b.data.href&&g.push(b.data.href)},[g]);return(0,c.jsxs)("div",{className:"flex h-full flex-col gap-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-xs font-semibold uppercase tracking-wide",children:j("dependencyGraph.header.title")}),(0,c.jsx)("p",{className:"text-base text-foreground",children:j("dependencyGraph.header.subtitle")})]}),(0,c.jsx)("div",{className:"rounded-full border border-border px-3 py-1.5 text-sm font-medium uppercase tracking-wide",children:j("dependencyGraph.header.badge")})]}),(0,c.jsx)("div",{className:"flex-1 overflow-hidden rounded-2xl border border-border bg-muted/30",children:(0,c.jsxs)(a9.default,{nodes:l.nodes,edges:l.edges,nodeTypes:bj,onInit:m,className:"h-full w-full",fitView:!0,proOptions:{hideAttribution:!0},nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,panOnScroll:!0,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,minZoom:.4,maxZoom:1.6,onNodeClick:n,children:[(0,c.jsx)(ba.Background,{gap:24,size:1,color:"rgba(148, 163, 184, 0.3)"}),(0,c.jsx)(bb.Controls,{showInteractive:!1})]})})]})}var bo=a.i(228e3),bp=a.i(186945),bq=a.i(615268);let br=(0,t.default)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]),bs=(0,t.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]),bt=(0,t.default)("test-tube",[["path",{d:"M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5c-1.4 0-2.5-1.1-2.5-2.5V2",key:"125lnx"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M14.5 16h-5",key:"1ox875"}]]),bu=(0,t.default)("square-check-big",[["path",{d:"M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344",key:"2acyp4"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),bv=(0,t.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]),bw=(0,t.default)("map",[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]);var bx=a.i(915970),by=a.i(476011),bz=a.i(418419),bA=a.i(404620),bB=a.i(709211),bC=a.i(730702),bD=a.i(475661),bE=a.i(386868);let bF=()=>a=>{(0,bE.visit)(a,"html",a=>{"string"==typeof a.value&&a.value.trim().startsWith("<!--")&&(a.value="")})},bG={FileText:bq.FileText,Palette:br,Code:bs,TestTube:bt,CheckSquare:bu,Wrench:bv,Map:bw,GitBranch:bx.GitBranch,Home:by.Home,TrendingUp:bz.TrendingUp},bH=a=>fetch(a).then(a=>{if(!a.ok)throw Error(`HTTP error! status: ${a.status}`);return a.json()});function bI({initialSpec:a,initialSubSpec:b,isFocusMode:f=!1,onToggleFocusMode:g}){let h=(0,N.useRouter)(),i=(0,N.useSearchParams)(),{t:j,i18n:k}=(0,K.useTranslation)("common"),l=i.get("subspec")||b,[m,n]=d.useState(!1),[o,p]=d.useState(!1),{getSpecUrl:q,projectId:r}=(0,J.useProjectUrl)(),s=r?`/api/projects/${r}/specs/${a.specNumber||a.id}`:`/api/specs/${a.specNumber||a.id}`,t=r?`/api/projects/${r}/specs/${a.specNumber||a.id}/dependency-graph`:`/api/specs/${a.specNumber||a.id}/dependency-graph`,{data:u,error:v,isLoading:y}=aE(s,bH,{fallbackData:{spec:a},revalidateOnFocus:!1,dedupingInterval:5e3}),{data:z}=aE(o?t:null,bH,{revalidateOnFocus:!1,dedupingInterval:6e4}),D=u?.spec||a,E=d.useMemo(()=>D.tags||[],[D.tags]),F=D.updatedAt?(0,C.formatRelativeTime)(D.updatedAt):null,G=D.relationships,H=!!(G&&((G.dependsOn?.length??0)>0||(G.requiredBy?.length??0)>0));d.useEffect(()=>{H||p(!1)},[H]);let I=(0,A.extractH1Title)(D.contentMd)||D.title||D.specName,L=D.contentMd;if(l&&D.subSpecs){let a=D.subSpecs.find(a=>a.file===l);a&&(L=a.content)}let M=d.useCallback(a=>{if(!a)return j("specDetail.metadata.notAvailable");try{return new Intl.DateTimeFormat(k.language||"en-US",{year:"numeric",month:"short",day:"numeric"}).format(new Date(a))}catch{return j("specDetail.metadata.notAvailable")}},[k.language,j]),O=a=>{let b=a?q(D.specNumber||D.id,a):q(D.specNumber||D.id);h.push(b,{scroll:!1})},P=d.useRef(null);return d.useEffect(()=>{let a=()=>{let a=56;window.innerWidth>=1024&&P.current&&(a+=P.current.offsetHeight-56),document.documentElement.style.scrollPaddingTop=`${a}px`};a(),window.addEventListener("resize",a);let b=new ResizeObserver(a);return P.current&&b.observe(P.current),()=>{window.removeEventListener("resize",a),b.disconnect(),document.documentElement.style.scrollPaddingTop=""}},[D,E]),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("header",{ref:P,className:"lg:sticky lg:top-14 lg:z-20 border-b bg-card",children:[(0,c.jsx)("div",{className:(0,A.cn)("px-3 sm:px-6",f?"py-1.5":"py-2 sm:py-3"),children:f?(0,c.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,c.jsxs)("h1",{className:"text-base font-semibold tracking-tight truncate",children:[D.specNumber&&(0,c.jsxs)("span",{className:"text-muted-foreground",children:["#",D.specNumber.toString().padStart(3,"0")," "]}),I]}),(0,c.jsx)(x.StatusBadge,{status:D.status||"planned"}),(0,c.jsx)(B.PriorityBadge,{priority:D.priority||"medium"})]}),(0,c.jsx)(w.Button,{type:"button",variant:"ghost",size:"sm",onClick:g,className:"h-7 px-2 text-xs text-muted-foreground hover:text-foreground shrink-0",title:j("specDetail.buttons.exitFocus"),children:(0,c.jsx)(bB.Minimize2,{className:"h-4 w-4"})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-1.5 sm:mb-2",children:[(0,c.jsxs)("h1",{className:"text-lg sm:text-xl font-bold tracking-tight",children:[D.specNumber&&(0,c.jsxs)("span",{className:"text-muted-foreground",children:["#",D.specNumber.toString().padStart(3,"0")," "]}),I]}),(0,c.jsxs)(w.Button,{variant:"ghost",size:"icon",className:"lg:hidden h-8 w-8 -mr-2 shrink-0 text-muted-foreground",onClick:()=>{},children:[(0,c.jsx)(bC.List,{className:"h-5 w-5"}),(0,c.jsx)("span",{className:"sr-only",children:j("specDetail.toggleSidebar")})]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,c.jsx)(a4,{fallback:(0,c.jsx)(x.StatusBadge,{status:D.status||"planned"}),children:(0,c.jsx)(aT,{specId:D.specNumber?.toString()||D.id,currentStatus:D.status||"planned",projectId:r})}),(0,c.jsx)(a4,{fallback:(0,c.jsx)(B.PriorityBadge,{priority:D.priority||"medium"}),children:(0,c.jsx)(a$,{specId:D.specNumber?.toString()||D.id,currentPriority:D.priority||"medium",projectId:r})}),(0,c.jsx)("div",{className:"h-4 w-px bg-border mx-1 hidden sm:block"}),(0,c.jsx)(a4,{children:(0,c.jsx)(a3,{specId:D.specNumber?.toString()||D.id,currentTags:E,projectId:r})})]}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-2 sm:gap-4 text-xs text-muted-foreground mt-1.5 sm:mt-2",children:[(0,c.jsxs)("span",{className:"hidden sm:inline",children:[j("specDetail.metadata.created"),": ",M(D.createdAt)]}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{children:[j("specDetail.metadata.updated"),": ",M(D.updatedAt),D.updatedAt&&(0,c.jsxs)("span",{className:"ml-1 text-[11px] text-muted-foreground/80",children:["(",F,")"]})]}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{className:"hidden md:inline",children:[j("specDetail.metadata.name"),": ",D.specName]}),D.assignee&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{className:"hidden sm:inline",children:[j("specDetail.metadata.assignee"),": ",D.assignee]})]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mt-2",children:[(0,c.jsxs)(bp.Dialog,{open:m,onOpenChange:n,children:[(0,c.jsxs)(w.Button,{type:"button",variant:"outline",size:"sm","aria-haspopup":"dialog","aria-expanded":m,onClick:()=>n(!0),className:"h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",children:[(0,c.jsx)(aJ.Clock,{className:"mr-1.5 h-3.5 w-3.5"}),j("specDetail.buttons.viewTimeline"),(0,c.jsx)(bA.Maximize2,{className:"ml-1.5 h-3.5 w-3.5"})]}),(0,c.jsxs)(bp.DialogContent,{className:"w-[min(900px,90vw)] max-w-3xl max-h-[90vh] overflow-y-auto",children:[(0,c.jsxs)(bp.DialogHeader,{children:[(0,c.jsx)(bp.DialogTitle,{children:j("specDetail.dialogs.timelineTitle")}),(0,c.jsx)(bp.DialogDescription,{children:j("specDetail.dialogs.timelineDescription")})]}),(0,c.jsx)("div",{className:"rounded-xl border border-border bg-muted/30 p-4",children:(0,c.jsx)(aO,{createdAt:D.createdAt,updatedAt:D.updatedAt,completedAt:D.completedAt,status:D.status||"planned"})})]})]}),(0,c.jsxs)(bp.Dialog,{open:o,onOpenChange:p,children:[(0,c.jsxs)(w.Button,{type:"button",variant:"outline",size:"sm","aria-haspopup":"dialog","aria-expanded":o,onClick:()=>p(!0),disabled:!H,className:(0,A.cn)("h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",!H&&"cursor-not-allowed opacity-50"),children:[(0,c.jsx)(bx.GitBranch,{className:"mr-1.5 h-3.5 w-3.5"}),j("specDetail.buttons.viewDependencies"),(0,c.jsx)(bA.Maximize2,{className:"ml-1.5 h-3.5 w-3.5"})]}),(0,c.jsxs)(bp.DialogContent,{className:"flex h-[85vh] w-[min(1200px,95vw)] max-w-6xl flex-col gap-4 overflow-hidden",children:[(0,c.jsxs)(bp.DialogHeader,{children:[(0,c.jsx)(bp.DialogTitle,{children:j("specDetail.dialogs.dependenciesTitle")}),(0,c.jsxs)(bp.DialogDescription,{className:"flex flex-col gap-2",children:[(0,c.jsx)("span",{children:j("specDetail.dialogs.dependenciesDescription")}),(0,c.jsxs)(e.default,{href:r?`/projects/${r}/dependencies?spec=${D.specNumber||D.id}`:`/dependencies?spec=${D.specNumber||D.id}`,className:"inline-flex items-center gap-1.5 text-xs text-primary hover:underline w-fit",onClick:()=>p(!1),children:[(0,c.jsx)(bD.ExternalLink,{className:"h-3 w-3"}),j("specDetail.dialogs.dependenciesLink")]})]})]}),(0,c.jsx)("div",{className:"min-h-0 flex-1",children:z&&(0,c.jsx)(bn,{relationships:z,specNumber:D.specNumber,specTitle:I,projectId:r})})]})]}),g&&(0,c.jsxs)(w.Button,{type:"button",variant:"outline",size:"sm",onClick:g,className:"hidden lg:inline-flex h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",title:j("specDetail.buttons.focus"),children:[(0,c.jsx)(bA.Maximize2,{className:"mr-1.5 h-3.5 w-3.5"}),j("specDetail.buttons.focus")]})]})]})}),D.subSpecs&&D.subSpecs.length>0&&(0,c.jsx)("div",{className:"border-t bg-muted/30",children:(0,c.jsx)("div",{className:"px-3 sm:px-6 overflow-x-auto",children:(0,c.jsxs)("div",{className:"flex gap-1 py-2 min-w-max",children:[(0,c.jsxs)("button",{onClick:()=>O(null),className:`flex items-center gap-2 px-3 sm:px-4 py-2 text-xs sm:text-sm font-medium rounded-md whitespace-nowrap transition-colors ${!l?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[(0,c.jsx)(by.Home,{className:"h-4 w-4"}),(0,c.jsx)("span",{className:"hidden sm:inline",children:j("specDetail.tabs.overview")})]}),D.subSpecs.map(a=>{let b=bG[a.iconName]||bq.FileText;return(0,c.jsxs)("button",{onClick:()=>O(a.file),className:`flex items-center gap-2 px-3 sm:px-4 py-2 text-xs sm:text-sm font-medium rounded-md whitespace-nowrap transition-colors ${l===a.file?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[(0,c.jsx)(b,{className:`h-4 w-4 ${a.color}`}),(0,c.jsx)("span",{className:"hidden sm:inline",children:a.name})]},a.file)})]})})})]}),(0,c.jsxs)("div",{className:"flex flex-col xl:flex-row xl:items-start",children:[(0,c.jsx)("main",{className:"flex-1 px-3 sm:px-6 py-3 sm:py-6 min-w-0",children:(0,c.jsxs)("div",{className:"space-y-4",children:[y&&(0,c.jsx)("div",{className:"text-sm text-muted-foreground",children:j("specDetail.state.loading")}),v&&(0,c.jsx)("div",{className:"text-sm text-destructive",children:j("specDetail.state.error")}),(0,c.jsx)("article",{className:"prose prose-slate dark:prose-invert max-w-none prose-sm sm:prose-base",children:(0,c.jsx)(aF.default,{remarkPlugins:[aG.default,bF],rehypePlugins:[aH.default,aI.default],components:{a:a=>(0,c.jsx)(a5,{...a,currentSpecNumber:D.specNumber||void 0,projectId:r}),pre:({children:a,...b})=>{let e=d.Children.toArray(a)[0];if(d.isValidElement(e)&&"code"===e.type&&"string"==typeof e.props.className&&e.props.className?.includes("language-mermaid")){let a=e.props,b="string"==typeof a.children?a.children:"";return(0,c.jsx)(bo.MermaidDiagram,{code:b})}return(0,c.jsx)("pre",{...b,children:a})}},children:L})})]})}),(0,c.jsx)("aside",{className:(0,A.cn)("hidden xl:block w-72 shrink-0 px-6 py-6 sticky overflow-y-auto scrollbar-auto-hide",D.subSpecs&&D.subSpecs.length>0?"top-[16.375rem] h-[calc(100vh-16.375rem)]":"top-[13.125rem] h-[calc(100vh-13.125rem)]"),children:(0,c.jsx)(a6.TableOfContentsSidebar,{content:L})})]}),(0,c.jsx)("div",{className:"xl:hidden",children:(0,c.jsx)(a6.TableOfContents,{content:L})}),(0,c.jsx)(a7.BackToTop,{})]})}function bJ({spec:a,allSpecs:b,currentSubSpec:e}){let{projectId:f}=(0,J.useProjectUrl)(),[g,h]=d.useState(!1);d.useEffect(()=>{"true"===localStorage.getItem("spec-detail-focus-mode")&&h(!0)},[]);let i=d.useCallback(()=>{h(a=>{let b=!a;return localStorage.setItem("spec-detail-focus-mode",String(b)),b})},[]),j=d.useMemo(()=>b.map(a=>({id:a.id,specNumber:a.specNumber,title:a.title,specName:a.specName,status:a.status,priority:a.priority,tags:a.tags,updatedAt:a.updatedAt,subSpecsCount:"subSpecsCount"in a?a.subSpecsCount:void 0})),[b]);d.useEffect(()=>{!function(a){if(0===a.length)return;let b=a.map(a=>[a.id,a.specNumber??"",a.title??"",a.status??"",a.priority??"",a.updatedAt?new Date(a.updatedAt).getTime():0].join(":")).join("|");if(b!==D.signature)for(let c of(D={...D,specs:a,signature:b},I(),G))c()}(j)},[j]),d.useEffect(()=>{var b=a.id;if(D.activeSpecId!==b)for(let a of(D={...D,activeSpecId:b},I(),H))a()},[a.id]);let k=d.useCallback(a=>{fetch(`/api/projects/${f}/specs/${a}`).catch(()=>{})},[f]);return(0,c.jsxs)("div",{className:"flex min-h-[calc(100vh-3.5rem)] w-full min-w-0",children:[(0,c.jsx)(M,{initialSpecs:j,currentSpecId:a.id,currentSubSpec:e,onSpecHover:k,className:(0,A.cn)(g&&"hidden")}),(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsx)(bI,{initialSpec:a,initialSubSpec:e,isFocusMode:g,onToggleFocusMode:i})})]})}a.s(["SpecDetailWrapper",()=>bJ],599302)}];
|
|
1
|
+
module.exports=[599302,a=>{"use strict";let b;var c=a.i(982746),d=a.i(280940),e=a.i(262158);let f=d.useEffect;function g(a){if(void 0!==a)switch(typeof a){case"number":return a;case"string":if(a.endsWith("px"))return parseFloat(a)}}let h=null;function i({containerElement:a,direction:b,isRtl:c,scrollOffset:d}){if("horizontal"===b&&c)switch(function(a=!1){if(null===h||a){let a=document.createElement("div"),b=a.style;b.width="50px",b.height="50px",b.overflow="scroll",b.direction="rtl";let c=document.createElement("div"),d=c.style;return d.width="100px",d.height="100px",a.appendChild(c),document.body.appendChild(a),a.scrollLeft>0?h="positive-descending":(a.scrollLeft=1,h=0===a.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(a),h}return h}()){case"negative":return-d;case"positive-descending":if(a){let{clientWidth:b,scrollLeft:c,scrollWidth:d}=a;return d-b-c}}return d}function j(a,b="Assertion error"){if(!a)throw console.error(b),Error(b)}function k(a,b){if(a===b)return!0;if(!!a!=!!b||(j(void 0!==a),j(void 0!==b),Object.keys(a).length!==Object.keys(b).length))return!1;for(let c in a)if(!Object.is(b[c],a[c]))return!1;return!0}function l({cachedBounds:a,itemCount:b,itemSize:c}){if(0===b)return 0;if("number"==typeof c)return b*c;{let c=a.get(0===a.size?0:a.size-1);return j(void 0!==c,"Unexpected bounds cache miss"),b*((c.scrollOffset+c.size)/a.size)}}function m({cachedBounds:a,containerScrollOffset:b,containerSize:c,itemCount:d,overscanCount:e}){let f=d-1,g=0,h=-1,i=0,j=-1,k=0;for(;k<f;){let c=a.get(k);if(c.scrollOffset+c.size>b)break;k++}for(i=Math.max(0,(g=k)-e);k<f;){let d=a.get(k);if(d.scrollOffset+d.size>=b+c)break;k++}return j=Math.min(d-1,(h=Math.min(f,k))+e),g<0&&(g=0,h=-1,i=0,j=-1),{startIndexVisible:g,stopIndexVisible:h,startIndexOverscan:i,stopIndexOverscan:j}}function n(a,b){let{ariaAttributes:c,style:d,...e}=a,{ariaAttributes:f,style:g,...h}=b;return k(c,f)&&k(d,g)&&k(e,h)}function o({children:a,className:b,defaultHeight:e=0,listRef:h,onResize:o,onRowsRendered:p,overscanCount:q=3,rowComponent:r,rowCount:s,rowHeight:t,rowProps:u,tagName:v="div",style:w,...x}){let y=(0,d.useMemo)(()=>u,Object.values(u)),z=(0,d.useMemo)(()=>(0,d.memo)(r,n),[r]),[A,B]=(0,d.useState)(null),C=null!=t&&"object"==typeof t&&"getAverageRowHeight"in t&&"function"==typeof t.getAverageRowHeight,{getCellBounds:D,getEstimatedSize:E,scrollToIndex:F,startIndexOverscan:G,startIndexVisible:H,stopIndexOverscan:I,stopIndexVisible:J}=function({containerElement:a,containerStyle:b,defaultContainerSize:c=0,direction:e,isRtl:h=!1,itemCount:n,itemProps:o,itemSize:p,onResize:q,overscanCount:r}){var s;let t,[u,v]=(0,d.useState)({startIndexVisible:0,startIndexOverscan:0,stopIndexVisible:-1,stopIndexOverscan:-1}),{startIndexVisible:w,startIndexOverscan:x,stopIndexVisible:y,stopIndexOverscan:z}={startIndexVisible:Math.min(n-1,u.startIndexVisible),startIndexOverscan:Math.min(n-1,u.startIndexOverscan),stopIndexVisible:Math.min(n-1,u.stopIndexVisible),stopIndexOverscan:Math.min(n-1,u.stopIndexOverscan)},{height:A=c,width:B=c}=function({box:a,defaultHeight:b,defaultWidth:c,disabled:e,element:h,mode:i,style:j}){let{styleHeight:k,styleWidth:l}=(0,d.useMemo)(()=>({styleHeight:g(j?.height),styleWidth:g(j?.width)}),[j?.height,j?.width]),[m,n]=(0,d.useState)({height:b,width:c}),o=e||"only-height"===i&&void 0!==k||"only-width"===i&&void 0!==l||void 0!==k&&void 0!==l;return f(()=>{if(null===h||o)return;let b=new ResizeObserver(a=>{for(let b of a){let{contentRect:a,target:c}=b;h===c&&n(b=>b.height===a.height&&b.width===a.width?b:{height:a.height,width:a.width})}});return b.observe(h,{box:a}),()=>{b?.unobserve(h)}},[a,o,h,k,l]),(0,d.useMemo)(()=>({height:k??m.height,width:l??m.width}),[m,k,l])}({defaultHeight:"vertical"===e?c:void 0,defaultWidth:"horizontal"===e?c:void 0,element:a,mode:"vertical"===e?"only-height":"only-width",style:b}),C=(0,d.useRef)({height:0,width:0}),D="vertical"===e?A:B,E=function({containerSize:a,itemSize:b}){let c;return"string"==typeof b?(j(b.endsWith("%"),`Invalid item size: "${b}"; string values must be percentages (e.g. "100%")`),j(void 0!==a,"Container size must be defined if a percentage item size is specified"),c=a*parseInt(b)/100):c=b,c}({containerSize:D,itemSize:p});(0,d.useLayoutEffect)(()=>{if("function"==typeof q){let a=C.current;(a.height!==A||a.width!==B)&&(q({height:A,width:B},{...a}),a.height=A,a.width=B)}},[A,q,B]);let F=function({itemCount:a,itemProps:b,itemSize:c}){return(0,d.useMemo)(()=>(function({itemCount:a,itemProps:b,itemSize:c}){let d=new Map;return{get(e){for(j(e<a,`Invalid index ${e}`);d.size-1<e;){let a,f=d.size;switch(typeof c){case"function":a=c(f,b);break;case"number":a=c}if(0===f)d.set(f,{size:a,scrollOffset:0});else{let b=d.get(f-1);j(void 0!==b,`Unexpected bounds cache miss for index ${e}`),d.set(f,{scrollOffset:b.scrollOffset+b.size,size:a})}}let f=d.get(e);return j(void 0!==f,`Unexpected bounds cache miss for index ${e}`),f},set(a,b){d.set(a,b)},get size(){return d.size}}})({itemCount:a,itemProps:b,itemSize:c}),[a,b,c])}({itemCount:n,itemProps:o,itemSize:E}),G=(0,d.useCallback)(a=>F.get(a),[F]),H=(0,d.useCallback)(()=>l({cachedBounds:F,itemCount:n,itemSize:E}),[F,n,E]),I=(0,d.useCallback)(b=>m({cachedBounds:F,containerScrollOffset:i({containerElement:a,direction:e,isRtl:h,scrollOffset:b}),containerSize:D,itemCount:n,overscanCount:r}),[F,a,D,e,h,n,r]);return f(()=>{v(I(("vertical"===e?a?.scrollTop:a?.scrollLeft)??0))},[a,e,I]),f(()=>{if(!a)return;let b=()=>{v(b=>{let{scrollLeft:c,scrollTop:d}=a,f=m({cachedBounds:F,containerScrollOffset:i({containerElement:a,direction:e,isRtl:h,scrollOffset:"vertical"===e?d:c}),containerSize:D,itemCount:n,overscanCount:r});return k(f,b)?b:f})};return a.addEventListener("scroll",b),()=>{a.removeEventListener("scroll",b)}},[F,a,D,e,n,r]),{getCellBounds:G,getEstimatedSize:H,scrollToIndex:(s=({align:b="auto",containerScrollOffset:c,index:d})=>{let f=function({align:a,cachedBounds:b,index:c,itemCount:d,itemSize:e,containerScrollOffset:f,containerSize:g}){if(c<0||c>=d)throw RangeError(`Invalid index specified: ${c}`,{cause:`Index ${c} is not within the range of 0 - ${d-1}`});let h=l({cachedBounds:b,itemCount:d,itemSize:e}),i=b.get(c),j=Math.max(0,Math.min(h-g,i.scrollOffset)),k=Math.max(0,i.scrollOffset-g+i.size);switch("smart"===a&&(a=f>=k&&f<=j?"auto":"center"),a){case"start":return j;case"end":return k;case"center":return i.scrollOffset<=g/2?0:i.scrollOffset+i.size/2>=h-g/2?h-g:i.scrollOffset+i.size/2-g/2;default:return f>=k&&f<=j?f:f<k?k:j}}({align:b,cachedBounds:F,containerScrollOffset:c,containerSize:D,index:d,itemCount:n,itemSize:E});if(a){if(f=i({containerElement:a,direction:e,isRtl:h,scrollOffset:f}),"function"!=typeof a.scrollTo){let a=I(f);k(u,a)||v(a)}return f}},t=(0,d.useRef)(()=>{throw Error("Cannot call during render.")}),f(()=>{t.current=s},[s]),(0,d.useCallback)(a=>t.current?.(a),[t])),startIndexOverscan:x,startIndexVisible:w,stopIndexOverscan:z,stopIndexVisible:y}}({containerElement:A,containerStyle:w,defaultContainerSize:e,direction:"vertical",itemCount:s,itemProps:y,itemSize:(0,d.useMemo)(()=>C?a=>t.getRowHeight(a)??t.getAverageRowHeight():t,[C,t]),onResize:o,overscanCount:q});(0,d.useImperativeHandle)(h,()=>({get element(){return A},scrollToRow({align:a="auto",behavior:b="auto",index:c}){let d=F({align:a,containerScrollOffset:A?.scrollTop??0,index:c});"function"==typeof A?.scrollTo&&A.scrollTo({behavior:b,top:d})}}),[A,F]),f(()=>{if(!A)return;let a=Array.from(A.children).filter((a,b)=>{if(a.hasAttribute("aria-hidden"))return!1;let c=`${G+b}`;return a.setAttribute("data-react-window-index",c),!0});if(C)return t.observeRowElements(a)},[A,C,t,G,I]),(0,d.useEffect)(()=>{G>=0&&I>=0&&p&&p({startIndex:H,stopIndex:J},{startIndex:G,stopIndex:I})},[p,G,H,I,J]);let K=(0,d.useMemo)(()=>{let a=[];if(s>0)for(let b=G;b<=I;b++){let c=D(b);a.push((0,d.createElement)(z,{...y,ariaAttributes:{"aria-posinset":b+1,"aria-setsize":s,role:"listitem"},key:b,index:b,style:{position:"absolute",left:0,transform:`translateY(${c.scrollOffset}px)`,height:C?void 0:c.size,width:"100%"}}))}return a},[z,D,C,s,y,G,I]),L=(0,c.jsx)("div",{"aria-hidden":!0,style:{height:E(),width:"100%",zIndex:-1}});return(0,d.createElement)(v,{role:"list",...x,className:b,ref:B,style:{position:"relative",maxHeight:"100%",flexGrow:1,overflowY:"auto",...w}},K,a,L)}d.useState,d.useRef,d.useState,d.useRef;var p=a.i(793090),q=a.i(629620),r=a.i(141270),s=a.i(914174),t=a.i(863535);let u=(0,t.default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]);var v=a.i(406334),w=a.i(227725),x=a.i(882479),y=a.i(96151),z=a.i(915929),A=a.i(687052),B=a.i(322570),C=a.i(890075);let D={specs:[],signature:null,scrollTop:0,activeSpecId:null},E=[],F=new Set,G=new Set,H=new Set;function I(){for(let a of F)a()}var J=a.i(523897);a.i(961579);var K=a.i(46812);let L=d.useEffect;function M({initialSpecs:a=[],currentSpecId:b,currentSubSpec:f,onSpecHover:g,className:h}){let i,j,{t:k}=(0,K.useTranslation)("common"),[l,m]=d.useState(""),[n,t]=d.useState("all"),[F,I]=d.useState("all"),[M,N]=d.useState("all"),[O,P]=d.useState(!1),[Q,R]=d.useState(()=>!1),[S,T]=d.useState(!1),[U,V]=d.useState(!1),W=d.useRef(null);d.useRef(null),d.useRef(!1);let X=d.useRef(null);d.useRef(0),d.useRef(!1),d.useRef(!0);let Y=(i=d.useCallback(a=>(G.add(a),()=>{G.delete(a)}),[]),(0,d.useSyncExternalStore)(i,()=>D.specs,()=>E)),Z=(j=d.useCallback(a=>(H.add(a),()=>{H.delete(a)}),[]),(0,d.useSyncExternalStore)(j,()=>D.activeSpecId,()=>null)),$=d.useMemo(()=>Y.length>0?Y:a,[Y,a]),_=b||Z||"";d.useEffect(()=>{V(!0)},[]),d.useEffect(()=>{document.documentElement.style.setProperty("--specs-nav-sidebar-width",Q?"0px":"280px"),localStorage.setItem("specs-nav-sidebar-collapsed",String(Q))},[Q]),d.useEffect(()=>{T(!1)},[_,f]);let aa=d.useMemo(()=>{let a=$;if(l){let b=l.toLowerCase();a=a.filter(a=>a.title?.toLowerCase().includes(b)||a.specName.toLowerCase().includes(b)||a.specNumber?.toString().includes(b))}return"all"!==n&&(a=a.filter(a=>a.status===n)),"all"!==F&&(a=a.filter(a=>a.priority===F)),"all"!==M&&(a=a.filter(a=>a.tags?.includes(M))),console.debug(a),a},[$,l,n,F,M]),ab=d.useMemo(()=>{let a=new Set;return $.forEach(b=>{b.tags?.forEach(b=>a.add(b))}),Array.from(a).sort()},[$]),ac="all"!==n||"all"!==F||"all"!==M,ad=d.useMemo(()=>[...aa].sort((a,b)=>(b.specNumber||0)-(a.specNumber||0)),[aa]);L(()=>{},[]),L(()=>{},[ad,_]),d.useEffect(()=>{},[]);let{getSpecUrl:ae}=(0,J.useProjectUrl)(),af=d.useCallback(a=>{let{index:b,style:d}=a,h=ad[b],i=h.id===_,j=h.title||h.specName,l=ae(h.specNumber||h.id);return(0,c.jsx)("div",{style:d,className:"px-1",children:(0,c.jsx)("div",{className:"mb-0.5",children:(0,c.jsx)("div",{className:"flex items-center gap-0.5",children:(0,c.jsxs)(y.Tooltip,{children:[(0,c.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,c.jsxs)(e.default,{ref:i&&!f?W:null,href:l,onMouseEnter:()=>g?.(h.specNumber?.toString()||h.id),className:(0,A.cn)("w-full flex flex-col gap-1 p-1.5 rounded-md text-sm transition-colors",i?"bg-accent text-accent-foreground font-medium":"hover:bg-accent/50"),children:[(0,c.jsxs)("div",{className:"flex items-center gap-1.5",children:[h.specNumber&&(0,c.jsxs)("span",{className:"text-xs font-mono text-muted-foreground shrink-0",children:["#",h.specNumber.toString().padStart(3,"0")]}),(0,c.jsx)("span",{className:"truncate text-xs leading-relaxed",children:j})]}),(0,c.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[h.status&&(0,c.jsxs)(y.Tooltip,{children:[(0,c.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,c.jsx)("div",{children:(0,c.jsx)(x.StatusBadge,{status:h.status,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,c.jsx)(y.TooltipContent,{side:"right",children:(0,x.getStatusLabel)(h.status)})]}),h.priority&&(0,c.jsxs)(y.Tooltip,{children:[(0,c.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,c.jsx)("div",{children:(0,c.jsx)(B.PriorityBadge,{priority:h.priority,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,c.jsx)(y.TooltipContent,{side:"right",children:(0,B.getPriorityLabel)(h.priority)})]}),"number"==typeof h.subSpecsCount&&h.subSpecsCount>0&&(0,c.jsx)("span",{className:"text-[10px] text-muted-foreground",children:k("specsNavSidebar.badges.subSpecs",{count:h.subSpecsCount})}),h.updatedAt&&(0,c.jsx)("span",{className:"text-[10px] text-muted-foreground",children:(0,C.formatRelativeTime)(h.updatedAt)})]})]})}),(0,c.jsx)(y.TooltipContent,{side:"right",className:"max-w-[300px]",children:(0,c.jsxs)("div",{className:"space-y-1",children:[(0,c.jsx)("div",{className:"font-semibold",children:j}),(0,c.jsx)("div",{className:"text-xs text-muted-foreground",children:h.specName})]})})]})})})})},[ad,_,f,g,ae,k]),ag=d.useMemo(()=>600,[]),ah=d.useMemo(()=>d.memo(o),[]);return(0,c.jsxs)(y.TooltipProvider,{delayDuration:700,children:[S&&(0,c.jsx)("div",{className:"fixed inset-0 bg-black/50 z-40 lg:hidden",onClick:()=>T(!1)}),(0,c.jsxs)("div",{className:(0,A.cn)("relative flex-shrink-0",h),children:[(0,c.jsxs)("aside",{className:(0,A.cn)("border-r border-border bg-background flex flex-col overflow-hidden transition-all duration-300","hidden lg:flex lg:sticky lg:top-14 lg:h-[calc(100vh-3.5rem)]",U&&Q?"lg:w-0 lg:border-r-0":"lg:w-[280px]",S&&"fixed inset-y-0 left-0 z-[60] flex w-[280px]"),children:[(0,c.jsxs)("div",{className:"p-4 border-b border-border",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,c.jsx)("h2",{className:"font-semibold text-sm",children:k("specsNavSidebar.title")}),(0,c.jsxs)("div",{className:"flex items-center gap-1",children:[(0,c.jsxs)(y.Tooltip,{children:[(0,c.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,c.jsx)(w.Button,{variant:O||ac?"default":"ghost",size:"sm",onClick:()=>P(!O),className:"h-6 w-6 p-0",children:(0,c.jsx)(u,{className:"h-4 w-4"})})}),(0,c.jsx)(y.TooltipContent,{side:"bottom",children:O?k("specsNavSidebar.toggleFilters.hide"):k("specsNavSidebar.toggleFilters.show")})]}),(0,c.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>T(!1),className:"h-6 w-6 p-0 lg:hidden",children:(0,c.jsx)(s.X,{className:"h-4 w-4"})}),(0,c.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>R(!0),className:"h-6 w-6 p-0 hidden lg:flex lg:items-center lg:justify-center",children:(0,c.jsx)(q.ChevronLeft,{className:"h-4 w-4"})})]})]}),O&&(0,c.jsxs)("div",{className:"space-y-2 mb-3 pb-3 border-b border-border",children:[(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:k("specsNavSidebar.filtersLabel")}),ac&&(0,c.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>{t("all"),I("all"),N("all")},className:"h-5 text-xs px-2 py-0",children:k("specsNavSidebar.clearFilters")})]}),(0,c.jsxs)(z.Select,{value:n,onValueChange:t,children:[(0,c.jsx)(z.SelectTrigger,{className:"h-8 text-xs",children:(0,c.jsx)(z.SelectValue,{placeholder:k("specsNavSidebar.select.status.label")})}),(0,c.jsxs)(z.SelectContent,{children:[(0,c.jsx)(z.SelectItem,{value:"all",children:k("specsNavSidebar.select.status.all")}),(0,c.jsx)(z.SelectItem,{value:"planned",children:k("status.planned")}),(0,c.jsx)(z.SelectItem,{value:"in-progress",children:k("status.inProgress")}),(0,c.jsx)(z.SelectItem,{value:"complete",children:k("status.complete")}),(0,c.jsx)(z.SelectItem,{value:"archived",children:k("status.archived")})]})]}),(0,c.jsxs)(z.Select,{value:F,onValueChange:I,children:[(0,c.jsx)(z.SelectTrigger,{className:"h-8 text-xs",children:(0,c.jsx)(z.SelectValue,{placeholder:k("specsNavSidebar.select.priority.label")})}),(0,c.jsxs)(z.SelectContent,{children:[(0,c.jsx)(z.SelectItem,{value:"all",children:k("specsNavSidebar.select.priority.all")}),(0,c.jsx)(z.SelectItem,{value:"low",children:k("priority.low")}),(0,c.jsx)(z.SelectItem,{value:"medium",children:k("priority.medium")}),(0,c.jsx)(z.SelectItem,{value:"high",children:k("priority.high")}),(0,c.jsx)(z.SelectItem,{value:"critical",children:k("priority.critical")})]})]}),ab.length>0&&(0,c.jsxs)(z.Select,{value:M,onValueChange:N,children:[(0,c.jsx)(z.SelectTrigger,{className:"h-8 text-xs",children:(0,c.jsx)(z.SelectValue,{placeholder:k("specsNavSidebar.select.tag.label")})}),(0,c.jsxs)(z.SelectContent,{children:[(0,c.jsx)(z.SelectItem,{value:"all",children:k("specsNavSidebar.select.tag.all")}),ab.map(a=>(0,c.jsx)(z.SelectItem,{value:a,children:a},a))]})]})]}),(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsx)(p.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,c.jsx)(v.Input,{placeholder:k("specsNavSidebar.searchPlaceholder"),value:l,onChange:a=>m(a.target.value),className:"pl-8 h-9 border-border"})]})]}),(0,c.jsx)("div",{className:"flex-1 overflow-hidden",children:0===ad.length?(0,c.jsx)("div",{className:"text-center py-8 text-sm text-muted-foreground",children:k("specsNavSidebar.noResults")}):(0,c.jsx)(ah,{listRef:X,defaultHeight:ag,rowCount:ad.length,rowHeight:72,overscanCount:5,rowComponent:af,rowProps:{}})})]}),U&&Q&&(0,c.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>R(!1),className:"hidden lg:items-center lg:justify-center lg:flex h-6 w-6 p-0 fixed z-50 top-20 -translate-y-1 -translate-x-1/2 left-[calc(var(--main-sidebar-width,240px))] bg-background border",children:(0,c.jsx)(r.ChevronRight,{className:"h-4 w-4"})})]})]})}var N=a.i(416119),O=a.i(836180);a.s(["ERROR_REVALIDATE_EVENT",()=>3,"FOCUS_EVENT",()=>0,"MUTATE_EVENT",()=>2,"RECONNECT_EVENT",()=>1],439164);var P=Object.prototype.hasOwnProperty;let Q=new WeakMap,R=()=>{},S=R(),T=Object,U=a=>a===S,V=(a,b)=>({...a,...b}),W={},X={},Y="undefined",Z=typeof document!=Y,$=!1,_=(a,b)=>{let c=Q.get(a);return[()=>!U(b)&&a.get(b)||W,d=>{if(!U(b)){let e=a.get(b);b in X||(X[b]=e),c[5](b,V(e,d),e||W)}},c[6],()=>!U(b)&&b in X?X[b]:!U(b)&&a.get(b)||W]},aa=!0,[ab,ac]=[R,R],ad={initFocus:a=>(Z&&document.addEventListener("visibilitychange",a),ab("focus",a),()=>{Z&&document.removeEventListener("visibilitychange",a),ac("focus",a)}),initReconnect:a=>{let b=()=>{aa=!0,a()},c=()=>{aa=!1};return ab("online",b),ab("offline",c),()=>{ac("online",b),ac("offline",c)}}},ae=!d.default.useId,af=!0,ag=d.useEffect,ah="undefined"!=typeof navigator&&navigator.connection;!af&&ah&&(["slow-2g","2g"].includes(ah.effectiveType)||ah.saveData);let ai=new WeakMap,aj=(a,b)=>a===`[object ${b}]`,ak=0,al=a=>{let b,c,d=typeof a,e=T.prototype.toString.call(a),f=aj(e,"Date"),g=aj(e,"RegExp"),h=aj(e,"Object");if(T(a)!==a||f||g)b=f?a.toJSON():"symbol"==d?a.toString():"string"==d?JSON.stringify(a):""+a;else{if(b=ai.get(a))return b;if(b=++ak+"~",ai.set(a,b),Array.isArray(a)){for(c=0,b="@";c<a.length;c++)b+=al(a[c])+",";ai.set(a,b)}if(h){b="#";let d=T.keys(a).sort();for(;!U(c=d.pop());)U(a[c])||(b+=c+":"+al(a[c])+",");ai.set(a,b)}}return b},am=a=>{if("function"==typeof a)try{a=a()}catch(b){a=""}let b=a;return[a="string"==typeof a?a:(Array.isArray(a)?a.length:a)?al(a):"",b]},an=0,ao=()=>++an;async function ap(...a){let[b,c,d,e]=a,f=V({populateCache:!0,throwOnError:!0},"boolean"==typeof e?{revalidate:e}:e||{}),g=f.populateCache,h=f.rollbackOnError,i=f.optimisticData,j=f.throwOnError;if("function"==typeof c){let a=[];for(let d of b.keys())!/^\$(inf|sub)\$/.test(d)&&c(b.get(d)._k)&&a.push(d);return Promise.all(a.map(k))}return k(c);async function k(c){let e,[k]=am(c);if(!k)return;let[l,m]=_(b,k),[n,o,p,q]=Q.get(b),r=()=>{let a=n[k];return("function"==typeof f.revalidate?f.revalidate(l().data,c):!1!==f.revalidate)&&(delete p[k],delete q[k],a&&a[0])?a[0](2).then(()=>l().data):l().data};if(a.length<3)return r();let s=d,t=!1,u=ao();o[k]=[u,0];let v=!U(i),w=l(),x=w.data,y=w._c,z=U(y)?x:y;if(v&&m({data:i="function"==typeof i?i(z,x):i,_c:z}),"function"==typeof s)try{s=s(z)}catch(a){e=a,t=!0}if(s&&"function"==typeof s.then){let a;if(s=await s.catch(a=>{e=a,t=!0}),u!==o[k][0]){if(t)throw e;return s}t&&v&&(a=e,"function"==typeof h?h(a):!1!==h)&&(g=!0,m({data:z,_c:S}))}if(g&&!t&&("function"==typeof g?m({data:g(s,z),error:S,_c:S}):m({data:s,error:S,_c:S})),o[k][1]=ao(),Promise.resolve(r()).then(()=>{m({_c:S})}),t){if(j)throw e;return}return s}}let aq=(a,b)=>{if(!Q.has(a)){V(ad,b);let c=Object.create(null),d=ap.bind(S,a),e=Object.create(null),f=(a,b)=>{let c=e[a]||[];return e[a]=c,c.push(b),()=>c.splice(c.indexOf(b),1)},g=(b,c,d)=>{a.set(b,c);let f=e[b];if(f)for(let a of f)a(c,d)},h=()=>{Q.has(a)||Q.set(a,[c,Object.create(null),Object.create(null),Object.create(null),d,g,f])};return h(),[a,d,h,R]}return[a,Q.get(a)[4]]},[ar,as]=aq(new Map),at=V({onLoadingSlow:R,onSuccess:R,onError:R,onErrorRetry:(a,b,c,d,e)=>{let f=c.errorRetryCount,g=e.retryCount,h=~~((Math.random()+.5)*(1<<(g<8?g:8)))*c.errorRetryInterval;(U(f)||!(g>f))&&setTimeout(d,h,e)},onDiscarded:R,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:5e3,focusThrottleInterval:5e3,dedupingInterval:2e3,loadingTimeout:3e3,compare:function a(b,c){var d,e;if(b===c)return!0;if(b&&c&&(d=b.constructor)===c.constructor){if(d===Date)return b.getTime()===c.getTime();if(d===RegExp)return b.toString()===c.toString();if(d===Array){if((e=b.length)===c.length)for(;e--&&a(b[e],c[e]););return -1===e}if(!d||"object"==typeof b){for(d in e=0,b)if(P.call(b,d)&&++e&&!P.call(c,d)||!(d in c)||!a(b[d],c[d]))return!1;return Object.keys(c).length===e}}return b!=b&&c!=c},isPaused:()=>!1,cache:ar,mutate:as,fallback:{}},{isOnline:()=>aa,isVisible:()=>{let a=Z&&document.visibilityState;return U(a)||"hidden"!==a}}),au=(a,b)=>{let c=V(a,b);if(b){let{use:d,fallback:e}=a,{use:f,fallback:g}=b;d&&f&&(c.use=d.concat(f)),e&&g&&(c.fallback=V(e,g))}return c},av=(0,d.createContext)({});var aw=a.i(439164);let ax=!1,ay=(ax?window.__SWR_DEVTOOLS_USE__:[]).concat(a=>(b,c,d)=>{let e=c&&((...a)=>{let[d]=am(b),[,,,e]=Q.get(ar);if(d.startsWith("$inf$"))return c(...a);let f=e[d];return U(f)?c(...a):(delete e[d],f)});return a(b,e,d)});ax&&(window.__SWR_DEVTOOLS_REACT__=d.default);let az=()=>{},aA=az(),aB=(new WeakMap,d.default.use||(a=>{switch(a.status){case"pending":throw a;case"fulfilled":return a.value;case"rejected":throw a.reason;default:throw a.status="pending",a.then(b=>{a.status="fulfilled",a.value=b},b=>{a.status="rejected",a.reason=b}),a}})),aC={dedupe:!0},aD=Promise.resolve(S);T.defineProperty(a=>{let{value:b}=a,c=(0,d.useContext)(av),e="function"==typeof b,f=(0,d.useMemo)(()=>e?b(c):b,[e,c,b]),g=(0,d.useMemo)(()=>e?f:au(c,f),[e,c,f]),h=f&&f.provider,i=(0,d.useRef)(S);h&&!i.current&&(i.current=aq(h(g.cache||ar),f));let j=i.current;return j&&(g.cache=j[0],g.mutate=j[1]),ag(()=>{if(j)return j[2]&&j[2](),j[3]},[]),(0,d.createElement)(av.Provider,V(a,{value:g}))},"defaultValue",{value:at});let aE=(b=(a,b,c)=>{let{cache:e,compare:f,suspense:g,fallbackData:h,revalidateOnMount:i,revalidateIfStale:j,refreshInterval:k,refreshWhenHidden:l,refreshWhenOffline:m,keepPreviousData:n,strictServerPrefetchWarning:o}=c,[p,q,r,s]=Q.get(e),[t,u]=am(a),v=(0,d.useRef)(!1),w=(0,d.useRef)(!1),x=(0,d.useRef)(t),y=(0,d.useRef)(b),z=(0,d.useRef)(c),A=()=>z.current.isVisible()&&z.current.isOnline(),[B,C,D,E]=_(e,t),F=(0,d.useRef)({}).current,G=U(h)?U(c.fallback)?S:c.fallback[t]:h,H=(a,b)=>{for(let c in F)if("data"===c){if(!f(a[c],b[c])&&(!U(a[c])||!f(W,b[c])))return!1}else if(b[c]!==a[c])return!1;return!0},I=(0,d.useMemo)(()=>{let a=!!t&&!!b&&(U(i)?!z.current.isPaused()&&!g&&!1!==j:i),c=b=>{let c=V(b);return(delete c._k,a)?{isValidating:!0,isLoading:!0,...c}:c},d=B(),e=E(),f=c(d),h=d===e?f:c(e),k=f;return[()=>{let a=c(B());return H(a,k)?(k.data=a.data,k.isLoading=a.isLoading,k.isValidating=a.isValidating,k.error=a.error,k):(k=a,a)},()=>h]},[e,t]),J=(0,O.useSyncExternalStore)((0,d.useCallback)(a=>D(t,(b,c)=>{H(c,b)||a()}),[e,t]),I[0],I[1]),K=!v.current,L=p[t]&&p[t].length>0,M=J.data,N=U(M)?G&&"function"==typeof G.then?aB(G):G:M,P=J.error,T=(0,d.useRef)(N),W=n?U(M)?U(T.current)?N:T.current:M:N,X=t&&U(N),Y=!af&&(0,O.useSyncExternalStore)(()=>R,()=>!1,()=>!0);o&&Y&&!g&&X&&console.warn(`Missing pre-initiated data for serialized key "${t}" during server-side rendering. Data fethcing should be initiated on the server and provided to SWR via fallback data. You can set "strictServerPrefetchWarning: false" to disable this warning.`);let Z=(!L||!!U(P))&&(K&&!U(i)?i:!z.current.isPaused()&&(g?!U(N)&&j:U(N)||j)),$=!!(t&&b&&K&&Z),aa=U(J.isValidating)?$:J.isValidating,ab=U(J.isLoading)?$:J.isLoading,ac=(0,d.useCallback)(async a=>{let b,d,e=y.current;if(!t||!e||w.current||z.current.isPaused())return!1;let g=!0,h=a||{},i=!r[t]||!h.dedupe,j=()=>ae?!w.current&&t===x.current&&v.current:t===x.current,k={isValidating:!1,isLoading:!1},l=()=>{C(k)},m=()=>{let a=r[t];a&&a[1]===d&&delete r[t]},n={isValidating:!0};U(B().data)&&(n.isLoading=!0);try{if(i&&(C(n),c.loadingTimeout&&U(B().data)&&setTimeout(()=>{g&&j()&&z.current.onLoadingSlow(t,c)},c.loadingTimeout),r[t]=[e(u),ao()]),[b,d]=r[t],b=await b,i&&setTimeout(m,c.dedupingInterval),!r[t]||r[t][1]!==d)return i&&j()&&z.current.onDiscarded(t),!1;k.error=S;let a=q[t];if(!U(a)&&(d<=a[0]||d<=a[1]||0===a[1]))return l(),i&&j()&&z.current.onDiscarded(t),!1;let h=B().data;k.data=f(h,b)?h:b,i&&j()&&z.current.onSuccess(b,t,c)}catch(c){m();let a=z.current,{shouldRetryOnError:b}=a;!a.isPaused()&&(k.error=c,i&&j())&&(a.onError(c,t,a),(!0===b||"function"==typeof b&&b(c))&&(!z.current.revalidateOnFocus||!z.current.revalidateOnReconnect||A())&&a.onErrorRetry(c,t,a,a=>{let b=p[t];b&&b[0]&&b[0](aw.ERROR_REVALIDATE_EVENT,a)},{retryCount:(h.retryCount||0)+1,dedupe:!0}))}return g=!1,l(),!0},[t,e]),ad=(0,d.useCallback)((...a)=>ap(e,x.current,...a),[]);if(ag(()=>{y.current=b,z.current=c,U(M)||(T.current=M)}),ag(()=>{var a;let b;if(!t)return;let c=ac.bind(S,aC),d=0;z.current.revalidateOnFocus&&(d=Date.now()+z.current.focusThrottleInterval);let e=(a=(a,b={})=>{if(a==aw.FOCUS_EVENT){let a=Date.now();z.current.revalidateOnFocus&&a>d&&A()&&(d=a+z.current.focusThrottleInterval,c())}else if(a==aw.RECONNECT_EVENT)z.current.revalidateOnReconnect&&A()&&c();else if(a==aw.MUTATE_EVENT)return ac();else if(a==aw.ERROR_REVALIDATE_EVENT)return ac(b)},(b=p[t]||(p[t]=[])).push(a),()=>{let c=b.indexOf(a);c>=0&&(b[c]=b[b.length-1],b.pop())});if(w.current=!1,x.current=t,v.current=!0,C({_k:u}),Z&&!r[t])if(U(N)||af)c();else setTimeout(c,1);return()=>{w.current=!0,e()}},[t]),ag(()=>{let a;function b(){let b="function"==typeof k?k(B().data):k;b&&-1!==a&&(a=setTimeout(c,b))}function c(){!B().error&&(l||z.current.isVisible())&&(m||z.current.isOnline())?ac(aC).then(b):b()}return b(),()=>{a&&(clearTimeout(a),a=-1)}},[k,l,m,t]),(0,d.useDebugValue)(W),g){if(!ae&&af&&X)throw Error("Fallback data is required when using Suspense in SSR.");X&&(y.current=b,z.current=c,w.current=!1);let a=s[t];if(aB(!U(a)&&X?ad(a):aD),!U(P)&&X)throw P;let d=X?ac(aC):aD;!U(W)&&X&&(d.status="fulfilled",d.value=!0),aB(d)}return{mutate:ad,get data(){return F.data=!0,W},get error(){return F.error=!0,P},get isValidating(){return F.isValidating=!0,aa},get isLoading(){return F.isLoading=!0,ab}}},function(...a){let c,e=(c=(0,d.useContext)(av),(0,d.useMemo)(()=>V(at,c),[c])),[f,g,h]="function"==typeof a[1]?[a[0],a[1],a[2]||{}]:[a[0],null,(null===a[1]?a[2]:a[1])||{}],i=au(e,h),j=b,{use:k}=i,l=(k||[]).concat(ay);for(let a=l.length;a--;)j=l[a](j);return j(f,g||i.fetcher||null,i)});var aF=a.i(82951),aG=a.i(316828),aH=a.i(312750),aI=a.i(524172),aJ=a.i(297557),aK=a.i(659358),aL=a.i(800966),aM=a.i(262936),aN=a.i(532418);function aO({createdAt:a,updatedAt:b,completedAt:d,status:e,className:f}){let{t:g,i18n:h}=(0,K.useTranslation)("common"),i=[];return(a&&i.push({label:g("specTimeline.events.created"),date:a,isActive:!0,isFuture:!1,icon:aJ.Clock,color:"text-blue-600"}),"in-progress"===e||"complete"===e||"archived"===e?i.push({label:g("specTimeline.events.inProgress"),date:b||a,isActive:!0,isFuture:!1,icon:aK.PlayCircle,color:"text-orange-600"}):i.push({label:g("specTimeline.events.inProgress"),date:null,isActive:!1,isFuture:!0,icon:aN.Circle,color:"text-muted-foreground"}),"complete"===e||"archived"===e?i.push({label:g("specTimeline.events.complete"),date:d||b,isActive:!0,isFuture:!1,icon:aL.CheckCircle2,color:"text-green-600"}):i.push({label:g("specTimeline.events.complete"),date:null,isActive:!1,isFuture:!0,icon:aN.Circle,color:"text-muted-foreground"}),"archived"===e&&i.push({label:g("specTimeline.events.archived"),date:b,isActive:!0,isFuture:!1,icon:aM.Archive,color:"text-gray-600"}),0===i.length)?null:(0,c.jsx)("div",{className:(0,A.cn)("flex items-start gap-2",f),children:i.map((a,b)=>{let d=a.icon,e=b===i.length-1,f=e?null:i[b+1],j=a.date&&f?.date&&!f.isFuture?(0,C.formatDuration)(a.date,f.date,h.language):"";return(0,c.jsxs)("div",{className:"flex items-center gap-2 flex-1",children:[(0,c.jsxs)("div",{className:"flex flex-col items-center gap-1 min-w-0",children:[(0,c.jsx)("div",{className:(0,A.cn)("w-8 h-8 rounded-full border-2 bg-background flex items-center justify-center shrink-0",a.isActive&&!a.isFuture?"border-primary":"border-muted-foreground/40"),children:d&&(0,c.jsx)(d,{className:(0,A.cn)("h-4 w-4",a.isActive&&!a.isFuture?"text-primary":"text-muted-foreground/60")})}),(0,c.jsx)("div",{className:(0,A.cn)("text-xs font-medium text-center whitespace-nowrap",a.isActive&&!a.isFuture?"text-foreground":"text-muted-foreground"),children:a.label}),(0,c.jsxs)("div",{className:"text-[10px] text-center min-h-[14px]",children:[a.date&&!a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground",children:(0,C.formatRelativeTime)(a.date,h.language)}),!a.date&&a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/70",children:g("specTimeline.state.awaiting")}),a.date&&a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/70",children:g("specTimeline.state.queued")}),!a.date&&!a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/60",children:g("specTimeline.state.pending")})]})]}),!e&&(0,c.jsxs)("div",{className:"flex flex-col items-center flex-1 min-w-4 gap-0.5",children:[(0,c.jsx)("div",{className:(0,A.cn)("h-0.5 w-full",a.isActive&&!a.isFuture?"bg-primary":"bg-muted-foreground/40")}),j&&(0,c.jsx)("div",{className:"text-[10px] text-muted-foreground font-medium whitespace-nowrap",children:j})]})]},b)})})}var aP=a.i(247338);a.i(294783);var aQ=a.i(156916);let aR=["planned","in-progress","complete","archived"],aS={planned:{icon:aJ.Clock,labelKey:"status.planned",className:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},"in-progress":{icon:aK.PlayCircle,labelKey:"status.inProgress",className:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400"},complete:{icon:aL.CheckCircle2,labelKey:"status.complete",className:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},archived:{icon:aM.Archive,labelKey:"status.archived",className:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"}};function aT({specId:a,currentStatus:b,onUpdate:e,disabled:f=!1,projectId:g}){let[h,i]=d.useState(b||"planned"),[j,k]=d.useState(!1),[l,m]=d.useState(null),{t:n}=(0,K.useTranslation)("common"),o=async b=>{if(b!==h){i(b),k(!0),m(null);try{let c=`/api/projects/${g}/specs/${a}/metadata`,d=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:b})});if(!d.ok){let a=await d.json();throw Error(a.error||"Failed to update status")}e?.(b),aQ.toast.success(n("editors.statusSuccess"))}catch(b){i(h);let a=b instanceof Error?b.message:"Failed to update";m(a),aQ.toast.error(n("editors.statusError"),{description:a}),console.error("Status update failed:",b)}finally{k(!1)}}},p=aS[h]||aS.planned,q=p.icon,r=n(p.labelKey);return(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsxs)(z.Select,{value:h,onValueChange:a=>o(a),disabled:f||j,children:[(0,c.jsx)(z.SelectTrigger,{className:(0,A.cn)("h-7 w-fit min-w-[120px] border-0 px-2 text-xs font-medium",p.className,j&&"opacity-70"),"aria-label":n("editors.changeStatus"),children:(0,c.jsxs)("div",{className:"flex items-center gap-1.5",children:[j?(0,c.jsx)(aP.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,c.jsx)(q,{className:"h-3.5 w-3.5"}),(0,c.jsx)(z.SelectValue,{children:r})]})}),(0,c.jsx)(z.SelectContent,{children:aR.map(a=>{let b=aS[a],d=b.icon;return(0,c.jsx)(z.SelectItem,{value:a,className:"pl-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(d,{className:"h-4 w-4"}),(0,c.jsx)("span",{children:n(b.labelKey)})]})},a)})})]}),l&&(0,c.jsx)("div",{className:"absolute top-full left-0 mt-1 text-xs text-destructive",children:l})]})}var aU=a.i(853206),aV=a.i(283695),aW=a.i(792804),aX=a.i(845566);let aY=["low","medium","high","critical"],aZ={critical:{icon:aU.AlertCircle,labelKey:"priority.critical",className:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},high:{icon:aV.ArrowUp,labelKey:"priority.high",className:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400"},medium:{icon:aW.Minus,labelKey:"priority.medium",className:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},low:{icon:aX.ArrowDown,labelKey:"priority.low",className:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"}};function a$({specId:a,currentPriority:b,onUpdate:e,disabled:f=!1,projectId:g}){let[h,i]=d.useState(b||"medium"),[j,k]=d.useState(!1),[l,m]=d.useState(null),{t:n}=(0,K.useTranslation)("common"),o=async b=>{if(b!==h){i(b),k(!0),m(null);try{let c=`/api/projects/${g}/specs/${a}/metadata`,d=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({priority:b})});if(!d.ok){let a=await d.json();throw Error(a.error||"Failed to update priority")}e?.(b),aQ.toast.success(n("editors.prioritySuccess"))}catch(b){i(h);let a=b instanceof Error?b.message:n("editors.priorityError");m(a),aQ.toast.error(n("editors.priorityError"),{description:a}),console.error("Priority update failed:",b)}finally{k(!1)}}},p=aZ[h]||aZ.medium,q=p.icon,r=n(p.labelKey);return(0,c.jsxs)("div",{className:"relative",children:[(0,c.jsxs)(z.Select,{value:h,onValueChange:a=>o(a),disabled:f||j,children:[(0,c.jsx)(z.SelectTrigger,{className:(0,A.cn)("h-7 w-fit min-w-[100px] border-0 px-2 text-xs font-medium",p.className,j&&"opacity-70"),"aria-label":n("editors.changePriority"),children:(0,c.jsxs)("div",{className:"flex items-center gap-1.5",children:[j?(0,c.jsx)(aP.Loader2,{className:"h-3.5 w-3.5 animate-spin"}):(0,c.jsx)(q,{className:"h-3.5 w-3.5"}),(0,c.jsx)(z.SelectValue,{children:r})]})}),(0,c.jsx)(z.SelectContent,{children:aY.map(a=>{let b=aZ[a],d=b.icon;return(0,c.jsx)(z.SelectItem,{value:a,className:"pl-2",children:(0,c.jsxs)("div",{className:"flex items-center gap-2",children:[(0,c.jsx)(d,{className:"h-4 w-4"}),(0,c.jsx)("span",{children:n(b.labelKey)})]})},a)})})]}),l&&(0,c.jsx)("div",{className:"absolute top-full left-0 mt-1 text-xs text-destructive",children:l})]})}var a_=a.i(479220),a0=a.i(837717),a1=a.i(285232),a2=a.i(964952);function a3({specId:a,currentTags:b,onUpdate:e,disabled:f=!1,projectId:g}){let[h,i]=d.useState(b||[]),[j,k]=d.useState([]),[l,m]=d.useState(!1),[n,o]=d.useState(null),[p,q]=d.useState(!1),[r,t]=d.useState(""),{t:u}=(0,K.useTranslation)("common");d.useEffect(()=>{p&&0===j.length&&(async()=>{try{let a=`/api/projects/${g}/tags`,b=await fetch(a);if(b.ok){let a=await b.json();k(a.tags||[])}}catch(a){console.error("Failed to fetch tags:",a)}})()},[p,j.length,g]);let v=async b=>{i(b),m(!0),o(null);try{let c=`/api/projects/${g}/specs/${a}/metadata`,d=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:b})});if(!d.ok){let a=await d.json();throw Error(a.error||"Failed to update tags")}e?.(b),aQ.toast.success(u("editors.tagsSuccess"))}catch(b){i(h);let a=b instanceof Error?b.message:u("editors.tagsError");o(a),aQ.toast.error(u("editors.tagsError"),{description:a}),console.error("Tags update failed:",b)}finally{m(!1)}},x=a=>{let b=a.trim().toLowerCase();b&&(h.includes(b)?o(u("editors.tagExists")):(v([...h,b]),t(""),q(!1)))},y=d.useMemo(()=>{let a=r.toLowerCase();return j.filter(a=>!h.includes(a)).filter(b=>!a||b.toLowerCase().includes(a))},[j,h,r]),z=r.trim()&&!h.includes(r.trim().toLowerCase())&&!j.includes(r.trim().toLowerCase());return(0,c.jsx)("div",{className:"relative",children:(0,c.jsxs)("div",{className:"flex gap-1 flex-wrap items-center",children:[h.map(a=>(0,c.jsxs)(a0.Badge,{variant:"outline",className:(0,A.cn)("text-xs pr-1 gap-1",f&&"opacity-50"),children:[a,!f&&(0,c.jsx)("button",{onClick:()=>{v(h.filter(b=>b!==a))},disabled:l,className:"ml-1 rounded-full hover:bg-muted p-0.5 transition-colors","aria-label":u("editors.removeTag",{tag:a}),children:(0,c.jsx)(s.X,{className:"h-3 w-3"})})]},a)),!f&&(0,c.jsxs)(a1.Popover,{open:p,onOpenChange:q,children:[(0,c.jsx)(a1.PopoverTrigger,{asChild:!0,children:(0,c.jsx)(w.Button,{variant:"outline",size:"sm",className:"h-6 px-2 text-xs",disabled:l,"aria-label":u("editors.addTag"),children:l?(0,c.jsx)(aP.Loader2,{className:"h-3 w-3 animate-spin"}):(0,c.jsx)(a_.Plus,{className:"h-3 w-3"})})}),(0,c.jsxs)(a1.PopoverContent,{className:"w-56 p-0",align:"start",children:[(0,c.jsxs)(a2.Command,{children:[(0,c.jsx)(a2.CommandInput,{placeholder:u("editors.searchTag"),value:r,onValueChange:t}),(0,c.jsxs)(a2.CommandList,{children:[(0,c.jsx)(a2.CommandEmpty,{children:z?(0,c.jsxs)(a2.CommandItem,{onSelect:()=>x(r),className:"cursor-pointer",children:[(0,c.jsx)(a_.Plus,{className:"mr-2 h-4 w-4"}),u("editors.createTag",{tag:r.trim().toLowerCase()})]}):(0,c.jsx)("span",{className:"text-muted-foreground px-2 py-1.5 text-sm",children:u("editors.noTagResults")})}),y.length>0&&(0,c.jsx)(a2.CommandGroup,{heading:u("editors.existingTags"),children:y.slice(0,10).map(a=>(0,c.jsx)(a2.CommandItem,{value:a,onSelect:()=>x(a),className:"cursor-pointer",children:a},a))}),z&&y.length>0&&(0,c.jsx)(a2.CommandGroup,{heading:u("editors.createSection"),children:(0,c.jsxs)(a2.CommandItem,{onSelect:()=>x(r),className:"cursor-pointer",children:[(0,c.jsx)(a_.Plus,{className:"mr-2 h-4 w-4"}),u("editors.createTag",{tag:r.trim().toLowerCase()})]})})]})]}),n&&(0,c.jsx)("p",{className:"text-xs text-destructive px-2 pb-2",children:n})]})]})]})})}function a4({children:a,fallback:b=null}){let[e,f]=d.useState(!1);return(d.useEffect(()=>{f(!0)},[]),e)?(0,c.jsx)(c.Fragment,{children:a}):(0,c.jsx)(c.Fragment,{children:b})}function a5({href:a,children:b,currentSpecNumber:d,projectId:f,...g}){if(!a)return(0,c.jsx)("a",{...g,children:b});let h=function(a,b,c){if(a.startsWith("#")||a.startsWith("http://")||a.startsWith("https://"))return a;let d=(a,b)=>{let d=c?`/projects/${c}/specs/${a}`:`/specs/${a}`;return b?`${d}?subspec=${b}`:d},e=a.match(/^\.\/([^/]+\.md)$/);if(e&&b){let a=e[1];return"README.md"!==a?d(b,a):d(b)}let f=a.match(/^\.\.\/(\d+)-[^/]+\/?([^/]+\.md)?$/);if(f){let a=parseInt(f[1],10),b=f[2];return b&&"README.md"!==b?d(a,b):d(a)}return a}(a,d,f),i=h.startsWith("http://")||h.startsWith("https://"),j=h.startsWith("#");return i||j?(0,c.jsx)("a",{href:h,...g,target:i?"_blank":void 0,rel:i?"noopener noreferrer":void 0,children:b}):(0,c.jsx)(e.default,{href:h,...g,className:"text-primary hover:underline",children:b})}var a6=a.i(87140),a7=a.i(731751),a8=a.i(183214),a9=a.i(731905),ba=a.i(520750),bb=a.i(274556),bc=a.i(755266);let bd="#64748b",be={planned:aJ.Clock,"in-progress":aK.PlayCircle,complete:aL.CheckCircle2,archived:aM.Archive},bf={critical:aU.AlertCircle,high:aV.ArrowUp,medium:aW.Minus,low:aX.ArrowDown},bg={planned:"border-blue-400/70 bg-blue-400/10 text-blue-900 dark:text-blue-200","in-progress":"border-orange-400/70 bg-orange-400/10 text-orange-900 dark:text-orange-200",complete:"border-green-400/70 bg-green-400/10 text-green-900 dark:text-green-200",archived:"border-gray-400/70 bg-gray-400/10 text-gray-600 dark:text-gray-300"},bh={rankdir:"LR",align:"UL",nodesep:60,ranksep:120,marginx:40,marginy:40},bi=d.memo(function({data:a}){let b=a.status?be[a.status]||aJ.Clock:null,d=a.priority?bf[a.priority]||aW.Minus:null,{t:e}=(0,K.useTranslation)("common"),f=bg[a.status||a.tone]||bg.planned,g="current"===a.tone?"ring-2 ring-primary/40 shadow-lg":"";return(0,c.jsxs)("div",{className:(0,A.cn)("flex w-[280px] flex-col gap-1.5 rounded-xl border-2 px-5 py-4 text-base shadow-md transition-colors",f,g,a.interactive&&"cursor-pointer hover:border-primary/70 hover:shadow-lg"),children:[(0,c.jsx)(bc.Handle,{type:"target",position:bc.Position.Left,className:"opacity-0"}),(0,c.jsxs)("div",{className:"flex items-center justify-between",children:[(0,c.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/70",children:a.badge}),(b||d)&&(0,c.jsxs)("div",{className:"flex items-center gap-1",children:[b&&(0,c.jsx)("div",{className:(0,A.cn)("rounded p-1 flex items-center justify-center","planned"===a.status&&"bg-blue-500/20","in-progress"===a.status&&"bg-orange-500/20","complete"===a.status&&"bg-green-500/20","archived"===a.status&&"bg-gray-500/20"),title:a.status?e(`status.${a.status}`):void 0,children:(0,c.jsx)(b,{className:(0,A.cn)("h-3 w-3","planned"===a.status&&"text-blue-600 dark:text-blue-400","in-progress"===a.status&&"text-orange-600 dark:text-orange-400","complete"===a.status&&"text-green-600 dark:text-green-400","archived"===a.status&&"text-gray-500 dark:text-gray-400")})}),d&&(0,c.jsx)("div",{className:(0,A.cn)("rounded p-1 flex items-center justify-center","critical"===a.priority&&"bg-red-500/20","high"===a.priority&&"bg-orange-500/20","medium"===a.priority&&"bg-blue-500/20","low"===a.priority&&"bg-gray-500/20"),title:a.priority?e(`priority.${a.priority}`):void 0,children:(0,c.jsx)(d,{className:(0,A.cn)("h-3 w-3","critical"===a.priority&&"text-red-600 dark:text-red-400","high"===a.priority&&"text-orange-600 dark:text-orange-400","medium"===a.priority&&"text-blue-600 dark:text-blue-400","low"===a.priority&&"text-gray-500 dark:text-gray-400")})})]})]}),(0,c.jsx)("span",{className:"text-base font-semibold leading-snug",children:a.label}),a.subtitle&&(0,c.jsx)("span",{className:"text-sm text-muted-foreground/80",children:a.subtitle}),(0,c.jsx)(bc.Handle,{type:"source",position:bc.Position.Right,className:"opacity-0"})]})});bi.displayName="SpecNode";let bj={specNode:bi};function bk(a){if(a.specNumber){let b=a.specNumber.toString().padStart(3,"0"),c=a.title||a.specName.replace(/[-_]/g," ").trim();return`#${b} ${c}`}return a.title||a.specName}function bl(a,b){let c=a.specNumber||a.specName.match(/^(\d+)/)?.[1];return b?`/projects/${b}/specs/${c}`:`/specs/${c}`}function bm(a,b,c){return`${a}-${c}-${b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||c}`}function bn({relationships:a,specNumber:b,specTitle:e,projectId:f}){let g=(0,N.useRouter)(),[h,i]=d.useState(null),{t:j,i18n:k}=(0,K.useTranslation)("common"),l=d.useMemo(()=>{var c;let d,g,h,i;return c={currentBadge:j("dependencyGraph.badges.current"),currentSubtitle:j("dependencyGraph.badges.currentSubtitle"),dependsOnBadge:j("dependencyGraph.badges.dependsOn"),dependsOnSubtitle:j("dependencyGraph.badges.dependsOnSubtitle"),requiredByBadge:j("dependencyGraph.badges.requiredBy"),requiredBySubtitle:j("dependencyGraph.badges.requiredBySubtitle")},d=[],g=[],h={id:"current-spec",type:"specNode",data:{label:b?`#${b.toString().padStart(3,"0")} ${e}`:e,badge:c.currentBadge,subtitle:c.currentSubtitle,tone:"current",status:a.current.status,priority:a.current.priority,interactive:!1,isCurrent:!0},position:{x:0,y:0},draggable:!1,selectable:!1,sourcePosition:bc.Position.Right,targetPosition:bc.Position.Left},d.push(h),a.dependsOn?.forEach((a,b)=>{let e=bm("precedence",a.specName,b),i=c.dependsOnSubtitle;"complete"===a.status?i="Completed":"in-progress"===a.status?i="In progress":"planned"===a.status?i="Must complete first":"archived"===a.status&&(i="Archived"),d.push({id:e,type:"specNode",data:{label:bk(a),badge:c.dependsOnBadge,subtitle:i,tone:"precedence",status:a.status,priority:a.priority,href:bl(a,f),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:bc.Position.Right,targetPosition:bc.Position.Left}),g.push({id:`edge-${e}-current`,source:e,target:h.id,type:"smoothstep",markerEnd:{type:bc.MarkerType.ArrowClosed,color:bd,width:28,height:28},style:{stroke:bd,strokeWidth:3}})}),a.requiredBy?.forEach((b,e)=>{let i=bm("required-by",b.specName,e),j=c.requiredBySubtitle,k="complete"===a.current.status||"archived"===a.current.status;"complete"===b.status?j="Completed":"in-progress"===b.status?j="In progress":"planned"===b.status?j=k?"Can proceed":"Blocked by this spec":"archived"===b.status&&(j="Archived"),d.push({id:i,type:"specNode",data:{label:bk(b),badge:c.requiredByBadge,subtitle:j,tone:"required-by",status:b.status,priority:b.priority,href:bl(b,f),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:bc.Position.Right,targetPosition:bc.Position.Left}),g.push({id:`edge-current-${i}`,source:h.id,target:i,type:"smoothstep",markerEnd:{type:bc.MarkerType.ArrowClosed,color:bd,width:28,height:28},style:{stroke:bd,strokeWidth:3}})}),(i=new a8.default.graphlib.Graph).setGraph(bh),i.setDefaultEdgeLabel(()=>({})),d.forEach(a=>{i.setNode(a.id,{width:280,height:110})}),g.forEach(a=>{i.setEdge(a.source,a.target)}),a8.default.layout(i),{nodes:d.map(a=>{let{x:b,y:c}=i.node(a.id);return{...a,position:{x:b-140,y:c-55}}}),edges:g}},[a,b,e,f,j,k.language]),m=d.useCallback(a=>{i(a),requestAnimationFrame(()=>{a.fitView({padding:.4,duration:350})})},[]);d.useEffect(()=>{h&&h.fitView({padding:.4,duration:350})},[h,l.nodes]);let n=d.useCallback((a,b)=>{!b?.data||b.data.href&&g.push(b.data.href)},[g]);return(0,c.jsxs)("div",{className:"flex h-full flex-col gap-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-xs font-semibold uppercase tracking-wide",children:j("dependencyGraph.header.title")}),(0,c.jsx)("p",{className:"text-base text-foreground",children:j("dependencyGraph.header.subtitle")})]}),(0,c.jsx)("div",{className:"rounded-full border border-border px-3 py-1.5 text-sm font-medium uppercase tracking-wide",children:j("dependencyGraph.header.badge")})]}),(0,c.jsx)("div",{className:"flex-1 overflow-hidden rounded-2xl border border-border bg-muted/30",children:(0,c.jsxs)(a9.default,{nodes:l.nodes,edges:l.edges,nodeTypes:bj,onInit:m,className:"h-full w-full",fitView:!0,proOptions:{hideAttribution:!0},nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,panOnScroll:!0,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,minZoom:.4,maxZoom:1.6,onNodeClick:n,children:[(0,c.jsx)(ba.Background,{gap:24,size:1,color:"rgba(148, 163, 184, 0.3)"}),(0,c.jsx)(bb.Controls,{showInteractive:!1})]})})]})}var bo=a.i(228e3),bp=a.i(186945),bq=a.i(615268);let br=(0,t.default)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]),bs=(0,t.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]),bt=(0,t.default)("test-tube",[["path",{d:"M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5c-1.4 0-2.5-1.1-2.5-2.5V2",key:"125lnx"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M14.5 16h-5",key:"1ox875"}]]),bu=(0,t.default)("square-check-big",[["path",{d:"M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344",key:"2acyp4"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),bv=(0,t.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]),bw=(0,t.default)("map",[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]);var bx=a.i(915970),by=a.i(476011),bz=a.i(418419),bA=a.i(404620),bB=a.i(709211),bC=a.i(730702),bD=a.i(475661),bE=a.i(386868);let bF=()=>a=>{(0,bE.visit)(a,"html",a=>{"string"==typeof a.value&&a.value.trim().startsWith("<!--")&&(a.value="")})},bG={FileText:bq.FileText,Palette:br,Code:bs,TestTube:bt,CheckSquare:bu,Wrench:bv,Map:bw,GitBranch:bx.GitBranch,Home:by.Home,TrendingUp:bz.TrendingUp},bH=a=>fetch(a).then(a=>{if(!a.ok)throw Error(`HTTP error! status: ${a.status}`);return a.json()});function bI({initialSpec:a,initialSubSpec:b,isFocusMode:f=!1,onToggleFocusMode:g}){let h=(0,N.useRouter)(),i=(0,N.useSearchParams)(),{t:j,i18n:k}=(0,K.useTranslation)("common"),l=i.get("subspec")||b,[m,n]=d.useState(!1),[o,p]=d.useState(!1),{getSpecUrl:q,projectId:r}=(0,J.useProjectUrl)(),s=r?`/api/projects/${r}/specs/${a.specNumber||a.id}`:`/api/specs/${a.specNumber||a.id}`,t=r?`/api/projects/${r}/specs/${a.specNumber||a.id}/dependency-graph`:`/api/specs/${a.specNumber||a.id}/dependency-graph`,{data:u,error:v,isLoading:y}=aE(s,bH,{fallbackData:{spec:a},revalidateOnFocus:!1,dedupingInterval:5e3}),{data:z}=aE(o?t:null,bH,{revalidateOnFocus:!1,dedupingInterval:6e4}),D=u?.spec||a,E=d.useMemo(()=>D.tags||[],[D.tags]),F=D.updatedAt?(0,C.formatRelativeTime)(D.updatedAt):null,G=D.relationships,H=!!(G&&((G.dependsOn?.length??0)>0||(G.requiredBy?.length??0)>0));d.useEffect(()=>{H||p(!1)},[H]);let I=(0,A.extractH1Title)(D.contentMd)||D.title||D.specName,L=D.contentMd;if(l&&D.subSpecs){let a=D.subSpecs.find(a=>a.file===l);a&&(L=a.content)}let M=d.useCallback(a=>{if(!a)return j("specDetail.metadata.notAvailable");try{return new Intl.DateTimeFormat(k.language||"en-US",{year:"numeric",month:"short",day:"numeric"}).format(new Date(a))}catch{return j("specDetail.metadata.notAvailable")}},[k.language,j]),O=a=>{let b=a?q(D.specNumber||D.id,a):q(D.specNumber||D.id);h.push(b,{scroll:!1})},P=d.useRef(null);return d.useEffect(()=>{let a=()=>{let a=56;window.innerWidth>=1024&&P.current&&(a+=P.current.offsetHeight-56),document.documentElement.style.scrollPaddingTop=`${a}px`};a(),window.addEventListener("resize",a);let b=new ResizeObserver(a);return P.current&&b.observe(P.current),()=>{window.removeEventListener("resize",a),b.disconnect(),document.documentElement.style.scrollPaddingTop=""}},[D,E]),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("header",{ref:P,className:"lg:sticky lg:top-14 lg:z-20 border-b bg-card",children:[(0,c.jsx)("div",{className:(0,A.cn)("px-3 sm:px-6",f?"py-1.5":"py-2 sm:py-3"),children:f?(0,c.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,c.jsxs)("h1",{className:"text-base font-semibold tracking-tight truncate",children:[D.specNumber&&(0,c.jsxs)("span",{className:"text-muted-foreground",children:["#",D.specNumber.toString().padStart(3,"0")," "]}),I]}),(0,c.jsx)(x.StatusBadge,{status:D.status||"planned"}),(0,c.jsx)(B.PriorityBadge,{priority:D.priority||"medium"})]}),(0,c.jsx)(w.Button,{type:"button",variant:"ghost",size:"sm",onClick:g,className:"h-7 px-2 text-xs text-muted-foreground hover:text-foreground shrink-0",title:j("specDetail.buttons.exitFocus"),children:(0,c.jsx)(bB.Minimize2,{className:"h-4 w-4"})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-1.5 sm:mb-2",children:[(0,c.jsxs)("h1",{className:"text-lg sm:text-xl font-bold tracking-tight",children:[D.specNumber&&(0,c.jsxs)("span",{className:"text-muted-foreground",children:["#",D.specNumber.toString().padStart(3,"0")," "]}),I]}),(0,c.jsxs)(w.Button,{variant:"ghost",size:"icon",className:"lg:hidden h-8 w-8 -mr-2 shrink-0 text-muted-foreground",onClick:()=>{},children:[(0,c.jsx)(bC.List,{className:"h-5 w-5"}),(0,c.jsx)("span",{className:"sr-only",children:j("specDetail.toggleSidebar")})]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,c.jsx)(a4,{fallback:(0,c.jsx)(x.StatusBadge,{status:D.status||"planned"}),children:(0,c.jsx)(aT,{specId:D.specNumber?.toString()||D.id,currentStatus:D.status||"planned",projectId:r})}),(0,c.jsx)(a4,{fallback:(0,c.jsx)(B.PriorityBadge,{priority:D.priority||"medium"}),children:(0,c.jsx)(a$,{specId:D.specNumber?.toString()||D.id,currentPriority:D.priority||"medium",projectId:r})}),(0,c.jsx)("div",{className:"h-4 w-px bg-border mx-1 hidden sm:block"}),(0,c.jsx)(a4,{children:(0,c.jsx)(a3,{specId:D.specNumber?.toString()||D.id,currentTags:E,projectId:r})})]}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-2 sm:gap-4 text-xs text-muted-foreground mt-1.5 sm:mt-2",children:[(0,c.jsxs)("span",{className:"hidden sm:inline",children:[j("specDetail.metadata.created"),": ",M(D.createdAt)]}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{children:[j("specDetail.metadata.updated"),": ",M(D.updatedAt),D.updatedAt&&(0,c.jsxs)("span",{className:"ml-1 text-[11px] text-muted-foreground/80",children:["(",F,")"]})]}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{className:"hidden md:inline",children:[j("specDetail.metadata.name"),": ",D.specName]}),D.assignee&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{className:"hidden sm:inline",children:[j("specDetail.metadata.assignee"),": ",D.assignee]})]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mt-2",children:[(0,c.jsxs)(bp.Dialog,{open:m,onOpenChange:n,children:[(0,c.jsxs)(w.Button,{type:"button",variant:"outline",size:"sm","aria-haspopup":"dialog","aria-expanded":m,onClick:()=>n(!0),className:"h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",children:[(0,c.jsx)(aJ.Clock,{className:"mr-1.5 h-3.5 w-3.5"}),j("specDetail.buttons.viewTimeline"),(0,c.jsx)(bA.Maximize2,{className:"ml-1.5 h-3.5 w-3.5"})]}),(0,c.jsxs)(bp.DialogContent,{className:"w-[min(900px,90vw)] max-w-3xl max-h-[90vh] overflow-y-auto",children:[(0,c.jsxs)(bp.DialogHeader,{children:[(0,c.jsx)(bp.DialogTitle,{children:j("specDetail.dialogs.timelineTitle")}),(0,c.jsx)(bp.DialogDescription,{children:j("specDetail.dialogs.timelineDescription")})]}),(0,c.jsx)("div",{className:"rounded-xl border border-border bg-muted/30 p-4",children:(0,c.jsx)(aO,{createdAt:D.createdAt,updatedAt:D.updatedAt,completedAt:D.completedAt,status:D.status||"planned"})})]})]}),(0,c.jsxs)(bp.Dialog,{open:o,onOpenChange:p,children:[(0,c.jsxs)(w.Button,{type:"button",variant:"outline",size:"sm","aria-haspopup":"dialog","aria-expanded":o,onClick:()=>p(!0),disabled:!H,className:(0,A.cn)("h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",!H&&"cursor-not-allowed opacity-50"),children:[(0,c.jsx)(bx.GitBranch,{className:"mr-1.5 h-3.5 w-3.5"}),j("specDetail.buttons.viewDependencies"),(0,c.jsx)(bA.Maximize2,{className:"ml-1.5 h-3.5 w-3.5"})]}),(0,c.jsxs)(bp.DialogContent,{className:"flex h-[85vh] w-[min(1200px,95vw)] max-w-6xl flex-col gap-4 overflow-hidden",children:[(0,c.jsxs)(bp.DialogHeader,{children:[(0,c.jsx)(bp.DialogTitle,{children:j("specDetail.dialogs.dependenciesTitle")}),(0,c.jsxs)(bp.DialogDescription,{className:"flex flex-col gap-2",children:[(0,c.jsx)("span",{children:j("specDetail.dialogs.dependenciesDescription")}),(0,c.jsxs)(e.default,{href:r?`/projects/${r}/dependencies?spec=${D.specNumber||D.id}`:`/dependencies?spec=${D.specNumber||D.id}`,className:"inline-flex items-center gap-1.5 text-xs text-primary hover:underline w-fit",onClick:()=>p(!1),children:[(0,c.jsx)(bD.ExternalLink,{className:"h-3 w-3"}),j("specDetail.dialogs.dependenciesLink")]})]})]}),(0,c.jsx)("div",{className:"min-h-0 flex-1",children:z&&(0,c.jsx)(bn,{relationships:z,specNumber:D.specNumber,specTitle:I,projectId:r})})]})]}),g&&(0,c.jsxs)(w.Button,{type:"button",variant:"outline",size:"sm",onClick:g,className:"hidden lg:inline-flex h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",title:j("specDetail.buttons.focus"),children:[(0,c.jsx)(bA.Maximize2,{className:"mr-1.5 h-3.5 w-3.5"}),j("specDetail.buttons.focus")]})]})]})}),D.subSpecs&&D.subSpecs.length>0&&(0,c.jsx)("div",{className:"border-t bg-muted/30",children:(0,c.jsx)("div",{className:"px-3 sm:px-6 overflow-x-auto",children:(0,c.jsxs)("div",{className:"flex gap-1 py-2 min-w-max",children:[(0,c.jsxs)("button",{onClick:()=>O(null),className:`flex items-center gap-2 px-3 sm:px-4 py-2 text-xs sm:text-sm font-medium rounded-md whitespace-nowrap transition-colors ${!l?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[(0,c.jsx)(by.Home,{className:"h-4 w-4"}),(0,c.jsx)("span",{className:"hidden sm:inline",children:j("specDetail.tabs.overview")})]}),D.subSpecs.map(a=>{let b=bG[a.iconName]||bq.FileText;return(0,c.jsxs)("button",{onClick:()=>O(a.file),className:`flex items-center gap-2 px-3 sm:px-4 py-2 text-xs sm:text-sm font-medium rounded-md whitespace-nowrap transition-colors ${l===a.file?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[(0,c.jsx)(b,{className:`h-4 w-4 ${a.color}`}),(0,c.jsx)("span",{className:"hidden sm:inline",children:a.name})]},a.file)})]})})})]}),(0,c.jsxs)("div",{className:"flex flex-col xl:flex-row xl:items-start",children:[(0,c.jsx)("main",{className:"flex-1 px-3 sm:px-6 py-3 sm:py-6 min-w-0",children:(0,c.jsxs)("div",{className:"space-y-4",children:[y&&(0,c.jsx)("div",{className:"text-sm text-muted-foreground",children:j("specDetail.state.loading")}),v&&(0,c.jsx)("div",{className:"text-sm text-destructive",children:j("specDetail.state.error")}),(0,c.jsx)("article",{className:"prose prose-slate dark:prose-invert max-w-none prose-sm sm:prose-base",children:(0,c.jsx)(aF.default,{remarkPlugins:[aG.default,bF],rehypePlugins:[aH.default,aI.default],components:{a:a=>(0,c.jsx)(a5,{...a,currentSpecNumber:D.specNumber||void 0,projectId:r}),pre:({children:a,...b})=>{let e=d.Children.toArray(a)[0];if(d.isValidElement(e)&&"code"===e.type&&"string"==typeof e.props.className&&e.props.className?.includes("language-mermaid")){let a=e.props,b="string"==typeof a.children?a.children:"";return(0,c.jsx)(bo.MermaidDiagram,{code:b})}return(0,c.jsx)("pre",{...b,children:a})}},children:L})})]})}),(0,c.jsx)("aside",{className:(0,A.cn)("hidden xl:block w-72 shrink-0 px-6 py-6 sticky overflow-y-auto scrollbar-auto-hide",D.subSpecs&&D.subSpecs.length>0?"top-[16.375rem] h-[calc(100vh-16.375rem)]":"top-[13.125rem] h-[calc(100vh-13.125rem)]"),children:(0,c.jsx)(a6.TableOfContentsSidebar,{content:L})})]}),(0,c.jsx)("div",{className:"xl:hidden",children:(0,c.jsx)(a6.TableOfContents,{content:L})}),(0,c.jsx)(a7.BackToTop,{})]})}function bJ({spec:a,allSpecs:b,currentSubSpec:e}){let{projectId:f}=(0,J.useProjectUrl)(),[g,h]=d.useState(!1);d.useEffect(()=>{"true"===localStorage.getItem("spec-detail-focus-mode")&&h(!0)},[]);let i=d.useCallback(()=>{h(a=>{let b=!a;return localStorage.setItem("spec-detail-focus-mode",String(b)),b})},[]),j=d.useMemo(()=>b.map(a=>({id:a.id,specNumber:a.specNumber,title:a.title,specName:a.specName,status:a.status,priority:a.priority,tags:a.tags,updatedAt:a.updatedAt,subSpecsCount:"subSpecsCount"in a?a.subSpecsCount:void 0})),[b]);d.useEffect(()=>{!function(a){if(0===a.length)return;let b=a.map(a=>[a.id,a.specNumber??"",a.title??"",a.status??"",a.priority??"",a.updatedAt?new Date(a.updatedAt).getTime():0].join(":")).join("|");if(b!==D.signature)for(let c of(D={...D,specs:a,signature:b},I(),G))c()}(j)},[j]),d.useEffect(()=>{var b=a.id;if(D.activeSpecId!==b)for(let a of(D={...D,activeSpecId:b},I(),H))a()},[a.id]);let k=d.useCallback(a=>{fetch(`/api/projects/${f}/specs/${a}`).catch(()=>{})},[f]);return(0,c.jsxs)("div",{className:"flex min-h-[calc(100vh-3.5rem)] w-full min-w-0",children:[(0,c.jsx)(M,{initialSpecs:j,currentSpecId:a.id,currentSubSpec:e,onSpecHover:k,className:(0,A.cn)(g&&"hidden")}),(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsx)(bI,{initialSpec:a,initialSubSpec:e,isFocusMode:g,onToggleFocusMode:i})})]})}a.s(["SpecDetailWrapper",()=>bJ],599302)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[48322,a=>{"use strict";var b=a.i(982746),c=a.i(280940),d=a.i(262158),e=a.i(416119),f=a.i(980096),g=a.i(837717),h=a.i(406334),i=a.i(227725),j=a.i(915929),k=a.i(793090),l=a.i(800966),m=a.i(659358),n=a.i(297557),o=a.i(262936),p=a.i(307840),q=a.i(730702),r=a.i(615268),s=a.i(915970),t=a.i(404620),u=a.i(709211),v=a.i(633093),w=a.i(141270),x=a.i(882479),y=a.i(322570),z=a.i(687052),A=a.i(890075);a.i(294783);var B=a.i(156916);a.i(150144);var C=a.i(713372);let D={planned:{icon:n.Clock,titleKey:"status.planned",colorClass:"text-blue-600 dark:text-blue-400",bgClass:"bg-blue-50 dark:bg-blue-900/20",borderClass:"border-blue-200 dark:border-blue-800"},"in-progress":{icon:m.PlayCircle,titleKey:"status.inProgress",colorClass:"text-orange-600 dark:text-orange-400",bgClass:"bg-orange-50 dark:bg-orange-900/20",borderClass:"border-orange-200 dark:border-orange-800"},complete:{icon:l.CheckCircle2,titleKey:"status.complete",colorClass:"text-green-600 dark:text-green-400",bgClass:"bg-green-50 dark:bg-green-900/20",borderClass:"border-green-200 dark:border-green-800"},archived:{icon:o.Archive,titleKey:"status.archived",colorClass:"text-gray-600 dark:text-gray-400",bgClass:"bg-gray-50 dark:bg-gray-900/20",borderClass:"border-gray-200 dark:border-gray-800"}},E=["planned","in-progress","complete","archived"];function F({initialSpecs:a,projectId:d}){let f=(0,e.useSearchParams)(),g=(0,e.useRouter)(),{t:l}=(0,C.useTranslation)("common"),m=(0,c.useCallback)(a=>`/projects/${d}/specs/${a}`,[d]),n=(0,c.useCallback)(()=>`/projects/${d}/specs`,[d]),[o,r]=(0,c.useState)(a),[s,v]=(0,c.useState)({}),[w,x]=(0,c.useState)(""),[y,A]=(0,c.useState)("all"),[E,F]=(0,c.useState)("all"),[I,J]=(0,c.useState)("id-desc"),[K,L]=(0,c.useState)(!1),[M,N]=(0,c.useState)(!1),[O,P]=(0,c.useState)(()=>{let a=f.get("view");return"board"===a||"list"===a?a:"list"}),Q=(0,c.useRef)(!0),R=(0,c.useRef)(d);(0,c.useEffect)(()=>{R.current!==d?(r(a),v({}),x(""),A("all"),F("all"),L(!1),R.current=d):r(a)},[a,d]);let S=(0,c.useCallback)(async(a,b)=>{if(a.status===b)return;let c=a.status;v(b=>({...b,[a.id]:!0})),r(c=>c.map(c=>c.id===a.id?{...c,status:b}:c));try{let c=`/api/projects/${d}/specs/${encodeURIComponent(a.specName)}/status`,e=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:b})});if(!e.ok){let a=await e.text();throw Error(a||"Failed to update spec status")}let f=a.specNumber?`#${a.specNumber}`:a.specName,g=l(D[b].titleKey);B.toast.success(l("specsPage.toasts.statusUpdated",{spec:f,status:g}))}catch(b){console.error("Failed to update spec status",b),r(b=>b.map(b=>b.id===a.id?{...b,status:c}:b)),B.toast.error(l("specsPage.toasts.statusError"))}finally{v(b=>{let c={...b};return delete c[a.id],c})}},[d]);(0,c.useEffect)(()=>{"archived"===y&&"board"===O&&L(!0)},[y,O]),(0,c.useEffect)(()=>{if(Q.current){Q.current=!1;return}let a=new URLSearchParams(window.location.search);"board"===O?a.set("view","board"):a.delete("view");let b=a.toString(),c=b?`?${b}`:"";g.replace(`${n()}${c}`,{scroll:!1})},[O,g,n]);let T=(0,c.useMemo)(()=>{let a=[...o.filter(a=>{let b=!w||a.title?.toLowerCase().includes(w.toLowerCase())||a.specName.toLowerCase().includes(w.toLowerCase())||a.tags?.some(a=>a.toLowerCase().includes(w.toLowerCase())),c="all"===y?"list"!==O||"archived"!==a.status:a.status===y,d="all"===E||a.priority===E;return b&&c&&d})];switch(I){case"id-desc":a.sort((a,b)=>(b.specNumber||0)-(a.specNumber||0));break;case"id-asc":a.sort((a,b)=>(a.specNumber||0)-(b.specNumber||0));break;case"updated-desc":a.sort((a,b)=>a.updatedAt?b.updatedAt?b.updatedAt.getTime()-a.updatedAt.getTime():-1:1);break;case"title-asc":a.sort((a,b)=>{let c=(a.title||a.specName).toLowerCase(),d=(b.title||b.specName).toLowerCase();return c.localeCompare(d)})}return a},[o,w,y,E,I,O]);return(0,b.jsx)("div",{className:"h-[calc(100vh-3.5rem)] flex flex-col overflow-hidden bg-background p-2 sm:p-4",children:(0,b.jsxs)("div",{className:(0,z.cn)("flex flex-col h-full mx-auto transition-all duration-300",M?"w-full":"max-w-7xl w-full"),children:[(0,b.jsx)("div",{className:"flex-none mb-3 sm:mb-4",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3 md:gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h1",{className:"text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate",children:l("specsPage.title")}),(0,b.jsx)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:l("specsPage.count",{count:T.length})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 sm:gap-2 flex-shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-0.5 sm:gap-1 bg-muted/50 p-0.5 sm:p-1 rounded-lg",children:[(0,b.jsxs)(i.Button,{variant:"list"===O?"secondary":"ghost",size:"sm",onClick:()=>P("list"),className:"h-7 sm:h-8 px-2 sm:px-3",title:l("specsPage.views.listTooltip"),children:[(0,b.jsx)(q.List,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,b.jsx)("span",{className:"hidden lg:inline ml-2",children:l("specsPage.views.list")})]}),(0,b.jsxs)(i.Button,{variant:"board"===O?"secondary":"ghost",size:"sm",onClick:()=>P("board"),className:"h-7 sm:h-8 px-2 sm:px-3",title:l("specsPage.views.boardTooltip"),children:[(0,b.jsx)(p.LayoutGrid,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,b.jsx)("span",{className:"hidden lg:inline ml-2",children:l("specsPage.views.board")})]})]}),(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",onClick:()=>N(!M),className:"hidden md:flex h-8 w-8 sm:h-10 sm:w-10 text-muted-foreground hover:text-foreground",title:M?l("specsPage.wideMode.exit"):l("specsPage.wideMode.enter"),children:M?(0,b.jsx)(u.Minimize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):(0,b.jsx)(t.Maximize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"relative w-full",children:[(0,b.jsx)(k.Search,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 sm:h-4 sm:w-4 text-muted-foreground pointer-events-none"}),(0,b.jsx)(h.Input,{placeholder:l("specsPage.searchPlaceholder"),value:w,onChange:a=>x(a.target.value),className:"pl-8 sm:pl-9 h-9 sm:h-10 w-full text-sm"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 overflow-x-auto snap-x snap-mandatory pb-1 -mx-2 px-2 sm:mx-0 sm:px-0 sm:pb-0 scrollbar-thin",children:[(0,b.jsxs)(j.Select,{value:y,onValueChange:a=>A(a),children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:l("specsPage.filters.status")})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"all",children:l("specsPage.filters.statusAll")}),(0,b.jsx)(j.SelectItem,{value:"planned",children:l("status.planned")}),(0,b.jsx)(j.SelectItem,{value:"in-progress",children:l("status.inProgress")}),(0,b.jsx)(j.SelectItem,{value:"complete",children:l("status.complete")}),(0,b.jsx)(j.SelectItem,{value:"archived",children:l("status.archived")})]})]}),(0,b.jsxs)(j.Select,{value:E,onValueChange:F,children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:l("specsPage.filters.priority")})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"all",children:l("specsPage.filters.priorityAll")}),(0,b.jsx)(j.SelectItem,{value:"critical",children:l("priority.critical")}),(0,b.jsx)(j.SelectItem,{value:"high",children:l("priority.high")}),(0,b.jsx)(j.SelectItem,{value:"medium",children:l("priority.medium")}),(0,b.jsx)(j.SelectItem,{value:"low",children:l("priority.low")})]})]}),(0,b.jsxs)(j.Select,{value:I,onValueChange:a=>J(a),children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[130px] sm:w-[170px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:l("specsPage.filters.sort")})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"id-desc",children:l("specsPage.filters.sortOptions.id-desc")}),(0,b.jsx)(j.SelectItem,{value:"id-asc",children:l("specsPage.filters.sortOptions.id-asc")}),(0,b.jsx)(j.SelectItem,{value:"updated-desc",children:l("specsPage.filters.sortOptions.updated-desc")}),(0,b.jsx)(j.SelectItem,{value:"title-asc",children:l("specsPage.filters.sortOptions.title-asc")})]})]})]})]})]})}),(0,b.jsx)("div",{className:(0,z.cn)("flex-1 min-h-0","board"===O?"overflow-x-auto overflow-y-hidden":"overflow-y-auto"),children:"list"===O?(0,b.jsx)("div",{className:"w-full",children:(0,b.jsx)(G,{specs:T,getSpecUrl:m,projectId:d})}):(0,b.jsx)(H,{specs:T,onStatusChange:S,pendingSpecIds:s,showArchived:K,onToggleArchived:()=>L(!K),getSpecUrl:m,projectId:d})})]})})}function G({specs:a,getSpecUrl:c,projectId:e}){let{t:h}=(0,C.useTranslation)("common");return(0,b.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:gap-3 md:gap-4 pb-2 sm:pb-4 md:pb-8",children:a.map(a=>{let i={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[a.priority]||"border-l-gray-300",j=a.relationships&&a.relationships.dependsOn.length>0,k=!!(a.subSpecsCount&&a.subSpecsCount>0),l=c(a.specNumber||a.id),m=`${e}:${a.id}`;return(0,b.jsxs)(f.Card,{className:(0,z.cn)("hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.01] active:scale-[0.99] border-l-4 cursor-pointer touch-manipulation",i),onClick:()=>window.location.href=l,children:[(0,b.jsx)(f.CardHeader,{className:"pb-2 sm:pb-2.5 md:pb-3 px-3 sm:px-4 md:px-6 pt-3 sm:pt-4 md:pt-6",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-start md:justify-between md:gap-4",children:[(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)(d.default,{href:l,children:(0,b.jsxs)(f.CardTitle,{className:"text-sm sm:text-base md:text-lg font-semibold hover:text-primary transition-colors flex items-start flex-wrap gap-1.5 sm:gap-2 leading-snug sm:leading-normal",children:[a.specNumber?(0,b.jsxs)("span",{className:"font-mono text-xs sm:text-sm md:text-base font-normal text-muted-foreground flex-shrink-0",children:["#",a.specNumber.toString().padStart(3,"0")]}):null,(0,b.jsx)("span",{className:"flex-1 break-words",children:a.title||a.specName})]})}),a.title&&a.title!==a.specName&&(0,b.jsx)("p",{className:"text-[11px] sm:text-xs font-mono text-muted-foreground mt-1 sm:mt-1.5 truncate",children:a.specName})]}),(0,b.jsxs)("div",{className:"flex gap-1.5 sm:gap-2 flex-wrap md:shrink-0",children:[a.status&&(0,b.jsx)(x.StatusBadge,{status:a.status}),a.priority&&(0,b.jsx)(y.PriorityBadge,{priority:a.priority})]})]})}),(0,b.jsx)(f.CardContent,{className:"px-3 sm:px-4 md:px-6 pb-2.5 sm:pb-3 md:pb-6 pt-0",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between md:gap-4",children:[(0,b.jsx)("div",{className:"flex items-center gap-2 sm:gap-3 md:gap-4 text-[11px] sm:text-xs md:text-sm text-muted-foreground flex-wrap",children:a.updatedAt||k||j?(0,b.jsxs)(b.Fragment,{children:[a.updatedAt&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(n.Clock,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsx)("span",{className:"whitespace-nowrap",children:h("specsPage.metadata.updated",{time:(0,A.formatRelativeTime)(a.updatedAt)})})]}),k&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(r.FileText,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsx)("span",{className:"whitespace-nowrap",children:h("specsPage.metadata.files",{count:a.subSpecsCount})})]}),j&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(s.GitBranch,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsx)("span",{className:"whitespace-nowrap",children:h("specsPage.metadata.dependencies",{count:a.relationships.dependsOn.length})})]})]}):(0,b.jsx)("span",{className:"invisible hidden md:inline",children:h("specsPage.metadata.none")})}),a.tags&&a.tags.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1 sm:gap-1.5 md:gap-2 md:justify-end md:shrink-0",children:a.tags.map(a=>(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs font-mono text-muted-foreground hover:text-foreground transition-colors h-5 sm:h-auto px-1.5 sm:px-2",children:a},a))})]})})]},m)})})}function H({specs:a,onStatusChange:e,pendingSpecIds:h,showArchived:i,onToggleArchived:j,getSpecUrl:k,projectId:l}){let{t:m}=(0,C.useTranslation)("common"),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)({}),t=(0,c.useMemo)(()=>E.map(b=>({status:b,config:D[b],specs:a.filter(a=>a.status===b)})),[a]),u=(0,c.useMemo)(()=>{let b=new Map;return a.forEach(a=>b.set(a.id,a)),b},[a]),x=(0,c.useCallback)((a,b)=>{b.dataTransfer.setData("text/plain",a),b.dataTransfer.effectAllowed="move",o(a)},[]),A=(0,c.useCallback)(()=>{o(null),q(null)},[]),B=(0,c.useCallback)((a,b)=>{n&&(b.preventDefault(),b.dataTransfer.dropEffect="move",q(a))},[n]),F=(0,c.useCallback)((a,b)=>{if(!n)return;let c=b.relatedTarget;c&&b.currentTarget.contains(c)||q(b=>b===a?null:b)},[n]),G=(0,c.useCallback)((a,b)=>{b.preventDefault();let c=b.dataTransfer.getData("text/plain")||n;if(!c)return void A();let d=u.get(c);d&&d.status!==a&&e(d,a),A()},[n,A,e,u]);return(0,b.jsx)("div",{className:"flex flex-col md:flex-row gap-3 sm:gap-4 md:gap-6 h-full pb-2 md:snap-x md:snap-mandatory overflow-y-auto md:overflow-y-hidden md:overflow-x-auto",children:t.map(a=>{let c=a.config.icon,e="archived"===a.status,o=r[a.status],q=m(a.config.titleKey);return(0,b.jsxs)("div",{className:(0,z.cn)("flex flex-col flex-1 snap-start","h-auto md:h-full w-full md:w-auto flex-shrink-0",e&&!i?"md:w-12 md:sm:w-14 md:min-w-[3rem] md:sm:min-w-[3.5rem] flex-none":"md:min-w-[260px] md:sm:min-w-[280px] md:md:min-w-[300px]"),children:[(0,b.jsx)("div",{className:(0,z.cn)("flex-none mb-3 sm:mb-4 rounded-lg border-2 bg-background transition-all touch-manipulation",a.config.bgClass,a.config.borderClass,e?"cursor-pointer hover:opacity-80 active:opacity-70":"",e&&!i?"py-4 sm:py-6 px-1.5 sm:px-2":"p-2.5 sm:p-3","md:cursor-default cursor-pointer"),onClick:()=>{if(e)j();else{var b;window.innerWidth<768&&(b=a.status,s(a=>({...a,[b]:!a[b]})))}},children:(0,b.jsxs)("h2",{className:(0,z.cn)("text-base sm:text-lg font-semibold flex items-center gap-1.5 sm:gap-2",a.config.colorClass,e&&!i&&"flex-col text-xs sm:text-sm gap-2 sm:gap-3"),children:[(0,b.jsx)(c,{className:"h-4 w-4 sm:h-5 sm:w-5 flex-shrink-0"}),e&&!i?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"vertical-text text-xs sm:text-sm whitespace-nowrap",children:q}),(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1 sm:px-2 h-4 sm:h-5",children:a.specs.length})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"truncate flex-1",children:q}),(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1.5 sm:px-2 h-4 sm:h-5 flex-shrink-0",children:a.specs.length}),(0,b.jsx)("div",{className:"md:hidden ml-2 text-muted-foreground/50",children:o?(0,b.jsx)(w.ChevronRight,{className:"h-4 w-4"}):(0,b.jsx)(v.ChevronDown,{className:"h-4 w-4"})})]})]})}),(!e||i)&&!o&&(0,b.jsxs)("div",{className:(0,z.cn)("space-y-2 sm:space-y-2.5 md:space-y-3 flex-1 rounded-xl border border-transparent p-1 transition-colors overflow-y-auto min-h-0 scrollbar-thin",n&&"border-dashed border-muted-foreground/40",n&&p===a.status&&"bg-muted/40 border-primary/50"),onDragOver:b=>B(a.status,b),onDragLeave:b=>F(a.status,b),onDrop:b=>G(a.status,b),children:[a.specs.map(a=>{let c={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[a.priority]||"border-l-gray-300",e=!!h[a.id],i=k(a.specNumber||a.id),j=`${l}:${a.id}`;return(0,b.jsxs)(f.Card,{draggable:!e,onDragStart:b=>{e?b.preventDefault():x(a.id,b)},onDragEnd:A,"aria-disabled":e,className:(0,z.cn)("relative hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.02] active:scale-[0.99] border-l-4 cursor-pointer group flex flex-col touch-manipulation",c,e&&"opacity-60 cursor-wait"),onClick:()=>window.location.href=i,children:[e&&(0,b.jsx)("div",{className:"absolute inset-0 rounded-lg bg-background/80 flex items-center justify-center text-xs sm:text-sm font-medium z-10",children:m("specsPage.board.updating")}),(0,b.jsxs)(f.CardHeader,{className:"p-3 sm:p-4 pb-1.5 sm:pb-2 space-y-1 sm:space-y-1.5",children:[(0,b.jsx)("div",{className:"flex items-center justify-between",children:(0,b.jsx)("span",{className:"font-mono text-[10px] sm:text-xs text-muted-foreground/70 group-hover:text-primary/60 transition-colors",children:a.specNumber?`#${a.specNumber}`:""})}),(0,b.jsx)(d.default,{href:i,className:"block",children:(0,b.jsx)(f.CardTitle,{className:"text-xs sm:text-sm font-semibold leading-snug hover:text-primary transition-colors line-clamp-3",children:a.title||a.specName})})]}),(0,b.jsx)(f.CardContent,{className:"p-3 sm:p-4 pt-1.5 sm:pt-2 flex-1 flex flex-col justify-end",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3",children:[a.title&&a.title!==a.specName&&(0,b.jsx)("p",{className:"text-[10px] sm:text-xs font-mono text-muted-foreground truncate opacity-70",children:a.specName}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1.5 sm:gap-2 pt-0.5 sm:pt-1",children:[a.priority?(0,b.jsx)(y.PriorityBadge,{priority:a.priority}):(0,b.jsx)("div",{}),a.tags&&a.tags.length>0&&(0,b.jsxs)("div",{className:"flex flex-wrap gap-0.5 sm:gap-1 justify-end",children:[a.tags.slice(0,2).map(a=>(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:a},a)),a.tags.length>2&&(0,b.jsxs)(g.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:["+",a.tags.length-2]})]})]})]})})]},j)}),0===a.specs.length&&(0,b.jsx)(f.Card,{className:"border-dashed border-gray-300 dark:border-gray-700 bg-transparent",children:(0,b.jsxs)(f.CardContent,{className:"py-6 sm:py-8 text-center px-2",children:[(0,b.jsx)(c,{className:(0,z.cn)("mx-auto h-6 w-6 sm:h-8 sm:w-8 mb-1.5 sm:mb-2",a.config.colorClass,"opacity-50")}),(0,b.jsx)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:m("specsPage.board.dropHere")})]})})]})]},a.status)})})}a.s(["SpecsClient",()=>F])}];
|
|
1
|
+
module.exports=[48322,a=>{"use strict";var b=a.i(982746),c=a.i(280940),d=a.i(262158),e=a.i(416119),f=a.i(980096),g=a.i(837717),h=a.i(406334),i=a.i(227725),j=a.i(915929),k=a.i(793090),l=a.i(800966),m=a.i(659358),n=a.i(297557),o=a.i(262936),p=a.i(307840),q=a.i(730702),r=a.i(615268),s=a.i(915970),t=a.i(404620),u=a.i(709211),v=a.i(633093),w=a.i(141270),x=a.i(882479),y=a.i(322570),z=a.i(687052),A=a.i(890075);a.i(294783);var B=a.i(156916);a.i(961579);var C=a.i(46812);let D={planned:{icon:n.Clock,titleKey:"status.planned",colorClass:"text-blue-600 dark:text-blue-400",bgClass:"bg-blue-50 dark:bg-blue-900/20",borderClass:"border-blue-200 dark:border-blue-800"},"in-progress":{icon:m.PlayCircle,titleKey:"status.inProgress",colorClass:"text-orange-600 dark:text-orange-400",bgClass:"bg-orange-50 dark:bg-orange-900/20",borderClass:"border-orange-200 dark:border-orange-800"},complete:{icon:l.CheckCircle2,titleKey:"status.complete",colorClass:"text-green-600 dark:text-green-400",bgClass:"bg-green-50 dark:bg-green-900/20",borderClass:"border-green-200 dark:border-green-800"},archived:{icon:o.Archive,titleKey:"status.archived",colorClass:"text-gray-600 dark:text-gray-400",bgClass:"bg-gray-50 dark:bg-gray-900/20",borderClass:"border-gray-200 dark:border-gray-800"}},E=["planned","in-progress","complete","archived"];function F({initialSpecs:a,projectId:d}){let f=(0,e.useSearchParams)(),g=(0,e.useRouter)(),{t:l}=(0,C.useTranslation)("common"),m=(0,c.useCallback)(a=>`/projects/${d}/specs/${a}`,[d]),n=(0,c.useCallback)(()=>`/projects/${d}/specs`,[d]),[o,r]=(0,c.useState)(a),[s,v]=(0,c.useState)({}),[w,x]=(0,c.useState)(""),[y,A]=(0,c.useState)("all"),[E,F]=(0,c.useState)("all"),[I,J]=(0,c.useState)("id-desc"),[K,L]=(0,c.useState)(!1),[M,N]=(0,c.useState)(!1),[O,P]=(0,c.useState)(()=>{let a=f.get("view");return"board"===a||"list"===a?a:"list"}),Q=(0,c.useRef)(!0),R=(0,c.useRef)(d);(0,c.useEffect)(()=>{R.current!==d?(r(a),v({}),x(""),A("all"),F("all"),L(!1),R.current=d):r(a)},[a,d]);let S=(0,c.useCallback)(async(a,b)=>{if(a.status===b)return;let c=a.status;v(b=>({...b,[a.id]:!0})),r(c=>c.map(c=>c.id===a.id?{...c,status:b}:c));try{let c=`/api/projects/${d}/specs/${encodeURIComponent(a.specName)}/status`,e=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:b})});if(!e.ok){let a=await e.text();throw Error(a||"Failed to update spec status")}let f=a.specNumber?`#${a.specNumber}`:a.specName,g=l(D[b].titleKey);B.toast.success(l("specsPage.toasts.statusUpdated",{spec:f,status:g}))}catch(b){console.error("Failed to update spec status",b),r(b=>b.map(b=>b.id===a.id?{...b,status:c}:b)),B.toast.error(l("specsPage.toasts.statusError"))}finally{v(b=>{let c={...b};return delete c[a.id],c})}},[d]);(0,c.useEffect)(()=>{"archived"===y&&"board"===O&&L(!0)},[y,O]),(0,c.useEffect)(()=>{if(Q.current){Q.current=!1;return}let a=new URLSearchParams(window.location.search);"board"===O?a.set("view","board"):a.delete("view");let b=a.toString(),c=b?`?${b}`:"";g.replace(`${n()}${c}`,{scroll:!1})},[O,g,n]);let T=(0,c.useMemo)(()=>{let a=[...o.filter(a=>{let b=!w||a.title?.toLowerCase().includes(w.toLowerCase())||a.specName.toLowerCase().includes(w.toLowerCase())||a.tags?.some(a=>a.toLowerCase().includes(w.toLowerCase())),c="all"===y?"list"!==O||"archived"!==a.status:a.status===y,d="all"===E||a.priority===E;return b&&c&&d})];switch(I){case"id-desc":a.sort((a,b)=>(b.specNumber||0)-(a.specNumber||0));break;case"id-asc":a.sort((a,b)=>(a.specNumber||0)-(b.specNumber||0));break;case"updated-desc":a.sort((a,b)=>a.updatedAt?b.updatedAt?b.updatedAt.getTime()-a.updatedAt.getTime():-1:1);break;case"title-asc":a.sort((a,b)=>{let c=(a.title||a.specName).toLowerCase(),d=(b.title||b.specName).toLowerCase();return c.localeCompare(d)})}return a},[o,w,y,E,I,O]);return(0,b.jsx)("div",{className:"h-[calc(100vh-3.5rem)] flex flex-col overflow-hidden bg-background p-2 sm:p-4",children:(0,b.jsxs)("div",{className:(0,z.cn)("flex flex-col h-full mx-auto transition-all duration-300",M?"w-full":"max-w-7xl w-full"),children:[(0,b.jsx)("div",{className:"flex-none mb-3 sm:mb-4",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3 md:gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h1",{className:"text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate",children:l("specsPage.title")}),(0,b.jsx)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:l("specsPage.count",{count:T.length})})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 sm:gap-2 flex-shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-0.5 sm:gap-1 bg-muted/50 p-0.5 sm:p-1 rounded-lg",children:[(0,b.jsxs)(i.Button,{variant:"list"===O?"secondary":"ghost",size:"sm",onClick:()=>P("list"),className:"h-7 sm:h-8 px-2 sm:px-3",title:l("specsPage.views.listTooltip"),children:[(0,b.jsx)(q.List,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,b.jsx)("span",{className:"hidden lg:inline ml-2",children:l("specsPage.views.list")})]}),(0,b.jsxs)(i.Button,{variant:"board"===O?"secondary":"ghost",size:"sm",onClick:()=>P("board"),className:"h-7 sm:h-8 px-2 sm:px-3",title:l("specsPage.views.boardTooltip"),children:[(0,b.jsx)(p.LayoutGrid,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,b.jsx)("span",{className:"hidden lg:inline ml-2",children:l("specsPage.views.board")})]})]}),(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",onClick:()=>N(!M),className:"hidden md:flex h-8 w-8 sm:h-10 sm:w-10 text-muted-foreground hover:text-foreground",title:M?l("specsPage.wideMode.exit"):l("specsPage.wideMode.enter"),children:M?(0,b.jsx)(u.Minimize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):(0,b.jsx)(t.Maximize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"relative w-full",children:[(0,b.jsx)(k.Search,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 sm:h-4 sm:w-4 text-muted-foreground pointer-events-none"}),(0,b.jsx)(h.Input,{placeholder:l("specsPage.searchPlaceholder"),value:w,onChange:a=>x(a.target.value),className:"pl-8 sm:pl-9 h-9 sm:h-10 w-full text-sm"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 overflow-x-auto snap-x snap-mandatory pb-1 -mx-2 px-2 sm:mx-0 sm:px-0 sm:pb-0 scrollbar-thin",children:[(0,b.jsxs)(j.Select,{value:y,onValueChange:a=>A(a),children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:l("specsPage.filters.status")})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"all",children:l("specsPage.filters.statusAll")}),(0,b.jsx)(j.SelectItem,{value:"planned",children:l("status.planned")}),(0,b.jsx)(j.SelectItem,{value:"in-progress",children:l("status.inProgress")}),(0,b.jsx)(j.SelectItem,{value:"complete",children:l("status.complete")}),(0,b.jsx)(j.SelectItem,{value:"archived",children:l("status.archived")})]})]}),(0,b.jsxs)(j.Select,{value:E,onValueChange:F,children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:l("specsPage.filters.priority")})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"all",children:l("specsPage.filters.priorityAll")}),(0,b.jsx)(j.SelectItem,{value:"critical",children:l("priority.critical")}),(0,b.jsx)(j.SelectItem,{value:"high",children:l("priority.high")}),(0,b.jsx)(j.SelectItem,{value:"medium",children:l("priority.medium")}),(0,b.jsx)(j.SelectItem,{value:"low",children:l("priority.low")})]})]}),(0,b.jsxs)(j.Select,{value:I,onValueChange:a=>J(a),children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[130px] sm:w-[170px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:l("specsPage.filters.sort")})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"id-desc",children:l("specsPage.filters.sortOptions.id-desc")}),(0,b.jsx)(j.SelectItem,{value:"id-asc",children:l("specsPage.filters.sortOptions.id-asc")}),(0,b.jsx)(j.SelectItem,{value:"updated-desc",children:l("specsPage.filters.sortOptions.updated-desc")}),(0,b.jsx)(j.SelectItem,{value:"title-asc",children:l("specsPage.filters.sortOptions.title-asc")})]})]})]})]})]})}),(0,b.jsx)("div",{className:(0,z.cn)("flex-1 min-h-0","board"===O?"overflow-x-auto overflow-y-hidden":"overflow-y-auto"),children:"list"===O?(0,b.jsx)("div",{className:"w-full",children:(0,b.jsx)(G,{specs:T,getSpecUrl:m,projectId:d})}):(0,b.jsx)(H,{specs:T,onStatusChange:S,pendingSpecIds:s,showArchived:K,onToggleArchived:()=>L(!K),getSpecUrl:m,projectId:d})})]})})}function G({specs:a,getSpecUrl:c,projectId:e}){let{t:h}=(0,C.useTranslation)("common");return(0,b.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:gap-3 md:gap-4 pb-2 sm:pb-4 md:pb-8",children:a.map(a=>{let i={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[a.priority]||"border-l-gray-300",j=a.relationships&&a.relationships.dependsOn.length>0,k=!!(a.subSpecsCount&&a.subSpecsCount>0),l=c(a.specNumber||a.id),m=`${e}:${a.id}`;return(0,b.jsxs)(f.Card,{className:(0,z.cn)("hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.01] active:scale-[0.99] border-l-4 cursor-pointer touch-manipulation",i),onClick:()=>window.location.href=l,children:[(0,b.jsx)(f.CardHeader,{className:"pb-2 sm:pb-2.5 md:pb-3 px-3 sm:px-4 md:px-6 pt-3 sm:pt-4 md:pt-6",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-start md:justify-between md:gap-4",children:[(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)(d.default,{href:l,children:(0,b.jsxs)(f.CardTitle,{className:"text-sm sm:text-base md:text-lg font-semibold hover:text-primary transition-colors flex items-start flex-wrap gap-1.5 sm:gap-2 leading-snug sm:leading-normal",children:[a.specNumber?(0,b.jsxs)("span",{className:"font-mono text-xs sm:text-sm md:text-base font-normal text-muted-foreground flex-shrink-0",children:["#",a.specNumber.toString().padStart(3,"0")]}):null,(0,b.jsx)("span",{className:"flex-1 break-words",children:a.title||a.specName})]})}),a.title&&a.title!==a.specName&&(0,b.jsx)("p",{className:"text-[11px] sm:text-xs font-mono text-muted-foreground mt-1 sm:mt-1.5 truncate",children:a.specName})]}),(0,b.jsxs)("div",{className:"flex gap-1.5 sm:gap-2 flex-wrap md:shrink-0",children:[a.status&&(0,b.jsx)(x.StatusBadge,{status:a.status}),a.priority&&(0,b.jsx)(y.PriorityBadge,{priority:a.priority})]})]})}),(0,b.jsx)(f.CardContent,{className:"px-3 sm:px-4 md:px-6 pb-2.5 sm:pb-3 md:pb-6 pt-0",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between md:gap-4",children:[(0,b.jsx)("div",{className:"flex items-center gap-2 sm:gap-3 md:gap-4 text-[11px] sm:text-xs md:text-sm text-muted-foreground flex-wrap",children:a.updatedAt||k||j?(0,b.jsxs)(b.Fragment,{children:[a.updatedAt&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(n.Clock,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsx)("span",{className:"whitespace-nowrap",children:h("specsPage.metadata.updated",{time:(0,A.formatRelativeTime)(a.updatedAt)})})]}),k&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(r.FileText,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsx)("span",{className:"whitespace-nowrap",children:h("specsPage.metadata.files",{count:a.subSpecsCount})})]}),j&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(s.GitBranch,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsx)("span",{className:"whitespace-nowrap",children:h("specsPage.metadata.dependencies",{count:a.relationships.dependsOn.length})})]})]}):(0,b.jsx)("span",{className:"invisible hidden md:inline",children:h("specsPage.metadata.none")})}),a.tags&&a.tags.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1 sm:gap-1.5 md:gap-2 md:justify-end md:shrink-0",children:a.tags.map(a=>(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs font-mono text-muted-foreground hover:text-foreground transition-colors h-5 sm:h-auto px-1.5 sm:px-2",children:a},a))})]})})]},m)})})}function H({specs:a,onStatusChange:e,pendingSpecIds:h,showArchived:i,onToggleArchived:j,getSpecUrl:k,projectId:l}){let{t:m}=(0,C.useTranslation)("common"),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)({}),t=(0,c.useMemo)(()=>E.map(b=>({status:b,config:D[b],specs:a.filter(a=>a.status===b)})),[a]),u=(0,c.useMemo)(()=>{let b=new Map;return a.forEach(a=>b.set(a.id,a)),b},[a]),x=(0,c.useCallback)((a,b)=>{b.dataTransfer.setData("text/plain",a),b.dataTransfer.effectAllowed="move",o(a)},[]),A=(0,c.useCallback)(()=>{o(null),q(null)},[]),B=(0,c.useCallback)((a,b)=>{n&&(b.preventDefault(),b.dataTransfer.dropEffect="move",q(a))},[n]),F=(0,c.useCallback)((a,b)=>{if(!n)return;let c=b.relatedTarget;c&&b.currentTarget.contains(c)||q(b=>b===a?null:b)},[n]),G=(0,c.useCallback)((a,b)=>{b.preventDefault();let c=b.dataTransfer.getData("text/plain")||n;if(!c)return void A();let d=u.get(c);d&&d.status!==a&&e(d,a),A()},[n,A,e,u]);return(0,b.jsx)("div",{className:"flex flex-col md:flex-row gap-3 sm:gap-4 md:gap-6 h-full pb-2 md:snap-x md:snap-mandatory overflow-y-auto md:overflow-y-hidden md:overflow-x-auto",children:t.map(a=>{let c=a.config.icon,e="archived"===a.status,o=r[a.status],q=m(a.config.titleKey);return(0,b.jsxs)("div",{className:(0,z.cn)("flex flex-col flex-1 snap-start","h-auto md:h-full w-full md:w-auto flex-shrink-0",e&&!i?"md:w-12 md:sm:w-14 md:min-w-[3rem] md:sm:min-w-[3.5rem] flex-none":"md:min-w-[260px] md:sm:min-w-[280px] md:md:min-w-[300px]"),children:[(0,b.jsx)("div",{className:(0,z.cn)("flex-none mb-3 sm:mb-4 rounded-lg border-2 bg-background transition-all touch-manipulation",a.config.bgClass,a.config.borderClass,e?"cursor-pointer hover:opacity-80 active:opacity-70":"",e&&!i?"py-4 sm:py-6 px-1.5 sm:px-2":"p-2.5 sm:p-3","md:cursor-default cursor-pointer"),onClick:()=>{if(e)j();else{var b;window.innerWidth<768&&(b=a.status,s(a=>({...a,[b]:!a[b]})))}},children:(0,b.jsxs)("h2",{className:(0,z.cn)("text-base sm:text-lg font-semibold flex items-center gap-1.5 sm:gap-2",a.config.colorClass,e&&!i&&"flex-col text-xs sm:text-sm gap-2 sm:gap-3"),children:[(0,b.jsx)(c,{className:"h-4 w-4 sm:h-5 sm:w-5 flex-shrink-0"}),e&&!i?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"vertical-text text-xs sm:text-sm whitespace-nowrap",children:q}),(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1 sm:px-2 h-4 sm:h-5",children:a.specs.length})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"truncate flex-1",children:q}),(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1.5 sm:px-2 h-4 sm:h-5 flex-shrink-0",children:a.specs.length}),(0,b.jsx)("div",{className:"md:hidden ml-2 text-muted-foreground/50",children:o?(0,b.jsx)(w.ChevronRight,{className:"h-4 w-4"}):(0,b.jsx)(v.ChevronDown,{className:"h-4 w-4"})})]})]})}),(!e||i)&&!o&&(0,b.jsxs)("div",{className:(0,z.cn)("space-y-2 sm:space-y-2.5 md:space-y-3 flex-1 rounded-xl border border-transparent p-1 transition-colors overflow-y-auto min-h-0 scrollbar-thin",n&&"border-dashed border-muted-foreground/40",n&&p===a.status&&"bg-muted/40 border-primary/50"),onDragOver:b=>B(a.status,b),onDragLeave:b=>F(a.status,b),onDrop:b=>G(a.status,b),children:[a.specs.map(a=>{let c={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[a.priority]||"border-l-gray-300",e=!!h[a.id],i=k(a.specNumber||a.id),j=`${l}:${a.id}`;return(0,b.jsxs)(f.Card,{draggable:!e,onDragStart:b=>{e?b.preventDefault():x(a.id,b)},onDragEnd:A,"aria-disabled":e,className:(0,z.cn)("relative hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.02] active:scale-[0.99] border-l-4 cursor-pointer group flex flex-col touch-manipulation",c,e&&"opacity-60 cursor-wait"),onClick:()=>window.location.href=i,children:[e&&(0,b.jsx)("div",{className:"absolute inset-0 rounded-lg bg-background/80 flex items-center justify-center text-xs sm:text-sm font-medium z-10",children:m("specsPage.board.updating")}),(0,b.jsxs)(f.CardHeader,{className:"p-3 sm:p-4 pb-1.5 sm:pb-2 space-y-1 sm:space-y-1.5",children:[(0,b.jsx)("div",{className:"flex items-center justify-between",children:(0,b.jsx)("span",{className:"font-mono text-[10px] sm:text-xs text-muted-foreground/70 group-hover:text-primary/60 transition-colors",children:a.specNumber?`#${a.specNumber}`:""})}),(0,b.jsx)(d.default,{href:i,className:"block",children:(0,b.jsx)(f.CardTitle,{className:"text-xs sm:text-sm font-semibold leading-snug hover:text-primary transition-colors line-clamp-3",children:a.title||a.specName})})]}),(0,b.jsx)(f.CardContent,{className:"p-3 sm:p-4 pt-1.5 sm:pt-2 flex-1 flex flex-col justify-end",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3",children:[a.title&&a.title!==a.specName&&(0,b.jsx)("p",{className:"text-[10px] sm:text-xs font-mono text-muted-foreground truncate opacity-70",children:a.specName}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1.5 sm:gap-2 pt-0.5 sm:pt-1",children:[a.priority?(0,b.jsx)(y.PriorityBadge,{priority:a.priority}):(0,b.jsx)("div",{}),a.tags&&a.tags.length>0&&(0,b.jsxs)("div",{className:"flex flex-wrap gap-0.5 sm:gap-1 justify-end",children:[a.tags.slice(0,2).map(a=>(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:a},a)),a.tags.length>2&&(0,b.jsxs)(g.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:["+",a.tags.length-2]})]})]})]})})]},j)}),0===a.specs.length&&(0,b.jsx)(f.Card,{className:"border-dashed border-gray-300 dark:border-gray-700 bg-transparent",children:(0,b.jsxs)(f.CardContent,{className:"py-6 sm:py-8 text-center px-2",children:[(0,b.jsx)(c,{className:(0,z.cn)("mx-auto h-6 w-6 sm:h-8 sm:w-8 mb-1.5 sm:mb-2",a.config.colorClass,"opacity-50")}),(0,b.jsx)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:m("specsPage.board.dropHere")})]})})]})]},a.status)})})}a.s(["SpecsClient",()=>F])}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=packages_ui_src_components_specs-client_tsx_01341e35._.js.map
|
|
@@ -11,9 +11,9 @@ globalThis.__BUILD_MANIFEST = {
|
|
|
11
11
|
"static/chunks/4d448bd419c5fa8b.js",
|
|
12
12
|
"static/chunks/c58f2494eae10887.js",
|
|
13
13
|
"static/chunks/8c954604d58867d1.js",
|
|
14
|
-
"static/chunks/
|
|
14
|
+
"static/chunks/2769a6addee16819.js",
|
|
15
15
|
"static/chunks/0f030b417a218e42.js",
|
|
16
|
-
"static/chunks/turbopack-
|
|
16
|
+
"static/chunks/turbopack-ee7289036a2ef92e.js"
|
|
17
17
|
]
|
|
18
18
|
};
|
|
19
19
|
globalThis.__BUILD_MANIFEST.lowPriorityFiles = [
|