@leanspec/ui 0.2.8 → 0.2.9
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/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64 → @img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64}/package.json +7 -13
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/README.md +2 -2
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/glib-2.0/include/glibconfig.h +8 -9
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib} +0 -0
- package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/package.json +5 -11
- 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 +2 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +4 -4
- package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
- package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
- package/.next/standalone/packages/ui/.next/routes-manifest.json +12 -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/page_client-reference-manifest.js +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/_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.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/_index.segment.rsc +11 -11
- 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 +5 -5
- 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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route_client-reference-manifest.js +2 -0
- 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.nft.json +1 -1
- 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.nft.json +1 -1
- 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]/route.js.nft.json +1 -1
- 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.nft.json +1 -1
- 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/route.js.nft.json +1 -1
- 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/specs/[id]/dependency-graph/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +19 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/dependencies/page_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.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]/page/build-manifest.json +2 -2
- 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.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.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/page/build-manifest.json +2 -2
- 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 +24 -23
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -23
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
- 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/specs/[id]/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page/build-manifest.json +2 -2
- package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +2 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b0969111._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_dependencies_route_actions_cf6b14c3.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__3c77d95b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__daee3355._.js → [root-of-the-server]__8608a6fa._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__fd80e4dd._.js → [root-of-the-server]__a965a67b._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daedd80e._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__dc176c61._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8cec504f._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_22274047._.js → _adb9d7cb._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_da18b655._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ea899b87._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f38e75b7._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_fe120f8a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_015f83ca._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1120b57c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_151891de._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1c916fe3._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_80605a06._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_bb80de48._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e8075f9b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_f919ef4a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_dependencies_page_actions_57387d47.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_dependencies_dependencies-client_tsx_0e82443a._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.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/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/094cf9f4e3553261.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/1c015eb9eaaf9f9c.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/{f6dd06e6d22d2d12.js → 1d36660b2877d213.js} +3 -3
- package/.next/standalone/packages/ui/.next/static/chunks/46275d9d67603bf5.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/4d29ca0fa6843070.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/59854b15bf046467.js +1 -0
- package/.next/{static/chunks/dae403679aae65f4.js → standalone/packages/ui/.next/static/chunks/5fd8101e32b076b1.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/6d938a49daa10208.js +2 -0
- package/.next/standalone/packages/ui/.next/static/chunks/979625373d5474b6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/a33f10af6abef4df.js +10 -0
- package/.next/{static/chunks/794f3931f1ca12d2.js → standalone/packages/ui/.next/static/chunks/a3d7e1be47de010b.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/b53250480fde6816.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/b7f19087afe1d2c9.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c658e22a605e0ed1.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c92660d8d0c4763d.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/ddd87cd0d26bc2f5.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/eeec245955b3b600.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
- package/.next/{static/chunks/turbopack-5fa55215af0efb15.js → standalone/packages/ui/.next/static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +20 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +59 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +427 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +436 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +20 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +10 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +7 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +9 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +8 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +1 -1
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +23 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +19 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +63 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +51 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +171 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +36 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +46 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +19 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +162 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +364 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +531 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +277 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +70 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +87 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +27 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +5 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +43 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +425 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +283 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +46 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +52 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +175 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +96 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +95 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +210 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +53 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +180 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +119 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +369 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +372 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +42 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +70 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-metadata.tsx +136 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +127 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +186 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +561 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +53 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +143 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +130 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +11 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +37 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +50 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +36 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +110 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +57 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +76 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +153 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +122 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +24 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +159 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +31 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +15 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +55 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +30 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +32 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +76 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +42 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +114 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +123 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +156 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +216 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +105 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +120 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +94 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +249 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +55 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +152 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +171 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +17 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +18 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +58 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +34 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +14 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +7 -3
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +5 -3
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +2 -1
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +8 -3
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +73 -259
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +5 -3
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +5 -3
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +5 -3
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +33 -23
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +7 -3
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +25 -14
- package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +332 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +525 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +387 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +613 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +266 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +100 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +172 -0
- package/.next/standalone/packages/ui/package.json +3 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +81 -0
- package/.next/standalone/packages/ui/src/app/context/context-client.tsx +23 -1
- package/.next/standalone/packages/ui/src/app/dependencies/constants.ts +24 -0
- package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +625 -0
- package/.next/standalone/packages/ui/src/app/dependencies/index.ts +19 -0
- package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +38 -0
- package/.next/standalone/packages/ui/src/app/dependencies/spec-node.tsx +80 -0
- package/.next/standalone/packages/ui/src/app/dependencies/spec-sidebar.tsx +198 -0
- package/.next/standalone/packages/ui/src/app/dependencies/types.ts +37 -0
- package/.next/standalone/packages/ui/src/app/dependencies/utils.ts +194 -0
- package/.next/standalone/packages/ui/src/components/context-file-detail.tsx +308 -0
- package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +96 -2
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/chunks/094cf9f4e3553261.js +1 -0
- package/.next/static/chunks/1c015eb9eaaf9f9c.js +1 -0
- package/.next/static/chunks/{f6dd06e6d22d2d12.js → 1d36660b2877d213.js} +3 -3
- package/.next/static/chunks/46275d9d67603bf5.js +1 -0
- package/.next/static/chunks/4d29ca0fa6843070.js +2 -0
- package/.next/static/chunks/59854b15bf046467.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js → static/chunks/5fd8101e32b076b1.js} +1 -1
- package/.next/static/chunks/6d938a49daa10208.js +2 -0
- package/.next/static/chunks/979625373d5474b6.js +1 -0
- package/.next/static/chunks/a33f10af6abef4df.js +10 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/794f3931f1ca12d2.js → static/chunks/a3d7e1be47de010b.js} +1 -1
- package/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
- package/.next/static/chunks/b53250480fde6816.js +1 -0
- package/.next/static/chunks/b7f19087afe1d2c9.css +1 -0
- package/.next/static/chunks/c658e22a605e0ed1.js +1 -0
- package/.next/static/chunks/c92660d8d0c4763d.js +1 -0
- package/.next/static/chunks/ddd87cd0d26bc2f5.js +1 -0
- package/.next/static/chunks/eeec245955b3b600.js +5 -0
- package/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/turbopack-5fa55215af0efb15.js → static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
- package/package.json +4 -2
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
- package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ac867463._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b397e94a._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +0 -10
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
- package/.next/standalone/packages/ui/dist/BUILD_ID +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +0 -3
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +0 -5
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +0 -1
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +0 -4
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +0 -2
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +0 -19
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +0 -3
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +0 -11
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +0 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +0 -1
- package/.next/static/chunks/1eb8283995f370c6.js +0 -1
- package/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
- package/.next/static/chunks/37a1236ed50645a6.js +0 -1
- package/.next/static/chunks/9d84ba08a41145ec.js +0 -5
- package/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
- package/.next/static/chunks/c4b1faff3361a749.js +0 -1
- package/.next/static/chunks/d7420d2a867e57b5.js +0 -1
- package/.next/static/chunks/efded9da04c960d8.js +0 -1
- package/.next/static/chunks/f382932f1a5d6359.js +0 -10
- package/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/index.js +0 -0
- /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/versions.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → 8PwFWS-09QjFSbDbfp15t}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → 8PwFWS-09QjFSbDbfp15t}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → 8PwFWS-09QjFSbDbfp15t}/_ssgManifest.js +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/favicon.ico +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/file.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/github-mark-white.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/github-mark.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/globe.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/icon.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/logo-dark-bg.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/logo-with-bg.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/logo.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/next.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/vercel.svg +0 -0
- /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/window.svg +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/8PwFWS-09QjFSbDbfp15t}/_buildManifest.js +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/8PwFWS-09QjFSbDbfp15t}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/8PwFWS-09QjFSbDbfp15t}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,525761,e=>{"use strict";let t=(0,e.i(122436).default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>t],525761)},306839,e=>{"use strict";var t=e.i(431231);let n=["top","right","bottom","left"],r=Math.min,i=Math.max,o=Math.round,l=Math.floor,a=e=>({x:e,y:e}),f={left:"right",right:"left",bottom:"top",top:"bottom"},s={start:"end",end:"start"};function c(e,t){return"function"==typeof e?e(t):e}function u(e){return e.split("-")[0]}function d(e){return e.split("-")[1]}function p(e){return"x"===e?"y":"x"}function h(e){return"y"===e?"height":"width"}let m=new Set(["top","bottom"]);function g(e){return m.has(u(e))?"y":"x"}function y(e){return e.replace(/start|end/g,e=>s[e])}let w=["left","right"],x=["right","left"],v=["top","bottom"],b=["bottom","top"];function R(e){return e.replace(/left|right|bottom|top/g,e=>f[e])}function A(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function S(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function C(e,t,n){let r,{reference:i,floating:o}=e,l=g(t),a=p(g(t)),f=h(a),s=u(t),c="y"===l,m=i.x+i.width/2-o.width/2,y=i.y+i.height/2-o.height/2,w=i[f]/2-o[f]/2;switch(s){case"top":r={x:m,y:i.y-o.height};break;case"bottom":r={x:m,y:i.y+i.height};break;case"right":r={x:i.x+i.width,y:y};break;case"left":r={x:i.x-o.width,y:y};break;default:r={x:i.x,y:i.y}}switch(d(t)){case"start":r[a]-=w*(n&&c?-1:1);break;case"end":r[a]+=w*(n&&c?-1:1)}return r}let L=async(e,t,n)=>{let{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:l}=n,a=o.filter(Boolean),f=await (null==l.isRTL?void 0:l.isRTL(t)),s=await l.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:u}=C(s,r,f),d=r,p={},h=0;for(let n=0;n<a.length;n++){let{name:o,fn:m}=a[n],{x:g,y:y,data:w,reset:x}=await m({x:c,y:u,initialPlacement:r,placement:d,strategy:i,middlewareData:p,rects:s,platform:l,elements:{reference:e,floating:t}});c=null!=g?g:c,u=null!=y?y:u,p={...p,[o]:{...p[o],...w}},x&&h<=50&&(h++,"object"==typeof x&&(x.placement&&(d=x.placement),x.rects&&(s=!0===x.rects?await l.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:c,y:u}=C(s,d,f)),n=-1)}return{x:c,y:u,placement:d,strategy:i,middlewareData:p}};async function T(e,t){var n;void 0===t&&(t={});let{x:r,y:i,platform:o,rects:l,elements:a,strategy:f}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=c(t,e),m=A(h),g=a[p?"floating"===d?"reference":"floating":d],y=S(await o.getClippingRect({element:null==(n=await (null==o.isElement?void 0:o.isElement(g)))||n?g:g.contextElement||await (null==o.getDocumentElement?void 0:o.getDocumentElement(a.floating)),boundary:s,rootBoundary:u,strategy:f})),w="floating"===d?{x:r,y:i,width:l.floating.width,height:l.floating.height}:l.reference,x=await (null==o.getOffsetParent?void 0:o.getOffsetParent(a.floating)),v=await (null==o.isElement?void 0:o.isElement(x))&&await (null==o.getScale?void 0:o.getScale(x))||{x:1,y:1},b=S(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:w,offsetParent:x,strategy:f}):w);return{top:(y.top-b.top+m.top)/v.y,bottom:(b.bottom-y.bottom+m.bottom)/v.y,left:(y.left-b.left+m.left)/v.x,right:(b.right-y.right+m.right)/v.x}}function P(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function E(e){return n.some(t=>e[t]>=0)}let O=new Set(["left","top"]);async function H(e,t){let{placement:n,platform:r,elements:i}=e,o=await (null==r.isRTL?void 0:r.isRTL(i.floating)),l=u(n),a=d(n),f="y"===g(n),s=O.has(l)?-1:1,p=o&&f?-1:1,h=c(t,e),{mainAxis:m,crossAxis:y,alignmentAxis:w}="number"==typeof h?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return a&&"number"==typeof w&&(y="end"===a?-1*w:w),f?{x:y*p,y:m*s}:{x:m*s,y:y*p}}function k(){return"undefined"!=typeof window}function D(e){return j(e)?(e.nodeName||"").toLowerCase():"#document"}function F(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function W(e){var t;return null==(t=(j(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function j(e){return!!k()&&(e instanceof Node||e instanceof F(e).Node)}function M(e){return!!k()&&(e instanceof Element||e instanceof F(e).Element)}function $(e){return!!k()&&(e instanceof HTMLElement||e instanceof F(e).HTMLElement)}function B(e){return!!k()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof F(e).ShadowRoot)}let z=new Set(["inline","contents"]);function N(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=Q(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!z.has(i)}let V=new Set(["table","td","th"]),I=[":popover-open",":modal"];function Y(e){return I.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let _=["transform","translate","scale","rotate","perspective"],X=["transform","translate","scale","rotate","perspective","filter"],q=["paint","layout","strict","content"];function K(e){let t=U(),n=M(e)?Q(e):e;return _.some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||X.some(e=>(n.willChange||"").includes(e))||q.some(e=>(n.contain||"").includes(e))}function U(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let G=new Set(["html","body","#document"]);function J(e){return G.has(D(e))}function Q(e){return F(e).getComputedStyle(e)}function Z(e){return M(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ee(e){if("html"===D(e))return e;let t=e.assignedSlot||e.parentNode||B(e)&&e.host||W(e);return B(t)?t.host:t}function et(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let i=function e(t){let n=ee(t);return J(n)?t.ownerDocument?t.ownerDocument.body:t.body:$(n)&&N(n)?n:e(n)}(e),o=i===(null==(r=e.ownerDocument)?void 0:r.body),l=F(i);if(o){let e=en(l);return t.concat(l,l.visualViewport||[],N(i)?i:[],e&&n?et(e):[])}return t.concat(i,et(i,[],n))}function en(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function er(e){let t=Q(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=$(e),l=i?e.offsetWidth:n,a=i?e.offsetHeight:r,f=o(n)!==l||o(r)!==a;return f&&(n=l,r=a),{width:n,height:r,$:f}}function ei(e){return M(e)?e:e.contextElement}function eo(e){let t=ei(e);if(!$(t))return a(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:l}=er(t),f=(l?o(n.width):n.width)/r,s=(l?o(n.height):n.height)/i;return f&&Number.isFinite(f)||(f=1),s&&Number.isFinite(s)||(s=1),{x:f,y:s}}let el=a(0);function ea(e){let t=F(e);return U()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:el}function ef(e,t,n,r){var i;void 0===t&&(t=!1),void 0===n&&(n=!1);let o=e.getBoundingClientRect(),l=ei(e),f=a(1);t&&(r?M(r)&&(f=eo(r)):f=eo(e));let s=(void 0===(i=n)&&(i=!1),r&&(!i||r===F(l))&&i)?ea(l):a(0),c=(o.left+s.x)/f.x,u=(o.top+s.y)/f.y,d=o.width/f.x,p=o.height/f.y;if(l){let e=F(l),t=r&&M(r)?F(r):r,n=e,i=en(n);for(;i&&r&&t!==n;){let e=eo(i),t=i.getBoundingClientRect(),r=Q(i),o=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,l=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,u*=e.y,d*=e.x,p*=e.y,c+=o,u+=l,i=en(n=F(i))}}return S({width:d,height:p,x:c,y:u})}function es(e,t){let n=Z(e).scrollLeft;return t?t.left+n:ef(W(e)).left+n}function ec(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-es(e,n),y:n.top+t.scrollTop}}let eu=new Set(["absolute","fixed"]);function ed(e,t,n){var r;let o;if("viewport"===t)o=function(e,t){let n=F(e),r=W(e),i=n.visualViewport,o=r.clientWidth,l=r.clientHeight,a=0,f=0;if(i){o=i.width,l=i.height;let e=U();(!e||e&&"fixed"===t)&&(a=i.offsetLeft,f=i.offsetTop)}let s=es(r);if(s<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,l=Math.abs(r.clientWidth-t.clientWidth-i);l<=25&&(o-=l)}else s<=25&&(o+=s);return{width:o,height:l,x:a,y:f}}(e,n);else if("document"===t){let t,n,l,a,f,s,c;r=W(e),t=W(r),n=Z(r),l=r.ownerDocument.body,a=i(t.scrollWidth,t.clientWidth,l.scrollWidth,l.clientWidth),f=i(t.scrollHeight,t.clientHeight,l.scrollHeight,l.clientHeight),s=-n.scrollLeft+es(r),c=-n.scrollTop,"rtl"===Q(l).direction&&(s+=i(t.clientWidth,l.clientWidth)-a),o={width:a,height:f,x:s,y:c}}else if(M(t)){let e,r,i,l,f,s;r=(e=ef(t,!0,"fixed"===n)).top+t.clientTop,i=e.left+t.clientLeft,l=$(t)?eo(t):a(1),f=t.clientWidth*l.x,s=t.clientHeight*l.y,o={width:f,height:s,x:i*l.x,y:r*l.y}}else{let n=ea(e);o={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return S(o)}function ep(e){return"static"===Q(e).position}function eh(e,t){if(!$(e)||"fixed"===Q(e).position)return null;if(t)return t(e);let n=e.offsetParent;return W(e)===n&&(n=n.ownerDocument.body),n}function em(e,t){var n;let r=F(e);if(Y(e))return r;if(!$(e)){let t=ee(e);for(;t&&!J(t);){if(M(t)&&!ep(t))return t;t=ee(t)}return r}let i=eh(e,t);for(;i&&(n=i,V.has(D(n)))&&ep(i);)i=eh(i,t);return i&&J(i)&&ep(i)&&!K(i)?r:i||function(e){let t=ee(e);for(;$(t)&&!J(t);){if(K(t))return t;if(Y(t))break;t=ee(t)}return null}(e)||r}let eg=async function(e){let t=this.getOffsetParent||em,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=$(t),i=W(t),o="fixed"===n,l=ef(e,!0,o,t),f={scrollLeft:0,scrollTop:0},s=a(0);if(r||!r&&!o)if(("body"!==D(t)||N(i))&&(f=Z(t)),r){let e=ef(t,!0,o,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else i&&(s.x=es(i));o&&!r&&i&&(s.x=es(i));let c=!i||r||o?a(0):ec(i,f);return{x:l.left+f.scrollLeft-s.x-c.x,y:l.top+f.scrollTop-s.y-c.y,width:l.width,height:l.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},ey={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,o="fixed"===i,l=W(r),f=!!t&&Y(t.floating);if(r===l||f&&o)return n;let s={scrollLeft:0,scrollTop:0},c=a(1),u=a(0),d=$(r);if((d||!d&&!o)&&(("body"!==D(r)||N(l))&&(s=Z(r)),$(r))){let e=ef(r);c=eo(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let p=!l||d||o?a(0):ec(l,s);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+u.x+p.x,y:n.y*c.y-s.scrollTop*c.y+u.y+p.y}},getDocumentElement:W,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:o,strategy:l}=e,a=[..."clippingAncestors"===n?Y(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=et(e,[],!1).filter(e=>M(e)&&"body"!==D(e)),i=null,o="fixed"===Q(e).position,l=o?ee(e):e;for(;M(l)&&!J(l);){let t=Q(l),n=K(l);n||"fixed"!==t.position||(i=null),(o?!n&&!i:!n&&"static"===t.position&&!!i&&eu.has(i.position)||N(l)&&!n&&function e(t,n){let r=ee(t);return!(r===n||!M(r)||J(r))&&("fixed"===Q(r).position||e(r,n))}(e,l))?r=r.filter(e=>e!==l):i=t,l=ee(l)}return t.set(e,r),r}(t,this._c):[].concat(n),o],f=a[0],s=a.reduce((e,n)=>{let o=ed(t,n,l);return e.top=i(o.top,e.top),e.right=r(o.right,e.right),e.bottom=r(o.bottom,e.bottom),e.left=i(o.left,e.left),e},ed(t,f,l));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}},getOffsetParent:em,getElementRects:eg,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=er(e);return{width:t,height:n}},getScale:eo,isElement:M,isRTL:function(e){return"rtl"===Q(e).direction}};function ew(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let ex=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:o,placement:l,rects:a,platform:f,elements:s,middlewareData:u}=t,{element:m,padding:y=0}=c(e,t)||{};if(null==m)return{};let w=A(y),x={x:n,y:o},v=p(g(l)),b=h(v),R=await f.getDimensions(m),S="y"===v,C=S?"clientHeight":"clientWidth",L=a.reference[b]+a.reference[v]-x[v]-a.floating[b],T=x[v]-a.reference[v],P=await (null==f.getOffsetParent?void 0:f.getOffsetParent(m)),E=P?P[C]:0;E&&await (null==f.isElement?void 0:f.isElement(P))||(E=s.floating[C]||a.floating[b]);let O=E/2-R[b]/2-1,H=r(w[S?"top":"left"],O),k=r(w[S?"bottom":"right"],O),D=E-R[b]-k,F=E/2-R[b]/2+(L/2-T/2),W=i(H,r(F,D)),j=!u.arrow&&null!=d(l)&&F!==W&&a.reference[b]/2-(F<H?H:k)-R[b]/2<0,M=j?F<H?F-H:F-D:0;return{[v]:x[v]+M,data:{[v]:W,centerOffset:F-W-M,...j&&{alignmentOffset:M}},reset:j}}});var ev=e.i(395635),eb="undefined"!=typeof document?t.useLayoutEffect:function(){};function eR(e,t){let n,r,i;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!eR(e[r],t[r]))return!1;return!0}if((n=(i=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,i[r]))return!1;for(r=n;0!=r--;){let n=i[r];if(("_owner"!==n||!e.$$typeof)&&!eR(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function eA(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function eS(e,t){let n=eA(e);return Math.round(t*n)/n}function eC(e){let n=t.useRef(e);return eb(()=>{n.current=e}),n}var eL=e.i(122925),eT=e.i(890022),eP=t.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...o}=e;return(0,eT.jsx)(eL.Primitive.svg,{...o,ref:t,width:r,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,eT.jsx)("polygon",{points:"0,0 30,0 15,10"})})});eP.displayName="Arrow";var eE=e.i(430406),eO=e.i(79014),eH=e.i(938657),ek=e.i(943988),eD="Popper",[eF,eW]=(0,eO.createContextScope)(eD),[ej,eM]=eF(eD),e$=e=>{let{__scopePopper:n,children:r}=e,[i,o]=t.useState(null);return(0,eT.jsx)(ej,{scope:n,anchor:i,onAnchorChange:o,children:r})};e$.displayName=eD;var eB="PopperAnchor",ez=t.forwardRef((e,n)=>{let{__scopePopper:r,virtualRef:i,...o}=e,l=eM(eB,r),a=t.useRef(null),f=(0,eE.useComposedRefs)(n,a),s=t.useRef(null);return t.useEffect(()=>{let e=s.current;s.current=i?.current||a.current,e!==s.current&&l.onAnchorChange(s.current)}),i?null:(0,eT.jsx)(eL.Primitive.div,{...o,ref:f})});ez.displayName=eB;var eN="PopperContent",[eV,eI]=eF(eN),eY=t.forwardRef((e,n)=>{var o,a,f,s,m,A,S,C,k,D,F,j,M;let{__scopePopper:$,side:B="bottom",sideOffset:z=0,align:N="center",alignOffset:V=0,arrowPadding:I=0,avoidCollisions:Y=!0,collisionBoundary:_=[],collisionPadding:X=0,sticky:q="partial",hideWhenDetached:K=!1,updatePositionStrategy:U="optimized",onPlaced:G,...J}=e,Q=eM(eN,$),[Z,ee]=t.useState(null),en=(0,eE.useComposedRefs)(n,e=>ee(e)),[er,eo]=t.useState(null),el=function(e){let[n,r]=t.useState(void 0);return(0,ek.useLayoutEffect)(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let n,i;if(!Array.isArray(t)||!t.length)return;let o=t[0];if("borderBoxSize"in o){let e=o.borderBoxSize,t=Array.isArray(e)?e[0]:e;n=t.inlineSize,i=t.blockSize}else n=e.offsetWidth,i=e.offsetHeight;r({width:n,height:i})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}r(void 0)},[e]),n}(er),ea=el?.width??0,es=el?.height??0,ec="number"==typeof X?X:{top:0,right:0,bottom:0,left:0,...X},eu=Array.isArray(_)?_:[_],ed=eu.length>0,ep={padding:ec,boundary:eu.filter(eK),altBoundary:ed},{refs:eh,floatingStyles:em,placement:eg,isPositioned:eP,middlewareData:eO}=function(e){void 0===e&&(e={});let{placement:n="bottom",strategy:r="absolute",middleware:i=[],platform:o,elements:{reference:l,floating:a}={},transform:f=!0,whileElementsMounted:s,open:c}=e,[u,d]=t.useState({x:0,y:0,strategy:r,placement:n,middlewareData:{},isPositioned:!1}),[p,h]=t.useState(i);eR(p,i)||h(i);let[m,g]=t.useState(null),[y,w]=t.useState(null),x=t.useCallback(e=>{e!==A.current&&(A.current=e,g(e))},[]),v=t.useCallback(e=>{e!==S.current&&(S.current=e,w(e))},[]),b=l||m,R=a||y,A=t.useRef(null),S=t.useRef(null),C=t.useRef(u),T=null!=s,P=eC(s),E=eC(o),O=eC(c),H=t.useCallback(()=>{var e,t;let i,o,l;if(!A.current||!S.current)return;let a={placement:n,strategy:r,middleware:p};E.current&&(a.platform=E.current),(e=A.current,t=S.current,i=new Map,l={...(o={platform:ey,...a}).platform,_c:i},L(e,t,{...o,platform:l})).then(e=>{let t={...e,isPositioned:!1!==O.current};k.current&&!eR(C.current,t)&&(C.current=t,ev.flushSync(()=>{d(t)}))})},[p,n,r,E,O]);eb(()=>{!1===c&&C.current.isPositioned&&(C.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[c]);let k=t.useRef(!1);eb(()=>(k.current=!0,()=>{k.current=!1}),[]),eb(()=>{if(b&&(A.current=b),R&&(S.current=R),b&&R){if(P.current)return P.current(b,R,H);H()}},[b,R,H,P,T]);let D=t.useMemo(()=>({reference:A,floating:S,setReference:x,setFloating:v}),[x,v]),F=t.useMemo(()=>({reference:b,floating:R}),[b,R]),W=t.useMemo(()=>{let e={position:r,left:0,top:0};if(!F.floating)return e;let t=eS(F.floating,u.x),n=eS(F.floating,u.y);return f?{...e,transform:"translate("+t+"px, "+n+"px)",...eA(F.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}},[r,f,F.floating,u.x,u.y]);return t.useMemo(()=>({...u,update:H,refs:D,elements:F,floatingStyles:W}),[u,H,D,F,W])}({strategy:"fixed",placement:B+("center"!==N?"-"+N:""),whileElementsMounted:(...e)=>(function(e,t,n,o){let a;void 0===o&&(o={});let{ancestorScroll:f=!0,ancestorResize:s=!0,elementResize:c="function"==typeof ResizeObserver,layoutShift:u="function"==typeof IntersectionObserver,animationFrame:d=!1}=o,p=ei(e),h=f||s?[...p?et(p):[],...et(t)]:[];h.forEach(e=>{f&&e.addEventListener("scroll",n,{passive:!0}),s&&e.addEventListener("resize",n)});let m=p&&u?function(e,t){let n,o=null,a=W(e);function f(){var e;clearTimeout(n),null==(e=o)||e.disconnect(),o=null}return!function s(c,u){void 0===c&&(c=!1),void 0===u&&(u=1),f();let d=e.getBoundingClientRect(),{left:p,top:h,width:m,height:g}=d;if(c||t(),!m||!g)return;let y={rootMargin:-l(h)+"px "+-l(a.clientWidth-(p+m))+"px "+-l(a.clientHeight-(h+g))+"px "+-l(p)+"px",threshold:i(0,r(1,u))||1},w=!0;function x(t){let r=t[0].intersectionRatio;if(r!==u){if(!w)return s();r?s(!1,r):n=setTimeout(()=>{s(!1,1e-7)},1e3)}1!==r||ew(d,e.getBoundingClientRect())||s(),w=!1}try{o=new IntersectionObserver(x,{...y,root:a.ownerDocument})}catch(e){o=new IntersectionObserver(x,y)}o.observe(e)}(!0),f}(p,n):null,g=-1,y=null;c&&(y=new ResizeObserver(e=>{let[r]=e;r&&r.target===p&&y&&(y.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var e;null==(e=y)||e.observe(t)})),n()}),p&&!d&&y.observe(p),y.observe(t));let w=d?ef(e):null;return d&&function t(){let r=ef(e);w&&!ew(w,r)&&n(),w=r,a=requestAnimationFrame(t)}(),n(),()=>{var e;h.forEach(e=>{f&&e.removeEventListener("scroll",n),s&&e.removeEventListener("resize",n)}),null==m||m(),null==(e=y)||e.disconnect(),y=null,d&&cancelAnimationFrame(a)}})(...e,{animationFrame:"always"===U}),elements:{reference:Q.anchor},middleware:[{...{name:"offset",options:a=o={mainAxis:z+es,alignmentAxis:V},async fn(e){var t,n;let{x:r,y:i,placement:o,middlewareData:l}=e,f=await H(e,a);return o===(null==(t=l.offset)?void 0:t.placement)&&null!=(n=l.arrow)&&n.alignmentOffset?{}:{x:r+f.x,y:i+f.y,data:{...f,placement:o}}}},options:[o,void 0]},Y&&{...{name:"shift",options:m=s={mainAxis:!0,crossAxis:!1,limiter:"partial"===q?{...(f=void 0,{options:f={},fn(e){let{x:t,y:n,placement:r,rects:i,middlewareData:o}=e,{offset:l=0,mainAxis:a=!0,crossAxis:s=!0}=c(f,e),d={x:t,y:n},h=g(r),m=p(h),y=d[m],w=d[h],x=c(l,e),v="number"==typeof x?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(a){let e="y"===m?"height":"width",t=i.reference[m]-i.floating[e]+v.mainAxis,n=i.reference[m]+i.reference[e]-v.mainAxis;y<t?y=t:y>n&&(y=n)}if(s){var b,R;let e="y"===m?"width":"height",t=O.has(u(r)),n=i.reference[h]-i.floating[e]+(t&&(null==(b=o.offset)?void 0:b[h])||0)+(t?0:v.crossAxis),l=i.reference[h]+i.reference[e]+(t?0:(null==(R=o.offset)?void 0:R[h])||0)-(t?v.crossAxis:0);w<n?w=n:w>l&&(w=l)}return{[m]:y,[h]:w}}}),options:[void 0,void 0]}:void 0,...ep},async fn(e){let{x:t,y:n,placement:o}=e,{mainAxis:l=!0,crossAxis:a=!1,limiter:f={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=c(m,e),d={x:t,y:n},h=await T(e,s),y=g(u(o)),w=p(y),x=d[w],v=d[y];if(l){let e="y"===w?"top":"left",t="y"===w?"bottom":"right",n=x+h[e],o=x-h[t];x=i(n,r(x,o))}if(a){let e="y"===y?"top":"left",t="y"===y?"bottom":"right",n=v+h[e],o=v-h[t];v=i(n,r(v,o))}let b=f.fn({...e,[w]:x,[y]:v});return{...b,data:{x:b.x-t,y:b.y-n,enabled:{[w]:l,[y]:a}}}}},options:[s,void 0]},Y&&{...{name:"flip",options:S=A={...ep},async fn(e){var t,n,r,i,o,l,a,f;let s,m,A,{placement:C,middlewareData:L,rects:P,initialPlacement:E,platform:O,elements:H}=e,{mainAxis:k=!0,crossAxis:D=!0,fallbackPlacements:F,fallbackStrategy:W="bestFit",fallbackAxisSideDirection:j="none",flipAlignment:M=!0,...$}=c(S,e);if(null!=(t=L.arrow)&&t.alignmentOffset)return{};let B=u(C),z=g(E),N=u(E)===E,V=await (null==O.isRTL?void 0:O.isRTL(H.floating)),I=F||(N||!M?[R(E)]:(s=R(E),[y(E),s,y(s)])),Y="none"!==j;!F&&Y&&I.push(...(m=d(E),A=function(e,t,n){switch(e){case"top":case"bottom":if(n)return t?x:w;return t?w:x;case"left":case"right":return t?v:b;default:return[]}}(u(E),"start"===j,V),m&&(A=A.map(e=>e+"-"+m),M&&(A=A.concat(A.map(y)))),A));let _=[E,...I],X=await T(e,$),q=[],K=(null==(n=L.flip)?void 0:n.overflows)||[];if(k&&q.push(X[B]),D){let e,t,n,r,i=(l=C,a=P,void 0===(f=V)&&(f=!1),e=d(l),n=h(t=p(g(l))),r="x"===t?e===(f?"end":"start")?"right":"left":"start"===e?"bottom":"top",a.reference[n]>a.floating[n]&&(r=R(r)),[r,R(r)]);q.push(X[i[0]],X[i[1]])}if(K=[...K,{placement:C,overflows:q}],!q.every(e=>e<=0)){let e=((null==(r=L.flip)?void 0:r.index)||0)+1,t=_[e];if(t&&("alignment"!==D||z===g(t)||K.every(e=>g(e.placement)!==z||e.overflows[0]>0)))return{data:{index:e,overflows:K},reset:{placement:t}};let n=null==(i=K.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!n)switch(W){case"bestFit":{let e=null==(o=K.filter(e=>{if(Y){let t=g(e.placement);return t===z||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:o[0];e&&(n=e);break}case"initialPlacement":n=E}if(C!==n)return{reset:{placement:n}}}return{}}},options:[A,void 0]},{...{name:"size",options:k=C={...ep,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:o}=t.reference,l=e.floating.style;l.setProperty("--radix-popper-available-width",`${n}px`),l.setProperty("--radix-popper-available-height",`${r}px`),l.setProperty("--radix-popper-anchor-width",`${i}px`),l.setProperty("--radix-popper-anchor-height",`${o}px`)}},async fn(e){var t,n;let o,l,{placement:a,rects:f,platform:s,elements:p}=e,{apply:h=()=>{},...m}=c(k,e),y=await T(e,m),w=u(a),x=d(a),v="y"===g(a),{width:b,height:R}=f.floating;"top"===w||"bottom"===w?(o=w,l=x===(await (null==s.isRTL?void 0:s.isRTL(p.floating))?"start":"end")?"left":"right"):(l=w,o="end"===x?"top":"bottom");let A=R-y.top-y.bottom,S=b-y.left-y.right,C=r(R-y[o],A),L=r(b-y[l],S),P=!e.middlewareData.shift,E=C,O=L;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(O=S),null!=(n=e.middlewareData.shift)&&n.enabled.y&&(E=A),P&&!x){let e=i(y.left,0),t=i(y.right,0),n=i(y.top,0),r=i(y.bottom,0);v?O=b-2*(0!==e||0!==t?e+t:i(y.left,y.right)):E=R-2*(0!==n||0!==r?n+r:i(y.top,y.bottom))}await h({...e,availableWidth:O,availableHeight:E});let H=await s.getDimensions(p.floating);return b!==H.width||R!==H.height?{reset:{rects:!0}}:{}}},options:[C,void 0]},er&&{...{name:"arrow",options:F=D={element:er,padding:I},fn(e){let{element:t,padding:n}="function"==typeof F?F(e):F;return t&&({}).hasOwnProperty.call(t,"current")?null!=t.current?ex({element:t.current,padding:n}).fn(e):{}:t?ex({element:t,padding:n}).fn(e):{}}},options:[D,void 0]},eU({arrowWidth:ea,arrowHeight:es}),K&&{...{name:"hide",options:M=j={strategy:"referenceHidden",...ep},async fn(e){let{rects:t}=e,{strategy:n="referenceHidden",...r}=c(M,e);switch(n){case"referenceHidden":{let n=P(await T(e,{...r,elementContext:"reference"}),t.reference);return{data:{referenceHiddenOffsets:n,referenceHidden:E(n)}}}case"escaped":{let n=P(await T(e,{...r,altBoundary:!0}),t.floating);return{data:{escapedOffsets:n,escaped:E(n)}}}default:return{}}}},options:[j,void 0]}]}),[eD,eF]=eG(eg),eW=(0,eH.useCallbackRef)(G);(0,ek.useLayoutEffect)(()=>{eP&&eW?.()},[eP,eW]);let ej=eO.arrow?.x,e$=eO.arrow?.y,eB=eO.arrow?.centerOffset!==0,[ez,eI]=t.useState();return(0,ek.useLayoutEffect)(()=>{Z&&eI(window.getComputedStyle(Z).zIndex)},[Z]),(0,eT.jsx)("div",{ref:eh.setFloating,"data-radix-popper-content-wrapper":"",style:{...em,transform:eP?em.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ez,"--radix-popper-transform-origin":[eO.transformOrigin?.x,eO.transformOrigin?.y].join(" "),...eO.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,eT.jsx)(eV,{scope:$,placedSide:eD,onArrowChange:eo,arrowX:ej,arrowY:e$,shouldHideArrow:eB,children:(0,eT.jsx)(eL.Primitive.div,{"data-side":eD,"data-align":eF,...J,ref:en,style:{...J.style,animation:eP?void 0:"none"}})})})});eY.displayName=eN;var e_="PopperArrow",eX={top:"bottom",right:"left",bottom:"top",left:"right"},eq=t.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=eI(e_,n),o=eX[i.placedSide];return(0,eT.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,eT.jsx)(eP,{...r,ref:t,style:{...r.style,display:"block"}})})});function eK(e){return null!==e}eq.displayName=e_;var eU=e=>({name:"transformOrigin",options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,o=i.arrow?.centerOffset!==0,l=o?0:e.arrowWidth,a=o?0:e.arrowHeight,[f,s]=eG(n),c={start:"0%",center:"50%",end:"100%"}[s],u=(i.arrow?.x??0)+l/2,d=(i.arrow?.y??0)+a/2,p="",h="";return"bottom"===f?(p=o?c:`${u}px`,h=`${-a}px`):"top"===f?(p=o?c:`${u}px`,h=`${r.floating.height+a}px`):"right"===f?(p=`${-a}px`,h=o?c:`${d}px`):"left"===f&&(p=`${r.floating.width+a}px`,h=o?c:`${d}px`),{data:{x:p,y:h}}}});function eG(e){let[t,n="center"]=e.split("-");return[t,n]}e.s(["Anchor",()=>ez,"Arrow",()=>eq,"Content",()=>eY,"Root",()=>e$,"createPopperScope",()=>eW],306839)}]);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,842541,e=>{"use strict";e.s(["default",0,function(e,t){return e*=1,t*=1,function(r){return e*(1-r)+t*r}}])},161610,189517,321137,e=>{"use strict";function t(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function r(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}function n(){}e.s(["default",0,t,"extend",()=>r],189517);var s="\\s*([+-]?\\d+)\\s*",a="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",o="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",i=/^#([0-9a-f]{3,8})$/,l=RegExp(`^rgb\\(${s},${s},${s}\\)$`),d=RegExp(`^rgb\\(${o},${o},${o}\\)$`),c=RegExp(`^rgba\\(${s},${s},${s},${a}\\)$`),u=RegExp(`^rgba\\(${o},${o},${o},${a}\\)$`),f=RegExp(`^hsl\\(${a},${o},${o}\\)$`),h=RegExp(`^hsla\\(${a},${o},${o},${a}\\)$`),m={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32};function g(){return this.rgb().formatHex()}function x(){return this.rgb().formatRgb()}function p(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=i.exec(e))?(r=t[1].length,t=parseInt(t[1],16),6===r?b(t):3===r?new N(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===r?y(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===r?y(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=l.exec(e))?new N(t[1],t[2],t[3],1):(t=d.exec(e))?new N(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=c.exec(e))?y(t[1],t[2],t[3],t[4]):(t=u.exec(e))?y(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=f.exec(e))?M(t[1],t[2]/100,t[3]/100,1):(t=h.exec(e))?M(t[1],t[2]/100,t[3]/100,t[4]):m.hasOwnProperty(e)?b(m[e]):"transparent"===e?new N(NaN,NaN,NaN,0):null}function b(e){return new N(e>>16&255,e>>8&255,255&e,1)}function y(e,t,r,n){return n<=0&&(e=t=r=NaN),new N(e,t,r,n)}function w(e){return(e instanceof n||(e=p(e)),e)?new N((e=e.rgb()).r,e.g,e.b,e.opacity):new N}function v(e,t,r,n){return 1==arguments.length?w(e):new N(e,t,r,null==n?1:n)}function N(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function j(){return`#${E(this.r)}${E(this.g)}${E(this.b)}`}function k(){let e=S(this.opacity);return`${1===e?"rgb(":"rgba("}${$(this.r)}, ${$(this.g)}, ${$(this.b)}${1===e?")":`, ${e})`}`}function S(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function $(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function E(e){return((e=$(e))<16?"0":"")+e.toString(16)}function M(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new R(e,t,r,n)}function C(e){if(e instanceof R)return new R(e.h,e.s,e.l,e.opacity);if(e instanceof n||(e=p(e)),!e)return new R;if(e instanceof R)return e;var t=(e=e.rgb()).r/255,r=e.g/255,s=e.b/255,a=Math.min(t,r,s),o=Math.max(t,r,s),i=NaN,l=o-a,d=(o+a)/2;return l?(i=t===o?(r-s)/l+(r<s)*6:r===o?(s-t)/l+2:(t-r)/l+4,l/=d<.5?o+a:2-o-a,i*=60):l=d>0&&d<1?0:i,new R(i,l,d,e.opacity)}function R(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function O(e){return(e=(e||0)%360)<0?e+360:e}function z(e){return Math.max(0,Math.min(1,e||0))}function L(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}t(n,p,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:g,formatHex:g,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return C(this).formatHsl()},formatRgb:x,toString:x}),t(N,v,r(n,{brighter(e){return e=null==e?1.4285714285714286:Math.pow(1.4285714285714286,e),new N(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new N(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new N($(this.r),$(this.g),$(this.b),S(this.opacity))},displayable(){return -.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:j,formatHex:j,formatHex8:function(){return`#${E(this.r)}${E(this.g)}${E(this.b)}${E((isNaN(this.opacity)?1:this.opacity)*255)}`},formatRgb:k,toString:k})),t(R,function(e,t,r,n){return 1==arguments.length?C(e):new R(e,t,r,null==n?1:n)},r(n,{brighter(e){return e=null==e?1.4285714285714286:Math.pow(1.4285714285714286,e),new R(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?.7:Math.pow(.7,e),new R(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,s=2*r-n;return new N(L(e>=240?e-240:e+120,s,n),L(e,s,n),L(e<120?e+240:e-120,s,n),this.opacity)},clamp(){return new R(O(this.h),z(this.s),z(this.l),S(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=S(this.opacity);return`${1===e?"hsl(":"hsla("}${O(this.h)}, ${100*z(this.s)}%, ${100*z(this.l)}%${1===e?")":`, ${e})`}`}})),e.s(["Color",()=>n,"Rgb",()=>N,"default",()=>p,"rgb",()=>v,"rgbConvert",()=>w],321137),e.s(["color",()=>p],161610)},77075,e=>{"use strict";var t=e.i(842541);e.s(["interpolateNumber",()=>t.default])},145665,181503,425902,e=>{"use strict";var t=e.i(321137);function r(e,t,r,n,s){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*r+(1+3*e+3*a-3*o)*n+o*s)/6}let n=e=>()=>e;function s(e,t){return function(r){return e+r*t}}function a(e,t){var r=t-e;return r?s(e,r>180||r<-180?r-360*Math.round(r/360):r):n(isNaN(e)?t:e)}function o(e){return 1==(e*=1)?i:function(t,r){var s,a,o;return r-t?(s=t,a=r,s=Math.pow(s,o=e),a=Math.pow(a,o)-s,o=1/o,function(e){return Math.pow(s+e*a,o)}):n(isNaN(t)?r:t)}}function i(e,t){var r=t-e;return r?s(e,r):n(isNaN(e)?t:e)}e.s(["default",0,n],181503),e.s(["default",()=>i,"gamma",()=>o,"hue",()=>a],425902);let l=function e(r){var n=o(r);function s(e,r){var s=n((e=(0,t.rgb)(e)).r,(r=(0,t.rgb)(r)).r),a=n(e.g,r.g),o=n(e.b,r.b),l=i(e.opacity,r.opacity);return function(t){return e.r=s(t),e.g=a(t),e.b=o(t),e.opacity=l(t),e+""}}return s.gamma=e,s}(1);function d(e){return function(r){var n,s,a=r.length,o=Array(a),i=Array(a),l=Array(a);for(n=0;n<a;++n)s=(0,t.rgb)(r[n]),o[n]=s.r||0,i[n]=s.g||0,l[n]=s.b||0;return o=e(o),i=e(i),l=e(l),s.opacity=1,function(e){return s.r=o(e),s.g=i(e),s.b=l(e),s+""}}}d(function(e){var t=e.length-1;return function(n){var s=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),a=e[s],o=e[s+1],i=s>0?e[s-1]:2*a-o,l=s<t-1?e[s+2]:2*o-a;return r((n-s/t)*t,i,a,o,l)}}),d(function(e){var t=e.length;return function(n){var s=Math.floor(((n%=1)<0?++n:n)*t),a=e[(s+t-1)%t],o=e[s%t],i=e[(s+1)%t],l=e[(s+2)%t];return r((n-s/t)*t,a,o,i,l)}}),e.s(["default",0,l],145665)},647483,e=>{"use strict";var t=e.i(842541),r=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,n=RegExp(r.source,"g");e.s(["default",0,function(e,s){var a,o,i,l,d,c=r.lastIndex=n.lastIndex=0,u=-1,f=[],h=[];for(e+="",s+="";(i=r.exec(e))&&(l=n.exec(s));)(d=l.index)>c&&(d=s.slice(c,d),f[u]?f[u]+=d:f[++u]=d),(i=i[0])===(l=l[0])?f[u]?f[u]+=l:f[++u]=l:(f[++u]=null,h.push({i:u,x:(0,t.default)(i,l)})),c=n.lastIndex;return c<s.length&&(d=s.slice(c),f[u]?f[u]+=d:f[++u]=d),f.length<2?h[0]?(a=h[0].x,function(e){return a(e)+""}):(o=s,function(){return o}):(s=h.length,function(e){for(var t,r=0;r<s;++r)f[(t=h[r]).i]=t.x(e);return f.join("")})}])},170305,(e,t,r)=>{"use strict";var n=e.r(431231),s="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=n.useState,o=n.useEffect,i=n.useLayoutEffect,l=n.useDebugValue;function d(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!s(e,r)}catch(e){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),n=a({inst:{value:r,getSnapshot:t}}),s=n[0].inst,c=n[1];return i(function(){s.value=r,s.getSnapshot=t,d(s)&&c({inst:s})},[e,r,t]),o(function(){return d(s)&&c({inst:s}),e(function(){d(s)&&c({inst:s})})},[e]),l(r),r};r.useSyncExternalStore=void 0!==n.useSyncExternalStore?n.useSyncExternalStore:c},334960,(e,t,r)=>{"use strict";t.exports=e.r(170305)},721665,(e,t,r)=>{"use strict";var n=e.r(431231),s=e.r(334960),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=s.useSyncExternalStore,i=n.useRef,l=n.useEffect,d=n.useMemo,c=n.useDebugValue;r.useSyncExternalStoreWithSelector=function(e,t,r,n,s){var u=i(null);if(null===u.current){var f={hasValue:!1,value:null};u.current=f}else f=u.current;var h=o(e,(u=d(function(){function e(e){if(!l){if(l=!0,o=e,e=n(e),void 0!==s&&f.hasValue){var t=f.value;if(s(t,e))return i=t}return i=e}if(t=i,a(o,e))return t;var r=n(e);return void 0!==s&&s(t,r)?(o=e,t):(o=e,i=r)}var o,i,l=!1,d=void 0===r?null:r;return[function(){return e(t())},null===d?void 0:function(){return e(d())}]},[t,r,n,s]))[0],u[1]);return l(function(){f.hasValue=!0,f.value=h},[h]),c(h),h}},596177,(e,t,r)=>{"use strict";t.exports=e.r(721665)},506361,e=>{"use strict";var t=e.i(890022),r=e.i(431231),n=e.i(230827),s=e.i(910338),a=e.i(555141),o=e.i(252294),i=e.i(796007),l=e.i(799388);e.i(250149);var d=e.i(402481),c=e.i(158687),u=e.i(692423),f=e.i(954542),h=e.i(771864);let m=({id:e,x:t,y:n,width:s,height:a,style:o,color:l,strokeColor:d,strokeWidth:c,className:u,borderRadius:f,shapeRendering:h,onClick:m,selected:g})=>{let{background:x,backgroundColor:p}=o||{};return r.default.createElement("rect",{className:(0,i.default)(["react-flow__minimap-node",{selected:g},u]),x:t,y:n,rx:f,ry:f,width:s,height:a,fill:l||x||p,stroke:d,strokeWidth:c,shapeRendering:h,onClick:m?t=>m(t,e):void 0})};m.displayName="MiniMapNode";var g=(0,r.memo)(m);let x=e=>e.nodeOrigin,p=e=>e.getNodes().filter(e=>!e.hidden&&e.width&&e.height),b=e=>e instanceof Function?e:()=>e;var y=(0,r.memo)(function({nodeStrokeColor:e="transparent",nodeColor:t="#e2e2e2",nodeClassName:n="",nodeBorderRadius:s=5,nodeStrokeWidth:a=2,nodeComponent:o=g,onClick:i}){let d=(0,h.useStore)(p,l.shallow),c=(0,h.useStore)(x),u=b(t),f=b(e),m=b(n),y="undefined"==typeof window||window.chrome?"crispEdges":"geometricPrecision";return r.default.createElement(r.default.Fragment,null,d.map(e=>{let{x:t,y:n}=(0,h.getNodePositionWithOrigin)(e,c).positionAbsolute;return r.default.createElement(o,{key:e.id,x:t,y:n,width:e.width,height:e.height,style:e.style,selected:e.selected,className:m(e),color:u(e),borderRadius:s,strokeColor:f(e),strokeWidth:a,shapeRendering:y,onClick:i,id:e.id})}))});let w=e=>{let t=e.getNodes(),r={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:r,boundingRect:t.length>0?(0,h.getBoundsOfRects)((0,h.getNodesBounds)(t,e.nodeOrigin),r):r,rfId:e.rfId}};function v({style:e,className:t,nodeStrokeColor:n="transparent",nodeColor:s="#e2e2e2",nodeClassName:a="",nodeBorderRadius:o=5,nodeStrokeWidth:m=2,nodeComponent:g,maskColor:x="rgb(240, 240, 240, 0.6)",maskStrokeColor:p="none",maskStrokeWidth:b=1,position:v="bottom-right",onClick:N,onNodeClick:j,pannable:k=!1,zoomable:S=!1,ariaLabel:$="React Flow mini map",inversePan:E=!1,zoomStep:M=10,offsetScale:C=5}){let R=(0,h.useStoreApi)(),O=(0,r.useRef)(null),{boundingRect:z,viewBB:L,rfId:D}=(0,h.useStore)(w,l.shallow),P=e?.width??200,I=e?.height??150,q=Math.max(z.width/P,z.height/I),W=q*P,A=q*I,H=C*q,B=z.x-(W-z.width)/2-H,F=z.y-(A-z.height)/2-H,T=W+2*H,_=A+2*H,V=`react-flow__minimap-desc-${D}`,U=(0,r.useRef)(0);U.current=q,(0,r.useEffect)(()=>{if(O.current){let e=(0,u.select)(O.current),t=(0,d.zoom)().on("zoom",k?e=>{let{transform:t,d3Selection:r,d3Zoom:n,translateExtent:s,width:a,height:o}=R.getState();if("mousemove"!==e.sourceEvent.type||!r||!n)return;let i=U.current*Math.max(1,t[2])*(E?-1:1),l={x:t[0]-e.sourceEvent.movementX*i,y:t[1]-e.sourceEvent.movementY*i},d=c.zoomIdentity.translate(l.x,l.y).scale(t[2]),u=n.constrain()(d,[[0,0],[a,o]],s);n.transform(r,u)}:null).on("zoom.wheel",S?e=>{let{transform:t,d3Selection:r,d3Zoom:n}=R.getState();if("wheel"!==e.sourceEvent.type||!r||!n)return;let s=-e.sourceEvent.deltaY*(1===e.sourceEvent.deltaMode?.05:e.sourceEvent.deltaMode?1:.002)*M,a=t[2]*Math.pow(2,s);n.scaleTo(r,a)}:null);return e.call(t),()=>{e.on("zoom",null)}}},[k,S,E,M]);let G=N?e=>{let t=(0,f.pointer)(e);N(e,{x:t[0],y:t[1]})}:void 0,K=j?(e,t)=>{j(e,R.getState().nodeInternals.get(t))}:void 0;return r.default.createElement(h.Panel,{position:v,style:e,className:(0,i.default)(["react-flow__minimap",t]),"data-testid":"rf__minimap"},r.default.createElement("svg",{width:P,height:I,viewBox:`${B} ${F} ${T} ${_}`,role:"img","aria-labelledby":V,ref:O,onClick:G},$&&r.default.createElement("title",{id:V},$),r.default.createElement(y,{onClick:K,nodeColor:s,nodeStrokeColor:n,nodeBorderRadius:o,nodeClassName:a,nodeStrokeWidth:m,nodeComponent:g}),r.default.createElement("path",{className:"react-flow__minimap-mask",d:`M${B-H},${F-H}h${T+2*H}v${_+2*H}h${-T-2*H}z
|
|
2
|
+
M${L.x},${L.y}h${L.width}v${L.height}h${-L.width}z`,fill:x,fillRule:"evenodd",stroke:p,strokeWidth:b,pointerEvents:"none"})))}v.displayName="MiniMap";var N=(0,r.memo)(v),j=e.i(632137);let k="#f59e0b",S={planned:"border-blue-500/80 bg-blue-950/60 text-blue-200","in-progress":"border-orange-500/80 bg-orange-950/60 text-orange-200",complete:"border-green-500/80 bg-green-950/60 text-green-200",archived:"border-gray-500/80 bg-gray-900/60 text-gray-400"},$={planned:"#1e3a8a","in-progress":"#7c2d12",complete:"#14532d",archived:"#1f2937"},E=r.memo(function({data:e}){let r=e.isCompact,n=e.isSecondary,s=0===e.connectionDepth?1:1===e.connectionDepth?.95:2===e.connectionDepth?.7:e.isDimmed?.15:1;return(0,t.jsxs)("div",{className:(0,j.cn)("flex flex-col rounded-lg shadow-lg transition-all duration-200",S[e.tone],e.interactive&&"cursor-pointer hover:scale-105 hover:shadow-xl hover:border-white/50",e.isFocused&&"ring-2 ring-white ring-offset-2 ring-offset-background scale-110 z-50",1===e.connectionDepth&&"ring-1 ring-white/40",r?"px-2 py-1 gap-0.5":"px-2.5 py-1.5 gap-0.5",n?"border border-dashed":"border-2"),style:{width:r?120:180,opacity:s*(n?.65:1),transform:e.isDimmed?"scale(0.9)":void 0},children:[(0,t.jsx)(h.Handle,{type:"target",position:h.Position.Left,className:"opacity-0"}),(0,t.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,t.jsxs)("span",{className:(0,j.cn)("font-bold text-white/90",r?"text-[9px]":"text-[10px]"),children:["#",e.number.toString().padStart(3,"0")]}),(0,t.jsx)("span",{className:(0,j.cn)("font-medium uppercase tracking-wide rounded",r?"text-[7px] px-0.5 py-0.5":"text-[8px] px-1 py-0.5","planned"===e.tone&&"bg-blue-500/30 text-blue-300","in-progress"===e.tone&&"bg-orange-500/30 text-orange-300","complete"===e.tone&&"bg-green-500/30 text-green-300","archived"===e.tone&&"bg-gray-500/30 text-gray-400"),children:e.badge})]}),(0,t.jsx)("span",{className:(0,j.cn)("font-medium leading-tight truncate",r?"text-[8px]":"text-[10px]"),title:e.label,children:r?e.shortLabel:e.label}),(0,t.jsx)(h.Handle,{type:"source",position:h.Position.Right,className:"opacity-0"})]})});E.displayName="SpecNode";let M={specNode:E};function C({spec:e,type:r,onClick:n}){return(0,t.jsxs)("button",{onClick:n,className:(0,j.cn)("w-full text-left px-2 py-1.5 rounded border-l-2 bg-muted/30 hover:bg-muted/50 transition-colors",{upstream:"border-l-amber-500",downstream:"border-l-emerald-500"}[r]),children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,t.jsxs)("span",{className:"text-[10px] font-bold text-muted-foreground",children:["#",e.number.toString().padStart(3,"0")]}),(0,t.jsx)("span",{className:(0,j.cn)("text-[8px] px-1 py-0.5 rounded font-medium uppercase","planned"===e.status&&"bg-amber-500/20 text-amber-400","in-progress"===e.status&&"bg-sky-500/20 text-sky-400","complete"===e.status&&"bg-emerald-500/20 text-emerald-400"),children:"in-progress"===e.status?"WIP":e.status.slice(0,3)})]}),(0,t.jsx)("p",{className:"text-[11px] text-foreground truncate leading-tight mt-0.5",children:e.name})]})}function R({group:e,type:n,onSelectSpec:s}){let[a,o]=r.useState(1===e.depth),i=1===e.depth?"Direct":`Level ${e.depth}`;return(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsxs)("button",{onClick:()=>o(!a),className:"flex items-center gap-1.5 w-full text-left text-[10px] text-muted-foreground hover:text-foreground transition-colors",children:[(0,t.jsx)("span",{className:(0,j.cn)("transition-transform text-[8px]",a?"rotate-90":"rotate-0"),children:"▶"}),(0,t.jsx)("span",{className:"font-medium",children:i}),(0,t.jsxs)("span",{className:"opacity-60",children:["(",e.specs.length,")"]})]}),a&&(0,t.jsx)("div",{className:"space-y-1 ml-2",children:e.specs.map(e=>(0,t.jsx)(C,{spec:e,type:n,onClick:()=>s(e.id)},e.id))})]})}function O({focusedDetails:e,onSelectSpec:r,onOpenSpec:n}){if(!e)return(0,t.jsx)("div",{className:"w-64 shrink-0 rounded-lg border border-border bg-background/95 overflow-hidden flex flex-col",children:(0,t.jsx)("div",{className:"flex-1 flex items-center justify-center p-4",children:(0,t.jsxs)("div",{className:"text-center text-muted-foreground",children:[(0,t.jsx)("div",{className:"w-12 h-12 mx-auto mb-3 rounded-full bg-muted/50 flex items-center justify-center",children:(0,t.jsx)("svg",{className:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,d:"M15 15l-2 5L9 9l11 4-5 2zm0 0l5 5M7.188 2.239l.777 2.897M5.136 7.965l-2.898-.777M13.95 4.05l-2.122 2.122m-5.657 5.656l-2.12 2.122"})})}),(0,t.jsx)("p",{className:"text-sm font-medium",children:"Select a spec"}),(0,t.jsx)("p",{className:"text-xs mt-1",children:"Click on a spec to see its dependencies"})]})})});let{node:s,upstream:a,downstream:o}=e;return(0,t.jsxs)("div",{className:"w-64 shrink-0 rounded-lg border border-border bg-background/95 overflow-hidden flex flex-col",children:[(0,t.jsxs)("div",{className:"p-3 border-b border-border bg-muted/30",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[(0,t.jsxs)("span",{className:"font-bold text-sm",children:["#",s.number.toString().padStart(3,"0")]}),(0,t.jsx)("span",{className:(0,j.cn)("px-1.5 py-0.5 rounded text-[10px] font-medium uppercase","planned"===s.status&&"bg-amber-500/20 text-amber-300","in-progress"===s.status&&"bg-sky-500/20 text-sky-300","complete"===s.status&&"bg-emerald-500/20 text-emerald-300"),children:s.status})]}),(0,t.jsx)("p",{className:"text-sm font-medium text-foreground leading-snug",children:s.name}),(0,t.jsx)("button",{onClick:()=>n(s.number),className:"mt-2 w-full rounded bg-primary/20 border border-primary/40 px-2 py-1.5 text-xs text-primary hover:bg-primary/30 font-medium",children:"Open Spec →"})]}),(0,t.jsxs)("div",{className:"flex-1 overflow-auto p-3 space-y-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,t.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-amber-500"}),(0,t.jsxs)("span",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:["Depends On (",a.reduce((e,t)=>e+t.specs.length,0),")"]})]}),a.length>0?(0,t.jsx)("div",{className:"space-y-2",children:a.map(e=>(0,t.jsx)(R,{group:e,type:"upstream",onSelectSpec:r},e.depth))}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground/60 italic",children:"No upstream dependencies"})]}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,t.jsx)("span",{className:"inline-block w-2 h-2 rounded-full bg-emerald-500"}),(0,t.jsxs)("span",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-wide",children:["Required By (",o.reduce((e,t)=>e+t.specs.length,0),")"]})]}),o.length>0?(0,t.jsx)("div",{className:"space-y-2",children:o.map(e=>(0,t.jsx)(R,{group:e,type:"downstream",onSelectSpec:r},e.depth))}):(0,t.jsx)("p",{className:"text-xs text-muted-foreground/60 italic",children:"No specs depend on this"})]})]})]})}var z=e.i(35380);function L({data:e}){let i=(0,n.useRouter)(),[l,d]=r.useState(null),[c,u]=r.useState(!1),[f,m]=r.useState([]),[g,x]=r.useState(null),[p,b]=r.useState(e.nodes.length>30),[y,w]=r.useState(!1),[v,S]=r.useState(""),E=r.useRef(null),C=r.useMemo(()=>e.edges.filter(e=>"dependsOn"===e.type),[e.edges]),R=r.useMemo(()=>g?function(e,t,r=2){let n=new Map;n.set(e,0);let s=new Map,a=new Map;t.forEach(e=>{s.has(e.source)||s.set(e.source,new Set),s.get(e.source).add(e.target),a.has(e.target)||a.set(e.target,new Set),a.get(e.target).add(e.source)});let o=new Set([e]),i=1;for(;o.size>0&&i<=r;){let e=new Set;o.forEach(t=>{let r=s.get(t);r&&r.forEach(t=>{n.has(t)||(n.set(t,i),e.add(t))})}),o=e,i++}for(o=new Set([e]),i=1;o.size>0&&i<=r;){let e=new Set;o.forEach(t=>{let r=a.get(t);r&&r.forEach(t=>{n.has(t)||(n.set(t,i),e.add(t))})}),o=e,i++}return n}(g,C,1/0):null,[g,C]),L=r.useMemo(()=>{if(!g)return null;let t=e.nodes.find(e=>e.id===g);if(!t)return null;let r=new Map(e.nodes.map(e=>[e.id,e])),n=new Map,s=new Map;C.forEach(e=>{n.has(e.source)||n.set(e.source,new Set),n.get(e.source).add(e.target),s.has(e.target)||s.set(e.target,new Set),s.get(e.target).add(e.source)});let a=(e,t)=>{let n=new Set([e]),s=[],a=new Set([e]),o=1;for(;a.size>0;){let e=new Set,i=[];a.forEach(s=>{let a=t.get(s);a&&a.forEach(t=>{if(!n.has(t)){n.add(t),e.add(t);let s=r.get(t);s&&i.push(s)}})}),i.length>0&&s.push({depth:o,specs:i}),a=e,o++}return s};return{node:t,upstream:a(g,n),downstream:a(g,s)}},[g,e.nodes,C]),D=r.useMemo(()=>{let t=new Set(e.nodes.filter(e=>0===f.length||f.includes(e.status)).map(e=>e.id)),r=new Set(t),n=[...t];for(;n.length>0;){let e=n.shift();C.forEach(t=>{t.source!==e||r.has(t.target)||(r.add(t.target),n.push(t.target)),t.target!==e||r.has(t.source)||(r.add(t.source),n.push(t.source))})}let s=e.nodes.filter(e=>r.has(e.id)),a=C.filter(e=>r.has(e.source)&&r.has(e.target)),o=s;if(!c){let e=new Set;a.forEach(t=>{e.add(t.source),e.add(t.target)}),o=s.filter(t=>e.has(t.id))}let i=new Set(o.map(e=>e.id)),l=new Set([...i].filter(e=>!t.has(e)));return function(e,t,r,n){if(0===e.length)return{nodes:[],edges:[]};let s=r?120:180,a=r?40:60,o=r?30:50,i=new Set;t.forEach(e=>{i.add(e.source),i.add(e.target)});let l=e.filter(e=>i.has(e.id)),d=n?e.filter(e=>!i.has(e.id)):[],c=[];if(l.length>0){let e=new z.default.graphlib.Graph;e.setGraph({rankdir:"LR",align:"UL",nodesep:r?30:50,ranksep:r?80:120,marginx:40,marginy:40}),e.setDefaultEdgeLabel(()=>({})),l.forEach(t=>{e.setNode(t.id,{width:s,height:a})}),t.forEach(t=>{i.has(t.source)&&i.has(t.target)&&e.setEdge(t.source,t.target)}),z.default.layout(e);let n=1/0,u=1/0,f=0,h=0;if(l.forEach(t=>{let r=e.node(t.id);n=Math.min(n,r.x-s/2),u=Math.min(u,r.y-a/2),f=Math.max(f,r.x+s/2),h=Math.max(h,r.y+a/2)}),l.forEach(t=>{let r=e.node(t.id);c.push({...t,position:{x:r.x-n,y:r.y-u}})}),d.length>0){let e=f-n,t=h-u+2*o,r=Math.ceil(Math.sqrt(1.5*d.length)),i=r*(s+o),l=e>i?Math.floor((e-i)/2):0;d.forEach((e,n)=>{let i=Math.floor(n/r);c.push({...e,position:{x:l+n%r*(s+o),y:t+i*(a+o)}})})}}else{let e=Math.ceil(Math.sqrt(1.5*d.length));d.forEach((t,r)=>{let n=Math.floor(r/e);c.push({...t,position:{x:r%e*(s+o),y:n*(a+o)}})})}return{nodes:c,edges:t}}(o.map(e=>{let t,r=g===e.id,n=l.has(e.id),s=!1;return g&&(s=void 0===(t=R?.get(e.id))),{id:e.id,type:"specNode",data:{label:e.name,shortLabel:e.name.length>14?e.name.slice(0,12)+"…":e.name,badge:"in-progress"===e.status?"WIP":e.status.slice(0,3).toUpperCase(),number:e.number,tone:e.status,href:`/specs/${e.number}`,interactive:!0,isFocused:r,connectionDepth:t,isDimmed:s,isCompact:p,isSecondary:n},position:{x:0,y:0},draggable:!0,selectable:!0,sourcePosition:h.Position.Right,targetPosition:h.Position.Left}}),a.filter(e=>i.has(e.source)&&i.has(e.target)).map(e=>{let t=!0,r=.7;if(g){let n=R?.get(e.source),s=R?.get(e.target);r=(t=void 0!==n&&void 0!==s&&(0===n||0===s))?1:void 0!==n&&void 0!==s?.4:.1}return{id:`${e.source}-${e.target}-dependsOn`,source:e.source,target:e.target,type:"smoothstep",animated:t&&null!==g,markerEnd:{type:h.MarkerType.ArrowClosed,color:k,width:18,height:18},style:{stroke:k,strokeWidth:t?2.5:1.5,opacity:r}}}),p,c)},[e,C,f,g,R,p,c]),P=r.useMemo(()=>{let t=new Set;return C.forEach(e=>{t.add(e.source),t.add(e.target)}),{connected:t.size,standalone:e.nodes.length-t.size}},[C,e.nodes.length]),I=r.useMemo(()=>{let t={};return e.nodes.forEach(e=>{t[e.status]=(t[e.status]||0)+1}),t},[e.nodes]),q=r.useCallback(e=>{d(e),requestAnimationFrame(()=>{e.fitView({padding:.15,duration:300})})},[]);r.useEffect(()=>{if(!l)return;let e=setTimeout(()=>{l.fitView({padding:.15,duration:300})},50);return()=>clearTimeout(e)},[l,D.nodes.length,f,c]),r.useEffect(()=>{let e=e=>{E.current&&!E.current.contains(e.target)&&w(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]);let W=r.useMemo(()=>{if(!v.trim())return e.nodes.slice(0,15);let t=v.toLowerCase();return e.nodes.filter(e=>e.name.toLowerCase().includes(t)||e.number.toString().includes(t)||e.tags.some(e=>e.toLowerCase().includes(t))).slice(0,15)},[e.nodes,v]),A=r.useMemo(()=>g?e.nodes.find(e=>e.id===g):null,[g,e.nodes]),H=r.useCallback((e,t)=>{if(t?.data){if(2===e.detail&&t.data.href)return void i.push(t.data.href);x(e=>e===t.id?null:t.id)}},[i]),B=r.useCallback(()=>{x(null)},[]),F=f.length>0||g;return(0,t.jsxs)("div",{className:"flex h-full flex-col gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[(0,t.jsx)("div",{className:"flex items-center gap-4",children:(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Dependency Graph"}),(0,t.jsx)("p",{className:"text-sm text-foreground",children:P.connected>0?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{className:"text-emerald-400",children:[P.connected," specs with dependencies"]}),P.standalone>0&&(0,t.jsxs)(t.Fragment,{children:[" • ",(0,t.jsxs)("span",{className:"text-muted-foreground",children:[P.standalone," standalone"]})]})]}):(0,t.jsx)("span",{className:"text-muted-foreground",children:"No dependencies defined"})})]})}),(0,t.jsxs)("div",{className:"relative",ref:E,children:[(0,t.jsxs)("button",{onClick:()=>w(!y),className:(0,j.cn)("h-7 w-52 rounded-md border bg-background px-2.5 text-xs text-left flex items-center gap-2 transition-colors",g?"border-primary/60 bg-primary/10":"border-border hover:border-primary/40"),children:[A?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("span",{className:"text-muted-foreground",children:["#",A.number.toString().padStart(3,"0")]}),(0,t.jsx)("span",{className:"truncate flex-1 text-foreground",children:A.name})]}):(0,t.jsx)("span",{className:"text-muted-foreground",children:"Select spec to highlight..."}),(0,t.jsx)("svg",{className:"w-3 h-3 text-muted-foreground shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),y&&(0,t.jsxs)("div",{className:"absolute right-0 top-8 z-50 w-64 rounded-md border border-border bg-background shadow-lg overflow-hidden",children:[(0,t.jsx)("div",{className:"p-2 border-b border-border",children:(0,t.jsx)("input",{type:"text",placeholder:"Type to filter...",value:v,onChange:e=>S(e.target.value),className:"w-full h-7 rounded border border-border bg-muted/30 px-2 text-xs placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary",autoFocus:!0})}),(0,t.jsxs)("div",{className:"max-h-64 overflow-auto",children:[g&&(0,t.jsxs)("button",{onClick:()=>{x(null),w(!1),S("")},className:"w-full px-3 py-2 text-xs text-left hover:bg-muted/50 border-b border-border text-muted-foreground flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-red-400",children:"×"})," Clear selection"]}),W.length>0?W.map(e=>(0,t.jsxs)("button",{onClick:()=>(e=>{if(x(e),w(!1),S(""),l){let t=D.nodes.find(t=>t.id===e);t&&l.setCenter(t.position.x+80,t.position.y+30,{duration:400,zoom:1})}})(e.id),className:(0,j.cn)("w-full px-3 py-2 text-xs text-left hover:bg-muted/50 flex items-center gap-2",g===e.id&&"bg-primary/20"),children:[(0,t.jsxs)("span",{className:"text-muted-foreground font-mono",children:["#",e.number.toString().padStart(3,"0")]}),(0,t.jsx)("span",{className:"truncate flex-1",children:e.name}),(0,t.jsx)("span",{className:(0,j.cn)("text-[9px] px-1 py-0.5 rounded uppercase font-medium","planned"===e.status&&"bg-blue-500/20 text-blue-400","in-progress"===e.status&&"bg-orange-500/20 text-orange-400","complete"===e.status&&"bg-green-500/20 text-green-400","archived"===e.status&&"bg-gray-500/20 text-gray-400"),children:"in-progress"===e.status?"WIP":e.status.slice(0,3)})]},e.id)):(0,t.jsx)("div",{className:"px-3 py-4 text-xs text-muted-foreground text-center",children:"No specs found"})]})]})]})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5 text-xs",children:[["planned","in-progress","complete","archived"].map(e=>{let r=0===f.length||f.includes(e);return(0,t.jsxs)("button",{onClick:()=>{m(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),x(null)},className:(0,j.cn)("rounded border px-2 py-1 font-medium transition-colors",r&&"planned"===e&&"border-blue-500/60 bg-blue-500/20 text-blue-300",r&&"in-progress"===e&&"border-orange-500/60 bg-orange-500/20 text-orange-300",r&&"complete"===e&&"border-green-500/60 bg-green-500/20 text-green-300",r&&"archived"===e&&"border-gray-500/60 bg-gray-500/20 text-gray-300",!r&&"border-border bg-background text-muted-foreground/40"),children:["in-progress"===e?"WIP":e.charAt(0).toUpperCase()+e.slice(1),(0,t.jsxs)("span",{className:"ml-1 opacity-60",children:["(",I[e]||0,")"]})]},e)}),(0,t.jsx)("span",{className:"h-3 w-px bg-border"}),(0,t.jsxs)("button",{onClick:()=>u(!c),className:(0,j.cn)("rounded border px-2 py-1 font-medium transition-colors",c?"border-violet-500/60 bg-violet-500/20 text-violet-300":"border-border bg-background hover:bg-accent text-muted-foreground"),children:["Show Standalone",(0,t.jsxs)("span",{className:"ml-1 opacity-60",children:["(",P.standalone,")"]})]}),(0,t.jsx)("span",{className:"h-3 w-px bg-border"}),(0,t.jsx)("button",{onClick:()=>b(!p),className:(0,j.cn)("rounded border px-2 py-1 font-medium transition-colors",p?"border-primary/60 bg-primary/20 text-primary":"border-border bg-background hover:bg-accent text-muted-foreground"),children:"Compact"}),F&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"h-3 w-px bg-border"}),(0,t.jsx)("button",{onClick:()=>{m([]),x(null),S("")},className:"rounded border border-red-500/40 bg-red-500/10 px-2 py-1 font-medium text-red-400 hover:bg-red-500/20",children:"Clear"})]})]}),(0,t.jsxs)("div",{className:"flex flex-1 gap-3 min-h-0",children:[(0,t.jsx)("div",{className:"flex-1 overflow-hidden rounded-lg border border-border bg-[#080c14]",children:D.nodes.length>0?(0,t.jsxs)(s.default,{nodes:D.nodes,edges:D.edges,nodeTypes:M,onInit:q,className:"h-full w-full",fitView:!0,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,panOnScroll:!0,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,minZoom:.05,maxZoom:2,onNodeClick:H,onPaneClick:B,children:[(0,t.jsx)(a.Background,{gap:20,size:1,color:"rgba(100, 116, 139, 0.06)"}),(0,t.jsx)(o.Controls,{showInteractive:!1,className:"!bg-background/90 !border-border !rounded-md"}),(0,t.jsx)(N,{nodeColor:e=>$[e.data.tone]||"#1f2937",maskColor:"rgba(0, 0, 0, 0.85)",className:"!bg-background/95 !border-border !rounded-md",style:{width:120,height:80},pannable:!0,zoomable:!0})]}):(0,t.jsx)("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:(0,t.jsxs)("div",{className:"text-center",children:[(0,t.jsx)("p",{className:"text-sm font-medium",children:"No dependencies to display"}),(0,t.jsx)("p",{className:"text-xs mt-1",children:c?"No specs match the current filters":'Enable "Show Standalone" to see specs without dependencies'})]})})}),(0,t.jsx)(O,{focusedDetails:L,onSelectSpec:x,onOpenSpec:e=>i.push(`/specs/${e}`)})]}),(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-4 text-[10px] text-muted-foreground",children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-1.5",children:[(0,t.jsx)("span",{className:"inline-block h-0.5 w-6 bg-amber-400 rounded"}),"Depends On (arrow shows direction)"]}),(0,t.jsx)("span",{className:"text-muted-foreground/50 ml-auto",children:"Click: select • Double-click: open • Drag to rearrange"})]})]})}e.s(["ProjectDependencyGraphClient",()=>L],506361)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,918412,e=>{"use strict";let t;var r=e.i(890022),s=e.i(431231),n=e.i(417612),i=e.i(230827),a=e.i(334960);e.s(["ERROR_REVALIDATE_EVENT",()=>3,"FOCUS_EVENT",()=>0,"MUTATE_EVENT",()=>2,"RECONNECT_EVENT",()=>1],89601);var l=Object.prototype.hasOwnProperty;let o=new WeakMap,d=()=>{},c=d(),u=Object,p=e=>e===c,m=(e,t)=>({...e,...t}),f={},h={},x="undefined",g=typeof window!=x,b=typeof document!=x,y=g&&"Deno"in window,v=(e,t)=>{let r=o.get(e);return[()=>!p(t)&&e.get(t)||f,s=>{if(!p(t)){let n=e.get(t);t in h||(h[t]=n),r[5](t,m(n,s),n||f)}},r[6],()=>!p(t)&&t in h?h[t]:!p(t)&&e.get(t)||f]},w=!0,[j,N]=g&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[d,d],k={initFocus:e=>(b&&document.addEventListener("visibilitychange",e),j("focus",e),()=>{b&&document.removeEventListener("visibilitychange",e),N("focus",e)}),initReconnect:e=>{let t=()=>{w=!0,e()},r=()=>{w=!1};return j("online",t),j("offline",r),()=>{N("online",t),N("offline",r)}}},E=!s.default.useId,S=!g||y,T=S?s.useEffect:s.useLayoutEffect,C="undefined"!=typeof navigator&&navigator.connection,O=!S&&C&&(["slow-2g","2g"].includes(C.effectiveType)||C.saveData),R=new WeakMap,A=(e,t)=>e===`[object ${t}]`,D=0,P=e=>{let t,r,s=typeof e,n=u.prototype.toString.call(e),i=A(n,"Date"),a=A(n,"RegExp"),l=A(n,"Object");if(u(e)!==e||i||a)t=i?e.toJSON():"symbol"==s?e.toString():"string"==s?JSON.stringify(e):""+e;else{if(t=R.get(e))return t;if(t=++D+"~",R.set(e,t),Array.isArray(e)){for(r=0,t="@";r<e.length;r++)t+=P(e[r])+",";R.set(e,t)}if(l){t="#";let s=u.keys(e).sort();for(;!p(r=s.pop());)p(e[r])||(t+=r+":"+P(e[r])+",");R.set(e,t)}}return t},M=e=>{if("function"==typeof e)try{e=e()}catch(t){e=""}let t=e;return[e="string"==typeof e?e:(Array.isArray(e)?e.length:e)?P(e):"",t]},_=0,F=()=>++_;async function V(...e){let[t,r,s,n]=e,i=m({populateCache:!0,throwOnError:!0},"boolean"==typeof n?{revalidate:n}:n||{}),a=i.populateCache,l=i.rollbackOnError,d=i.optimisticData,u=i.throwOnError;if("function"==typeof r){let e=[];for(let s of t.keys())!/^\$(inf|sub)\$/.test(s)&&r(t.get(s)._k)&&e.push(s);return Promise.all(e.map(f))}return f(r);async function f(r){let n,[m]=M(r);if(!m)return;let[f,h]=v(t,m),[x,g,b,y]=o.get(t),w=()=>{let e=x[m];return("function"==typeof i.revalidate?i.revalidate(f().data,r):!1!==i.revalidate)&&(delete b[m],delete y[m],e&&e[0])?e[0](2).then(()=>f().data):f().data};if(e.length<3)return w();let j=s,N=!1,k=F();g[m]=[k,0];let E=!p(d),S=f(),T=S.data,C=S._c,O=p(C)?T:C;if(E&&h({data:d="function"==typeof d?d(O,T):d,_c:O}),"function"==typeof j)try{j=j(O)}catch(e){n=e,N=!0}if(j&&"function"==typeof j.then){let e;if(j=await j.catch(e=>{n=e,N=!0}),k!==g[m][0]){if(N)throw n;return j}N&&E&&(e=n,"function"==typeof l?l(e):!1!==l)&&(a=!0,h({data:O,_c:c}))}if(a&&!N&&("function"==typeof a?h({data:a(j,O),error:c,_c:c}):h({data:j,error:c,_c:c})),g[m][1]=F(),Promise.resolve(w()).then(()=>{h({_c:c})}),N){if(u)throw n;return}return j}}let L=(e,t)=>{for(let r in e)e[r][0]&&e[r][0](t)},$=(e,t)=>{if(!o.has(e)){let r=m(k,t),s=Object.create(null),n=V.bind(c,e),i=d,a=Object.create(null),l=(e,t)=>{let r=a[e]||[];return a[e]=r,r.push(t),()=>r.splice(r.indexOf(t),1)},u=(t,r,s)=>{e.set(t,r);let n=a[t];if(n)for(let e of n)e(r,s)},p=()=>{if(!o.has(e)&&(o.set(e,[s,Object.create(null),Object.create(null),Object.create(null),n,u,l]),!S)){let t=r.initFocus(setTimeout.bind(c,L.bind(c,s,0))),n=r.initReconnect(setTimeout.bind(c,L.bind(c,s,1)));i=()=>{t&&t(),n&&n(),o.delete(e)}}};return p(),[e,n,p,i]}return[e,o.get(e)[4]]},[B,I]=$(new Map),z=m({onLoadingSlow:d,onSuccess:d,onError:d,onErrorRetry:(e,t,r,s,n)=>{let i=r.errorRetryCount,a=n.retryCount,l=~~((Math.random()+.5)*(1<<(a<8?a:8)))*r.errorRetryInterval;(p(i)||!(a>i))&&setTimeout(s,l,n)},onDiscarded:d,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:O?1e4:5e3,focusThrottleInterval:5e3,dedupingInterval:2e3,loadingTimeout:O?5e3:3e3,compare:function e(t,r){var s,n;if(t===r)return!0;if(t&&r&&(s=t.constructor)===r.constructor){if(s===Date)return t.getTime()===r.getTime();if(s===RegExp)return t.toString()===r.toString();if(s===Array){if((n=t.length)===r.length)for(;n--&&e(t[n],r[n]););return -1===n}if(!s||"object"==typeof t){for(s in n=0,t)if(l.call(t,s)&&++n&&!l.call(r,s)||!(s in r)||!e(t[s],r[s]))return!1;return Object.keys(r).length===n}}return t!=t&&r!=r},isPaused:()=>!1,cache:B,mutate:I,fallback:{}},{isOnline:()=>w,isVisible:()=>{let e=b&&document.visibilityState;return p(e)||"hidden"!==e}}),W=(e,t)=>{let r=m(e,t);if(t){let{use:s,fallback:n}=e,{use:i,fallback:a}=t;s&&i&&(r.use=s.concat(i)),n&&a&&(r.fallback=m(n,a))}return r},q=(0,s.createContext)({});var U=e.i(89601);let H=g&&window.__SWR_DEVTOOLS_USE__,G=(H?window.__SWR_DEVTOOLS_USE__:[]).concat(e=>(t,r,s)=>{let n=r&&((...e)=>{let[s]=M(t),[,,,n]=o.get(B);if(s.startsWith("$inf$"))return r(...e);let i=n[s];return p(i)?r(...e):(delete n[s],i)});return e(t,n,s)});H&&(window.__SWR_DEVTOOLS_REACT__=s.default);let J=()=>{},K=J(),Z=(new WeakMap,s.default.use||(e=>{switch(e.status){case"pending":throw e;case"fulfilled":return e.value;case"rejected":throw e.reason;default:throw e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e}})),Q={dedupe:!0},X=Promise.resolve(c);u.defineProperty(e=>{let{value:t}=e,r=(0,s.useContext)(q),n="function"==typeof t,i=(0,s.useMemo)(()=>n?t(r):t,[n,r,t]),a=(0,s.useMemo)(()=>n?i:W(r,i),[n,r,i]),l=i&&i.provider,o=(0,s.useRef)(c);l&&!o.current&&(o.current=$(l(a.cache||B),i));let d=o.current;return d&&(a.cache=d[0],a.mutate=d[1]),T(()=>{if(d)return d[2]&&d[2](),d[3]},[]),(0,s.createElement)(q.Provider,m(e,{value:a}))},"defaultValue",{value:z});let Y=(t=(e,t,r)=>{let{cache:n,compare:i,suspense:l,fallbackData:d,revalidateOnMount:u,revalidateIfStale:f,refreshInterval:h,refreshWhenHidden:b,refreshWhenOffline:y,keepPreviousData:w}=r,[j,N,k,C]=o.get(n),[O,R]=M(e),A=(0,s.useRef)(!1),D=(0,s.useRef)(!1),P=(0,s.useRef)(O),_=(0,s.useRef)(t),L=(0,s.useRef)(r),$=()=>L.current.isVisible()&&L.current.isOnline(),[B,I,z,W]=v(n,O),q=(0,s.useRef)({}).current,H=p(d)?p(r.fallback)?c:r.fallback[O]:d,G=(e,t)=>{for(let r in q)if("data"===r){if(!i(e[r],t[r])&&(!p(e[r])||!i(ei,t[r])))return!1}else if(t[r]!==e[r])return!1;return!0},J=(0,s.useMemo)(()=>{let e=!!O&&!!t&&(p(u)?!L.current.isPaused()&&!l&&!1!==f:u),r=t=>{let r=m(t);return(delete r._k,e)?{isValidating:!0,isLoading:!0,...r}:r},s=B(),n=W(),i=r(s),a=s===n?i:r(n),o=i;return[()=>{let e=r(B());return G(e,o)?(o.data=e.data,o.isLoading=e.isLoading,o.isValidating=e.isValidating,o.error=e.error,o):(o=e,e)},()=>a]},[n,O]),K=(0,a.useSyncExternalStore)((0,s.useCallback)(e=>z(O,(t,r)=>{G(r,t)||e()}),[n,O]),J[0],J[1]),Y=!A.current,ee=j[O]&&j[O].length>0,et=K.data,er=p(et)?H&&"function"==typeof H.then?Z(H):H:et,es=K.error,en=(0,s.useRef)(er),ei=w?p(et)?p(en.current)?er:en.current:et:er,ea=(!ee||!!p(es))&&(Y&&!p(u)?u:!L.current.isPaused()&&(l?!p(er)&&f:p(er)||f)),el=!!(O&&t&&Y&&ea),eo=p(K.isValidating)?el:K.isValidating,ed=p(K.isLoading)?el:K.isLoading,ec=(0,s.useCallback)(async e=>{let t,s,n=_.current;if(!O||!n||D.current||L.current.isPaused())return!1;let a=!0,l=e||{},o=!k[O]||!l.dedupe,d=()=>E?!D.current&&O===P.current&&A.current:O===P.current,u={isValidating:!1,isLoading:!1},m=()=>{I(u)},f=()=>{let e=k[O];e&&e[1]===s&&delete k[O]},h={isValidating:!0};p(B().data)&&(h.isLoading=!0);try{if(o&&(I(h),r.loadingTimeout&&p(B().data)&&setTimeout(()=>{a&&d()&&L.current.onLoadingSlow(O,r)},r.loadingTimeout),k[O]=[n(R),F()]),[t,s]=k[O],t=await t,o&&setTimeout(f,r.dedupingInterval),!k[O]||k[O][1]!==s)return o&&d()&&L.current.onDiscarded(O),!1;u.error=c;let e=N[O];if(!p(e)&&(s<=e[0]||s<=e[1]||0===e[1]))return m(),o&&d()&&L.current.onDiscarded(O),!1;let l=B().data;u.data=i(l,t)?l:t,o&&d()&&L.current.onSuccess(t,O,r)}catch(r){f();let e=L.current,{shouldRetryOnError:t}=e;!e.isPaused()&&(u.error=r,o&&d())&&(e.onError(r,O,e),(!0===t||"function"==typeof t&&t(r))&&(!L.current.revalidateOnFocus||!L.current.revalidateOnReconnect||$())&&e.onErrorRetry(r,O,e,e=>{let t=j[O];t&&t[0]&&t[0](U.ERROR_REVALIDATE_EVENT,e)},{retryCount:(l.retryCount||0)+1,dedupe:!0}))}return a=!1,m(),!0},[O,n]),eu=(0,s.useCallback)((...e)=>V(n,P.current,...e),[]);if(T(()=>{_.current=t,L.current=r,p(et)||(en.current=et)}),T(()=>{var e;let t;if(!O)return;let r=ec.bind(c,Q),s=0;L.current.revalidateOnFocus&&(s=Date.now()+L.current.focusThrottleInterval);let n=(e=(e,t={})=>{if(e==U.FOCUS_EVENT){let e=Date.now();L.current.revalidateOnFocus&&e>s&&$()&&(s=e+L.current.focusThrottleInterval,r())}else if(e==U.RECONNECT_EVENT)L.current.revalidateOnReconnect&&$()&&r();else if(e==U.MUTATE_EVENT)return ec();else if(e==U.ERROR_REVALIDATE_EVENT)return ec(t)},(t=j[O]||(j[O]=[])).push(e),()=>{let r=t.indexOf(e);r>=0&&(t[r]=t[t.length-1],t.pop())});if(D.current=!1,P.current=O,A.current=!0,I({_k:R}),ea&&!k[O])if(p(er)||S)r();else g&&typeof window.requestAnimationFrame!=x?window.requestAnimationFrame(r):setTimeout(r,1);return()=>{D.current=!0,n()}},[O]),T(()=>{let e;function t(){let t="function"==typeof h?h(B().data):h;t&&-1!==e&&(e=setTimeout(r,t))}function r(){!B().error&&(b||L.current.isVisible())&&(y||L.current.isOnline())?ec(Q).then(t):t()}return t(),()=>{e&&(clearTimeout(e),e=-1)}},[h,b,y,O]),(0,s.useDebugValue)(ei),l){let e=O&&p(er);if(!E&&S&&e)throw Error("Fallback data is required when using Suspense in SSR.");e&&(_.current=t,L.current=r,D.current=!1);let s=C[O];if(Z(!p(s)&&e?eu(s):X),!p(es)&&e)throw es;let n=e?ec(Q):X;!p(ei)&&e&&(n.status="fulfilled",n.value=!0),Z(n)}return{mutate:eu,get data(){return q.data=!0,ei},get error(){return q.error=!0,es},get isValidating(){return q.isValidating=!0,eo},get isLoading(){return q.isLoading=!0,ed}}},function(...e){let r,n=(r=(0,s.useContext)(q),(0,s.useMemo)(()=>m(z,r),[r])),[i,a,l]="function"==typeof e[1]?[e[0],e[1],e[2]||{}]:[e[0],null,(null===e[1]?e[2]:e[1])||{}],o=W(n,l),d=t,{use:c}=o,u=(c||[]).concat(G);for(let e=u.length;e--;)d=u[e](d);return d(i,a||o.fetcher||null,o)});var ee=e.i(603921),et=e.i(812878),er=e.i(188168),es=e.i(237545),en=e.i(323490),ei=e.i(235893),ea=e.i(40843),el=e.i(75364),eo=e.i(196812),ed=e.i(490225),ec=e.i(443991),eu=e.i(145878),ep=e.i(632137);function em({createdAt:e,updatedAt:t,completedAt:s,status:n,className:i}){let a=[];return(e&&a.push({label:"Created",date:e,isActive:!0,isFuture:!1,icon:ea.Clock,color:"text-blue-600"}),"in-progress"===n||"complete"===n||"archived"===n?a.push({label:"In Progress",date:t||e,isActive:!0,isFuture:!1,icon:el.PlayCircle,color:"text-orange-600"}):a.push({label:"In Progress",date:null,isActive:!1,isFuture:!0,icon:ec.Circle,color:"text-muted-foreground"}),"complete"===n||"archived"===n?a.push({label:"Complete",date:s||t,isActive:!0,isFuture:!1,icon:eo.CheckCircle2,color:"text-green-600"}):a.push({label:"Complete",date:null,isActive:!1,isFuture:!0,icon:ec.Circle,color:"text-muted-foreground"}),"archived"===n&&a.push({label:"Archived",date:t,isActive:!0,isFuture:!1,icon:ed.Archive,color:"text-gray-600"}),0===a.length)?null:(0,r.jsx)("div",{className:(0,ep.cn)("flex items-start gap-2",i),children:a.map((e,t)=>{let s=e.icon,n=t===a.length-1,i=n?null:a[t+1],l=e.date&&i?.date&&!i.isFuture?(0,eu.formatDuration)(e.date,i.date):"";return(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-1",children:[(0,r.jsxs)("div",{className:"flex flex-col items-center gap-1 min-w-0",children:[(0,r.jsx)("div",{className:(0,ep.cn)("w-8 h-8 rounded-full border-2 bg-background flex items-center justify-center shrink-0",e.isActive&&!e.isFuture?"border-primary":"border-muted-foreground/40"),children:s&&(0,r.jsx)(s,{className:(0,ep.cn)("h-4 w-4",e.isActive&&!e.isFuture?"text-primary":"text-muted-foreground/60")})}),(0,r.jsx)("div",{className:(0,ep.cn)("text-xs font-medium text-center whitespace-nowrap",e.isActive&&!e.isFuture?"text-foreground":"text-muted-foreground"),children:e.label}),(0,r.jsxs)("div",{className:"text-[10px] text-center min-h-[14px]",children:[e.date&&!e.isFuture&&(0,r.jsx)("span",{className:"text-muted-foreground",children:(0,eu.formatRelativeTime)(e.date)}),!e.date&&e.isFuture&&(0,r.jsx)("span",{className:"text-muted-foreground/70",children:"Awaiting start"}),e.date&&e.isFuture&&(0,r.jsx)("span",{className:"text-muted-foreground/70",children:"Queued"}),!e.date&&!e.isFuture&&(0,r.jsx)("span",{className:"text-muted-foreground/60",children:"Pending update"})]})]}),!n&&(0,r.jsxs)("div",{className:"flex flex-col items-center flex-1 min-w-4 gap-0.5",children:[(0,r.jsx)("div",{className:(0,ep.cn)("h-0.5 w-full",e.isActive&&!e.isFuture?"bg-primary":"bg-muted-foreground/40")}),l&&(0,r.jsx)("div",{className:"text-[10px] text-muted-foreground font-medium whitespace-nowrap",children:l})]})]},t)})})}var ef=e.i(168497),eh=e.i(597705),ex=e.i(987985);function eg({href:e,children:t,currentSpecNumber:s,...n}){if(!e)return(0,r.jsx)("a",{...n,children:t});let i=function(e,t){if(e.startsWith("#")||e.startsWith("http://")||e.startsWith("https://"))return e;let r=e.match(/^\.\/([^/]+\.md)$/);if(r&&t){let e=r[1];return"README.md"!==e?`/specs/${t}?subspec=${e}`:`/specs/${t}`}let s=e.match(/^\.\.\/(\d+)-[^/]+\/?([^/]+\.md)?$/);if(s){let e=parseInt(s[1],10),t=s[2];return t&&"README.md"!==t?`/specs/${e}?subspec=${t}`:`/specs/${e}`}return e}(e,s),a=i.startsWith("http://")||i.startsWith("https://"),l=i.startsWith("#");return a||l?(0,r.jsx)("a",{href:i,...n,target:a?"_blank":void 0,rel:a?"noopener noreferrer":void 0,children:t}):(0,r.jsx)(ex.default,{href:i,...n,className:"text-primary hover:underline",children:t})}var eb=e.i(998489),ey=e.i(656756),ev=e.i(35380),ew=e.i(910338),ej=e.i(555141),eN=e.i(252294),ek=e.i(771864);let eE="#f59e0b",eS="#38bdf8",eT="#ef4444",eC={current:"border-primary/70 bg-primary/5 text-foreground",precedence:"border-amber-400/70 bg-amber-400/10 text-amber-900 dark:text-amber-200",related:"border-sky-400/70 bg-sky-400/10 text-sky-900 dark:text-sky-200","required-by":"border-red-400/70 bg-red-400/10 text-red-900 dark:text-red-200"},eO={rankdir:"LR",align:"UL",nodesep:60,ranksep:120,marginx:40,marginy:40},eR=s.memo(function({data:e}){return(0,r.jsxs)("div",{className:(0,ep.cn)("flex w-[280px] flex-col gap-1.5 rounded-xl border-2 px-5 py-4 text-base shadow-md transition-colors",eC[e.tone],e.interactive&&"cursor-pointer hover:border-primary/70 hover:shadow-lg"),children:[(0,r.jsx)(ek.Handle,{type:"target",position:ek.Position.Left,className:"opacity-0"}),(0,r.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/70",children:e.badge}),(0,r.jsx)("span",{className:"text-base font-semibold leading-snug",children:e.label}),e.subtitle&&(0,r.jsx)("span",{className:"text-sm text-muted-foreground/80",children:e.subtitle}),(0,r.jsx)(ek.Handle,{type:"source",position:ek.Position.Right,className:"opacity-0"})]})});eR.displayName="SpecNode";let eA={specNode:eR};function eD(e){let t=e.trim();if(!t)return"Unknown Spec";let r=t.match(/^(\d+)[-_]?(.*)$/);if(!r)return t;let s=r[1].padStart(3,"0"),n=r[2]?.replace(/[-_]/g," ").trim();return n?`#${s} ${n}`:`#${s}`}function eP(e){let t=e.trim(),r=t.match(/^(\d+)/);return r?`/specs/${parseInt(r[1],10)}`:`/specs/${t}`}function eM(e,t,r){return`${e}-${r}-${t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||r}`}function e_({relationships:e,specNumber:t,specTitle:n}){let a=(0,i.useRouter)(),[l,o]=s.useState(null),d=s.useMemo(()=>{let r,s,i,a;return r=[],s=[],i={id:"current-spec",type:"specNode",data:{label:t?`#${t.toString().padStart(3,"0")} ${n}`:n,badge:"Current Spec",subtitle:"This spec",tone:"current",interactive:!1},position:{x:0,y:0},draggable:!1,selectable:!1,sourcePosition:ek.Position.Right,targetPosition:ek.Position.Left},r.push(i),e.dependsOn?.forEach((e,t)=>{let n=eM("precedence",e,t);r.push({id:n,type:"specNode",data:{label:eD(e),badge:"Depends On",subtitle:"Must complete first",tone:"precedence",href:eP(e),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:ek.Position.Right,targetPosition:ek.Position.Left}),s.push({id:`edge-${n}-current`,source:n,target:i.id,type:"smoothstep",markerEnd:{type:ek.MarkerType.ArrowClosed,color:eE,width:28,height:28},style:{stroke:eE,strokeWidth:3}})}),e.requiredBy?.forEach((e,t)=>{let n=eM("required-by",e,t);r.push({id:n,type:"specNode",data:{label:eD(e),badge:"Required By",subtitle:"Blocked by this spec",tone:"required-by",href:eP(e),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:ek.Position.Right,targetPosition:ek.Position.Left}),s.push({id:`edge-current-${n}`,source:i.id,target:n,type:"smoothstep",markerEnd:{type:ek.MarkerType.ArrowClosed,color:eT,width:28,height:28},style:{stroke:eT,strokeWidth:3}})}),e.related?.forEach((e,t)=>{let n=eM("related",e,t);r.push({id:n,type:"specNode",data:{label:eD(e),badge:"Related",subtitle:"Connected work",tone:"related",href:eP(e),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:ek.Position.Right,targetPosition:ek.Position.Left}),s.push({id:`edge-current-${n}`,source:i.id,target:n,type:"smoothstep",markerEnd:{type:ek.MarkerType.ArrowClosed,color:eS,width:24,height:24},style:{stroke:eS,strokeWidth:3,strokeDasharray:"10 8"}})}),(a=new ev.default.graphlib.Graph).setGraph(eO),a.setDefaultEdgeLabel(()=>({})),r.forEach(e=>{a.setNode(e.id,{width:280,height:110})}),s.forEach(e=>{a.setEdge(e.source,e.target)}),ev.default.layout(a),{nodes:r.map(e=>{let{x:t,y:r}=a.node(e.id);return{...e,position:{x:t-140,y:r-55}}}),edges:s}},[e,t,n]),c=s.useCallback(e=>{o(e),requestAnimationFrame(()=>{e.fitView({padding:.4,duration:350})})},[]);s.useEffect(()=>{l&&l.fitView({padding:.4,duration:350})},[l,d.nodes]);let u=s.useCallback((e,t)=>{!t?.data||t.data.href&&a.push(t.data.href)},[a]);return(0,r.jsxs)("div",{className:"flex h-full flex-col gap-4",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("p",{className:"text-xs font-semibold uppercase tracking-wide",children:"Dependency Map"}),(0,r.jsx)("p",{className:"text-base text-foreground",children:"Explore precedence and connected work"})]}),(0,r.jsx)("div",{className:"rounded-full border border-border px-3 py-1.5 text-sm font-medium uppercase tracking-wide",children:"React Flow DAG"})]}),(0,r.jsx)("div",{className:"flex-1 overflow-hidden rounded-2xl border border-border bg-muted/30",children:(0,r.jsxs)(ew.default,{nodes:d.nodes,edges:d.edges,nodeTypes:eA,onInit:c,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:u,children:[(0,r.jsx)(ej.Background,{gap:24,size:1,color:"rgba(148, 163, 184, 0.3)"}),(0,r.jsx)(eN.Controls,{showInteractive:!1})]})}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-4 text-sm text-muted-foreground",children:[(0,r.jsxs)("span",{className:"inline-flex items-center gap-2 font-medium",children:[(0,r.jsx)("span",{className:"inline-block h-2.5 w-8 rounded-full bg-amber-400/80"}),"Depends On → blocks until complete"]}),(0,r.jsxs)("span",{className:"inline-flex items-center gap-2 font-medium",children:[(0,r.jsx)("span",{className:"inline-block h-2.5 w-8 rounded-full bg-red-400/80"}),"Required By ← blocked by this spec"]}),(0,r.jsxs)("span",{className:"inline-flex items-center gap-2 font-medium",children:[(0,r.jsx)("span",{className:"inline-block h-2.5 w-8 rounded-full bg-sky-400/80"}),"Related ↔ connected work (bidirectional)"]}),(0,r.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,r.jsx)("span",{className:"inline-block h-2.5 w-8 rounded-full bg-primary/60"}),"Drag to pan • Scroll / pinch to zoom."]})]})]})}var eF=e.i(715683),eV=e.i(439779),eL=e.i(20315),e$=e.i(122436);let eB=(0,e$.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"}]]),eI=(0,e$.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]),ez=(0,e$.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"}]]),eW=(0,e$.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"}]]),eq=(0,e$.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"}]]),eU=(0,e$.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 eH=e.i(730885),eG=e.i(497332),eJ=e.i(296026),eK=e.i(635389),eZ=e.i(340982),eQ=e.i(522764),eX=e.i(446207);let eY=()=>e=>{(0,eX.visit)(e,"html",e=>{"string"==typeof e.value&&e.value.trim().startsWith("<!--")&&(e.value="")})},e0={FileText:eL.FileText,Palette:eB,Code:eI,TestTube:ez,CheckSquare:eW,Wrench:eq,Map:eU,GitBranch:eH.GitBranch,Home:eG.Home,TrendingUp:eJ.TrendingUp},e1=e=>fetch(e).then(e=>{if(!e.ok)throw Error(`HTTP error! status: ${e.status}`);return e.json()});function e2({initialSpec:e,initialSubSpec:t,isFocusMode:n=!1,onToggleFocusMode:a}){let l=(0,i.useRouter)(),o=(0,i.useSearchParams)().get("subspec")||t,[d,c]=s.useState(!1),[u,p]=s.useState(!1),{data:m,error:f,isLoading:h}=Y(`/api/specs/${e.specNumber||e.id}`,e1,{fallbackData:{spec:e},revalidateOnFocus:!1,dedupingInterval:5e3}),{data:x}=Y(u?`/api/specs/${e.specNumber||e.id}/dependency-graph`:null,e1,{revalidateOnFocus:!1,dedupingInterval:6e4}),g=m?.spec||e,b=s.useMemo(()=>g.tags||[],[g.tags]),y=g.updatedAt?(0,eu.formatRelativeTime)(g.updatedAt):"N/A",v=g.relationships,w=x?{dependsOn:x.dependsOn.map(e=>e.specName),requiredBy:x.requiredBy.map(e=>e.specName),related:x.related.map(e=>e.specName)}:v,j=!!(v&&((v.dependsOn?.length??0)>0||(v.related?.length??0)>0));s.useEffect(()=>{j||p(!1)},[j]);let N=(0,ep.extractH1Title)(g.contentMd)||g.title||g.specName,k=g.contentMd;if(o&&g.subSpecs){let e=g.subSpecs.find(e=>e.file===o);e&&(k=e.content)}let E=e=>e?new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"N/A",S=e=>{let t=e?`/specs/${g.specNumber||g.id}?subspec=${e}`:`/specs/${g.specNumber||g.id}`;l.push(t,{scroll:!1})},T=s.useRef(null);return s.useEffect(()=>{let e=()=>{let e=56;window.innerWidth>=1024&&T.current&&(e+=T.current.offsetHeight-56),document.documentElement.style.scrollPaddingTop=`${e}px`};e(),window.addEventListener("resize",e);let t=new ResizeObserver(e);return T.current&&t.observe(T.current),()=>{window.removeEventListener("resize",e),t.disconnect(),document.documentElement.style.scrollPaddingTop=""}},[g,b]),(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("header",{ref:T,className:"lg:sticky lg:top-14 lg:z-20 border-b bg-card",children:[(0,r.jsx)("div",{className:(0,ep.cn)("px-3 sm:px-6",n?"py-1.5":"py-2 sm:py-3"),children:n?(0,r.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,r.jsxs)("h1",{className:"text-base font-semibold tracking-tight truncate",children:[g.specNumber&&(0,r.jsxs)("span",{className:"text-muted-foreground",children:["#",g.specNumber.toString().padStart(3,"0")," "]}),N]}),(0,r.jsx)(ef.StatusBadge,{status:g.status||"planned"}),(0,r.jsx)(eh.PriorityBadge,{priority:g.priority||"medium"})]}),(0,r.jsx)(ei.Button,{type:"button",variant:"ghost",size:"sm",onClick:a,className:"h-7 px-2 text-xs text-muted-foreground hover:text-foreground shrink-0",title:"Exit focus mode",children:(0,r.jsx)(eZ.Minimize2,{className:"h-4 w-4"})})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-1.5 sm:mb-2",children:[(0,r.jsxs)("h1",{className:"text-lg sm:text-xl font-bold tracking-tight",children:[g.specNumber&&(0,r.jsxs)("span",{className:"text-muted-foreground",children:["#",g.specNumber.toString().padStart(3,"0")," "]}),N]}),(0,r.jsxs)(ei.Button,{variant:"ghost",size:"icon",className:"lg:hidden h-8 w-8 -mr-2 shrink-0 text-muted-foreground",onClick:()=>{window.toggleSpecsSidebar&&window.toggleSpecsSidebar()},children:[(0,r.jsx)(eQ.List,{className:"h-5 w-5"}),(0,r.jsx)("span",{className:"sr-only",children:"Toggle specs list"})]})]}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,r.jsx)(ef.StatusBadge,{status:g.status||"planned"}),(0,r.jsx)(eh.PriorityBadge,{priority:g.priority||"medium"}),b.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"h-4 w-px bg-border mx-1 hidden sm:block"}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-1",children:[b.slice(0,5).map(e=>(0,r.jsx)(en.Badge,{variant:"secondary",className:"text-xs",children:e},e)),b.length>5&&(0,r.jsxs)(en.Badge,{variant:"secondary",className:"text-xs",children:["+",b.length-5," more"]})]})]})]}),(0,r.jsxs)("div",{className:"flex flex-wrap gap-2 sm:gap-4 text-xs text-muted-foreground mt-1.5 sm:mt-2",children:[(0,r.jsxs)("span",{className:"hidden sm:inline",children:["Created: ",E(g.createdAt)]}),(0,r.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,r.jsxs)("span",{children:["Updated: ",E(g.updatedAt),g.updatedAt&&(0,r.jsxs)("span",{className:"ml-1 text-[11px] text-muted-foreground/80",children:["(",y,")"]})]}),(0,r.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,r.jsxs)("span",{className:"hidden md:inline",children:["Name: ",g.specName]}),g.assignee&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,r.jsxs)("span",{className:"hidden sm:inline",children:["Assignee: ",g.assignee]})]})]}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mt-2",children:[(0,r.jsxs)(eV.Dialog,{open:d,onOpenChange:c,children:[(0,r.jsxs)(ei.Button,{type:"button",variant:"outline",size:"sm","aria-haspopup":"dialog","aria-expanded":d,onClick:()=>c(!0),className:"h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",children:[(0,r.jsx)(ea.Clock,{className:"mr-1.5 h-3.5 w-3.5"}),"View Timeline",(0,r.jsx)(eK.Maximize2,{className:"ml-1.5 h-3.5 w-3.5"})]}),(0,r.jsxs)(eV.DialogContent,{className:"w-[min(900px,90vw)] max-w-3xl max-h-[90vh] overflow-y-auto",children:[(0,r.jsxs)(eV.DialogHeader,{children:[(0,r.jsx)(eV.DialogTitle,{children:"Spec Timeline"}),(0,r.jsx)(eV.DialogDescription,{children:"Created, updated, and completion milestones."})]}),(0,r.jsx)("div",{className:"rounded-xl border border-border bg-muted/30 p-4",children:(0,r.jsx)(em,{createdAt:g.createdAt,updatedAt:g.updatedAt,completedAt:g.completedAt,status:g.status||"planned"})})]})]}),(0,r.jsxs)(eV.Dialog,{open:u,onOpenChange:p,children:[(0,r.jsxs)(ei.Button,{type:"button",variant:"outline",size:"sm","aria-haspopup":"dialog","aria-expanded":u,onClick:()=>p(!0),disabled:!j,className:(0,ep.cn)("h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",!j&&"cursor-not-allowed opacity-50"),children:[(0,r.jsx)(eH.GitBranch,{className:"mr-1.5 h-3.5 w-3.5"}),"View Dependencies",(0,r.jsx)(eK.Maximize2,{className:"ml-1.5 h-3.5 w-3.5"})]}),(0,r.jsxs)(eV.DialogContent,{className:"flex h-[85vh] w-[min(1200px,95vw)] max-w-6xl flex-col gap-4 overflow-hidden",children:[(0,r.jsxs)(eV.DialogHeader,{children:[(0,r.jsx)(eV.DialogTitle,{children:"Dependency Graph"}),(0,r.jsx)(eV.DialogDescription,{children:"Precedence requirements and connected specs rendered with automatic layout."})]}),(0,r.jsx)("div",{className:"min-h-0 flex-1",children:w&&(0,r.jsx)(e_,{relationships:w,specNumber:g.specNumber,specTitle:N})})]})]}),a&&(0,r.jsxs)(ei.Button,{type:"button",variant:"outline",size:"sm",onClick:a,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:"Enter focus mode",children:[(0,r.jsx)(eK.Maximize2,{className:"mr-1.5 h-3.5 w-3.5"}),"Focus"]})]})]})}),g.subSpecs&&g.subSpecs.length>0&&(0,r.jsx)("div",{className:"border-t bg-muted/30",children:(0,r.jsx)("div",{className:"px-3 sm:px-6 overflow-x-auto",children:(0,r.jsxs)("div",{className:"flex gap-1 py-2 min-w-max",children:[(0,r.jsxs)("button",{onClick:()=>S(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 ${!o?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[(0,r.jsx)(eG.Home,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"hidden sm:inline",children:"Overview"})]}),g.subSpecs.map(e=>{let t=e0[e.iconName]||eL.FileText;return(0,r.jsxs)("button",{onClick:()=>S(e.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 ${o===e.file?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[(0,r.jsx)(t,{className:`h-4 w-4 ${e.color}`}),(0,r.jsx)("span",{className:"hidden sm:inline",children:e.name})]},e.file)})]})})})]}),(0,r.jsxs)("div",{className:"flex flex-col xl:flex-row xl:items-start",children:[(0,r.jsx)("main",{className:"flex-1 px-3 sm:px-6 py-3 sm:py-6 min-w-0",children:(0,r.jsxs)("div",{className:"space-y-4",children:[h&&(0,r.jsx)("div",{className:"text-sm text-muted-foreground",children:"Loading..."}),f&&(0,r.jsx)("div",{className:"text-sm text-destructive",children:"Error loading spec"}),(0,r.jsx)("article",{className:"prose prose-slate dark:prose-invert max-w-none prose-sm sm:prose-base",children:(0,r.jsx)(ee.default,{remarkPlugins:[et.default,eY],rehypePlugins:[er.default,es.default],components:{a:e=>(0,r.jsx)(eg,{...e,currentSpecNumber:g.specNumber||void 0}),pre:({children:e,...t})=>{let n=s.Children.toArray(e)[0];if(s.isValidElement(n)&&"code"===n.type&&"string"==typeof n.props.className&&n.props.className?.includes("language-mermaid")){let e=n.props,t="string"==typeof e.children?e.children:"";return(0,r.jsx)(eF.MermaidDiagram,{code:t})}return(0,r.jsx)("pre",{...t,children:e})}},children:k})})]})}),(0,r.jsx)("aside",{className:"hidden xl:block w-72 shrink-0 px-6 py-6 sticky top-32 h-[calc(100vh-8rem)] overflow-y-auto scrollbar-auto-hide",children:(0,r.jsx)(eb.TableOfContentsSidebar,{content:k})})]}),(0,r.jsx)("div",{className:"xl:hidden",children:(0,r.jsx)(eb.TableOfContents,{content:k})}),(0,r.jsx)(ey.BackToTop,{})]})}var e5=e.i(293821);function e3({spec:e,allSpecs:t,currentSubSpec:i}){let[a,l]=s.useState(()=>"true"===localStorage.getItem("spec-detail-focus-mode")),o=s.useCallback(()=>{l(e=>{let t=!e;return localStorage.setItem("spec-detail-focus-mode",String(t)),t})},[]),d=s.useMemo(()=>t.map(e=>({id:e.id,specNumber:e.specNumber,title:e.title,specName:e.specName,status:e.status,priority:e.priority,tags:e.tags,contentMd:e.contentMd,updatedAt:e.updatedAt,subSpecsCount:"subSpecsCount"in e?e.subSpecsCount:void 0})),[t]);s.useEffect(()=>{(0,e5.primeSpecsSidebar)(d)},[d]),s.useEffect(()=>{(0,e5.setActiveSidebarSpec)(e.id)},[e.id]);let c=s.useCallback(e=>{fetch(`/api/specs/${e}`).catch(()=>{})},[]);return(0,r.jsxs)("div",{className:"flex min-h-[calc(100vh-3.5rem)] w-full min-w-0",children:[(0,r.jsx)(n.SpecsNavSidebar,{initialSpecs:d,currentSpecId:e.id,currentSubSpec:i,onSpecHover:c,className:(0,ep.cn)(a&&"hidden")}),(0,r.jsx)("div",{className:"flex-1 min-w-0",children:(0,r.jsx)(e2,{initialSpec:e,initialSubSpec:i,isFocusMode:a,onToggleFocusMode:o})})]})}e.s(["SpecDetailWrapper",()=>e3],918412)}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,995403,t=>{"use strict";var e=t.i(431231),a=t.i(395635);let r=Array(12).fill(0),o=({visible:t,className:a})=>e.default.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":t},e.default.createElement("div",{className:"sonner-spinner"},r.map((t,a)=>e.default.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),s=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),n=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),i=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),l=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),d=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},e.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),c=1,u=new class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:a,...r}=t,o="number"==typeof(null==t?void 0:t.id)||(null==(e=t.id)?void 0:e.length)>0?t.id:c++,s=this.toasts.find(t=>t.id===o),n=void 0===t.dismissible||t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),s?this.toasts=this.toasts.map(e=>e.id===o?(this.publish({...e,...t,id:o,title:a}),{...e,...t,id:o,dismissible:n,title:a}):e):this.addToast({title:a,...r,dismissible:n,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:t,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(e=>e({id:t.id,dismiss:!0}))}),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,a)=>{let r,o;if(!a)return;void 0!==a.loading&&(o=this.create({...a,promise:t,type:"loading",message:a.loading,description:"function"!=typeof a.description?a.description:void 0}));let s=Promise.resolve(t instanceof Function?t():t),n=void 0!==o,i=s.then(async t=>{if(r=["resolve",t],e.default.isValidElement(t))n=!1,this.create({id:o,type:"default",message:t});else if(f(t)&&!t.ok){n=!1;let r="function"==typeof a.error?await a.error(`HTTP error! status: ${t.status}`):a.error,s="function"==typeof a.description?await a.description(`HTTP error! status: ${t.status}`):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}else if(t instanceof Error){n=!1;let r="function"==typeof a.error?await a.error(t):a.error,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}else if(void 0!==a.success){n=!1;let r="function"==typeof a.success?await a.success(t):a.success,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"success",description:s,...i})}}).catch(async t=>{if(r=["reject",t],void 0!==a.error){n=!1;let r="function"==typeof a.error?await a.error(t):a.error,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}}).finally(()=>{n&&(this.dismiss(o),o=void 0),null==a.finally||a.finally.call(a)}),l=()=>new Promise((t,e)=>i.then(()=>"reject"===r[0]?e(r[1]):t(r[1])).catch(e));return"string"!=typeof o&&"number"!=typeof o?{unwrap:l}:Object.assign(o,{unwrap:l})},this.custom=(t,e)=>{let a=(null==e?void 0:e.id)||c++;return this.create({jsx:t(a),id:a,...e}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},f=t=>t&&"object"==typeof t&&"ok"in t&&"boolean"==typeof t.ok&&"status"in t&&"number"==typeof t.status,m=Object.assign((t,e)=>{let a=(null==e?void 0:e.id)||c++;return u.addToast({title:t,...e,id:a}),a},{success:u.success,info:u.info,warning:u.warning,error:u.error,custom:u.custom,message:u.message,promise:u.promise,dismiss:u.dismiss,loading:u.loading},{getHistory:()=>u.toasts,getToasts:()=>u.getActiveToasts()});function p(t){return void 0!==t.label}function h(...t){return t.filter(Boolean).join(" ")}!function(t){if(!t||"undefined"==typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",e.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");let g=t=>{var a,r,c,u,f,m,g,v,y,b,x,w,j;let{invert:k,toast:E,unstyled:N,interacting:C,setHeights:S,visibleToasts:T,heights:B,index:M,toasts:P,expanded:z,removeToast:D,defaultRichColors:R,closeButton:A,style:L,cancelButtonStyle:F,actionButtonStyle:$,className:Y="",descriptionClassName:H="",duration:I,position:O,gap:V,expandByDefault:U,classNames:X,icons:K,closeButtonAriaLabel:J="Close toast"}=t,[W,q]=e.default.useState(null),[G,Z]=e.default.useState(null),[Q,_]=e.default.useState(!1),[tt,te]=e.default.useState(!1),[ta,tr]=e.default.useState(!1),[to,ts]=e.default.useState(!1),[tn,ti]=e.default.useState(!1),[tl,td]=e.default.useState(0),[tc,tu]=e.default.useState(0),tf=e.default.useRef(E.duration||I||4e3),tm=e.default.useRef(null),tp=e.default.useRef(null),th=0===M,tg=M+1<=T,tv=E.type,ty=!1!==E.dismissible,tb=E.className||"",tx=E.descriptionClassName||"",tw=e.default.useMemo(()=>B.findIndex(t=>t.toastId===E.id)||0,[B,E.id]),tj=e.default.useMemo(()=>{var t;return null!=(t=E.closeButton)?t:A},[E.closeButton,A]),tk=e.default.useMemo(()=>E.duration||I||4e3,[E.duration,I]),tE=e.default.useRef(0),tN=e.default.useRef(0),tC=e.default.useRef(0),tS=e.default.useRef(null),[tT,tB]=O.split("-"),tM=e.default.useMemo(()=>B.reduce((t,e,a)=>a>=tw?t:t+e.height,0),[B,tw]),tP=(()=>{let[t,a]=e.default.useState(document.hidden);return e.default.useEffect(()=>{let t=()=>{a(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),t})(),tz=E.invert||k,tD="loading"===tv;tN.current=e.default.useMemo(()=>tw*V+tM,[tw,tM]),e.default.useEffect(()=>{tf.current=tk},[tk]),e.default.useEffect(()=>{_(!0)},[]),e.default.useEffect(()=>{let t=tp.current;if(t){let e=t.getBoundingClientRect().height;return tu(e),S(t=>[{toastId:E.id,height:e,position:E.position},...t]),()=>S(t=>t.filter(t=>t.toastId!==E.id))}},[S,E.id]),e.default.useLayoutEffect(()=>{if(!Q)return;let t=tp.current,e=t.style.height;t.style.height="auto";let a=t.getBoundingClientRect().height;t.style.height=e,tu(a),S(t=>t.find(t=>t.toastId===E.id)?t.map(t=>t.toastId===E.id?{...t,height:a}:t):[{toastId:E.id,height:a,position:E.position},...t])},[Q,E.title,E.description,S,E.id,E.jsx,E.action,E.cancel]);let tR=e.default.useCallback(()=>{te(!0),td(tN.current),S(t=>t.filter(t=>t.toastId!==E.id)),setTimeout(()=>{D(E)},200)},[E,D,S,tN]);e.default.useEffect(()=>{let t;if((!E.promise||"loading"!==tv)&&E.duration!==1/0&&"loading"!==E.type){if(z||C||tP){if(tC.current<tE.current){let t=new Date().getTime()-tE.current;tf.current=tf.current-t}tC.current=new Date().getTime()}else tf.current!==1/0&&(tE.current=new Date().getTime(),t=setTimeout(()=>{null==E.onAutoClose||E.onAutoClose.call(E,E),tR()},tf.current));return()=>clearTimeout(t)}},[z,C,E,tv,tP,tR]),e.default.useEffect(()=>{E.delete&&(tR(),null==E.onDismiss||E.onDismiss.call(E,E))},[tR,E.delete]);let tA=E.icon||(null==K?void 0:K[tv])||(t=>{switch(t){case"success":return s;case"info":return i;case"warning":return n;case"error":return l;default:return null}})(tv);return e.default.createElement("li",{tabIndex:0,ref:tp,className:h(Y,tb,null==X?void 0:X.toast,null==E||null==(a=E.classNames)?void 0:a.toast,null==X?void 0:X.default,null==X?void 0:X[tv],null==E||null==(r=E.classNames)?void 0:r[tv]),"data-sonner-toast":"","data-rich-colors":null!=(b=E.richColors)?b:R,"data-styled":!(E.jsx||E.unstyled||N),"data-mounted":Q,"data-promise":!!E.promise,"data-swiped":tn,"data-removed":tt,"data-visible":tg,"data-y-position":tT,"data-x-position":tB,"data-index":M,"data-front":th,"data-swiping":ta,"data-dismissible":ty,"data-type":tv,"data-invert":tz,"data-swipe-out":to,"data-swipe-direction":G,"data-expanded":!!(z||U&&Q),"data-testid":E.testId,style:{"--index":M,"--toasts-before":M,"--z-index":P.length-M,"--offset":`${tt?tl:tN.current}px`,"--initial-height":U?"auto":`${tc}px`,...L,...E.style},onDragEnd:()=>{tr(!1),q(null),tS.current=null},onPointerDown:t=>{2===t.button||tD||!ty||(tm.current=new Date,td(tN.current),t.target.setPointerCapture(t.pointerId),"BUTTON"!==t.target.tagName&&(tr(!0),tS.current={x:t.clientX,y:t.clientY}))},onPointerUp:()=>{var t,e,a,r,o;if(to||!ty)return;tS.current=null;let s=Number((null==(t=tp.current)?void 0:t.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),n=Number((null==(e=tp.current)?void 0:e.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),i=new Date().getTime()-(null==(a=tm.current)?void 0:a.getTime()),l="x"===W?s:n,d=Math.abs(l)/i;if(Math.abs(l)>=45||d>.11){td(tN.current),null==E.onDismiss||E.onDismiss.call(E,E),"x"===W?Z(s>0?"right":"left"):Z(n>0?"down":"up"),tR(),ts(!0);return}null==(r=tp.current)||r.style.setProperty("--swipe-amount-x","0px"),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y","0px"),ti(!1),tr(!1),q(null)},onPointerMove:e=>{var a,r,o,s;if(!tS.current||!ty||(null==(a=window.getSelection())?void 0:a.toString().length)>0)return;let n=e.clientY-tS.current.y,i=e.clientX-tS.current.x,l=null!=(s=t.swipeDirections)?s:function(t){let[e,a]=t.split("-"),r=[];return e&&r.push(e),a&&r.push(a),r}(O);!W&&(Math.abs(i)>1||Math.abs(n)>1)&&q(Math.abs(i)>Math.abs(n)?"x":"y");let d={x:0,y:0},c=t=>1/(1.5+Math.abs(t)/20);if("y"===W){if(l.includes("top")||l.includes("bottom"))if(l.includes("top")&&n<0||l.includes("bottom")&&n>0)d.y=n;else{let t=n*c(n);d.y=Math.abs(t)<Math.abs(n)?t:n}}else if("x"===W&&(l.includes("left")||l.includes("right")))if(l.includes("left")&&i<0||l.includes("right")&&i>0)d.x=i;else{let t=i*c(i);d.x=Math.abs(t)<Math.abs(i)?t:i}(Math.abs(d.x)>0||Math.abs(d.y)>0)&&ti(!0),null==(r=tp.current)||r.style.setProperty("--swipe-amount-x",`${d.x}px`),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y",`${d.y}px`)}},tj&&!E.jsx&&"loading"!==tv?e.default.createElement("button",{"aria-label":J,"data-disabled":tD,"data-close-button":!0,onClick:tD||!ty?()=>{}:()=>{tR(),null==E.onDismiss||E.onDismiss.call(E,E)},className:h(null==X?void 0:X.closeButton,null==E||null==(c=E.classNames)?void 0:c.closeButton)},null!=(x=null==K?void 0:K.close)?x:d):null,(tv||E.icon||E.promise)&&null!==E.icon&&((null==K?void 0:K[tv])!==null||E.icon)?e.default.createElement("div",{"data-icon":"",className:h(null==X?void 0:X.icon,null==E||null==(u=E.classNames)?void 0:u.icon)},E.promise||"loading"===E.type&&!E.icon?E.icon||((null==K?void 0:K.loading)?e.default.createElement("div",{className:h(null==X?void 0:X.loader,null==E||null==(j=E.classNames)?void 0:j.loader,"sonner-loader"),"data-visible":"loading"===tv},K.loading):e.default.createElement(o,{className:h(null==X?void 0:X.loader,null==E||null==(w=E.classNames)?void 0:w.loader),visible:"loading"===tv})):null,"loading"!==E.type?tA:null):null,e.default.createElement("div",{"data-content":"",className:h(null==X?void 0:X.content,null==E||null==(f=E.classNames)?void 0:f.content)},e.default.createElement("div",{"data-title":"",className:h(null==X?void 0:X.title,null==E||null==(m=E.classNames)?void 0:m.title)},E.jsx?E.jsx:"function"==typeof E.title?E.title():E.title),E.description?e.default.createElement("div",{"data-description":"",className:h(H,tx,null==X?void 0:X.description,null==E||null==(g=E.classNames)?void 0:g.description)},"function"==typeof E.description?E.description():E.description):null),e.default.isValidElement(E.cancel)?E.cancel:E.cancel&&p(E.cancel)?e.default.createElement("button",{"data-button":!0,"data-cancel":!0,style:E.cancelButtonStyle||F,onClick:t=>{!p(E.cancel)||ty&&(null==E.cancel.onClick||E.cancel.onClick.call(E.cancel,t),tR())},className:h(null==X?void 0:X.cancelButton,null==E||null==(v=E.classNames)?void 0:v.cancelButton)},E.cancel.label):null,e.default.isValidElement(E.action)?E.action:E.action&&p(E.action)?e.default.createElement("button",{"data-button":!0,"data-action":!0,style:E.actionButtonStyle||$,onClick:t=>{!p(E.action)||(null==E.action.onClick||E.action.onClick.call(E.action,t),t.defaultPrevented||tR())},className:h(null==X?void 0:X.actionButton,null==E||null==(y=E.classNames)?void 0:y.actionButton)},E.action.label):null)};function v(){if("undefined"==typeof window||"undefined"==typeof document)return"ltr";let t=document.documentElement.getAttribute("dir");return"auto"!==t&&t?t:window.getComputedStyle(document.documentElement).direction}let y=e.default.forwardRef(function(t,r){let{id:o,invert:s,position:n="bottom-right",hotkey:i=["altKey","KeyT"],expand:l,closeButton:d,className:c,offset:f,mobileOffset:m,theme:p="light",richColors:h,duration:y,style:b,visibleToasts:x=3,toastOptions:w,dir:j=v(),gap:k=14,icons:E,containerAriaLabel:N="Notifications"}=t,[C,S]=e.default.useState([]),T=e.default.useMemo(()=>o?C.filter(t=>t.toasterId===o):C.filter(t=>!t.toasterId),[C,o]),B=e.default.useMemo(()=>Array.from(new Set([n].concat(T.filter(t=>t.position).map(t=>t.position)))),[T,n]),[M,P]=e.default.useState([]),[z,D]=e.default.useState(!1),[R,A]=e.default.useState(!1),[L,F]=e.default.useState("system"!==p?p:"undefined"!=typeof window&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),$=e.default.useRef(null),Y=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),H=e.default.useRef(null),I=e.default.useRef(!1),O=e.default.useCallback(t=>{S(e=>{var a;return(null==(a=e.find(e=>e.id===t.id))?void 0:a.delete)||u.dismiss(t.id),e.filter(({id:e})=>e!==t.id)})},[]);return e.default.useEffect(()=>u.subscribe(t=>{t.dismiss?requestAnimationFrame(()=>{S(e=>e.map(e=>e.id===t.id?{...e,delete:!0}:e))}):setTimeout(()=>{a.default.flushSync(()=>{S(e=>{let a=e.findIndex(e=>e.id===t.id);return -1!==a?[...e.slice(0,a),{...e[a],...t},...e.slice(a+1)]:[t,...e]})})})}),[C]),e.default.useEffect(()=>{if("system"!==p)return void F(p);if("system"===p&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?F("dark"):F("light")),"undefined"==typeof window)return;let t=window.matchMedia("(prefers-color-scheme: dark)");try{t.addEventListener("change",({matches:t})=>{t?F("dark"):F("light")})}catch(e){t.addListener(({matches:t})=>{try{t?F("dark"):F("light")}catch(t){console.error(t)}})}},[p]),e.default.useEffect(()=>{C.length<=1&&D(!1)},[C]),e.default.useEffect(()=>{let t=t=>{var e,a;i.every(e=>t[e]||t.code===e)&&(D(!0),null==(a=$.current)||a.focus()),"Escape"===t.code&&(document.activeElement===$.current||(null==(e=$.current)?void 0:e.contains(document.activeElement)))&&D(!1)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[i]),e.default.useEffect(()=>{if($.current)return()=>{H.current&&(H.current.focus({preventScroll:!0}),H.current=null,I.current=!1)}},[$.current]),e.default.createElement("section",{ref:r,"aria-label":`${N} ${Y}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},B.map((a,r)=>{var o;let n,[i,u]=a.split("-");return T.length?e.default.createElement("ol",{key:a,dir:"auto"===j?v():j,tabIndex:-1,ref:$,className:c,"data-sonner-toaster":!0,"data-sonner-theme":L,"data-y-position":i,"data-x-position":u,style:{"--front-toast-height":`${(null==(o=M[0])?void 0:o.height)||0}px`,"--width":"356px","--gap":`${k}px`,...b,...(n={},[f,m].forEach((t,e)=>{let a=1===e,r=a?"--mobile-offset":"--offset",o=a?"16px":"24px";function s(t){["top","right","bottom","left"].forEach(e=>{n[`${r}-${e}`]="number"==typeof t?`${t}px`:t})}"number"==typeof t||"string"==typeof t?s(t):"object"==typeof t?["top","right","bottom","left"].forEach(e=>{void 0===t[e]?n[`${r}-${e}`]=o:n[`${r}-${e}`]="number"==typeof t[e]?`${t[e]}px`:t[e]}):s(o)}),n)},onBlur:t=>{I.current&&!t.currentTarget.contains(t.relatedTarget)&&(I.current=!1,H.current&&(H.current.focus({preventScroll:!0}),H.current=null))},onFocus:t=>{!(t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible)&&(I.current||(I.current=!0,H.current=t.relatedTarget))},onMouseEnter:()=>D(!0),onMouseMove:()=>D(!0),onMouseLeave:()=>{R||D(!1)},onDragEnd:()=>D(!1),onPointerDown:t=>{t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible||A(!0)},onPointerUp:()=>A(!1)},T.filter(t=>!t.position&&0===r||t.position===a).map((r,o)=>{var n,i;return e.default.createElement(g,{key:r.id,icons:E,index:o,toast:r,defaultRichColors:h,duration:null!=(n=null==w?void 0:w.duration)?n:y,className:null==w?void 0:w.className,descriptionClassName:null==w?void 0:w.descriptionClassName,invert:s,visibleToasts:x,closeButton:null!=(i=null==w?void 0:w.closeButton)?i:d,interacting:R,position:a,style:null==w?void 0:w.style,unstyled:null==w?void 0:w.unstyled,classNames:null==w?void 0:w.classNames,cancelButtonStyle:null==w?void 0:w.cancelButtonStyle,actionButtonStyle:null==w?void 0:w.actionButtonStyle,closeButtonAriaLabel:null==w?void 0:w.closeButtonAriaLabel,removeToast:O,toasts:T.filter(t=>t.position==r.position),heights:M.filter(t=>t.position==r.position),setHeights:P,expandByDefault:l,gap:k,expanded:z,swipeDirections:t.swipeDirections})})):null}))});t.s(["Toaster",()=>y,"toast",()=>m])},178420,t=>{"use strict";var e=t.i(890022),a=t.i(995403),r=t.i(81795);function o(){let{theme:t}=(0,r.useTheme)();return(0,e.jsx)(a.Toaster,{theme:t,position:"bottom-right",richColors:!0,closeButton:!0,expand:!1,duration:4e3,toastOptions:{classNames:{toast:"group",title:"font-semibold",description:"text-sm opacity-90",actionButton:"bg-primary text-primary-foreground",cancelButton:"bg-muted text-muted-foreground"}}})}t.s(["Toast",()=>o])},954049,t=>{"use strict";let e=(0,t.i(122436).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);t.s(["BookOpen",()=>e],954049)},20648,t=>{"use strict";var e=t.i(890022),a=t.i(431231);let r=(0,a.createContext)(null);function o(){let t=(0,a.useContext)(r);if(!t)throw Error("useProject must be used within ProjectProvider");return t}function s({children:t,initialProjectId:o}){let[s,n]=(0,a.useState)("single-project"),[i,l]=(0,a.useState)(null),[d,c]=(0,a.useState)([]),[u,f]=(0,a.useState)([]),[m,p]=(0,a.useState)([]),[h,g]=(0,a.useState)(!0),[v,y]=(0,a.useState)(null),b=(0,a.useCallback)(async()=>{try{g(!0),y(null);let t=await fetch("/api/projects");if(!t.ok)throw Error("Failed to fetch projects");let e=await t.json();if(n(e.mode||"single-project"),c(e.projects||[]),f(e.recentProjects||[]),p(e.favoriteProjects||[]),!i&&e.projects.length>0){let t=o?e.projects.find(t=>t.id===o):e.recentProjects?.[0]||e.projects[0];t&&l(t)}}catch(t){console.error("Error fetching projects:",t),y(t instanceof Error?t.message:"Failed to load projects")}finally{g(!1)}},[i,o]),x=(0,a.useCallback)(async t=>{try{let e=await fetch(`/api/projects/${t}`);if(!e.ok)throw Error("Failed to fetch project");let a=await e.json();l(a.project),await b()}catch(t){throw console.error("Error switching project:",t),y(t instanceof Error?t.message:"Failed to switch project"),t}},[b]),w=(0,a.useCallback)(async(t,e)=>{try{let a=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t,...e})});if(!a.ok){let t=await a.json();throw Error(t.details||"Failed to add project")}let r=await a.json();return await b(),r.project}catch(t){throw console.error("Error adding project:",t),y(t instanceof Error?t.message:"Failed to add project"),t}},[b]),j=(0,a.useCallback)(async t=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"DELETE"})).ok)throw Error("Failed to remove project");if(i?.id===t){let e=d.find(e=>e.id!==t);l(e||null)}await b()}catch(t){throw console.error("Error removing project:",t),y(t instanceof Error?t.message:"Failed to remove project"),t}},[i,d,b]),k=(0,a.useCallback)(async t=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({favorite:!0})})).ok)throw Error("Failed to toggle favorite");await b()}catch(t){throw console.error("Error toggling favorite:",t),y(t instanceof Error?t.message:"Failed to toggle favorite"),t}},[b]),E=(0,a.useCallback)(async(t,e)=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok)throw Error("Failed to update project");await b()}catch(t){throw console.error("Error updating project:",t),y(t instanceof Error?t.message:"Failed to update project"),t}},[b]);return(0,a.useEffect)(()=>{b()},[b]),(0,e.jsx)(r.Provider,{value:{mode:s,currentProject:i,projects:d,recentProjects:u,favoriteProjects:m,isLoading:h,error:v,switchProject:x,addProject:w,removeProject:j,toggleFavorite:k,updateProject:E,refreshProjects:b},children:t})}t.s(["ProjectProvider",()=>s,"useProject",()=>o])},787949,t=>{"use strict";let e=(0,t.i(122436).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);t.s(["Loader2",()=>e],787949)},963781,723882,828964,361877,t=>{"use strict";var e=t.i(122436);let a=(0,e.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);t.s(["Plus",()=>a],963781);let r=(0,e.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);t.s(["FolderOpen",()=>r],723882);let o=(0,e.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);t.s(["Star",()=>o],828964);var s=t.i(890022),n=t.i(431231),i=t.i(230827),l=t.i(20648),d=t.i(235893),c=t.i(21079);let u=(0,e.default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);var f=t.i(787949);let m=(0,e.default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);var p=t.i(497332),h=t.i(525761),g=t.i(632137);function v({onSelect:t,onCancel:e,initialPath:a,actionLabel:r="Select This Folder",isLoading:o}){let[i,l]=(0,n.useState)(a||""),[c,v]=(0,n.useState)([]),[y,b]=(0,n.useState)(!1),[x,w]=(0,n.useState)(null),j=(0,n.useRef)(null),k=o||y;(0,n.useEffect)(()=>{E(i)},[i]),(0,n.useEffect)(()=>{j.current&&(j.current.scrollLeft=j.current.scrollWidth)},[i]);let E=async t=>{try{b(!0),w(null);let e=await fetch("/api/local-projects/list-directory",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})});if(!e.ok)throw Error("Failed to list directory");let a=await e.json();v(a.items),t||l(a.path)}catch(t){w(t instanceof Error?t.message:String(t))}finally{b(!1)}},N=t=>{l(t)},C=c.find(t=>".."===t.name),S=c.filter(t=>".."!==t.name),T=(t=>{if(!t)return[];let e=t.includes("\\")?"\\":"/",a=t.split(e).filter(Boolean),r=t.startsWith("/");return a.map((t,o)=>{let s=a.slice(0,o+1).join(e);return r&&(s="/"+s),{name:t,path:s}})})(i);return(0,s.jsxs)("div",{className:"flex flex-col h-[400px] gap-4 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center border rounded-md p-1 gap-1 bg-muted/30",children:[(0,s.jsx)(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0",disabled:!C||k,onClick:()=>C&&N(C.path),title:"Go to parent directory",children:(0,s.jsx)(m,{className:"h-4 w-4"})}),(0,s.jsx)("div",{className:"w-px h-5 bg-border mx-1"}),(0,s.jsxs)("div",{ref:j,className:"flex-1 overflow-x-auto whitespace-nowrap flex items-center scrollbar-hide px-1 min-w-0",children:[(0,s.jsx)("button",{onClick:()=>N("/"),className:"hover:bg-accent p-1 rounded-sm transition-colors shrink-0",title:"Go to root",children:(0,s.jsx)(p.Home,{className:"h-4 w-4 text-muted-foreground"})}),T.map((t,e)=>(0,s.jsxs)("div",{className:"flex items-center shrink-0",children:[(0,s.jsx)(h.ChevronRight,{className:"h-3 w-3 text-muted-foreground mx-0.5 shrink-0"}),(0,s.jsx)("button",{onClick:()=>N(t.path),className:(0,g.cn)("px-1.5 py-0.5 rounded-sm transition-colors text-sm hover:bg-accent hover:text-accent-foreground",e===T.length-1?"font-medium text-foreground":"text-muted-foreground"),children:t.name})]},t.path))]})]}),(0,s.jsxs)("div",{className:"flex-1 border rounded-md overflow-hidden relative bg-background min-h-0",children:[k&&(0,s.jsx)("div",{className:"absolute inset-0 bg-background/50 flex items-center justify-center z-10",children:(0,s.jsx)(f.Loader2,{className:"h-6 w-6 animate-spin"})}),x?(0,s.jsxs)("div",{className:"p-4 text-destructive text-sm text-center",children:[x,(0,s.jsx)(d.Button,{variant:"link",onClick:()=>E(i),className:"block mx-auto mt-2",children:"Retry"})]}):(0,s.jsx)("div",{className:"h-full overflow-auto",children:(0,s.jsx)("div",{className:"p-1",children:0!==S.length||k?S.map(t=>(0,s.jsxs)("button",{onClick:()=>N(t.path),className:"flex items-center gap-3 w-full px-3 py-2 text-sm rounded-sm hover:bg-accent hover:text-accent-foreground text-left group transition-colors",children:[(0,s.jsx)(u,{className:"h-4 w-4 text-blue-500 fill-blue-500/20 group-hover:fill-blue-500/30 transition-colors shrink-0"}),(0,s.jsx)("span",{className:"truncate",children:t.name})]},t.path)):(0,s.jsx)("div",{className:"p-4 text-center text-sm text-muted-foreground",children:"Empty directory"})})})]}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)(d.Button,{variant:"outline",onClick:e,disabled:k,children:"Cancel"}),(0,s.jsx)(d.Button,{onClick:()=>t(i),disabled:k||!i,children:r})]})]})}var y=t.i(439779),b=t.i(995403);function x({open:t,onOpenChange:e}){let{addProject:a,switchProject:o}=(0,l.useProject)(),[u,f]=(0,n.useState)(""),[m,p]=(0,n.useState)(!1),[h,g]=(0,n.useState)("picker"),x=(0,i.useRouter)();(0,n.useEffect)(()=>{t&&(g("picker"),f(""))},[t]);let w=async t=>{try{p(!0);let r=await a(t);await o(r.id),b.toast.success("Project added successfully"),e(!1),x.push("/")}catch(e){let t=e instanceof Error?e.message:"Failed to add project";b.toast.error(t)}finally{p(!1)}};return(0,s.jsx)(y.Dialog,{open:t,onOpenChange:e,children:(0,s.jsxs)(y.DialogContent,{className:"sm:max-w-[600px]",children:[(0,s.jsxs)(y.DialogHeader,{children:[(0,s.jsx)(y.DialogTitle,{children:"Add Project"}),(0,s.jsx)(y.DialogDescription,{children:"picker"===h?"Browse and select the project directory.":"Enter the absolute path to your local project directory."})]}),"picker"===h?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(v,{onSelect:w,onCancel:()=>e(!1),initialPath:u,actionLabel:m?"Adding...":"Add Project",isLoading:m}),(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(d.Button,{variant:"link",size:"sm",onClick:()=>g("manual"),className:"text-muted-foreground",children:"Enter path manually"})})]}):(0,s.jsxs)("form",{onSubmit:t=>{t.preventDefault(),u&&w(u)},children:[(0,s.jsx)("div",{className:"grid gap-4 py-4",children:(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)("label",{htmlFor:"path",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Project Path"}),(0,s.jsx)("div",{className:"flex gap-2",children:(0,s.jsx)(c.Input,{id:"path",value:u,onChange:t=>f(t.target.value),placeholder:"/path/to/your/project",className:"flex-1",disabled:m})}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:"Select the root directory of your project."})]})}),(0,s.jsxs)(y.DialogFooter,{className:"flex-col sm:flex-row gap-2",children:[(0,s.jsx)("div",{className:"flex-1 flex justify-start",children:(0,s.jsxs)(d.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>g("picker"),children:[(0,s.jsx)(r,{className:"h-4 w-4 mr-2"}),"Browse folders"]})}),(0,s.jsx)(d.Button,{type:"button",variant:"outline",onClick:()=>e(!1),disabled:m,children:"Cancel"}),(0,s.jsx)(d.Button,{type:"submit",disabled:m||!u,children:m?"Adding...":"Add Project"})]})]})]})})}t.s(["CreateProjectDialog",()=>x],361877)}]);
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,995403,t=>{"use strict";var e=t.i(431231),a=t.i(395635);let r=Array(12).fill(0),o=({visible:t,className:a})=>e.default.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":t},e.default.createElement("div",{className:"sonner-spinner"},r.map((t,a)=>e.default.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),s=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),n=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),i=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),l=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),d=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},e.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),c=1,u=new class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:a,...r}=t,o="number"==typeof(null==t?void 0:t.id)||(null==(e=t.id)?void 0:e.length)>0?t.id:c++,s=this.toasts.find(t=>t.id===o),n=void 0===t.dismissible||t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),s?this.toasts=this.toasts.map(e=>e.id===o?(this.publish({...e,...t,id:o,title:a}),{...e,...t,id:o,dismissible:n,title:a}):e):this.addToast({title:a,...r,dismissible:n,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:t,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(e=>e({id:t.id,dismiss:!0}))}),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,a)=>{let r,o;if(!a)return;void 0!==a.loading&&(o=this.create({...a,promise:t,type:"loading",message:a.loading,description:"function"!=typeof a.description?a.description:void 0}));let s=Promise.resolve(t instanceof Function?t():t),n=void 0!==o,i=s.then(async t=>{if(r=["resolve",t],e.default.isValidElement(t))n=!1,this.create({id:o,type:"default",message:t});else if(f(t)&&!t.ok){n=!1;let r="function"==typeof a.error?await a.error(`HTTP error! status: ${t.status}`):a.error,s="function"==typeof a.description?await a.description(`HTTP error! status: ${t.status}`):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}else if(t instanceof Error){n=!1;let r="function"==typeof a.error?await a.error(t):a.error,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}else if(void 0!==a.success){n=!1;let r="function"==typeof a.success?await a.success(t):a.success,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"success",description:s,...i})}}).catch(async t=>{if(r=["reject",t],void 0!==a.error){n=!1;let r="function"==typeof a.error?await a.error(t):a.error,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}}).finally(()=>{n&&(this.dismiss(o),o=void 0),null==a.finally||a.finally.call(a)}),l=()=>new Promise((t,e)=>i.then(()=>"reject"===r[0]?e(r[1]):t(r[1])).catch(e));return"string"!=typeof o&&"number"!=typeof o?{unwrap:l}:Object.assign(o,{unwrap:l})},this.custom=(t,e)=>{let a=(null==e?void 0:e.id)||c++;return this.create({jsx:t(a),id:a,...e}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},f=t=>t&&"object"==typeof t&&"ok"in t&&"boolean"==typeof t.ok&&"status"in t&&"number"==typeof t.status,m=Object.assign((t,e)=>{let a=(null==e?void 0:e.id)||c++;return u.addToast({title:t,...e,id:a}),a},{success:u.success,info:u.info,warning:u.warning,error:u.error,custom:u.custom,message:u.message,promise:u.promise,dismiss:u.dismiss,loading:u.loading},{getHistory:()=>u.toasts,getToasts:()=>u.getActiveToasts()});function p(t){return void 0!==t.label}function h(...t){return t.filter(Boolean).join(" ")}!function(t){if(!t||"undefined"==typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",e.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");let g=t=>{var a,r,c,u,f,m,g,v,y,b,x,w,j;let{invert:k,toast:E,unstyled:N,interacting:C,setHeights:S,visibleToasts:T,heights:B,index:M,toasts:P,expanded:z,removeToast:D,defaultRichColors:A,closeButton:R,style:L,cancelButtonStyle:F,actionButtonStyle:$,className:Y="",descriptionClassName:H="",duration:I,position:O,gap:V,expandByDefault:U,classNames:X,icons:K,closeButtonAriaLabel:J="Close toast"}=t,[W,q]=e.default.useState(null),[G,Z]=e.default.useState(null),[Q,_]=e.default.useState(!1),[tt,te]=e.default.useState(!1),[ta,tr]=e.default.useState(!1),[to,ts]=e.default.useState(!1),[tn,ti]=e.default.useState(!1),[tl,td]=e.default.useState(0),[tc,tu]=e.default.useState(0),tf=e.default.useRef(E.duration||I||4e3),tm=e.default.useRef(null),tp=e.default.useRef(null),th=0===M,tg=M+1<=T,tv=E.type,ty=!1!==E.dismissible,tb=E.className||"",tx=E.descriptionClassName||"",tw=e.default.useMemo(()=>B.findIndex(t=>t.toastId===E.id)||0,[B,E.id]),tj=e.default.useMemo(()=>{var t;return null!=(t=E.closeButton)?t:R},[E.closeButton,R]),tk=e.default.useMemo(()=>E.duration||I||4e3,[E.duration,I]),tE=e.default.useRef(0),tN=e.default.useRef(0),tC=e.default.useRef(0),tS=e.default.useRef(null),[tT,tB]=O.split("-"),tM=e.default.useMemo(()=>B.reduce((t,e,a)=>a>=tw?t:t+e.height,0),[B,tw]),tP=(()=>{let[t,a]=e.default.useState(document.hidden);return e.default.useEffect(()=>{let t=()=>{a(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),t})(),tz=E.invert||k,tD="loading"===tv;tN.current=e.default.useMemo(()=>tw*V+tM,[tw,tM]),e.default.useEffect(()=>{tf.current=tk},[tk]),e.default.useEffect(()=>{_(!0)},[]),e.default.useEffect(()=>{let t=tp.current;if(t){let e=t.getBoundingClientRect().height;return tu(e),S(t=>[{toastId:E.id,height:e,position:E.position},...t]),()=>S(t=>t.filter(t=>t.toastId!==E.id))}},[S,E.id]),e.default.useLayoutEffect(()=>{if(!Q)return;let t=tp.current,e=t.style.height;t.style.height="auto";let a=t.getBoundingClientRect().height;t.style.height=e,tu(a),S(t=>t.find(t=>t.toastId===E.id)?t.map(t=>t.toastId===E.id?{...t,height:a}:t):[{toastId:E.id,height:a,position:E.position},...t])},[Q,E.title,E.description,S,E.id,E.jsx,E.action,E.cancel]);let tA=e.default.useCallback(()=>{te(!0),td(tN.current),S(t=>t.filter(t=>t.toastId!==E.id)),setTimeout(()=>{D(E)},200)},[E,D,S,tN]);e.default.useEffect(()=>{let t;if((!E.promise||"loading"!==tv)&&E.duration!==1/0&&"loading"!==E.type){if(z||C||tP){if(tC.current<tE.current){let t=new Date().getTime()-tE.current;tf.current=tf.current-t}tC.current=new Date().getTime()}else tf.current!==1/0&&(tE.current=new Date().getTime(),t=setTimeout(()=>{null==E.onAutoClose||E.onAutoClose.call(E,E),tA()},tf.current));return()=>clearTimeout(t)}},[z,C,E,tv,tP,tA]),e.default.useEffect(()=>{E.delete&&(tA(),null==E.onDismiss||E.onDismiss.call(E,E))},[tA,E.delete]);let tR=E.icon||(null==K?void 0:K[tv])||(t=>{switch(t){case"success":return s;case"info":return i;case"warning":return n;case"error":return l;default:return null}})(tv);return e.default.createElement("li",{tabIndex:0,ref:tp,className:h(Y,tb,null==X?void 0:X.toast,null==E||null==(a=E.classNames)?void 0:a.toast,null==X?void 0:X.default,null==X?void 0:X[tv],null==E||null==(r=E.classNames)?void 0:r[tv]),"data-sonner-toast":"","data-rich-colors":null!=(b=E.richColors)?b:A,"data-styled":!(E.jsx||E.unstyled||N),"data-mounted":Q,"data-promise":!!E.promise,"data-swiped":tn,"data-removed":tt,"data-visible":tg,"data-y-position":tT,"data-x-position":tB,"data-index":M,"data-front":th,"data-swiping":ta,"data-dismissible":ty,"data-type":tv,"data-invert":tz,"data-swipe-out":to,"data-swipe-direction":G,"data-expanded":!!(z||U&&Q),"data-testid":E.testId,style:{"--index":M,"--toasts-before":M,"--z-index":P.length-M,"--offset":`${tt?tl:tN.current}px`,"--initial-height":U?"auto":`${tc}px`,...L,...E.style},onDragEnd:()=>{tr(!1),q(null),tS.current=null},onPointerDown:t=>{2===t.button||tD||!ty||(tm.current=new Date,td(tN.current),t.target.setPointerCapture(t.pointerId),"BUTTON"!==t.target.tagName&&(tr(!0),tS.current={x:t.clientX,y:t.clientY}))},onPointerUp:()=>{var t,e,a,r,o;if(to||!ty)return;tS.current=null;let s=Number((null==(t=tp.current)?void 0:t.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),n=Number((null==(e=tp.current)?void 0:e.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),i=new Date().getTime()-(null==(a=tm.current)?void 0:a.getTime()),l="x"===W?s:n,d=Math.abs(l)/i;if(Math.abs(l)>=45||d>.11){td(tN.current),null==E.onDismiss||E.onDismiss.call(E,E),"x"===W?Z(s>0?"right":"left"):Z(n>0?"down":"up"),tA(),ts(!0);return}null==(r=tp.current)||r.style.setProperty("--swipe-amount-x","0px"),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y","0px"),ti(!1),tr(!1),q(null)},onPointerMove:e=>{var a,r,o,s;if(!tS.current||!ty||(null==(a=window.getSelection())?void 0:a.toString().length)>0)return;let n=e.clientY-tS.current.y,i=e.clientX-tS.current.x,l=null!=(s=t.swipeDirections)?s:function(t){let[e,a]=t.split("-"),r=[];return e&&r.push(e),a&&r.push(a),r}(O);!W&&(Math.abs(i)>1||Math.abs(n)>1)&&q(Math.abs(i)>Math.abs(n)?"x":"y");let d={x:0,y:0},c=t=>1/(1.5+Math.abs(t)/20);if("y"===W){if(l.includes("top")||l.includes("bottom"))if(l.includes("top")&&n<0||l.includes("bottom")&&n>0)d.y=n;else{let t=n*c(n);d.y=Math.abs(t)<Math.abs(n)?t:n}}else if("x"===W&&(l.includes("left")||l.includes("right")))if(l.includes("left")&&i<0||l.includes("right")&&i>0)d.x=i;else{let t=i*c(i);d.x=Math.abs(t)<Math.abs(i)?t:i}(Math.abs(d.x)>0||Math.abs(d.y)>0)&&ti(!0),null==(r=tp.current)||r.style.setProperty("--swipe-amount-x",`${d.x}px`),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y",`${d.y}px`)}},tj&&!E.jsx&&"loading"!==tv?e.default.createElement("button",{"aria-label":J,"data-disabled":tD,"data-close-button":!0,onClick:tD||!ty?()=>{}:()=>{tA(),null==E.onDismiss||E.onDismiss.call(E,E)},className:h(null==X?void 0:X.closeButton,null==E||null==(c=E.classNames)?void 0:c.closeButton)},null!=(x=null==K?void 0:K.close)?x:d):null,(tv||E.icon||E.promise)&&null!==E.icon&&((null==K?void 0:K[tv])!==null||E.icon)?e.default.createElement("div",{"data-icon":"",className:h(null==X?void 0:X.icon,null==E||null==(u=E.classNames)?void 0:u.icon)},E.promise||"loading"===E.type&&!E.icon?E.icon||((null==K?void 0:K.loading)?e.default.createElement("div",{className:h(null==X?void 0:X.loader,null==E||null==(j=E.classNames)?void 0:j.loader,"sonner-loader"),"data-visible":"loading"===tv},K.loading):e.default.createElement(o,{className:h(null==X?void 0:X.loader,null==E||null==(w=E.classNames)?void 0:w.loader),visible:"loading"===tv})):null,"loading"!==E.type?tR:null):null,e.default.createElement("div",{"data-content":"",className:h(null==X?void 0:X.content,null==E||null==(f=E.classNames)?void 0:f.content)},e.default.createElement("div",{"data-title":"",className:h(null==X?void 0:X.title,null==E||null==(m=E.classNames)?void 0:m.title)},E.jsx?E.jsx:"function"==typeof E.title?E.title():E.title),E.description?e.default.createElement("div",{"data-description":"",className:h(H,tx,null==X?void 0:X.description,null==E||null==(g=E.classNames)?void 0:g.description)},"function"==typeof E.description?E.description():E.description):null),e.default.isValidElement(E.cancel)?E.cancel:E.cancel&&p(E.cancel)?e.default.createElement("button",{"data-button":!0,"data-cancel":!0,style:E.cancelButtonStyle||F,onClick:t=>{!p(E.cancel)||ty&&(null==E.cancel.onClick||E.cancel.onClick.call(E.cancel,t),tA())},className:h(null==X?void 0:X.cancelButton,null==E||null==(v=E.classNames)?void 0:v.cancelButton)},E.cancel.label):null,e.default.isValidElement(E.action)?E.action:E.action&&p(E.action)?e.default.createElement("button",{"data-button":!0,"data-action":!0,style:E.actionButtonStyle||$,onClick:t=>{!p(E.action)||(null==E.action.onClick||E.action.onClick.call(E.action,t),t.defaultPrevented||tA())},className:h(null==X?void 0:X.actionButton,null==E||null==(y=E.classNames)?void 0:y.actionButton)},E.action.label):null)};function v(){if("undefined"==typeof window||"undefined"==typeof document)return"ltr";let t=document.documentElement.getAttribute("dir");return"auto"!==t&&t?t:window.getComputedStyle(document.documentElement).direction}let y=e.default.forwardRef(function(t,r){let{id:o,invert:s,position:n="bottom-right",hotkey:i=["altKey","KeyT"],expand:l,closeButton:d,className:c,offset:f,mobileOffset:m,theme:p="light",richColors:h,duration:y,style:b,visibleToasts:x=3,toastOptions:w,dir:j=v(),gap:k=14,icons:E,containerAriaLabel:N="Notifications"}=t,[C,S]=e.default.useState([]),T=e.default.useMemo(()=>o?C.filter(t=>t.toasterId===o):C.filter(t=>!t.toasterId),[C,o]),B=e.default.useMemo(()=>Array.from(new Set([n].concat(T.filter(t=>t.position).map(t=>t.position)))),[T,n]),[M,P]=e.default.useState([]),[z,D]=e.default.useState(!1),[A,R]=e.default.useState(!1),[L,F]=e.default.useState("system"!==p?p:"undefined"!=typeof window&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),$=e.default.useRef(null),Y=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),H=e.default.useRef(null),I=e.default.useRef(!1),O=e.default.useCallback(t=>{S(e=>{var a;return(null==(a=e.find(e=>e.id===t.id))?void 0:a.delete)||u.dismiss(t.id),e.filter(({id:e})=>e!==t.id)})},[]);return e.default.useEffect(()=>u.subscribe(t=>{t.dismiss?requestAnimationFrame(()=>{S(e=>e.map(e=>e.id===t.id?{...e,delete:!0}:e))}):setTimeout(()=>{a.default.flushSync(()=>{S(e=>{let a=e.findIndex(e=>e.id===t.id);return -1!==a?[...e.slice(0,a),{...e[a],...t},...e.slice(a+1)]:[t,...e]})})})}),[C]),e.default.useEffect(()=>{if("system"!==p)return void F(p);if("system"===p&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?F("dark"):F("light")),"undefined"==typeof window)return;let t=window.matchMedia("(prefers-color-scheme: dark)");try{t.addEventListener("change",({matches:t})=>{t?F("dark"):F("light")})}catch(e){t.addListener(({matches:t})=>{try{t?F("dark"):F("light")}catch(t){console.error(t)}})}},[p]),e.default.useEffect(()=>{C.length<=1&&D(!1)},[C]),e.default.useEffect(()=>{let t=t=>{var e,a;i.every(e=>t[e]||t.code===e)&&(D(!0),null==(a=$.current)||a.focus()),"Escape"===t.code&&(document.activeElement===$.current||(null==(e=$.current)?void 0:e.contains(document.activeElement)))&&D(!1)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[i]),e.default.useEffect(()=>{if($.current)return()=>{H.current&&(H.current.focus({preventScroll:!0}),H.current=null,I.current=!1)}},[$.current]),e.default.createElement("section",{ref:r,"aria-label":`${N} ${Y}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},B.map((a,r)=>{var o;let n,[i,u]=a.split("-");return T.length?e.default.createElement("ol",{key:a,dir:"auto"===j?v():j,tabIndex:-1,ref:$,className:c,"data-sonner-toaster":!0,"data-sonner-theme":L,"data-y-position":i,"data-x-position":u,style:{"--front-toast-height":`${(null==(o=M[0])?void 0:o.height)||0}px`,"--width":"356px","--gap":`${k}px`,...b,...(n={},[f,m].forEach((t,e)=>{let a=1===e,r=a?"--mobile-offset":"--offset",o=a?"16px":"24px";function s(t){["top","right","bottom","left"].forEach(e=>{n[`${r}-${e}`]="number"==typeof t?`${t}px`:t})}"number"==typeof t||"string"==typeof t?s(t):"object"==typeof t?["top","right","bottom","left"].forEach(e=>{void 0===t[e]?n[`${r}-${e}`]=o:n[`${r}-${e}`]="number"==typeof t[e]?`${t[e]}px`:t[e]}):s(o)}),n)},onBlur:t=>{I.current&&!t.currentTarget.contains(t.relatedTarget)&&(I.current=!1,H.current&&(H.current.focus({preventScroll:!0}),H.current=null))},onFocus:t=>{!(t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible)&&(I.current||(I.current=!0,H.current=t.relatedTarget))},onMouseEnter:()=>D(!0),onMouseMove:()=>D(!0),onMouseLeave:()=>{A||D(!1)},onDragEnd:()=>D(!1),onPointerDown:t=>{t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible||R(!0)},onPointerUp:()=>R(!1)},T.filter(t=>!t.position&&0===r||t.position===a).map((r,o)=>{var n,i;return e.default.createElement(g,{key:r.id,icons:E,index:o,toast:r,defaultRichColors:h,duration:null!=(n=null==w?void 0:w.duration)?n:y,className:null==w?void 0:w.className,descriptionClassName:null==w?void 0:w.descriptionClassName,invert:s,visibleToasts:x,closeButton:null!=(i=null==w?void 0:w.closeButton)?i:d,interacting:A,position:a,style:null==w?void 0:w.style,unstyled:null==w?void 0:w.unstyled,classNames:null==w?void 0:w.classNames,cancelButtonStyle:null==w?void 0:w.cancelButtonStyle,actionButtonStyle:null==w?void 0:w.actionButtonStyle,closeButtonAriaLabel:null==w?void 0:w.closeButtonAriaLabel,removeToast:O,toasts:T.filter(t=>t.position==r.position),heights:M.filter(t=>t.position==r.position),setHeights:P,expandByDefault:l,gap:k,expanded:z,swipeDirections:t.swipeDirections})})):null}))});t.s(["Toaster",()=>y,"toast",()=>m])},178420,t=>{"use strict";var e=t.i(890022),a=t.i(995403),r=t.i(81795);function o(){let{theme:t}=(0,r.useTheme)();return(0,e.jsx)(a.Toaster,{theme:t,position:"bottom-right",richColors:!0,closeButton:!0,expand:!1,duration:4e3,toastOptions:{classNames:{toast:"group",title:"font-semibold",description:"text-sm opacity-90",actionButton:"bg-primary text-primary-foreground",cancelButton:"bg-muted text-muted-foreground"}}})}t.s(["Toast",()=>o])},753938,t=>{"use strict";let e=(0,t.i(122436).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);t.s(["ArrowLeft",()=>e],753938)},954049,t=>{"use strict";let e=(0,t.i(122436).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);t.s(["BookOpen",()=>e],954049)},20648,t=>{"use strict";var e=t.i(890022),a=t.i(431231);let r=(0,a.createContext)(null);function o(){let t=(0,a.useContext)(r);if(!t)throw Error("useProject must be used within ProjectProvider");return t}function s({children:t,initialProjectId:o}){let[s,n]=(0,a.useState)("single-project"),[i,l]=(0,a.useState)(null),[d,c]=(0,a.useState)([]),[u,f]=(0,a.useState)([]),[m,p]=(0,a.useState)([]),[h,g]=(0,a.useState)(!0),[v,y]=(0,a.useState)(null),b=(0,a.useCallback)(async()=>{try{g(!0),y(null);let t=await fetch("/api/projects");if(!t.ok)throw Error("Failed to fetch projects");let e=await t.json();if(n(e.mode||"single-project"),c(e.projects||[]),f(e.recentProjects||[]),p(e.favoriteProjects||[]),!i&&e.projects.length>0){let t=o?e.projects.find(t=>t.id===o):e.recentProjects?.[0]||e.projects[0];t&&l(t)}}catch(t){console.error("Error fetching projects:",t),y(t instanceof Error?t.message:"Failed to load projects")}finally{g(!1)}},[i,o]),x=(0,a.useCallback)(async t=>{try{let e=await fetch(`/api/projects/${t}`);if(!e.ok)throw Error("Failed to fetch project");let a=await e.json();l(a.project),await b()}catch(t){throw console.error("Error switching project:",t),y(t instanceof Error?t.message:"Failed to switch project"),t}},[b]),w=(0,a.useCallback)(async(t,e)=>{try{let a=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t,...e})});if(!a.ok){let t=await a.json();throw Error(t.details||"Failed to add project")}let r=await a.json();return await b(),r.project}catch(t){throw console.error("Error adding project:",t),y(t instanceof Error?t.message:"Failed to add project"),t}},[b]),j=(0,a.useCallback)(async t=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"DELETE"})).ok)throw Error("Failed to remove project");if(i?.id===t){let e=d.find(e=>e.id!==t);l(e||null)}await b()}catch(t){throw console.error("Error removing project:",t),y(t instanceof Error?t.message:"Failed to remove project"),t}},[i,d,b]),k=(0,a.useCallback)(async t=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({favorite:!0})})).ok)throw Error("Failed to toggle favorite");await b()}catch(t){throw console.error("Error toggling favorite:",t),y(t instanceof Error?t.message:"Failed to toggle favorite"),t}},[b]),E=(0,a.useCallback)(async(t,e)=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok)throw Error("Failed to update project");await b()}catch(t){throw console.error("Error updating project:",t),y(t instanceof Error?t.message:"Failed to update project"),t}},[b]);return(0,a.useEffect)(()=>{b()},[b]),(0,e.jsx)(r.Provider,{value:{mode:s,currentProject:i,projects:d,recentProjects:u,favoriteProjects:m,isLoading:h,error:v,switchProject:x,addProject:w,removeProject:j,toggleFavorite:k,updateProject:E,refreshProjects:b},children:t})}t.s(["ProjectProvider",()=>s,"useProject",()=>o])},787949,t=>{"use strict";let e=(0,t.i(122436).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);t.s(["Loader2",()=>e],787949)},963781,723882,828964,361877,t=>{"use strict";var e=t.i(122436);let a=(0,e.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);t.s(["Plus",()=>a],963781);let r=(0,e.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);t.s(["FolderOpen",()=>r],723882);let o=(0,e.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);t.s(["Star",()=>o],828964);var s=t.i(890022),n=t.i(431231),i=t.i(230827),l=t.i(20648),d=t.i(235893),c=t.i(21079);let u=(0,e.default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);var f=t.i(787949),m=t.i(753938),p=t.i(497332),h=t.i(525761),g=t.i(632137);function v({onSelect:t,onCancel:e,initialPath:a,actionLabel:r="Select This Folder",isLoading:o}){let[i,l]=(0,n.useState)(a||""),[c,v]=(0,n.useState)([]),[y,b]=(0,n.useState)(!1),[x,w]=(0,n.useState)(null),j=(0,n.useRef)(null),k=o||y;(0,n.useEffect)(()=>{E(i)},[i]),(0,n.useEffect)(()=>{j.current&&(j.current.scrollLeft=j.current.scrollWidth)},[i]);let E=async t=>{try{b(!0),w(null);let e=await fetch("/api/local-projects/list-directory",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})});if(!e.ok)throw Error("Failed to list directory");let a=await e.json();v(a.items),t||l(a.path)}catch(t){w(t instanceof Error?t.message:String(t))}finally{b(!1)}},N=t=>{l(t)},C=c.find(t=>".."===t.name),S=c.filter(t=>".."!==t.name),T=(t=>{if(!t)return[];let e=t.includes("\\")?"\\":"/",a=t.split(e).filter(Boolean),r=t.startsWith("/");return a.map((t,o)=>{let s=a.slice(0,o+1).join(e);return r&&(s="/"+s),{name:t,path:s}})})(i);return(0,s.jsxs)("div",{className:"flex flex-col h-[400px] gap-4 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center border rounded-md p-1 gap-1 bg-muted/30",children:[(0,s.jsx)(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0",disabled:!C||k,onClick:()=>C&&N(C.path),title:"Go to parent directory",children:(0,s.jsx)(m.ArrowLeft,{className:"h-4 w-4"})}),(0,s.jsx)("div",{className:"w-px h-5 bg-border mx-1"}),(0,s.jsxs)("div",{ref:j,className:"flex-1 overflow-x-auto whitespace-nowrap flex items-center scrollbar-hide px-1 min-w-0",children:[(0,s.jsx)("button",{onClick:()=>N("/"),className:"hover:bg-accent p-1 rounded-sm transition-colors shrink-0",title:"Go to root",children:(0,s.jsx)(p.Home,{className:"h-4 w-4 text-muted-foreground"})}),T.map((t,e)=>(0,s.jsxs)("div",{className:"flex items-center shrink-0",children:[(0,s.jsx)(h.ChevronRight,{className:"h-3 w-3 text-muted-foreground mx-0.5 shrink-0"}),(0,s.jsx)("button",{onClick:()=>N(t.path),className:(0,g.cn)("px-1.5 py-0.5 rounded-sm transition-colors text-sm hover:bg-accent hover:text-accent-foreground",e===T.length-1?"font-medium text-foreground":"text-muted-foreground"),children:t.name})]},t.path))]})]}),(0,s.jsxs)("div",{className:"flex-1 border rounded-md overflow-hidden relative bg-background min-h-0",children:[k&&(0,s.jsx)("div",{className:"absolute inset-0 bg-background/50 flex items-center justify-center z-10",children:(0,s.jsx)(f.Loader2,{className:"h-6 w-6 animate-spin"})}),x?(0,s.jsxs)("div",{className:"p-4 text-destructive text-sm text-center",children:[x,(0,s.jsx)(d.Button,{variant:"link",onClick:()=>E(i),className:"block mx-auto mt-2",children:"Retry"})]}):(0,s.jsx)("div",{className:"h-full overflow-auto",children:(0,s.jsx)("div",{className:"p-1",children:0!==S.length||k?S.map(t=>(0,s.jsxs)("button",{onClick:()=>N(t.path),className:"flex items-center gap-3 w-full px-3 py-2 text-sm rounded-sm hover:bg-accent hover:text-accent-foreground text-left group transition-colors",children:[(0,s.jsx)(u,{className:"h-4 w-4 text-blue-500 fill-blue-500/20 group-hover:fill-blue-500/30 transition-colors shrink-0"}),(0,s.jsx)("span",{className:"truncate",children:t.name})]},t.path)):(0,s.jsx)("div",{className:"p-4 text-center text-sm text-muted-foreground",children:"Empty directory"})})})]}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)(d.Button,{variant:"outline",onClick:e,disabled:k,children:"Cancel"}),(0,s.jsx)(d.Button,{onClick:()=>t(i),disabled:k||!i,children:r})]})]})}var y=t.i(439779),b=t.i(995403);function x({open:t,onOpenChange:e}){let{addProject:a,switchProject:o}=(0,l.useProject)(),[u,f]=(0,n.useState)(""),[m,p]=(0,n.useState)(!1),[h,g]=(0,n.useState)("picker"),x=(0,i.useRouter)();(0,n.useEffect)(()=>{t&&(g("picker"),f(""))},[t]);let w=async t=>{try{p(!0);let r=await a(t);await o(r.id),b.toast.success("Project added successfully"),e(!1),x.push("/")}catch(e){let t=e instanceof Error?e.message:"Failed to add project";b.toast.error(t)}finally{p(!1)}};return(0,s.jsx)(y.Dialog,{open:t,onOpenChange:e,children:(0,s.jsxs)(y.DialogContent,{className:"sm:max-w-[600px]",children:[(0,s.jsxs)(y.DialogHeader,{children:[(0,s.jsx)(y.DialogTitle,{children:"Add Project"}),(0,s.jsx)(y.DialogDescription,{children:"picker"===h?"Browse and select the project directory.":"Enter the absolute path to your local project directory."})]}),"picker"===h?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(v,{onSelect:w,onCancel:()=>e(!1),initialPath:u,actionLabel:m?"Adding...":"Add Project",isLoading:m}),(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(d.Button,{variant:"link",size:"sm",onClick:()=>g("manual"),className:"text-muted-foreground",children:"Enter path manually"})})]}):(0,s.jsxs)("form",{onSubmit:t=>{t.preventDefault(),u&&w(u)},children:[(0,s.jsx)("div",{className:"grid gap-4 py-4",children:(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)("label",{htmlFor:"path",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Project Path"}),(0,s.jsx)("div",{className:"flex gap-2",children:(0,s.jsx)(c.Input,{id:"path",value:u,onChange:t=>f(t.target.value),placeholder:"/path/to/your/project",className:"flex-1",disabled:m})}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:"Select the root directory of your project."})]})}),(0,s.jsxs)(y.DialogFooter,{className:"flex-col sm:flex-row gap-2",children:[(0,s.jsx)("div",{className:"flex-1 flex justify-start",children:(0,s.jsxs)(d.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>g("picker"),children:[(0,s.jsx)(r,{className:"h-4 w-4 mr-2"}),"Browse folders"]})}),(0,s.jsx)(d.Button,{type:"button",variant:"outline",onClick:()=>e(!1),disabled:m,children:"Cancel"}),(0,s.jsx)(d.Button,{type:"submit",disabled:m||!u,children:m?"Adding...":"Add Project"})]})]})]})})}t.s(["CreateProjectDialog",()=>x],361877)}]);
|