@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,19 +1,142 @@
|
|
|
1
|
-
import { useState, useEffect } from 'react';
|
|
2
|
-
import { useParams } from 'react-router-dom';
|
|
3
|
-
import
|
|
1
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
2
|
+
import { useParams, useNavigate } from 'react-router-dom';
|
|
3
|
+
import ReactFlow, {
|
|
4
|
+
type Node,
|
|
5
|
+
type Edge,
|
|
6
|
+
Controls,
|
|
7
|
+
Background,
|
|
8
|
+
useNodesState,
|
|
9
|
+
useEdgesState,
|
|
10
|
+
MarkerType,
|
|
11
|
+
Position,
|
|
12
|
+
} from 'reactflow';
|
|
13
|
+
import 'reactflow/dist/style.css';
|
|
14
|
+
import dagre from '@dagrejs/dagre';
|
|
15
|
+
import { Card, CardContent, CardHeader, CardTitle, Button } from '@leanspec/ui-components';
|
|
16
|
+
import { Network, List } from 'lucide-react';
|
|
17
|
+
import { api, type DependencyGraph as APIDependencyGraph } from '../lib/api';
|
|
18
|
+
|
|
19
|
+
// Node layout using dagre
|
|
20
|
+
const getLayoutedElements = (nodes: Node[], edges: Edge[], direction = 'TB') => {
|
|
21
|
+
const dagreGraph = new dagre.graphlib.Graph();
|
|
22
|
+
dagreGraph.setDefaultEdgeLabel(() => ({}));
|
|
23
|
+
|
|
24
|
+
const nodeWidth = 200;
|
|
25
|
+
const nodeHeight = 80;
|
|
26
|
+
|
|
27
|
+
dagreGraph.setGraph({ rankdir: direction, ranksep: 100, nodesep: 50 });
|
|
28
|
+
|
|
29
|
+
nodes.forEach((node) => {
|
|
30
|
+
dagreGraph.setNode(node.id, { width: nodeWidth, height: nodeHeight });
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
edges.forEach((edge) => {
|
|
34
|
+
dagreGraph.setEdge(edge.source, edge.target);
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
dagre.layout(dagreGraph);
|
|
38
|
+
|
|
39
|
+
const layoutedNodes = nodes.map((node) => {
|
|
40
|
+
const nodeWithPosition = dagreGraph.node(node.id);
|
|
41
|
+
return {
|
|
42
|
+
...node,
|
|
43
|
+
position: {
|
|
44
|
+
x: nodeWithPosition.x - nodeWidth / 2,
|
|
45
|
+
y: nodeWithPosition.y - nodeHeight / 2,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
return { nodes: layoutedNodes, edges };
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const getStatusColor = (status: string) => {
|
|
54
|
+
switch (status) {
|
|
55
|
+
case 'complete':
|
|
56
|
+
return 'bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-300 border-green-500';
|
|
57
|
+
case 'in-progress':
|
|
58
|
+
return 'bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-300 border-blue-500';
|
|
59
|
+
case 'planned':
|
|
60
|
+
return 'bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-300 border-purple-500';
|
|
61
|
+
case 'archived':
|
|
62
|
+
return 'bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-300 border-gray-500';
|
|
63
|
+
default:
|
|
64
|
+
return 'bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-300 border-gray-500';
|
|
65
|
+
}
|
|
66
|
+
};
|
|
4
67
|
|
|
5
68
|
export function DependenciesPage() {
|
|
6
69
|
const { specName } = useParams<{ specName: string }>();
|
|
7
|
-
const
|
|
70
|
+
const navigate = useNavigate();
|
|
71
|
+
const [graph, setGraph] = useState<APIDependencyGraph | null>(null);
|
|
8
72
|
const [loading, setLoading] = useState(true);
|
|
9
73
|
const [error, setError] = useState<string | null>(null);
|
|
74
|
+
const [viewMode, setViewMode] = useState<'graph' | 'list'>('graph');
|
|
75
|
+
|
|
76
|
+
const [nodes, setNodes, onNodesChange] = useNodesState([]);
|
|
77
|
+
const [edges, setEdges, onEdgesChange] = useEdgesState([]);
|
|
10
78
|
|
|
11
79
|
useEffect(() => {
|
|
12
80
|
api.getDependencies(specName)
|
|
13
|
-
.then(
|
|
81
|
+
.then((data) => {
|
|
82
|
+
setGraph(data);
|
|
83
|
+
|
|
84
|
+
// Convert API graph to React Flow format
|
|
85
|
+
const flowNodes: Node[] = data.nodes.map((node) => ({
|
|
86
|
+
id: node.id,
|
|
87
|
+
data: {
|
|
88
|
+
label: (
|
|
89
|
+
<div className="text-center p-2">
|
|
90
|
+
<div className="font-medium text-sm">{node.name}</div>
|
|
91
|
+
<div className={`text-xs px-2 py-0.5 rounded mt-1 ${getStatusColor(node.status)}`}>
|
|
92
|
+
{node.status}
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
),
|
|
96
|
+
name: node.name,
|
|
97
|
+
status: node.status,
|
|
98
|
+
},
|
|
99
|
+
position: { x: 0, y: 0 },
|
|
100
|
+
type: 'default',
|
|
101
|
+
sourcePosition: Position.Bottom,
|
|
102
|
+
targetPosition: Position.Top,
|
|
103
|
+
style: {
|
|
104
|
+
border: '2px solid',
|
|
105
|
+
borderRadius: '8px',
|
|
106
|
+
padding: '10px',
|
|
107
|
+
width: 200,
|
|
108
|
+
},
|
|
109
|
+
className: getStatusColor(node.status),
|
|
110
|
+
}));
|
|
111
|
+
|
|
112
|
+
const flowEdges: Edge[] = data.edges.map((edge, index) => ({
|
|
113
|
+
id: `${edge.source}-${edge.target}-${index}`,
|
|
114
|
+
source: edge.source,
|
|
115
|
+
target: edge.target,
|
|
116
|
+
type: 'smoothstep',
|
|
117
|
+
animated: edge.type === 'depends_on',
|
|
118
|
+
markerEnd: {
|
|
119
|
+
type: MarkerType.ArrowClosed,
|
|
120
|
+
},
|
|
121
|
+
label: edge.type === 'depends_on' ? 'depends on' : 'required by',
|
|
122
|
+
style: { stroke: edge.type === 'depends_on' ? '#3B82F6' : '#6B7280' },
|
|
123
|
+
}));
|
|
124
|
+
|
|
125
|
+
const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(
|
|
126
|
+
flowNodes,
|
|
127
|
+
flowEdges
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
setNodes(layoutedNodes);
|
|
131
|
+
setEdges(layoutedEdges);
|
|
132
|
+
})
|
|
14
133
|
.catch((err) => setError(err.message))
|
|
15
134
|
.finally(() => setLoading(false));
|
|
16
|
-
}, [specName]);
|
|
135
|
+
}, [specName, setNodes, setEdges]);
|
|
136
|
+
|
|
137
|
+
const onNodeClick = useCallback((_event: React.MouseEvent, node: Node) => {
|
|
138
|
+
navigate(`/specs/${node.id}`);
|
|
139
|
+
}, [navigate]);
|
|
17
140
|
|
|
18
141
|
if (loading) {
|
|
19
142
|
return <div className="text-center py-12">Loading dependencies...</div>;
|
|
@@ -28,39 +151,102 @@ export function DependenciesPage() {
|
|
|
28
151
|
}
|
|
29
152
|
|
|
30
153
|
return (
|
|
31
|
-
<div>
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
154
|
+
<div className="space-y-4">
|
|
155
|
+
<div className="flex items-center justify-between">
|
|
156
|
+
<div>
|
|
157
|
+
<h2 className="text-2xl font-bold">
|
|
158
|
+
{specName ? `Dependencies for ${specName}` : 'All Dependencies'}
|
|
159
|
+
</h2>
|
|
160
|
+
<p className="text-muted-foreground mt-1">
|
|
161
|
+
{graph.nodes.length} specs, {graph.edges.length} relationships
|
|
162
|
+
</p>
|
|
163
|
+
</div>
|
|
164
|
+
<div className="flex gap-2">
|
|
165
|
+
<Button
|
|
166
|
+
variant={viewMode === 'graph' ? 'default' : 'outline'}
|
|
167
|
+
size="sm"
|
|
168
|
+
onClick={() => setViewMode('graph')}
|
|
169
|
+
>
|
|
170
|
+
<Network className="w-4 h-4 mr-2" />
|
|
171
|
+
Graph
|
|
172
|
+
</Button>
|
|
173
|
+
<Button
|
|
174
|
+
variant={viewMode === 'list' ? 'default' : 'outline'}
|
|
175
|
+
size="sm"
|
|
176
|
+
onClick={() => setViewMode('list')}
|
|
177
|
+
>
|
|
178
|
+
<List className="w-4 h-4 mr-2" />
|
|
179
|
+
List
|
|
180
|
+
</Button>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
{viewMode === 'graph' ? (
|
|
185
|
+
<Card>
|
|
186
|
+
<CardContent className="p-0">
|
|
187
|
+
<div style={{ height: '600px' }} className="border rounded-lg">
|
|
188
|
+
<ReactFlow
|
|
189
|
+
nodes={nodes}
|
|
190
|
+
edges={edges}
|
|
191
|
+
onNodesChange={onNodesChange}
|
|
192
|
+
onEdgesChange={onEdgesChange}
|
|
193
|
+
onNodeClick={onNodeClick}
|
|
194
|
+
fitView
|
|
195
|
+
attributionPosition="bottom-left"
|
|
196
|
+
>
|
|
197
|
+
<Controls />
|
|
198
|
+
<Background />
|
|
199
|
+
</ReactFlow>
|
|
50
200
|
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
<h3 className="font-medium mb-2">Edges ({graph.edges.length})</h3>
|
|
54
|
-
<div className="space-y-1">
|
|
55
|
-
{graph.edges.map((edge, i) => (
|
|
56
|
-
<div key={i} className="text-sm text-muted-foreground">
|
|
57
|
-
{edge.source} → {edge.target} ({edge.type})
|
|
58
|
-
</div>
|
|
59
|
-
))}
|
|
201
|
+
<div className="p-4 text-sm text-muted-foreground">
|
|
202
|
+
Click on a node to view spec details. Use mouse wheel to zoom, drag to pan.
|
|
60
203
|
</div>
|
|
61
|
-
</
|
|
204
|
+
</CardContent>
|
|
205
|
+
</Card>
|
|
206
|
+
) : (
|
|
207
|
+
<div className="grid gap-6 md:grid-cols-2">
|
|
208
|
+
<Card>
|
|
209
|
+
<CardHeader>
|
|
210
|
+
<CardTitle>Specs ({graph.nodes.length})</CardTitle>
|
|
211
|
+
</CardHeader>
|
|
212
|
+
<CardContent>
|
|
213
|
+
<div className="space-y-2">
|
|
214
|
+
{graph.nodes.map((node) => (
|
|
215
|
+
<button
|
|
216
|
+
key={node.id}
|
|
217
|
+
onClick={() => navigate(`/specs/${node.id}`)}
|
|
218
|
+
className="w-full p-3 bg-secondary rounded-lg hover:bg-secondary/80 transition-colors text-left"
|
|
219
|
+
>
|
|
220
|
+
<div className="font-medium">{node.name}</div>
|
|
221
|
+
<div className={`text-xs px-2 py-0.5 rounded mt-1 inline-block ${getStatusColor(node.status)}`}>
|
|
222
|
+
{node.status}
|
|
223
|
+
</div>
|
|
224
|
+
</button>
|
|
225
|
+
))}
|
|
226
|
+
</div>
|
|
227
|
+
</CardContent>
|
|
228
|
+
</Card>
|
|
229
|
+
|
|
230
|
+
<Card>
|
|
231
|
+
<CardHeader>
|
|
232
|
+
<CardTitle>Relationships ({graph.edges.length})</CardTitle>
|
|
233
|
+
</CardHeader>
|
|
234
|
+
<CardContent>
|
|
235
|
+
<div className="space-y-2">
|
|
236
|
+
{graph.edges.map((edge, i) => (
|
|
237
|
+
<div key={i} className="p-3 bg-secondary rounded-lg text-sm">
|
|
238
|
+
<div className="font-medium">{edge.source}</div>
|
|
239
|
+
<div className="text-xs text-muted-foreground my-1">
|
|
240
|
+
{edge.type === 'depends_on' ? '↓ depends on' : '↑ required by'}
|
|
241
|
+
</div>
|
|
242
|
+
<div className="font-medium">{edge.target}</div>
|
|
243
|
+
</div>
|
|
244
|
+
))}
|
|
245
|
+
</div>
|
|
246
|
+
</CardContent>
|
|
247
|
+
</Card>
|
|
62
248
|
</div>
|
|
63
|
-
|
|
249
|
+
)}
|
|
64
250
|
</div>
|
|
65
251
|
);
|
|
66
252
|
}
|
|
@@ -4,6 +4,7 @@ import { ArrowLeft, Edit2, Save, X } from 'lucide-react';
|
|
|
4
4
|
import ReactMarkdown from 'react-markdown';
|
|
5
5
|
import remarkGfm from 'remark-gfm';
|
|
6
6
|
import { api, type SpecDetail, type Spec } from '../lib/api';
|
|
7
|
+
import { MermaidDiagram } from '../components/MermaidDiagram';
|
|
7
8
|
|
|
8
9
|
function MetadataEditor({
|
|
9
10
|
spec,
|
|
@@ -256,7 +257,29 @@ export function SpecDetailPage() {
|
|
|
256
257
|
)}
|
|
257
258
|
|
|
258
259
|
<div className="prose prose-sm dark:prose-invert max-w-none">
|
|
259
|
-
<ReactMarkdown
|
|
260
|
+
<ReactMarkdown
|
|
261
|
+
remarkPlugins={[remarkGfm]}
|
|
262
|
+
components={{
|
|
263
|
+
code({ className, children, ...props }: any) {
|
|
264
|
+
const inline = !className?.includes('language-');
|
|
265
|
+
const match = /language-(\w+)/.exec(className || '');
|
|
266
|
+
const language = match ? match[1] : null;
|
|
267
|
+
const code = String(children).replace(/\n$/, '');
|
|
268
|
+
|
|
269
|
+
// Render mermaid diagrams
|
|
270
|
+
if (!inline && language === 'mermaid') {
|
|
271
|
+
return <MermaidDiagram chart={code} className="my-4" />;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Regular code blocks
|
|
275
|
+
return (
|
|
276
|
+
<code className={className} {...props}>
|
|
277
|
+
{children}
|
|
278
|
+
</code>
|
|
279
|
+
);
|
|
280
|
+
},
|
|
281
|
+
}}
|
|
282
|
+
>
|
|
260
283
|
{spec.content}
|
|
261
284
|
</ReactMarkdown>
|
|
262
285
|
</div>
|
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
import { useState, useEffect } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
BarChart,
|
|
4
|
+
Bar,
|
|
5
|
+
PieChart,
|
|
6
|
+
Pie,
|
|
7
|
+
Cell,
|
|
8
|
+
XAxis,
|
|
9
|
+
YAxis,
|
|
10
|
+
CartesianGrid,
|
|
11
|
+
Tooltip,
|
|
12
|
+
ResponsiveContainer,
|
|
13
|
+
Legend
|
|
14
|
+
} from 'recharts';
|
|
15
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@leanspec/ui-components';
|
|
2
16
|
import { api, type Stats } from '../lib/api';
|
|
3
17
|
|
|
18
|
+
const STATUS_COLORS = {
|
|
19
|
+
planned: '#3B82F6',
|
|
20
|
+
'in-progress': '#F59E0B',
|
|
21
|
+
complete: '#10B981',
|
|
22
|
+
archived: '#6B7280',
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const PRIORITY_COLORS = {
|
|
26
|
+
critical: '#EF4444',
|
|
27
|
+
high: '#F59E0B',
|
|
28
|
+
medium: '#3B82F6',
|
|
29
|
+
low: '#6B7280',
|
|
30
|
+
};
|
|
31
|
+
|
|
4
32
|
export function StatsPage() {
|
|
5
33
|
const [stats, setStats] = useState<Stats | null>(null);
|
|
6
34
|
const [loading, setLoading] = useState(true);
|
|
@@ -25,54 +53,153 @@ export function StatsPage() {
|
|
|
25
53
|
);
|
|
26
54
|
}
|
|
27
55
|
|
|
56
|
+
// Prepare data for charts
|
|
57
|
+
const statusData = Object.entries(stats.by_status).map(([status, count]) => ({
|
|
58
|
+
name: status.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' '),
|
|
59
|
+
value: count,
|
|
60
|
+
fill: STATUS_COLORS[status as keyof typeof STATUS_COLORS] || '#6B7280',
|
|
61
|
+
}));
|
|
62
|
+
|
|
63
|
+
const priorityData = Object.entries(stats.by_priority).map(([priority, count]) => ({
|
|
64
|
+
name: priority.charAt(0).toUpperCase() + priority.slice(1),
|
|
65
|
+
value: count,
|
|
66
|
+
fill: PRIORITY_COLORS[priority as keyof typeof PRIORITY_COLORS] || '#6B7280',
|
|
67
|
+
}));
|
|
68
|
+
|
|
69
|
+
const completionRate = stats.total > 0
|
|
70
|
+
? ((stats.by_status.complete || 0) / stats.total * 100).toFixed(1)
|
|
71
|
+
: '0';
|
|
72
|
+
|
|
28
73
|
return (
|
|
29
|
-
<div>
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
</
|
|
60
|
-
</
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
<
|
|
64
|
-
<
|
|
74
|
+
<div className="space-y-6">
|
|
75
|
+
<div>
|
|
76
|
+
<h2 className="text-2xl font-bold">Statistics</h2>
|
|
77
|
+
<p className="text-muted-foreground mt-1">Overview of your specifications</p>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
{/* Summary Cards */}
|
|
81
|
+
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-4">
|
|
82
|
+
<Card>
|
|
83
|
+
<CardHeader className="pb-2">
|
|
84
|
+
<CardTitle className="text-sm font-medium text-muted-foreground">
|
|
85
|
+
Total Specs
|
|
86
|
+
</CardTitle>
|
|
87
|
+
</CardHeader>
|
|
88
|
+
<CardContent>
|
|
89
|
+
<div className="text-3xl font-bold">{stats.total}</div>
|
|
90
|
+
</CardContent>
|
|
91
|
+
</Card>
|
|
92
|
+
|
|
93
|
+
<Card>
|
|
94
|
+
<CardHeader className="pb-2">
|
|
95
|
+
<CardTitle className="text-sm font-medium text-muted-foreground">
|
|
96
|
+
Completed
|
|
97
|
+
</CardTitle>
|
|
98
|
+
</CardHeader>
|
|
99
|
+
<CardContent>
|
|
100
|
+
<div className="text-3xl font-bold">{stats.by_status.complete || 0}</div>
|
|
101
|
+
<p className="text-xs text-muted-foreground mt-1">
|
|
102
|
+
{completionRate}% completion rate
|
|
103
|
+
</p>
|
|
104
|
+
</CardContent>
|
|
105
|
+
</Card>
|
|
106
|
+
|
|
107
|
+
<Card>
|
|
108
|
+
<CardHeader className="pb-2">
|
|
109
|
+
<CardTitle className="text-sm font-medium text-muted-foreground">
|
|
110
|
+
In Progress
|
|
111
|
+
</CardTitle>
|
|
112
|
+
</CardHeader>
|
|
113
|
+
<CardContent>
|
|
114
|
+
<div className="text-3xl font-bold">{stats.by_status['in-progress'] || 0}</div>
|
|
115
|
+
</CardContent>
|
|
116
|
+
</Card>
|
|
117
|
+
|
|
118
|
+
<Card>
|
|
119
|
+
<CardHeader className="pb-2">
|
|
120
|
+
<CardTitle className="text-sm font-medium text-muted-foreground">
|
|
121
|
+
Planned
|
|
122
|
+
</CardTitle>
|
|
123
|
+
</CardHeader>
|
|
124
|
+
<CardContent>
|
|
125
|
+
<div className="text-3xl font-bold">{stats.by_status.planned || 0}</div>
|
|
126
|
+
</CardContent>
|
|
127
|
+
</Card>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
{/* Charts */}
|
|
131
|
+
<div className="grid gap-6 md:grid-cols-2">
|
|
132
|
+
{/* Status Distribution - Pie Chart */}
|
|
133
|
+
<Card>
|
|
134
|
+
<CardHeader>
|
|
135
|
+
<CardTitle>Status Distribution</CardTitle>
|
|
136
|
+
</CardHeader>
|
|
137
|
+
<CardContent>
|
|
138
|
+
<ResponsiveContainer width="100%" height={300}>
|
|
139
|
+
<PieChart>
|
|
140
|
+
<Pie
|
|
141
|
+
data={statusData}
|
|
142
|
+
cx="50%"
|
|
143
|
+
cy="50%"
|
|
144
|
+
labelLine={false}
|
|
145
|
+
label={({ name, value }) => `${name}: ${value}`}
|
|
146
|
+
outerRadius={80}
|
|
147
|
+
dataKey="value"
|
|
148
|
+
>
|
|
149
|
+
{statusData.map((entry, index) => (
|
|
150
|
+
<Cell key={`cell-${index}`} fill={entry.fill} />
|
|
151
|
+
))}
|
|
152
|
+
</Pie>
|
|
153
|
+
<Tooltip />
|
|
154
|
+
<Legend />
|
|
155
|
+
</PieChart>
|
|
156
|
+
</ResponsiveContainer>
|
|
157
|
+
</CardContent>
|
|
158
|
+
</Card>
|
|
159
|
+
|
|
160
|
+
{/* Priority Distribution - Bar Chart */}
|
|
161
|
+
<Card>
|
|
162
|
+
<CardHeader>
|
|
163
|
+
<CardTitle>Priority Distribution</CardTitle>
|
|
164
|
+
</CardHeader>
|
|
165
|
+
<CardContent>
|
|
166
|
+
<ResponsiveContainer width="100%" height={300}>
|
|
167
|
+
<BarChart data={priorityData}>
|
|
168
|
+
<CartesianGrid strokeDasharray="3 3" />
|
|
169
|
+
<XAxis dataKey="name" />
|
|
170
|
+
<YAxis />
|
|
171
|
+
<Tooltip />
|
|
172
|
+
<Legend />
|
|
173
|
+
<Bar dataKey="value" fill="#3B82F6" />
|
|
174
|
+
</BarChart>
|
|
175
|
+
</ResponsiveContainer>
|
|
176
|
+
</CardContent>
|
|
177
|
+
</Card>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
{/* Tags */}
|
|
181
|
+
{Object.keys(stats.by_tag).length > 0 && (
|
|
182
|
+
<Card>
|
|
183
|
+
<CardHeader>
|
|
184
|
+
<CardTitle>Tags</CardTitle>
|
|
185
|
+
</CardHeader>
|
|
186
|
+
<CardContent>
|
|
65
187
|
<div className="grid gap-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4">
|
|
66
|
-
{Object.entries(stats.by_tag)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
188
|
+
{Object.entries(stats.by_tag)
|
|
189
|
+
.sort(([, a], [, b]) => b - a)
|
|
190
|
+
.map(([tag, count]) => (
|
|
191
|
+
<div
|
|
192
|
+
key={tag}
|
|
193
|
+
className="flex justify-between items-center p-3 bg-secondary rounded-lg hover:bg-secondary/80 transition-colors"
|
|
194
|
+
>
|
|
195
|
+
<span className="text-sm font-medium">{tag}</span>
|
|
196
|
+
<span className="text-sm font-bold">{count}</span>
|
|
197
|
+
</div>
|
|
198
|
+
))}
|
|
72
199
|
</div>
|
|
73
|
-
</
|
|
74
|
-
|
|
75
|
-
|
|
200
|
+
</CardContent>
|
|
201
|
+
</Card>
|
|
202
|
+
)}
|
|
76
203
|
</div>
|
|
77
204
|
);
|
|
78
205
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { createBrowserRouter
|
|
1
|
+
import { createBrowserRouter } from 'react-router-dom';
|
|
2
2
|
import { Layout } from './components/Layout';
|
|
3
|
+
import { DashboardPage } from './pages/DashboardPage';
|
|
3
4
|
import { SpecsPage } from './pages/SpecsPage';
|
|
4
5
|
import { SpecDetailPage } from './pages/SpecDetailPage';
|
|
5
6
|
import { StatsPage } from './pages/StatsPage';
|
|
@@ -11,7 +12,7 @@ export const router = createBrowserRouter([
|
|
|
11
12
|
path: '/',
|
|
12
13
|
element: <Layout />,
|
|
13
14
|
children: [
|
|
14
|
-
{ index: true, element: <
|
|
15
|
+
{ index: true, element: <DashboardPage /> },
|
|
15
16
|
{ path: 'specs', element: <SpecsPage /> },
|
|
16
17
|
{ path: 'specs/:specName', element: <SpecDetailPage /> },
|
|
17
18
|
{ path: 'stats', element: <StatsPage /> },
|