@leanspec/ui 0.2.7-dev.20251128020042 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
- package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +2 -0
- package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
- 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.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_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.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 +6 -6
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/build-manifest.json +11 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +8 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/api/context/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/app-paths-manifest.json +3 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +18 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/next-font-manifest.json +6 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page/server-reference-manifest.json +4 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js +19 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.map +5 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -0
- package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +2 -0
- 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.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.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.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.js.nft.json +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
- package/.next/standalone/packages/ui/.next/server/app/projects.rsc +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +12 -12
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
- package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +3 -3
- 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.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.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.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]__3559376c._.js +2 -2
- 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 +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_context_route_actions_dead6daa.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +7 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_959ad3d8._.js +4 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_497c8b73._.js → _b397e94a._.js} +2 -2
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_context_page_actions_1a062d48.js +3 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +12 -0
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
- 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/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/1eb8283995f370c6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/{static/chunks/294dea6dbec43ca6.js → standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js} +1 -1
- package/.next/{static/chunks/cca4441cde342ae3.js → standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
- package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
- package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
- package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
- package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
- package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
- package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
- package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
- package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
- package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
- package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
- package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
- package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
- package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
- package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
- package/.next/standalone/packages/ui/package.json +2 -1
- package/.next/standalone/packages/ui/server.js +1 -1
- package/.next/standalone/packages/ui/src/app/api/context/route.ts +22 -0
- package/.next/standalone/packages/ui/src/app/context/context-client.tsx +371 -0
- package/.next/standalone/packages/ui/src/app/context/page.tsx +17 -0
- package/.next/standalone/packages/ui/src/app/globals.css +16 -16
- package/.next/standalone/packages/ui/src/app/layout.tsx +1 -7
- package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +291 -0
- package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
- package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +181 -134
- package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +20 -0
- package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +3 -2
- package/.next/standalone/packages/ui/src/components/ui/accordion.tsx +58 -0
- package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +172 -3
- package/.next/standalone/packages/ui/src/lib/specs/types.ts +44 -0
- package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +11 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +1 -0
- package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +1 -0
- package/.next/static/chunks/1eb8283995f370c6.js +1 -0
- package/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
- package/.next/static/chunks/37a1236ed50645a6.js +1 -0
- package/.next/static/chunks/9d84ba08a41145ec.js +5 -0
- package/.next/static/chunks/c4b1faff3361a749.js +1 -0
- package/.next/{standalone/packages/ui/.next/static/chunks/294dea6dbec43ca6.js → static/chunks/d7420d2a867e57b5.js} +1 -1
- package/.next/{standalone/packages/ui/.next/static/chunks/cca4441cde342ae3.js → static/chunks/dae403679aae65f4.js} +1 -1
- package/.next/static/chunks/efded9da04c960d8.js +1 -0
- package/.next/static/chunks/f382932f1a5d6359.js +10 -0
- package/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
- package/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
- package/package.json +3 -2
- package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__73f60f12._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a7ae8552._.js +0 -7
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14118969._.js +0 -3
- package/.next/standalone/packages/ui/.next/server/chunks/ssr/_4129cc0f._.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/a803d646487dfc2d.js +0 -3
- package/.next/standalone/packages/ui/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/standalone/packages/ui/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/standalone/packages/ui/.next/static/chunks/d784d84d5b880e48.js +0 -1
- package/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
- package/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
- package/.next/static/chunks/a803d646487dfc2d.js +0 -3
- package/.next/static/chunks/b6976cf6c48996e5.js +0 -1
- package/.next/static/chunks/b845813463167db0.js +0 -5
- package/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
- package/.next/static/chunks/d784d84d5b880e48.js +0 -1
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_buildManifest.js +0 -0
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_ssgManifest.js +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
- /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: archived
|
|
3
|
+
created: '2025-11-05'
|
|
4
|
+
tags:
|
|
5
|
+
- architecture
|
|
6
|
+
- cli
|
|
7
|
+
- mcp
|
|
8
|
+
- redesign
|
|
9
|
+
- first-principles
|
|
10
|
+
- dx
|
|
11
|
+
- v0.3.0
|
|
12
|
+
priority: medium
|
|
13
|
+
related:
|
|
14
|
+
- 049-leanspec-first-principles
|
|
15
|
+
- 048-spec-complexity-analysis
|
|
16
|
+
- 043-official-launch-02
|
|
17
|
+
created_at: '2025-11-05T00:00:00Z'
|
|
18
|
+
updated_at: '2025-11-10T07:50:03.476Z'
|
|
19
|
+
transitions:
|
|
20
|
+
- status: archived
|
|
21
|
+
at: '2025-11-10T07:50:03.476Z'
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Tool Redesign: First Principles Application
|
|
25
|
+
|
|
26
|
+
> **Status**: 📦 Archived · **Priority**: Medium · **Created**: 2025-11-05 · **Tags**: architecture, cli, mcp, redesign, first-principles, dx, v0.3.0
|
|
27
|
+
|
|
28
|
+
**Project**: lean-spec
|
|
29
|
+
**Team**: Core Development
|
|
30
|
+
|
|
31
|
+
## Overview
|
|
32
|
+
|
|
33
|
+
**Purpose**: Redesign CLI and MCP tools by applying the 5 LeanSpec first principles from spec 049, creating tools that practice what we preach.
|
|
34
|
+
|
|
35
|
+
**Why Now**:
|
|
36
|
+
- We've established clear first principles (spec 049)
|
|
37
|
+
- Current tools evolved organically without systematic design
|
|
38
|
+
- Need to dogfood our own philosophy in the implementation
|
|
39
|
+
- Opportunity to showcase first-principles thinking in practice
|
|
40
|
+
|
|
41
|
+
**Key Insight**: Tools should embody the philosophy they enable. If LeanSpec optimizes for Context Economy and Signal-to-Noise, our tools must do the same.
|
|
42
|
+
|
|
43
|
+
**Result**: Redesigned CLI and MCP that demonstrate first principles through their interface design, implementation structure, and user experience.
|
|
44
|
+
|
|
45
|
+
## Background
|
|
46
|
+
|
|
47
|
+
### Current Tool State
|
|
48
|
+
|
|
49
|
+
**CLI (`lean-spec` command)**:
|
|
50
|
+
- 15+ commands with inconsistent patterns
|
|
51
|
+
- Some commands do too much (`stats` vs `stats --full`)
|
|
52
|
+
- Error messages vary in helpfulness
|
|
53
|
+
- No clear mental model for users
|
|
54
|
+
|
|
55
|
+
**MCP Server**:
|
|
56
|
+
- Good functionality but complex interface
|
|
57
|
+
- Some operations require multiple round-trips
|
|
58
|
+
- Not optimized for AI agent workflows
|
|
59
|
+
- Error handling inconsistent
|
|
60
|
+
|
|
61
|
+
### The First Principles (from spec 049)
|
|
62
|
+
|
|
63
|
+
1. **Context Economy** - Fit in working memory (human + AI)
|
|
64
|
+
2. **Signal-to-Noise Maximization** - Every word must inform decisions
|
|
65
|
+
3. **Progressive Disclosure** - Start simple, add complexity when pain is felt
|
|
66
|
+
4. **Intent Over Implementation** - Capture why, not just how
|
|
67
|
+
5. **Bridge the Gap** - Align human intent with machine execution
|
|
68
|
+
|
|
69
|
+
### Design Constraints
|
|
70
|
+
|
|
71
|
+
**Human Usage** (CLI):
|
|
72
|
+
- Working memory: 7±2 items
|
|
73
|
+
- Need discoverable commands
|
|
74
|
+
- Want quick feedback loops
|
|
75
|
+
- Prefer consistent patterns
|
|
76
|
+
|
|
77
|
+
**AI Usage** (MCP):
|
|
78
|
+
- Token efficiency critical
|
|
79
|
+
- Clear success/failure states
|
|
80
|
+
- Batching for complex operations
|
|
81
|
+
- Structured, parseable output
|
|
82
|
+
|
|
83
|
+
## Design
|
|
84
|
+
|
|
85
|
+
### Core Philosophy: Tools as Philosophy Demo
|
|
86
|
+
|
|
87
|
+
**Principle**: Our tools should be the best example of LeanSpec thinking.
|
|
88
|
+
|
|
89
|
+
**Application**: Every command, parameter, and output designed through first-principles lens.
|
|
90
|
+
|
|
91
|
+
### CLI Redesign: Progressive Command Structure
|
|
92
|
+
|
|
93
|
+
**Current Problem**: 15 commands with no clear organization
|
|
94
|
+
**Solution**: Group by mental model, progressive disclosure
|
|
95
|
+
|
|
96
|
+
#### Level 1: Discovery (Context Economy)
|
|
97
|
+
```bash
|
|
98
|
+
lean-spec # Show overview + 3 most common commands
|
|
99
|
+
lean-spec help # Show all commands, grouped by purpose
|
|
100
|
+
lean-spec status # Project health at-a-glance
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### Level 2: Core Operations (Signal-to-Noise)
|
|
104
|
+
```bash
|
|
105
|
+
# View/Navigate (most common)
|
|
106
|
+
lean-spec list # Smart defaults, most relevant first
|
|
107
|
+
lean-spec view <spec> # Single spec, optimized display
|
|
108
|
+
lean-spec search <query> # Focused search with ranking
|
|
109
|
+
|
|
110
|
+
# Modify (when needed)
|
|
111
|
+
lean-spec create <name> # Guided creation with templates
|
|
112
|
+
lean-spec update <spec> # Status/metadata only
|
|
113
|
+
lean-spec edit <spec> # Open in editor
|
|
114
|
+
|
|
115
|
+
# Project (occasional)
|
|
116
|
+
lean-spec board # Kanban view
|
|
117
|
+
lean-spec stats # Key metrics only
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### Level 3: Advanced (Progressive Disclosure)
|
|
121
|
+
```bash
|
|
122
|
+
# Analysis (when pain is felt)
|
|
123
|
+
lean-spec validate # Check first principles adherence
|
|
124
|
+
lean-spec complexity # Detailed complexity analysis
|
|
125
|
+
lean-spec deps <spec> # Relationship analysis
|
|
126
|
+
lean-spec split <spec> # Guided spec splitting
|
|
127
|
+
|
|
128
|
+
# Power User (specific needs)
|
|
129
|
+
lean-spec stats --full # Comprehensive analytics
|
|
130
|
+
lean-spec export # Various formats
|
|
131
|
+
lean-spec init # Project setup
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Key Changes**:
|
|
135
|
+
- Grouped by frequency of use (Context Economy)
|
|
136
|
+
- Each command has single clear purpose (Signal-to-Noise)
|
|
137
|
+
- Advanced features hidden until needed (Progressive Disclosure)
|
|
138
|
+
- Intent clear from command name (Intent Over Implementation)
|
|
139
|
+
- Same patterns work for humans and AI (Bridge the Gap)
|
|
140
|
+
|
|
141
|
+
### MCP Redesign: Batch-First Architecture
|
|
142
|
+
|
|
143
|
+
**Current Problem**: Many small operations, chatty interface
|
|
144
|
+
**Solution**: Batch operations, rich context in responses
|
|
145
|
+
|
|
146
|
+
#### Core Operations
|
|
147
|
+
```typescript
|
|
148
|
+
// Single spec operations (atomic)
|
|
149
|
+
view(specPath: string, options?: ViewOptions) -> SpecWithContext
|
|
150
|
+
update(specPath: string, changes: SpecChanges) -> SpecWithContext
|
|
151
|
+
create(name: string, template: SpecTemplate) -> SpecWithContext
|
|
152
|
+
|
|
153
|
+
// Multi-spec operations (batched)
|
|
154
|
+
list(filters?: Filters) -> SpecSummary[]
|
|
155
|
+
search(query: string, options?: SearchOptions) -> SearchResults
|
|
156
|
+
board() -> KanbanBoard
|
|
157
|
+
|
|
158
|
+
// Project operations (contextual)
|
|
159
|
+
stats(level?: 'basic' | 'full') -> ProjectStats
|
|
160
|
+
validate(specs?: string[]) -> ValidationReport
|
|
161
|
+
health() -> ProjectHealth
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Key Changes**:
|
|
165
|
+
- Rich context in every response (Context Economy for AI)
|
|
166
|
+
- Structured errors with actionable guidance (Signal-to-Noise)
|
|
167
|
+
- Batch operations reduce round-trips (Progressive Disclosure)
|
|
168
|
+
- Clear success/failure states (Intent Over Implementation)
|
|
169
|
+
- Same data structure for CLI/MCP (Bridge the Gap)
|
|
170
|
+
|
|
171
|
+
### Shared Principles: Output Design
|
|
172
|
+
|
|
173
|
+
#### Context Economy in Output
|
|
174
|
+
```bash
|
|
175
|
+
# Bad: Information overload
|
|
176
|
+
lean-spec list
|
|
177
|
+
049-leanspec-first-principles | planned | created: 2025-11-04 | priority: critical | tags: philosophy,meta,foundation,principles | related: 048-spec-complexity-analysis,043-official-launch-02,012-sub-spec-files | 1,042 lines (warning: >400) | last modified: 2 hours ago
|
|
178
|
+
|
|
179
|
+
# Good: Essential info, detail on demand
|
|
180
|
+
lean-spec list
|
|
181
|
+
📋 049 leanspec-first-principles (critical)
|
|
182
|
+
✅ 048 spec-complexity-analysis
|
|
183
|
+
🔄 047 git-timestamps (in-progress)
|
|
184
|
+
|
|
185
|
+
lean-spec list --verbose # Detail when requested
|
|
186
|
+
lean-spec view 049 # Full context for specific spec
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
#### Signal-to-Noise in Commands
|
|
190
|
+
```bash
|
|
191
|
+
# Bad: Ambiguous what it does
|
|
192
|
+
lean-spec show 049 --with-meta --include-related --format=detailed
|
|
193
|
+
|
|
194
|
+
# Good: Clear intent, smart defaults
|
|
195
|
+
lean-spec view 049 # Show spec (formatted by default)
|
|
196
|
+
lean-spec view 049 --raw # Raw when needed (progressive disclosure)
|
|
197
|
+
lean-spec view 049 --json # Structured when needed
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Implementation Strategy
|
|
201
|
+
|
|
202
|
+
#### Phase 1: CLI Core Redesign
|
|
203
|
+
- Implement new command grouping
|
|
204
|
+
- Standardize output formats
|
|
205
|
+
- Add progressive disclosure patterns
|
|
206
|
+
- Maintain backward compatibility with deprecation warnings
|
|
207
|
+
|
|
208
|
+
#### Phase 2: MCP Optimization
|
|
209
|
+
- Implement batch operations
|
|
210
|
+
- Standardize response structures
|
|
211
|
+
- Add rich error context
|
|
212
|
+
- Optimize for AI workflows
|
|
213
|
+
|
|
214
|
+
#### Phase 3: Integration
|
|
215
|
+
- Ensure CLI and MCP use same core logic
|
|
216
|
+
- Unified configuration system
|
|
217
|
+
- Consistent behavior across interfaces
|
|
218
|
+
- Performance optimization
|
|
219
|
+
|
|
220
|
+
## Plan
|
|
221
|
+
|
|
222
|
+
### Phase 1: Foundation (Week 1-2)
|
|
223
|
+
**Goal**: New CLI command structure with backward compatibility
|
|
224
|
+
|
|
225
|
+
**Tasks**:
|
|
226
|
+
- [ ] Design new command hierarchy
|
|
227
|
+
- [ ] Implement core command groups (view/modify/project)
|
|
228
|
+
- [ ] Add progressive disclosure for advanced commands
|
|
229
|
+
- [ ] Create unified output formatting system
|
|
230
|
+
- [ ] Add deprecation warnings for old patterns
|
|
231
|
+
- [ ] Update help system to show grouped commands
|
|
232
|
+
|
|
233
|
+
**Success Criteria**:
|
|
234
|
+
- New users find commands intuitively
|
|
235
|
+
- Output fits in terminal without scrolling (Context Economy)
|
|
236
|
+
- Every command has single clear purpose (Signal-to-Noise)
|
|
237
|
+
|
|
238
|
+
### Phase 2: MCP Optimization (Week 3-4)
|
|
239
|
+
**Goal**: Batch-first MCP with rich context
|
|
240
|
+
|
|
241
|
+
**Tasks**:
|
|
242
|
+
- [ ] Implement batch operations for multi-spec workflows
|
|
243
|
+
- [ ] Redesign response structures with full context
|
|
244
|
+
- [ ] Add structured error handling with actionable guidance
|
|
245
|
+
- [ ] Optimize for common AI agent patterns
|
|
246
|
+
- [ ] Create MCP performance benchmarks
|
|
247
|
+
|
|
248
|
+
**Success Criteria**:
|
|
249
|
+
- AI agents can accomplish tasks in fewer round-trips
|
|
250
|
+
- Rich context reduces need for additional queries
|
|
251
|
+
- Clear success/failure states for all operations
|
|
252
|
+
|
|
253
|
+
### Phase 3: Integration & Polish (Week 5-6)
|
|
254
|
+
**Goal**: Unified experience across interfaces
|
|
255
|
+
|
|
256
|
+
**Tasks**:
|
|
257
|
+
- [ ] Ensure CLI and MCP use same underlying logic
|
|
258
|
+
- [ ] Create unified configuration system
|
|
259
|
+
- [ ] Add cross-interface consistency tests
|
|
260
|
+
- [ ] Performance optimization and profiling
|
|
261
|
+
- [ ] Documentation updates reflecting new philosophy
|
|
262
|
+
|
|
263
|
+
**Success Criteria**:
|
|
264
|
+
- Identical behavior between CLI and MCP for same operations
|
|
265
|
+
- Performance meets or exceeds current implementation
|
|
266
|
+
- Documentation demonstrates first principles in practice
|
|
267
|
+
|
|
268
|
+
### Phase 4: Validation (Week 7)
|
|
269
|
+
**Goal**: Prove we practice what we preach
|
|
270
|
+
|
|
271
|
+
**Tasks**:
|
|
272
|
+
- [ ] User testing with both interfaces
|
|
273
|
+
- [ ] Measure adherence to first principles
|
|
274
|
+
- [ ] Gather feedback from AI agent usage
|
|
275
|
+
- [ ] Performance benchmarking
|
|
276
|
+
- [ ] Create case studies of improvements
|
|
277
|
+
|
|
278
|
+
**Success Criteria**:
|
|
279
|
+
- Tools demonstrate all 5 first principles
|
|
280
|
+
- Users report improved experience
|
|
281
|
+
- AI agents more efficient in workflows
|
|
282
|
+
- Implementation serves as reference for first-principles design
|
|
283
|
+
|
|
284
|
+
## Test
|
|
285
|
+
|
|
286
|
+
### First Principles Validation
|
|
287
|
+
|
|
288
|
+
**Context Economy** (Tools fit in working memory):
|
|
289
|
+
- [ ] CLI commands grouped into 3 clear levels
|
|
290
|
+
- [ ] MCP operations batchable to reduce context
|
|
291
|
+
- [ ] Output designed for human/AI consumption limits
|
|
292
|
+
|
|
293
|
+
**Signal-to-Noise Maximization** (Every element informs decisions):
|
|
294
|
+
- [ ] Each command has single clear purpose
|
|
295
|
+
- [ ] Output contains only actionable information
|
|
296
|
+
- [ ] Error messages guide toward resolution
|
|
297
|
+
|
|
298
|
+
**Progressive Disclosure** (Complexity when pain is felt):
|
|
299
|
+
- [ ] Basic commands handle 80% of use cases
|
|
300
|
+
- [ ] Advanced features available but not prominent
|
|
301
|
+
- [ ] `--verbose` and detailed modes for when needed
|
|
302
|
+
|
|
303
|
+
**Intent Over Implementation** (Why, not just how):
|
|
304
|
+
- [ ] Command names reflect user goals, not system operations
|
|
305
|
+
- [ ] Help text explains purpose, not just syntax
|
|
306
|
+
- [ ] Error messages explain what user was trying to achieve
|
|
307
|
+
|
|
308
|
+
**Bridge the Gap** (Human + AI alignment):
|
|
309
|
+
- [ ] Same operations available in CLI and MCP
|
|
310
|
+
- [ ] Consistent data structures across interfaces
|
|
311
|
+
- [ ] Output formats optimized for both human and machine parsing
|
|
312
|
+
|
|
313
|
+
### User Experience Tests
|
|
314
|
+
|
|
315
|
+
**New User Journey**:
|
|
316
|
+
- [ ] Can discover main commands in <2 minutes
|
|
317
|
+
- [ ] Can complete basic workflow (create/view/update) without documentation
|
|
318
|
+
- [ ] Advanced features discoverable when needed
|
|
319
|
+
|
|
320
|
+
**AI Agent Efficiency**:
|
|
321
|
+
- [ ] Common workflows require fewer tool calls
|
|
322
|
+
- [ ] Batch operations reduce token usage
|
|
323
|
+
- [ ] Error recovery is automated where possible
|
|
324
|
+
|
|
325
|
+
**Performance Benchmarks**:
|
|
326
|
+
- [ ] CLI response time <100ms for common commands
|
|
327
|
+
- [ ] MCP operations complete in comparable time to current implementation
|
|
328
|
+
- [ ] Memory usage within acceptable bounds
|
|
329
|
+
|
|
330
|
+
### Philosophy Demonstration
|
|
331
|
+
|
|
332
|
+
**Can we say our tools demonstrate LeanSpec?**:
|
|
333
|
+
- [ ] Tools embody the principles they enable
|
|
334
|
+
- [ ] Implementation structure follows first principles
|
|
335
|
+
- [ ] User experience optimized through first-principles lens
|
|
336
|
+
- [ ] Tools serve as reference implementation for philosophy
|
|
337
|
+
|
|
338
|
+
## Success Metrics
|
|
339
|
+
|
|
340
|
+
**Quantitative**:
|
|
341
|
+
- CLI command discovery time: <2 minutes (vs current ~5 minutes)
|
|
342
|
+
- AI agent efficiency: 30% fewer tool calls for common workflows
|
|
343
|
+
- User task completion: 90% success rate without documentation
|
|
344
|
+
- Performance: Match or exceed current implementation
|
|
345
|
+
|
|
346
|
+
**Qualitative**:
|
|
347
|
+
- Tools feel "lean" and focused
|
|
348
|
+
- Clear mental model for command organization
|
|
349
|
+
- AI agents can use efficiently without extensive prompting
|
|
350
|
+
- Implementation demonstrates first principles in practice
|
|
351
|
+
|
|
352
|
+
**Philosophy Validation**:
|
|
353
|
+
- Tools practice what LeanSpec preaches
|
|
354
|
+
- Can point to tools as examples of first-principles thinking
|
|
355
|
+
- Users understand LeanSpec philosophy through tool usage
|
|
356
|
+
- Tools serve as template for future first-principles design
|
|
357
|
+
|
|
358
|
+
## Notes
|
|
359
|
+
|
|
360
|
+
### Why This Redesign Matters
|
|
361
|
+
|
|
362
|
+
This is foundational work because:
|
|
363
|
+
- **Credibility**: Tools must practice LeanSpec philosophy
|
|
364
|
+
- **Usability**: First principles create better user experiences
|
|
365
|
+
- **Teaching**: Tools become examples of the methodology
|
|
366
|
+
- **Scaling**: Systematic design enables growth without complexity creep
|
|
367
|
+
|
|
368
|
+
### Key Design Decisions
|
|
369
|
+
|
|
370
|
+
**Progressive Command Hierarchy**: Instead of flat command list, organize by frequency and complexity
|
|
371
|
+
**Batch-First MCP**: Optimize for AI workflows while maintaining human usability
|
|
372
|
+
**Unified Output**: Same data structures work for both CLI and MCP consumption
|
|
373
|
+
**First-Principles Validation**: Every design decision justified by the 5 principles
|
|
374
|
+
|
|
375
|
+
### Success Indicators
|
|
376
|
+
|
|
377
|
+
We'll know this succeeded when:
|
|
378
|
+
- New users intuitively discover commands
|
|
379
|
+
- AI agents accomplish tasks more efficiently
|
|
380
|
+
- Tools feel like natural extensions of LeanSpec thinking
|
|
381
|
+
- Implementation becomes reference for first-principles design
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
**Remember**: We're not just building better tools. We're proving that LeanSpec philosophy creates superior user experiences when applied systematically.
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## Archive Note
|
|
390
|
+
|
|
391
|
+
**Archived**: 2025-11-10
|
|
392
|
+
|
|
393
|
+
**Reason**: Spec was too broad and many of its proposed improvements have already been implemented incrementally through other specs:
|
|
394
|
+
- Spec 039: simplify-viewer-commands
|
|
395
|
+
- Spec 045: unified-dashboard
|
|
396
|
+
- Spec 046: stats-dashboard-refactor
|
|
397
|
+
- Spec 051: docs-system-prompt-principles
|
|
398
|
+
- Spec 049: leanspec-first-principles
|
|
399
|
+
|
|
400
|
+
**Key Learning**: The 7-week comprehensive redesign plan conflicted with LeanSpec's own "Progressive Disclosure" principle. Better to make incremental improvements as pain is felt rather than big-bang redesigns. The current CLI is already well-organized with grouped commands, and the MCP server functions effectively. This spec itself demonstrates why we should practice what we preach: start simple, add complexity when needed.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,22764,e=>{"use strict";let s=(0,e.i(22436).default)("list",[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]]);e.s(["List",()=>s],22764)},96026,e=>{"use strict";let s=(0,e.i(22436).default)("trending-up",[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]);e.s(["TrendingUp",()=>s],96026)},12603,e=>{"use strict";var s=e.i(90022),t=e.i(31231),a=e.i(65458);let r=t.forwardRef(({className:e,...t},r)=>(0,s.jsx)("div",{ref:r,className:(0,a.cn)("rounded-xl border border-gray-200 dark:border-gray-800 bg-card text-card-foreground shadow",e),...t}));r.displayName="Card";let d=t.forwardRef(({className:e,...t},r)=>(0,s.jsx)("div",{ref:r,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",e),...t}));d.displayName="CardHeader";let l=t.forwardRef(({className:e,...t},r)=>(0,s.jsx)("div",{ref:r,className:(0,a.cn)("font-semibold leading-none tracking-tight",e),...t}));l.displayName="CardTitle";let i=t.forwardRef(({className:e,...t},r)=>(0,s.jsx)("div",{ref:r,className:(0,a.cn)("text-sm text-muted-foreground",e),...t}));i.displayName="CardDescription";let c=t.forwardRef(({className:e,...t},r)=>(0,s.jsx)("div",{ref:r,className:(0,a.cn)("p-6 pt-0",e),...t}));c.displayName="CardContent",t.forwardRef(({className:e,...t},r)=>(0,s.jsx)("div",{ref:r,className:(0,a.cn)("flex items-center p-6 pt-0",e),...t})).displayName="CardFooter",e.s(["Card",()=>r,"CardContent",()=>c,"CardDescription",()=>i,"CardHeader",()=>d,"CardTitle",()=>l])},38604,e=>{"use strict";let s=(0,e.i(22436).default)("layout-grid",[["rect",{width:"7",height:"7",x:"3",y:"3",rx:"1",key:"1g98yp"}],["rect",{width:"7",height:"7",x:"14",y:"3",rx:"1",key:"6d4xhi"}],["rect",{width:"7",height:"7",x:"14",y:"14",rx:"1",key:"nxv5o0"}],["rect",{width:"7",height:"7",x:"3",y:"14",rx:"1",key:"1bb6yr"}]]);e.s(["LayoutGrid",()=>s],38604)},34404,e=>{"use strict";var s=e.i(90022),t=e.i(87985),a=e.i(12603),r=e.i(60218),d=e.i(20315),l=e.i(96812),i=e.i(75364),c=e.i(40843),n=e.i(38604),x=e.i(22764),o=e.i(96026);let m=(0,e.i(22436).default)("calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]);var h=e.i(71840),p=e.i(35179),u=e.i(62918),j=e.i(65458);function f({spec:e}){let a=(e.contentMd?(0,j.extractH1Title)(e.contentMd):null)||e.title||e.specName;return(0,s.jsx)(t.default,{href:`/specs/${e.specNumber}`,className:"block p-3 rounded-lg hover:bg-accent transition-colors",title:e.specName,children:(0,s.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 mb-1",children:[e.specNumber&&(0,s.jsxs)("span",{className:"text-sm font-mono text-muted-foreground shrink-0",children:["#",e.specNumber.toString().padStart(3,"0")]}),(0,s.jsx)("h4",{className:"text-sm font-medium truncate",children:a})]}),a!==e.specName&&(0,s.jsx)("div",{className:"text-xs text-muted-foreground mb-1",children:e.specName}),e.tags&&e.tags.length>0&&(0,s.jsx)("div",{className:"flex flex-wrap gap-1",children:e.tags.slice(0,3).map(e=>(0,s.jsx)(u.Badge,{variant:"secondary",className:"text-xs",children:e},e))})]}),(0,s.jsxs)("div",{className:"flex flex-col items-end gap-1 shrink-0",children:[e.status&&(0,s.jsx)(h.StatusBadge,{status:e.status,className:"text-xs scale-90"}),e.priority&&(0,s.jsx)(p.PriorityBadge,{priority:e.priority,className:"text-xs scale-90"})]})]})})}function g({spec:e,action:a,time:r}){let d=(e.contentMd?(0,j.extractH1Title)(e.contentMd):null)||e.title||e.specName;return(0,s.jsxs)("div",{className:"flex items-start gap-3 py-2",children:[(0,s.jsx)("div",{className:"w-2 h-2 rounded-full bg-primary mt-2 shrink-0"}),(0,s.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,s.jsxs)("p",{className:"text-sm",children:[(0,s.jsxs)(t.default,{href:`/specs/${e.specNumber}`,className:"font-medium hover:underline",title:e.specName,children:["#",e.specNumber?.toString().padStart(3,"0")," ",d]})," ",(0,s.jsx)("span",{className:"text-muted-foreground",children:a})]}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:function(e){if(!e)return"Unknown";let s=Math.floor((new Date().getTime()-e.getTime())/36e5),t=Math.floor(s/24);return s<1?"Just now":s<24?`${s} hour${s>1?"s":""} ago`:t<7?`${t} day${t>1?"s":""} ago`:t<30?`${Math.floor(t/7)} week${Math.floor(t/7)>1?"s":""} ago`:e.toLocaleDateString()}(r)})]})]})}function N({initialSpecs:e,initialStats:h}){let p=e.filter(e=>"in-progress"===e.status).sort((e,s)=>(s.specNumber||0)-(e.specNumber||0)).slice(0,5),u=e.filter(e=>"planned"===e.status).sort((e,s)=>(s.specNumber||0)-(e.specNumber||0)).slice(0,5),j=e.sort((e,s)=>e.createdAt?s.createdAt?s.createdAt.getTime()-e.createdAt.getTime():-1:1).slice(0,5),N=e.filter(e=>e.updatedAt).sort((e,s)=>e.updatedAt?s.updatedAt?s.updatedAt.getTime()-e.updatedAt.getTime():-1:1).slice(0,10),C=h.specsByStatus.find(e=>"complete"===e.status)?.count||0;return(0,s.jsx)("div",{className:"min-h-screen bg-background p-4 sm:p-8",children:(0,s.jsxs)("div",{className:"max-w-7xl mx-auto space-y-6 sm:space-y-8",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-3xl sm:text-4xl font-bold tracking-tight",children:"Dashboard"}),(0,s.jsx)("p",{className:"text-muted-foreground mt-2",children:"Project overview and recent activity"})]}),(0,s.jsxs)("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 sm:gap-4",children:[(0,s.jsxs)(a.Card,{className:"relative overflow-hidden",children:[(0,s.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br from-blue-500/10 to-transparent"}),(0,s.jsx)(a.CardHeader,{className:"relative pb-3",children:(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)(a.CardTitle,{className:"text-sm font-medium text-muted-foreground",children:"Total Specs"}),(0,s.jsx)(d.FileText,{className:"h-5 w-5 text-blue-600"})]})}),(0,s.jsx)(a.CardContent,{className:"relative",children:(0,s.jsx)("div",{className:"text-3xl font-bold",children:h.totalSpecs})})]}),(0,s.jsxs)(a.Card,{className:"relative overflow-hidden",children:[(0,s.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br from-orange-500/10 to-transparent"}),(0,s.jsx)(a.CardHeader,{className:"relative pb-3",children:(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)(a.CardTitle,{className:"text-sm font-medium text-muted-foreground",children:"In Progress"}),(0,s.jsx)(i.PlayCircle,{className:"h-5 w-5 text-orange-600"})]})}),(0,s.jsx)(a.CardContent,{className:"relative",children:(0,s.jsx)("div",{className:"text-3xl font-bold",children:h.specsByStatus.find(e=>"in-progress"===e.status)?.count||0})})]}),(0,s.jsxs)(a.Card,{className:"relative overflow-hidden",children:[(0,s.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br from-green-500/10 to-transparent"}),(0,s.jsx)(a.CardHeader,{className:"relative pb-3",children:(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)(a.CardTitle,{className:"text-sm font-medium text-muted-foreground",children:"Completed"}),(0,s.jsx)(l.CheckCircle2,{className:"h-5 w-5 text-green-600"})]})}),(0,s.jsxs)(a.CardContent,{className:"relative",children:[(0,s.jsx)("div",{className:"text-3xl font-bold",children:C}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground mt-1 flex items-center gap-1",children:[(0,s.jsx)(o.TrendingUp,{className:"h-3 w-3"}),h.completionRate.toFixed(1),"% completion rate"]})]})]}),(0,s.jsxs)(a.Card,{className:"relative overflow-hidden",children:[(0,s.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br from-purple-500/10 to-transparent"}),(0,s.jsx)(a.CardHeader,{className:"relative pb-3",children:(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)(a.CardTitle,{className:"text-sm font-medium text-muted-foreground",children:"Planned"}),(0,s.jsx)(c.Clock,{className:"h-5 w-5 text-purple-600"})]})}),(0,s.jsx)(a.CardContent,{className:"relative",children:(0,s.jsx)("div",{className:"text-3xl font-bold",children:h.specsByStatus.find(e=>"planned"===e.status)?.count||0})})]})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-4 sm:gap-6",children:[(0,s.jsxs)(a.Card,{children:[(0,s.jsx)(a.CardHeader,{children:(0,s.jsxs)(a.CardTitle,{className:"text-lg flex items-center gap-2",children:[(0,s.jsx)(m,{className:"h-5 w-5 text-blue-600"}),"Recently Added"]})}),(0,s.jsx)(a.CardContent,{className:"space-y-1",children:j.slice(0,5).map(e=>(0,s.jsx)(f,{spec:e},e.id))})]}),(0,s.jsxs)(a.Card,{children:[(0,s.jsx)(a.CardHeader,{children:(0,s.jsxs)(a.CardTitle,{className:"text-lg flex items-center gap-2",children:[(0,s.jsx)(c.Clock,{className:"h-5 w-5 text-purple-600"}),"Planned (",u.length,")"]})}),(0,s.jsx)(a.CardContent,{className:"space-y-1",children:u.length>0?u.map(e=>(0,s.jsx)(f,{spec:e},e.id)):(0,s.jsx)("p",{className:"text-sm text-muted-foreground py-4 text-center",children:"No planned specs"})})]}),(0,s.jsxs)(a.Card,{children:[(0,s.jsx)(a.CardHeader,{children:(0,s.jsxs)(a.CardTitle,{className:"text-lg flex items-center gap-2",children:[(0,s.jsx)(i.PlayCircle,{className:"h-5 w-5 text-orange-600"}),"In Progress (",p.length,")"]})}),(0,s.jsx)(a.CardContent,{className:"space-y-1",children:p.length>0?p.map(e=>(0,s.jsx)(f,{spec:e},e.id)):(0,s.jsx)("p",{className:"text-sm text-muted-foreground py-4 text-center",children:"No specs in progress"})})]})]}),(0,s.jsxs)(a.Card,{children:[(0,s.jsx)(a.CardHeader,{children:(0,s.jsx)(a.CardTitle,{className:"text-lg",children:"Recent Activity"})}),(0,s.jsx)(a.CardContent,{children:(0,s.jsx)("div",{className:"border-l-2 border-muted pl-4 space-y-1",children:N.map(e=>(0,s.jsx)(g,{spec:e,action:"updated",time:e.updatedAt},e.id))})})]}),(0,s.jsxs)(a.Card,{children:[(0,s.jsx)(a.CardHeader,{children:(0,s.jsx)(a.CardTitle,{className:"text-lg",children:"Quick Actions"})}),(0,s.jsx)(a.CardContent,{children:(0,s.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,s.jsx)(r.Button,{asChild:!0,children:(0,s.jsxs)(t.default,{href:"/specs",children:[(0,s.jsx)(x.List,{className:"h-4 w-4 mr-2"}),"View All Specs"]})}),(0,s.jsx)(r.Button,{variant:"outline",asChild:!0,children:(0,s.jsxs)(t.default,{href:"/specs?view=board",children:[(0,s.jsx)(n.LayoutGrid,{className:"h-4 w-4 mr-2"}),"Board View"]})}),(0,s.jsx)(r.Button,{variant:"outline",asChild:!0,children:(0,s.jsxs)(t.default,{href:"/stats",children:[(0,s.jsx)(o.TrendingUp,{className:"h-4 w-4 mr-2"}),"View Stats"]})})]})})]})]})})}e.s(["DashboardClient",()=>N],34404)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,21411,e=>{"use strict";var t=e.i(31231),u=e.i(30827);function c(){let e=(0,u.useRouter)();return(0,t.useEffect)(()=>{e.replace("/specs?view=board")},[e]),null}e.s(["default",()=>c])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,329,e=>{"use strict";let t=(0,e.i(22436).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);e.s(["Search",()=>t],329)},91967,79014,e=>{"use strict";function t(e,n,{checkForDefaultPrevented:r=!0}={}){return function(t){if(e?.(t),!1===r||!t.defaultPrevented)return n?.(t)}}"undefined"!=typeof window&&window.document&&window.document.createElement,e.s(["composeEventHandlers",()=>t],91967);var n=e.i(31231),r=e.i(90022);function o(e,t){let o=n.createContext(t),i=e=>{let{children:t,...i}=e,a=n.useMemo(()=>i,Object.values(i));return(0,r.jsx)(o.Provider,{value:a,children:t})};return i.displayName=e+"Provider",[i,function(r){let i=n.useContext(o);if(i)return i;if(void 0!==t)return t;throw Error(`\`${r}\` must be used within \`${e}\``)}]}function i(e,t=[]){let o=[],a=()=>{let t=o.map(e=>n.createContext(e));return function(r){let o=r?.[e]||t;return n.useMemo(()=>({[`__scope${e}`]:{...r,[e]:o}}),[r,o])}};return a.scopeName=e,[function(t,i){let a=n.createContext(i),u=o.length;o=[...o,i];let c=t=>{let{scope:o,children:i,...c}=t,l=o?.[e]?.[u]||a,s=n.useMemo(()=>c,Object.values(c));return(0,r.jsx)(l.Provider,{value:s,children:i})};return c.displayName=t+"Provider",[c,function(r,o){let c=o?.[e]?.[u]||a,l=n.useContext(c);if(l)return l;if(void 0!==i)return i;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=r.reduce((t,{useScope:n,scopeName:r})=>{let o=n(e)[`__scope${r}`];return{...t,...o}},{});return n.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return r.scopeName=t.scopeName,r}(a,...t)]}e.s(["createContext",()=>o,"createContextScope",()=>i],79014)},15599,43988,e=>{"use strict";var t=e.i(31231),n=globalThis?.document?t.useLayoutEffect:()=>{};e.s(["useLayoutEffect",()=>n],43988);var r=t[" useId ".trim().toString()]||(()=>void 0),o=0;function i(e){let[i,a]=t.useState(r());return n(()=>{e||a(e=>e??String(o++))},[e]),e||(i?`radix-${i}`:"")}e.s(["useId",()=>i],15599)},93136,e=>{"use strict";var t=e.i(31231),n=e.i(43988);t[" useEffectEvent ".trim().toString()],t[" useInsertionEffect ".trim().toString()];var r=t[" useInsertionEffect ".trim().toString()]||n.useLayoutEffect;function o({prop:e,defaultProp:n,onChange:o=()=>{},caller:i}){let[a,u,c]=function({defaultProp:e,onChange:n}){let[o,i]=t.useState(e),a=t.useRef(o),u=t.useRef(n);return r(()=>{u.current=n},[n]),t.useEffect(()=>{a.current!==o&&(u.current?.(o),a.current=o)},[o,a]),[o,i,u]}({defaultProp:n,onChange:o}),l=void 0!==e,s=l?e:a;{let n=t.useRef(void 0!==e);t.useEffect(()=>{let e=n.current;if(e!==l){let t=l?"controlled":"uncontrolled";console.warn(`${i} is changing from ${e?"controlled":"uncontrolled"} to ${t}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}n.current=l},[l,i])}return[s,t.useCallback(t=>{if(l){let n="function"==typeof t?t(e):t;n!==e&&c.current?.(n)}else u(t)},[l,e,u,c])]}Symbol("RADIX:SYNC_STATE"),e.s(["useControllableState",()=>o],93136)},55235,65489,22925,38657,e=>{"use strict";var t,n=e.i(31231),r=e.i(91967),o=e.i(95635),i=e.i(30406),a=e.i(90022);function u(e){var t;let r,o=(t=e,(r=n.forwardRef((e,t)=>{let{children:r,...o}=e;if(n.isValidElement(r)){var a;let e,u,c=(a=r,(u=(e=Object.getOwnPropertyDescriptor(a.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?a.ref:(u=(e=Object.getOwnPropertyDescriptor(a,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?a.props.ref:a.props.ref||a.ref),l=function(e,t){let n={...t};for(let r in t){let o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...e)=>{let t=i(...e);return o(...e),t}:o&&(n[r]=o):"style"===r?n[r]={...o,...i}:"className"===r&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}(o,r.props);return r.type!==n.Fragment&&(l.ref=t?(0,i.composeRefs)(t,c):c),n.cloneElement(r,l)}return n.Children.count(r)>1?n.Children.only(null):null})).displayName=`${t}.SlotClone`,r),u=n.forwardRef((e,t)=>{let{children:r,...i}=e,u=n.Children.toArray(r),c=u.find(s);if(c){let e=c.props.children,r=u.map(t=>t!==c?t:n.Children.count(e)>1?n.Children.only(null):n.isValidElement(e)?e.props.children:null);return(0,a.jsx)(o,{...i,ref:t,children:n.isValidElement(e)?n.cloneElement(e,void 0,r):null})}return(0,a.jsx)(o,{...i,ref:t,children:r})});return u.displayName=`${e}.Slot`,u}var c=Symbol("radix.slottable");function l(e){let t=({children:e})=>(0,a.jsx)(a.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=c,t}function s(e){return n.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===c}e.s(["createSlot",()=>u,"createSlottable",()=>l],65489);var d=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let r=u(`Primitive.${t}`),o=n.forwardRef((e,n)=>{let{asChild:o,...i}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,a.jsx)(o?r:t,{...i,ref:n})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});function f(e,t){e&&o.flushSync(()=>e.dispatchEvent(t))}function v(e){let t=n.useRef(e);return n.useEffect(()=>{t.current=e}),n.useMemo(()=>(...e)=>t.current?.(...e),[])}e.s(["Primitive",()=>d,"dispatchDiscreteCustomEvent",()=>f],22925),e.s(["useCallbackRef",()=>v],38657);var p="dismissableLayer.update",m=n.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),h=n.forwardRef((e,o)=>{let{disableOutsidePointerEvents:u=!1,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:s,onInteractOutside:f,onDismiss:h,...E}=e,b=n.useContext(m),[w,C]=n.useState(null),S=w?.ownerDocument??globalThis?.document,[,R]=n.useState({}),x=(0,i.useComposedRefs)(o,e=>C(e)),L=Array.from(b.layers),[P]=[...b.layersWithOutsidePointerEventsDisabled].slice(-1),N=L.indexOf(P),k=w?L.indexOf(w):-1,T=b.layersWithOutsidePointerEventsDisabled.size>0,A=k>=N,O=function(e,t=globalThis?.document){let r=v(e),o=n.useRef(!1),i=n.useRef(()=>{});return n.useEffect(()=>{let e=e=>{if(e.target&&!o.current){let n=function(){g("dismissableLayer.pointerDownOutside",r,o,{discrete:!0})},o={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",i.current),i.current=n,t.addEventListener("click",i.current,{once:!0})):n()}else t.removeEventListener("click",i.current);o.current=!1},n=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(n),t.removeEventListener("pointerdown",e),t.removeEventListener("click",i.current)}},[t,r]),{onPointerDownCapture:()=>o.current=!0}}(e=>{let t=e.target,n=[...b.branches].some(e=>e.contains(t));A&&!n&&(l?.(e),f?.(e),e.defaultPrevented||h?.())},S),M=function(e,t=globalThis?.document){let r=v(e),o=n.useRef(!1);return n.useEffect(()=>{let e=e=>{e.target&&!o.current&&g("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,r]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}(e=>{let t=e.target;![...b.branches].some(e=>e.contains(t))&&(s?.(e),f?.(e),e.defaultPrevented||h?.())},S);return!function(e,t=globalThis?.document){let r=v(e);n.useEffect(()=>{let e=e=>{"Escape"===e.key&&r(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[r,t])}(e=>{k===b.layers.size-1&&(c?.(e),!e.defaultPrevented&&h&&(e.preventDefault(),h()))},S),n.useEffect(()=>{if(w)return u&&(0===b.layersWithOutsidePointerEventsDisabled.size&&(t=S.body.style.pointerEvents,S.body.style.pointerEvents="none"),b.layersWithOutsidePointerEventsDisabled.add(w)),b.layers.add(w),y(),()=>{u&&1===b.layersWithOutsidePointerEventsDisabled.size&&(S.body.style.pointerEvents=t)}},[w,S,u,b]),n.useEffect(()=>()=>{w&&(b.layers.delete(w),b.layersWithOutsidePointerEventsDisabled.delete(w),y())},[w,b]),n.useEffect(()=>{let e=()=>R({});return document.addEventListener(p,e),()=>document.removeEventListener(p,e)},[]),(0,a.jsx)(d.div,{...E,ref:x,style:{pointerEvents:T?A?"auto":"none":void 0,...e.style},onFocusCapture:(0,r.composeEventHandlers)(e.onFocusCapture,M.onFocusCapture),onBlurCapture:(0,r.composeEventHandlers)(e.onBlurCapture,M.onBlurCapture),onPointerDownCapture:(0,r.composeEventHandlers)(e.onPointerDownCapture,O.onPointerDownCapture)})});function y(){let e=new CustomEvent(p);document.dispatchEvent(e)}function g(e,t,n,{discrete:r}){let o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?f(o,i):o.dispatchEvent(i)}h.displayName="DismissableLayer",n.forwardRef((e,t)=>{let r=n.useContext(m),o=n.useRef(null),u=(0,i.useComposedRefs)(t,o);return n.useEffect(()=>{let e=o.current;if(e)return r.branches.add(e),()=>{r.branches.delete(e)}},[r.branches]),(0,a.jsx)(d.div,{...e,ref:u})}).displayName="DismissableLayerBranch",e.s(["DismissableLayer",()=>h],55235)},31007,e=>{"use strict";let t;var n=e.i(31231),r=e.i(30406),o=e.i(22925),i=e.i(38657),a=e.i(90022),u="focusScope.autoFocusOnMount",c="focusScope.autoFocusOnUnmount",l={bubbles:!1,cancelable:!0},s=n.forwardRef((e,t)=>{let{loop:s=!1,trapped:m=!1,onMountAutoFocus:h,onUnmountAutoFocus:y,...g}=e,[E,b]=n.useState(null),w=(0,i.useCallbackRef)(h),C=(0,i.useCallbackRef)(y),S=n.useRef(null),R=(0,r.useComposedRefs)(t,e=>b(e)),x=n.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;n.useEffect(()=>{if(m){let e=function(e){if(x.paused||!E)return;let t=e.target;E.contains(t)?S.current=t:v(S.current,{select:!0})},t=function(e){if(x.paused||!E)return;let t=e.relatedTarget;null!==t&&(E.contains(t)||v(S.current,{select:!0}))};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let n=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&v(E)});return E&&n.observe(E,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}},[m,E,x.paused]),n.useEffect(()=>{if(E){p.add(x);let e=document.activeElement;if(!E.contains(e)){let t=new CustomEvent(u,l);E.addEventListener(u,w),E.dispatchEvent(t),t.defaultPrevented||(function(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(v(r,{select:t}),document.activeElement!==n)return}(d(E).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&v(E))}return()=>{E.removeEventListener(u,w),setTimeout(()=>{let t=new CustomEvent(c,l);E.addEventListener(c,C),E.dispatchEvent(t),t.defaultPrevented||v(e??document.body,{select:!0}),E.removeEventListener(c,C),p.remove(x)},0)}}},[E,w,C,x]);let L=n.useCallback(e=>{if(!s&&!m||x.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=document.activeElement;if(t&&n){var r;let t,o=e.currentTarget,[i,a]=[f(t=d(r=o),r),f(t.reverse(),r)];i&&a?e.shiftKey||n!==a?e.shiftKey&&n===i&&(e.preventDefault(),s&&v(a,{select:!0})):(e.preventDefault(),s&&v(i,{select:!0})):n===o&&e.preventDefault()}},[s,m,x.paused]);return(0,a.jsx)(o.Primitive.div,{tabIndex:-1,...g,ref:R,onKeyDown:L})});function d(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function f(e,t){for(let n of e)if(!function(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===t||e!==t);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(n,{upTo:t}))return n}function v(e,{select:t=!1}={}){if(e&&e.focus){var n;let r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&(n=e)instanceof HTMLInputElement&&"select"in n&&t&&e.select()}}s.displayName="FocusScope";var p=(t=[],{add(e){let n=t[0];e!==n&&n?.pause(),(t=m(t,e)).unshift(e)},remove(e){t=m(t,e),t[0]?.resume()}});function m(e,t){let n=[...e],r=n.indexOf(t);return -1!==r&&n.splice(r,1),n}e.s(["FocusScope",()=>s])},14260,e=>{"use strict";var t=e.i(31231),n=e.i(95635),r=e.i(22925),o=e.i(43988),i=e.i(90022),a=t.forwardRef((e,a)=>{let{container:u,...c}=e,[l,s]=t.useState(!1);(0,o.useLayoutEffect)(()=>s(!0),[]);let d=u||l&&globalThis?.document?.body;return d?n.default.createPortal((0,i.jsx)(r.Primitive.div,{...c,ref:a}),d):null});a.displayName="Portal",e.s(["Portal",()=>a])},54440,e=>{"use strict";var t=e.i(31231),n=0;function r(){t.useEffect(()=>{let e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??o()),document.body.insertAdjacentElement("beforeend",e[1]??o()),n++,()=>{1===n&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),n--}},[])}function o(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}e.s(["useFocusGuards",()=>r])},97496,e=>{"use strict";var t,n,r,o,i,a,u,c=function(){return(c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function l(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)0>t.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n}var s=("function"==typeof SuppressedError&&SuppressedError,e.i(31231)),d="right-scroll-bar-position",f="width-before-scroll-bar";function v(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var p="undefined"!=typeof window?s.useLayoutEffect:s.useEffect,m=new WeakMap,h=(void 0===t&&(t={}),(void 0===n&&(n=function(e){return e}),r=[],o=!1,i={read:function(){if(o)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:null},useMedium:function(e){var t=n(e,o);return r.push(t),function(){r=r.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(o=!0;r.length;){var t=r;r=[],t.forEach(e)}r={push:function(t){return e(t)},filter:function(){return r}}},assignMedium:function(e){o=!0;var t=[];if(r.length){var n=r;r=[],n.forEach(e),t=r}var i=function(){var n=t;t=[],n.forEach(e)},a=function(){return Promise.resolve().then(i)};a(),r={push:function(e){t.push(e),a()},filter:function(e){return t=t.filter(e),r}}}}).options=c({async:!0,ssr:!1},t),i),y=function(){},g=s.forwardRef(function(e,t){var n,r,o,i,a=s.useRef(null),u=s.useState({onScrollCapture:y,onWheelCapture:y,onTouchMoveCapture:y}),d=u[0],f=u[1],g=e.forwardProps,E=e.children,b=e.className,w=e.removeScrollBar,C=e.enabled,S=e.shards,R=e.sideCar,x=e.noRelative,L=e.noIsolation,P=e.inert,N=e.allowPinchZoom,k=e.as,T=e.gapMode,A=l(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),O=(n=[a,t],r=function(e){return n.forEach(function(t){return v(t,e)})},(o=(0,s.useState)(function(){return{value:null,callback:r,facade:{get current(){return o.value},set current(value){var e=o.value;e!==value&&(o.value=value,o.callback(value,e))}}}})[0]).callback=r,i=o.facade,p(function(){var e=m.get(i);if(e){var t=new Set(e),r=new Set(n),o=i.current;t.forEach(function(e){r.has(e)||v(e,null)}),r.forEach(function(e){t.has(e)||v(e,o)})}m.set(i,n)},[n]),i),M=c(c({},A),d);return s.createElement(s.Fragment,null,C&&s.createElement(R,{sideCar:h,removeScrollBar:w,shards:S,noRelative:x,noIsolation:L,inert:P,setCallbacks:f,allowPinchZoom:!!N,lockRef:a,gapMode:T}),g?s.cloneElement(s.Children.only(E),c(c({},M),{ref:O})):s.createElement(void 0===k?"div":k,c({},M,{className:b,ref:O}),E))});g.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},g.classNames={fullWidth:f,zeroRight:d};var E=function(e){var t=e.sideCar,n=l(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error("Sidecar medium not found");return s.createElement(r,c({},n))};E.isSideCarExport=!0;var b=function(){var e=0,t=null;return{add:function(n){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=u||("undefined"!=typeof __webpack_nonce__?__webpack_nonce__:void 0);return t&&e.setAttribute("nonce",t),e}())){var r,o;(r=t).styleSheet?r.styleSheet.cssText=n:r.appendChild(document.createTextNode(n)),o=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(o)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},w=function(){var e=b();return function(t,n){s.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},C=function(){var e=w();return function(t){return e(t.styles,t.dynamic),null}},S={left:0,top:0,right:0,gap:0},R=function(e){return parseInt(e||"",10)||0},x=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[R(n),R(r),R(o)]},L=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return S;var t=x(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},P=C(),N="data-scroll-locked",k=function(e,t,n,r){var o=e.left,i=e.top,a=e.right,u=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(u,"px ").concat(r,";\n }\n body[").concat(N,"] {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(i,"px;\n padding-right: ").concat(a,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(u,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(u,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(d," {\n right: ").concat(u,"px ").concat(r,";\n }\n \n .").concat(f," {\n margin-right: ").concat(u,"px ").concat(r,";\n }\n \n .").concat(d," .").concat(d," {\n right: 0 ").concat(r,";\n }\n \n .").concat(f," .").concat(f," {\n margin-right: 0 ").concat(r,";\n }\n \n body[").concat(N,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(u,"px;\n }\n")},T=function(){var e=parseInt(document.body.getAttribute(N)||"0",10);return isFinite(e)?e:0},A=function(){s.useEffect(function(){return document.body.setAttribute(N,(T()+1).toString()),function(){var e=T()-1;e<=0?document.body.removeAttribute(N):document.body.setAttribute(N,e.toString())}},[])},O=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=void 0===r?"margin":r;A();var i=s.useMemo(function(){return L(o)},[o]);return s.createElement(P,{styles:k(i,!t,o,n?"":"!important")})},M=!1;if("undefined"!=typeof window)try{var D=Object.defineProperty({},"passive",{get:function(){return M=!0,!0}});window.addEventListener("test",D,D),window.removeEventListener("test",D,D)}catch(e){M=!1}var j=!!M&&{passive:!1},_=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return"hidden"!==n[t]&&(n.overflowY!==n.overflowX||"TEXTAREA"===e.tagName||"visible"!==n[t])},W=function(e,t){var n=t.ownerDocument,r=t;do{if("undefined"!=typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),I(e,r)){var o=F(e,r);if(o[1]>o[2])return!0}r=r.parentNode}while(r&&r!==n.body)return!1},I=function(e,t){return"v"===e?_(t,"overflowY"):_(t,"overflowX")},F=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},B=function(e,t,n,r,o){var i,a=(i=window.getComputedStyle(t).direction,"h"===e&&"rtl"===i?-1:1),u=a*r,c=n.target,l=t.contains(c),s=!1,d=u>0,f=0,v=0;do{if(!c)break;var p=F(e,c),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&I(e,c)&&(f+=h,v+=m);var y=c.parentNode;c=y&&y.nodeType===Node.DOCUMENT_FRAGMENT_NODE?y.host:y}while(!l&&c!==document.body||l&&(t.contains(c)||t===c))return d&&(o&&1>Math.abs(f)||!o&&u>f)?s=!0:!d&&(o&&1>Math.abs(v)||!o&&-u>v)&&(s=!0),s},$=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},K=function(e){return[e.deltaX,e.deltaY]},H=function(e){return e&&"current"in e?e.current:e},X=0,Y=[];let z=(a=function(e){var t=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),o=s.useState(X++)[0],i=s.useState(C)[0],a=s.useRef(e);s.useEffect(function(){a.current=e},[e]),s.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var t=(function(e,t,n){if(n||2==arguments.length)for(var r,o=0,i=t.length;o<i;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))})([e.lockRef.current],(e.shards||[]).map(H),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),t.forEach(function(e){return e.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var u=s.useCallback(function(e,t){if("touches"in e&&2===e.touches.length||"wheel"===e.type&&e.ctrlKey)return!a.current.allowPinchZoom;var o,i=$(e),u=n.current,c="deltaX"in e?e.deltaX:u[0]-i[0],l="deltaY"in e?e.deltaY:u[1]-i[1],s=e.target,d=Math.abs(c)>Math.abs(l)?"h":"v";if("touches"in e&&"h"===d&&"range"===s.type)return!1;var f=W(d,s);if(!f)return!0;if(f?o=d:(o="v"===d?"h":"v",f=W(d,s)),!f)return!1;if(!r.current&&"changedTouches"in e&&(c||l)&&(r.current=o),!o)return!0;var v=r.current||o;return B(v,t,e,"h"===v?c:l,!0)},[]),c=s.useCallback(function(e){if(Y.length&&Y[Y.length-1]===i){var n="deltaY"in e?K(e):$(e),r=t.current.filter(function(t){var r;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(r=t.delta,r[0]===n[0]&&r[1]===n[1])})[0];if(r&&r.should){e.cancelable&&e.preventDefault();return}if(!r){var o=(a.current.shards||[]).map(H).filter(Boolean).filter(function(t){return t.contains(e.target)});(o.length>0?u(e,o[0]):!a.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),l=s.useCallback(function(e,n,r,o){var i={name:e,delta:n,target:r,should:o,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(r)};t.current.push(i),setTimeout(function(){t.current=t.current.filter(function(e){return e!==i})},1)},[]),d=s.useCallback(function(e){n.current=$(e),r.current=void 0},[]),f=s.useCallback(function(t){l(t.type,K(t),t.target,u(t,e.lockRef.current))},[]),v=s.useCallback(function(t){l(t.type,$(t),t.target,u(t,e.lockRef.current))},[]);s.useEffect(function(){return Y.push(i),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:v}),document.addEventListener("wheel",c,j),document.addEventListener("touchmove",c,j),document.addEventListener("touchstart",d,j),function(){Y=Y.filter(function(e){return e!==i}),document.removeEventListener("wheel",c,j),document.removeEventListener("touchmove",c,j),document.removeEventListener("touchstart",d,j)}},[]);var p=e.removeScrollBar,m=e.inert;return s.createElement(s.Fragment,null,m?s.createElement(i,{styles:"\n .block-interactivity-".concat(o," {pointer-events: none;}\n .allow-interactivity-").concat(o," {pointer-events: all;}\n")}):null,p?s.createElement(O,{noRelative:e.noRelative,gapMode:e.gapMode}):null)},h.useMedium(a),E);var U=s.forwardRef(function(e,t){return s.createElement(g,c({},e,{ref:t,sideCar:z}))});U.classNames=g.classNames,e.s(["RemoveScroll",0,U],97496)},73772,e=>{"use strict";var t=new WeakMap,n=new WeakMap,r={},o=0,i=function(e){return e&&(e.host||i(e.parentNode))},a=function(e,a,u,c){var l=(Array.isArray(e)?e:[e]).map(function(e){if(a.contains(e))return e;var t=i(e);return t&&a.contains(t)?t:(console.error("aria-hidden",e,"in not contained inside",a,". Doing nothing"),null)}).filter(function(e){return!!e});r[u]||(r[u]=new WeakMap);var s=r[u],d=[],f=new Set,v=new Set(l),p=function(e){!e||f.has(e)||(f.add(e),p(e.parentNode))};l.forEach(p);var m=function(e){!e||v.has(e)||Array.prototype.forEach.call(e.children,function(e){if(f.has(e))m(e);else try{var r=e.getAttribute(c),o=null!==r&&"false"!==r,i=(t.get(e)||0)+1,a=(s.get(e)||0)+1;t.set(e,i),s.set(e,a),d.push(e),1===i&&o&&n.set(e,!0),1===a&&e.setAttribute(u,"true"),o||e.setAttribute(c,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return m(a),f.clear(),o++,function(){d.forEach(function(e){var r=t.get(e)-1,o=s.get(e)-1;t.set(e,r),s.set(e,o),r||(n.has(e)||e.removeAttribute(c),n.delete(e)),o||e.removeAttribute(u)}),--o||(t=new WeakMap,t=new WeakMap,n=new WeakMap,r={})}},u=function(e,t,n){void 0===n&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||("undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live], script"))),a(r,o,n,"aria-hidden")):function(){return null}};e.s(["hideOthers",()=>u])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,65458,7284,e=>{"use strict";function r(){for(var e,r,o=0,t="",l=arguments.length;o<l;o++)(e=arguments[o])&&(r=function e(r){var o,t,l="";if("string"==typeof r||"number"==typeof r)l+=r;else if("object"==typeof r)if(Array.isArray(r)){var a=r.length;for(o=0;o<a;o++)r[o]&&(t=e(r[o]))&&(l&&(l+=" "),l+=t)}else for(t in r)r[t]&&(l&&(l+=" "),l+=t);return l}(e))&&(t&&(t+=" "),t+=r);return t}e.s(["clsx",()=>r],7284);let o=(e=new Map,r=null,o)=>({nextPart:e,validators:r,classGroupId:o}),t=[],l=(e,r,o)=>{if(0==e.length-r)return o.classGroupId;let t=e[r],a=o.nextPart.get(t);if(a){let o=l(e,r+1,a);if(o)return o}let n=o.validators;if(null===n)return;let s=0===r?e.join("-"):e.slice(r).join("-"),i=n.length;for(let e=0;e<i;e++){let r=n[e];if(r.validator(s))return r.classGroupId}},a=(e,r)=>{let t=o();for(let o in e)n(e[o],t,o,r);return t},n=(e,r,o,t)=>{let l=e.length;for(let a=0;a<l;a++)s(e[a],r,o,t)},s=(e,r,o,t)=>{"string"==typeof e?i(e,r,o):"function"==typeof e?d(e,r,o,t):c(e,r,o,t)},i=(e,r,o)=>{(""===e?r:m(r,e)).classGroupId=o},d=(e,r,o,t)=>{p(e)?n(e(t),r,o,t):(null===r.validators&&(r.validators=[]),r.validators.push({classGroupId:o,validator:e}))},c=(e,r,o,t)=>{let l=Object.entries(e),a=l.length;for(let e=0;e<a;e++){let[a,s]=l[e];n(s,m(r,a),o,t)}},m=(e,r)=>{let t=e,l=r.split("-"),a=l.length;for(let e=0;e<a;e++){let r=l[e],a=t.nextPart.get(r);a||(a=o(),t.nextPart.set(r,a)),t=a}return t},p=e=>"isThemeGetter"in e&&!0===e.isThemeGetter,u=[],b=(e,r,o,t,l)=>({modifiers:e,hasImportantModifier:r,baseClassName:o,maybePostfixModifierPosition:t,isExternal:l}),f=/\s+/,g=e=>{let r;if("string"==typeof e)return e;let o="";for(let t=0;t<e.length;t++)e[t]&&(r=g(e[t]))&&(o&&(o+=" "),o+=r);return o},h=[],k=e=>{let r=r=>r[e]||h;return r.isThemeGetter=!0,r},x=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,w=/^\((?:(\w[\w-]*):)?(.+)\)$/i,y=/^\d+\/\d+$/,v=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,z=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,j=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,G=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,C=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,O=e=>y.test(e),N=e=>!!e&&!Number.isNaN(Number(e)),T=e=>!!e&&Number.isInteger(Number(e)),$=e=>e.endsWith("%")&&N(e.slice(0,-1)),I=e=>v.test(e),M=()=>!0,W=e=>z.test(e)&&!j.test(e),A=()=>!1,P=e=>G.test(e),S=e=>C.test(e),q=e=>!K(e)&&!D(e),B=e=>Y(e,eo,A),K=e=>x.test(e),R=e=>Y(e,et,W),U=e=>Y(e,el,N),_=e=>Y(e,ee,A),E=e=>Y(e,er,S),H=e=>Y(e,en,P),D=e=>w.test(e),F=e=>Z(e,et),J=e=>Z(e,ea),L=e=>Z(e,ee),Q=e=>Z(e,eo),V=e=>Z(e,er),X=e=>Z(e,en,!0),Y=(e,r,o)=>{let t=x.exec(e);return!!t&&(t[1]?r(t[1]):o(t[2]))},Z=(e,r,o=!1)=>{let t=w.exec(e);return!!t&&(t[1]?r(t[1]):o)},ee=e=>"position"===e||"percentage"===e,er=e=>"image"===e||"url"===e,eo=e=>"length"===e||"size"===e||"bg-size"===e,et=e=>"length"===e,el=e=>"number"===e,ea=e=>"family-name"===e,en=e=>"shadow"===e,es=((e,...r)=>{let o,n,s,i,d=e=>{let r=n(e);if(r)return r;let t=((e,r)=>{let{parseClassName:o,getClassGroupId:t,getConflictingClassGroupIds:l,sortModifiers:a}=r,n=[],s=e.trim().split(f),i="";for(let e=s.length-1;e>=0;e-=1){let r=s[e],{isExternal:d,modifiers:c,hasImportantModifier:m,baseClassName:p,maybePostfixModifierPosition:u}=o(r);if(d){i=r+(i.length>0?" "+i:i);continue}let b=!!u,f=t(b?p.substring(0,u):p);if(!f){if(!b||!(f=t(p))){i=r+(i.length>0?" "+i:i);continue}b=!1}let g=0===c.length?"":1===c.length?c[0]:a(c).join(":"),h=m?g+"!":g,k=h+f;if(n.indexOf(k)>-1)continue;n.push(k);let x=l(f,b);for(let e=0;e<x.length;++e){let r=x[e];n.push(h+r)}i=r+(i.length>0?" "+i:i)}return i})(e,o);return s(e,t),t};return i=c=>{var m;let p;return n=(o={cache:(e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let r=0,o=Object.create(null),t=Object.create(null),l=(l,a)=>{o[l]=a,++r>e&&(r=0,t=o,o=Object.create(null))};return{get(e){let r=o[e];return void 0!==r?r:void 0!==(r=t[e])?(l(e,r),r):void 0},set(e,r){e in o?o[e]=r:l(e,r)}}})((m=r.reduce((e,r)=>r(e),e())).cacheSize),parseClassName:(e=>{let{prefix:r,experimentalParseClassName:o}=e,t=e=>{let r,o=[],t=0,l=0,a=0,n=e.length;for(let s=0;s<n;s++){let n=e[s];if(0===t&&0===l){if(":"===n){o.push(e.slice(a,s)),a=s+1;continue}if("/"===n){r=s;continue}}"["===n?t++:"]"===n?t--:"("===n?l++:")"===n&&l--}let s=0===o.length?e:e.slice(a),i=s,d=!1;return s.endsWith("!")?(i=s.slice(0,-1),d=!0):s.startsWith("!")&&(i=s.slice(1),d=!0),b(o,d,i,r&&r>a?r-a:void 0)};if(r){let e=r+":",o=t;t=r=>r.startsWith(e)?o(r.slice(e.length)):b(u,!1,r,void 0,!0)}if(o){let e=t;t=r=>o({className:r,parseClassName:e})}return t})(m),sortModifiers:(p=new Map,m.orderSensitiveModifiers.forEach((e,r)=>{p.set(e,1e6+r)}),e=>{let r=[],o=[];for(let t=0;t<e.length;t++){let l=e[t],a="["===l[0],n=p.has(l);a||n?(o.length>0&&(o.sort(),r.push(...o),o=[]),r.push(l)):o.push(l)}return o.length>0&&(o.sort(),r.push(...o)),r}),...(e=>{let r=(e=>{let{theme:r,classGroups:o}=e;return a(o,r)})(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:n}=e;return{getClassGroupId:e=>{if(e.startsWith("[")&&e.endsWith("]")){var o;let r,t,l;return -1===(o=e).slice(1,-1).indexOf(":")?void 0:(t=(r=o.slice(1,-1)).indexOf(":"),(l=r.slice(0,t))?"arbitrary.."+l:void 0)}let t=e.split("-"),a=+(""===t[0]&&t.length>1);return l(t,a,r)},getConflictingClassGroupIds:(e,r)=>{if(r){let r=n[e],l=o[e];if(r){if(l){let e=Array(l.length+r.length);for(let r=0;r<l.length;r++)e[r]=l[r];for(let o=0;o<r.length;o++)e[l.length+o]=r[o];return e}return r}return l||t}return o[e]||t}}})(m)}).cache.get,s=o.cache.set,i=d,d(c)},(...e)=>i(((...e)=>{let r,o,t=0,l="";for(;t<e.length;)(r=e[t++])&&(o=g(r))&&(l&&(l+=" "),l+=o);return l})(...e))})(()=>{let e=k("color"),r=k("font"),o=k("text"),t=k("font-weight"),l=k("tracking"),a=k("leading"),n=k("breakpoint"),s=k("container"),i=k("spacing"),d=k("radius"),c=k("shadow"),m=k("inset-shadow"),p=k("text-shadow"),u=k("drop-shadow"),b=k("blur"),f=k("perspective"),g=k("aspect"),h=k("ease"),x=k("animate"),w=()=>["auto","avoid","all","avoid-page","page","left","right","column"],y=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],v=()=>[...y(),D,K],z=()=>["auto","hidden","clip","visible","scroll"],j=()=>["auto","contain","none"],G=()=>[D,K,i],C=()=>[O,"full","auto",...G()],W=()=>[T,"none","subgrid",D,K],A=()=>["auto",{span:["full",T,D,K]},T,D,K],P=()=>[T,"auto",D,K],S=()=>["auto","min","max","fr",D,K],Y=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Z=()=>["start","end","center","stretch","center-safe","end-safe"],ee=()=>["auto",...G()],er=()=>[O,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...G()],eo=()=>[e,D,K],et=()=>[...y(),L,_,{position:[D,K]}],el=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ea=()=>["auto","cover","contain",Q,B,{size:[D,K]}],en=()=>[$,F,R],es=()=>["","none","full",d,D,K],ei=()=>["",N,F,R],ed=()=>["solid","dashed","dotted","double"],ec=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],em=()=>[N,$,L,_],ep=()=>["","none",b,D,K],eu=()=>["none",N,D,K],eb=()=>["none",N,D,K],ef=()=>[N,D,K],eg=()=>[O,"full",...G()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[I],breakpoint:[I],color:[M],container:[I],"drop-shadow":[I],ease:["in","out","in-out"],font:[q],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[I],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[I],shadow:[I],spacing:["px",N],text:[I],"text-shadow":[I],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",O,K,D,g]}],container:["container"],columns:[{columns:[N,K,D,s]}],"break-after":[{"break-after":w()}],"break-before":[{"break-before":w()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:v()}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:j()}],"overscroll-x":[{"overscroll-x":j()}],"overscroll-y":[{"overscroll-y":j()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:C()}],"inset-x":[{"inset-x":C()}],"inset-y":[{"inset-y":C()}],start:[{start:C()}],end:[{end:C()}],top:[{top:C()}],right:[{right:C()}],bottom:[{bottom:C()}],left:[{left:C()}],visibility:["visible","invisible","collapse"],z:[{z:[T,"auto",D,K]}],basis:[{basis:[O,"full","auto",s,...G()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[N,O,"auto","initial","none",K]}],grow:[{grow:["",N,D,K]}],shrink:[{shrink:["",N,D,K]}],order:[{order:[T,"first","last","none",D,K]}],"grid-cols":[{"grid-cols":W()}],"col-start-end":[{col:A()}],"col-start":[{"col-start":P()}],"col-end":[{"col-end":P()}],"grid-rows":[{"grid-rows":W()}],"row-start-end":[{row:A()}],"row-start":[{"row-start":P()}],"row-end":[{"row-end":P()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":S()}],"auto-rows":[{"auto-rows":S()}],gap:[{gap:G()}],"gap-x":[{"gap-x":G()}],"gap-y":[{"gap-y":G()}],"justify-content":[{justify:[...Y(),"normal"]}],"justify-items":[{"justify-items":[...Z(),"normal"]}],"justify-self":[{"justify-self":["auto",...Z()]}],"align-content":[{content:["normal",...Y()]}],"align-items":[{items:[...Z(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Z(),{baseline:["","last"]}]}],"place-content":[{"place-content":Y()}],"place-items":[{"place-items":[...Z(),"baseline"]}],"place-self":[{"place-self":["auto",...Z()]}],p:[{p:G()}],px:[{px:G()}],py:[{py:G()}],ps:[{ps:G()}],pe:[{pe:G()}],pt:[{pt:G()}],pr:[{pr:G()}],pb:[{pb:G()}],pl:[{pl:G()}],m:[{m:ee()}],mx:[{mx:ee()}],my:[{my:ee()}],ms:[{ms:ee()}],me:[{me:ee()}],mt:[{mt:ee()}],mr:[{mr:ee()}],mb:[{mb:ee()}],ml:[{ml:ee()}],"space-x":[{"space-x":G()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":G()}],"space-y-reverse":["space-y-reverse"],size:[{size:er()}],w:[{w:[s,"screen",...er()]}],"min-w":[{"min-w":[s,"screen","none",...er()]}],"max-w":[{"max-w":[s,"screen","none","prose",{screen:[n]},...er()]}],h:[{h:["screen","lh",...er()]}],"min-h":[{"min-h":["screen","lh","none",...er()]}],"max-h":[{"max-h":["screen","lh",...er()]}],"font-size":[{text:["base",o,F,R]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[t,D,U]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",$,K]}],"font-family":[{font:[J,K,r]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[l,D,K]}],"line-clamp":[{"line-clamp":[N,"none",D,U]}],leading:[{leading:[a,...G()]}],"list-image":[{"list-image":["none",D,K]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",D,K]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:eo()}],"text-color":[{text:eo()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ed(),"wavy"]}],"text-decoration-thickness":[{decoration:[N,"from-font","auto",D,R]}],"text-decoration-color":[{decoration:eo()}],"underline-offset":[{"underline-offset":[N,"auto",D,K]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:G()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",D,K]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",D,K]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:et()}],"bg-repeat":[{bg:el()}],"bg-size":[{bg:ea()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},T,D,K],radial:["",D,K],conic:[T,D,K]},V,E]}],"bg-color":[{bg:eo()}],"gradient-from-pos":[{from:en()}],"gradient-via-pos":[{via:en()}],"gradient-to-pos":[{to:en()}],"gradient-from":[{from:eo()}],"gradient-via":[{via:eo()}],"gradient-to":[{to:eo()}],rounded:[{rounded:es()}],"rounded-s":[{"rounded-s":es()}],"rounded-e":[{"rounded-e":es()}],"rounded-t":[{"rounded-t":es()}],"rounded-r":[{"rounded-r":es()}],"rounded-b":[{"rounded-b":es()}],"rounded-l":[{"rounded-l":es()}],"rounded-ss":[{"rounded-ss":es()}],"rounded-se":[{"rounded-se":es()}],"rounded-ee":[{"rounded-ee":es()}],"rounded-es":[{"rounded-es":es()}],"rounded-tl":[{"rounded-tl":es()}],"rounded-tr":[{"rounded-tr":es()}],"rounded-br":[{"rounded-br":es()}],"rounded-bl":[{"rounded-bl":es()}],"border-w":[{border:ei()}],"border-w-x":[{"border-x":ei()}],"border-w-y":[{"border-y":ei()}],"border-w-s":[{"border-s":ei()}],"border-w-e":[{"border-e":ei()}],"border-w-t":[{"border-t":ei()}],"border-w-r":[{"border-r":ei()}],"border-w-b":[{"border-b":ei()}],"border-w-l":[{"border-l":ei()}],"divide-x":[{"divide-x":ei()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ei()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ed(),"hidden","none"]}],"divide-style":[{divide:[...ed(),"hidden","none"]}],"border-color":[{border:eo()}],"border-color-x":[{"border-x":eo()}],"border-color-y":[{"border-y":eo()}],"border-color-s":[{"border-s":eo()}],"border-color-e":[{"border-e":eo()}],"border-color-t":[{"border-t":eo()}],"border-color-r":[{"border-r":eo()}],"border-color-b":[{"border-b":eo()}],"border-color-l":[{"border-l":eo()}],"divide-color":[{divide:eo()}],"outline-style":[{outline:[...ed(),"none","hidden"]}],"outline-offset":[{"outline-offset":[N,D,K]}],"outline-w":[{outline:["",N,F,R]}],"outline-color":[{outline:eo()}],shadow:[{shadow:["","none",c,X,H]}],"shadow-color":[{shadow:eo()}],"inset-shadow":[{"inset-shadow":["none",m,X,H]}],"inset-shadow-color":[{"inset-shadow":eo()}],"ring-w":[{ring:ei()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:eo()}],"ring-offset-w":[{"ring-offset":[N,R]}],"ring-offset-color":[{"ring-offset":eo()}],"inset-ring-w":[{"inset-ring":ei()}],"inset-ring-color":[{"inset-ring":eo()}],"text-shadow":[{"text-shadow":["none",p,X,H]}],"text-shadow-color":[{"text-shadow":eo()}],opacity:[{opacity:[N,D,K]}],"mix-blend":[{"mix-blend":[...ec(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ec()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[N]}],"mask-image-linear-from-pos":[{"mask-linear-from":em()}],"mask-image-linear-to-pos":[{"mask-linear-to":em()}],"mask-image-linear-from-color":[{"mask-linear-from":eo()}],"mask-image-linear-to-color":[{"mask-linear-to":eo()}],"mask-image-t-from-pos":[{"mask-t-from":em()}],"mask-image-t-to-pos":[{"mask-t-to":em()}],"mask-image-t-from-color":[{"mask-t-from":eo()}],"mask-image-t-to-color":[{"mask-t-to":eo()}],"mask-image-r-from-pos":[{"mask-r-from":em()}],"mask-image-r-to-pos":[{"mask-r-to":em()}],"mask-image-r-from-color":[{"mask-r-from":eo()}],"mask-image-r-to-color":[{"mask-r-to":eo()}],"mask-image-b-from-pos":[{"mask-b-from":em()}],"mask-image-b-to-pos":[{"mask-b-to":em()}],"mask-image-b-from-color":[{"mask-b-from":eo()}],"mask-image-b-to-color":[{"mask-b-to":eo()}],"mask-image-l-from-pos":[{"mask-l-from":em()}],"mask-image-l-to-pos":[{"mask-l-to":em()}],"mask-image-l-from-color":[{"mask-l-from":eo()}],"mask-image-l-to-color":[{"mask-l-to":eo()}],"mask-image-x-from-pos":[{"mask-x-from":em()}],"mask-image-x-to-pos":[{"mask-x-to":em()}],"mask-image-x-from-color":[{"mask-x-from":eo()}],"mask-image-x-to-color":[{"mask-x-to":eo()}],"mask-image-y-from-pos":[{"mask-y-from":em()}],"mask-image-y-to-pos":[{"mask-y-to":em()}],"mask-image-y-from-color":[{"mask-y-from":eo()}],"mask-image-y-to-color":[{"mask-y-to":eo()}],"mask-image-radial":[{"mask-radial":[D,K]}],"mask-image-radial-from-pos":[{"mask-radial-from":em()}],"mask-image-radial-to-pos":[{"mask-radial-to":em()}],"mask-image-radial-from-color":[{"mask-radial-from":eo()}],"mask-image-radial-to-color":[{"mask-radial-to":eo()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":y()}],"mask-image-conic-pos":[{"mask-conic":[N]}],"mask-image-conic-from-pos":[{"mask-conic-from":em()}],"mask-image-conic-to-pos":[{"mask-conic-to":em()}],"mask-image-conic-from-color":[{"mask-conic-from":eo()}],"mask-image-conic-to-color":[{"mask-conic-to":eo()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:et()}],"mask-repeat":[{mask:el()}],"mask-size":[{mask:ea()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",D,K]}],filter:[{filter:["","none",D,K]}],blur:[{blur:ep()}],brightness:[{brightness:[N,D,K]}],contrast:[{contrast:[N,D,K]}],"drop-shadow":[{"drop-shadow":["","none",u,X,H]}],"drop-shadow-color":[{"drop-shadow":eo()}],grayscale:[{grayscale:["",N,D,K]}],"hue-rotate":[{"hue-rotate":[N,D,K]}],invert:[{invert:["",N,D,K]}],saturate:[{saturate:[N,D,K]}],sepia:[{sepia:["",N,D,K]}],"backdrop-filter":[{"backdrop-filter":["","none",D,K]}],"backdrop-blur":[{"backdrop-blur":ep()}],"backdrop-brightness":[{"backdrop-brightness":[N,D,K]}],"backdrop-contrast":[{"backdrop-contrast":[N,D,K]}],"backdrop-grayscale":[{"backdrop-grayscale":["",N,D,K]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[N,D,K]}],"backdrop-invert":[{"backdrop-invert":["",N,D,K]}],"backdrop-opacity":[{"backdrop-opacity":[N,D,K]}],"backdrop-saturate":[{"backdrop-saturate":[N,D,K]}],"backdrop-sepia":[{"backdrop-sepia":["",N,D,K]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":G()}],"border-spacing-x":[{"border-spacing-x":G()}],"border-spacing-y":[{"border-spacing-y":G()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",D,K]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[N,"initial",D,K]}],ease:[{ease:["linear","initial",h,D,K]}],delay:[{delay:[N,D,K]}],animate:[{animate:["none",x,D,K]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[f,D,K]}],"perspective-origin":[{"perspective-origin":v()}],rotate:[{rotate:eu()}],"rotate-x":[{"rotate-x":eu()}],"rotate-y":[{"rotate-y":eu()}],"rotate-z":[{"rotate-z":eu()}],scale:[{scale:eb()}],"scale-x":[{"scale-x":eb()}],"scale-y":[{"scale-y":eb()}],"scale-z":[{"scale-z":eb()}],"scale-3d":["scale-3d"],skew:[{skew:ef()}],"skew-x":[{"skew-x":ef()}],"skew-y":[{"skew-y":ef()}],transform:[{transform:[D,K,"","none","gpu","cpu"]}],"transform-origin":[{origin:v()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:eg()}],"translate-x":[{"translate-x":eg()}],"translate-y":[{"translate-y":eg()}],"translate-z":[{"translate-z":eg()}],"translate-none":["translate-none"],accent:[{accent:eo()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:eo()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",D,K]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":G()}],"scroll-mx":[{"scroll-mx":G()}],"scroll-my":[{"scroll-my":G()}],"scroll-ms":[{"scroll-ms":G()}],"scroll-me":[{"scroll-me":G()}],"scroll-mt":[{"scroll-mt":G()}],"scroll-mr":[{"scroll-mr":G()}],"scroll-mb":[{"scroll-mb":G()}],"scroll-ml":[{"scroll-ml":G()}],"scroll-p":[{"scroll-p":G()}],"scroll-px":[{"scroll-px":G()}],"scroll-py":[{"scroll-py":G()}],"scroll-ps":[{"scroll-ps":G()}],"scroll-pe":[{"scroll-pe":G()}],"scroll-pt":[{"scroll-pt":G()}],"scroll-pr":[{"scroll-pr":G()}],"scroll-pb":[{"scroll-pb":G()}],"scroll-pl":[{"scroll-pl":G()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",D,K]}],fill:[{fill:["none",...eo()]}],"stroke-w":[{stroke:[N,F,R,U]}],stroke:[{stroke:["none",...eo()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function ei(...e){return es(r(e))}function ed(e){if(!e)return null;let r=e.match(/^#\s+(.+)$/m);return r?r[1].trim():null}e.s(["cn",()=>ei,"extractH1Title",()=>ed],65458)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,12603,e=>{"use strict";var r=e.i(90022),t=e.i(31231),a=e.i(65458);let n=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)("div",{ref:n,className:(0,a.cn)("rounded-xl border border-gray-200 dark:border-gray-800 bg-card text-card-foreground shadow",e),...t}));n.displayName="Card";let o=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)("div",{ref:n,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",e),...t}));o.displayName="CardHeader";let s=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)("div",{ref:n,className:(0,a.cn)("font-semibold leading-none tracking-tight",e),...t}));s.displayName="CardTitle";let d=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)("div",{ref:n,className:(0,a.cn)("text-sm text-muted-foreground",e),...t}));d.displayName="CardDescription";let i=t.forwardRef(({className:e,...t},n)=>(0,r.jsx)("div",{ref:n,className:(0,a.cn)("p-6 pt-0",e),...t}));i.displayName="CardContent",t.forwardRef(({className:e,...t},n)=>(0,r.jsx)("div",{ref:n,className:(0,a.cn)("flex items-center p-6 pt-0",e),...t})).displayName="CardFooter",e.s(["Card",()=>n,"CardContent",()=>i,"CardDescription",()=>d,"CardHeader",()=>o,"CardTitle",()=>s])},70305,(e,r,t)=>{"use strict";var a=e.r(31231),n="function"==typeof Object.is?Object.is:function(e,r){return e===r&&(0!==e||1/e==1/r)||e!=e&&r!=r},o=a.useState,s=a.useEffect,d=a.useLayoutEffect,i=a.useDebugValue;function c(e){var r=e.getSnapshot;e=e.value;try{var t=r();return!n(e,t)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,r){return r()}:function(e,r){var t=r(),a=o({inst:{value:t,getSnapshot:r}}),n=a[0].inst,u=a[1];return d(function(){n.value=t,n.getSnapshot=r,c(n)&&u({inst:n})},[e,t,r]),s(function(){return c(n)&&u({inst:n}),e(function(){c(n)&&u({inst:n})})},[e]),i(t),t};t.useSyncExternalStore=void 0!==a.useSyncExternalStore?a.useSyncExternalStore:u},34960,(e,r,t)=>{"use strict";r.exports=e.r(70305)}]);
|