@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.
Files changed (386) hide show
  1. package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  2. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  3. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +2 -0
  4. package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
  5. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
  7. package/.next/standalone/packages/ui/.next/routes-manifest.json +12 -0
  8. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  10. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  18. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -18
  19. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
  20. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  21. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  22. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +6 -6
  24. package/.next/standalone/packages/ui/.next/server/app/api/context/route/app-paths-manifest.json +3 -0
  25. package/.next/standalone/packages/ui/.next/server/app/api/context/route/build-manifest.json +11 -0
  26. package/.next/standalone/packages/ui/.next/server/app/api/context/route/server-reference-manifest.json +4 -0
  27. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +8 -0
  28. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.map +5 -0
  29. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -0
  30. package/.next/standalone/packages/ui/.next/server/app/api/context/route_client-reference-manifest.js +2 -0
  31. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  32. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  33. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
  34. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  35. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  36. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
  37. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
  38. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  39. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
  40. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  41. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  42. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  43. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  44. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  45. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  46. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  47. package/.next/standalone/packages/ui/.next/server/app/context/page/app-paths-manifest.json +3 -0
  48. package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +18 -0
  49. package/.next/standalone/packages/ui/.next/server/app/context/page/next-font-manifest.json +6 -0
  50. package/.next/standalone/packages/ui/.next/server/app/context/page/react-loadable-manifest.json +1 -0
  51. package/.next/standalone/packages/ui/.next/server/app/context/page/server-reference-manifest.json +4 -0
  52. package/.next/standalone/packages/ui/.next/server/app/context/page.js +19 -0
  53. package/.next/standalone/packages/ui/.next/server/app/context/page.js.map +5 -0
  54. package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -0
  55. package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +2 -0
  56. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  57. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
  59. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
  61. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
  63. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
  64. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
  65. package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
  67. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +12 -12
  68. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +12 -12
  69. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
  70. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +3 -3
  71. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  72. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  73. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  74. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  76. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  78. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  79. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +2 -0
  80. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3559376c._.js +2 -2
  81. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +1 -1
  82. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
  83. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
  84. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +3 -0
  85. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
  86. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
  87. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_context_route_actions_dead6daa.js +3 -0
  88. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +3 -0
  89. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +3 -0
  90. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +7 -0
  91. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +7 -0
  92. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +3 -0
  93. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +1 -1
  94. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +1 -1
  95. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
  96. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +1 -1
  97. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
  98. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +3 -0
  99. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_959ad3d8._.js +4 -0
  100. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +3 -0
  101. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_497c8b73._.js → _b397e94a._.js} +2 -2
  102. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +3 -0
  103. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_context_page_actions_1a062d48.js +3 -0
  104. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +12 -0
  105. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
  106. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
  107. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  108. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  109. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  110. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  111. package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +1 -0
  112. package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
  113. package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +1 -0
  114. package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +5 -0
  115. package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +1 -0
  116. package/.next/{static/chunks/294dea6dbec43ca6.js → standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js} +1 -1
  117. package/.next/{static/chunks/cca4441cde342ae3.js → standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js} +1 -1
  118. package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +1 -0
  119. package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +10 -0
  120. package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
  121. package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
  122. package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
  123. package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +1 -0
  124. package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
  125. package/.next/standalone/packages/ui/dist/public/file.svg +1 -0
  126. package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +1 -0
  127. package/.next/standalone/packages/ui/dist/public/github-mark.svg +1 -0
  128. package/.next/standalone/packages/ui/dist/public/globe.svg +1 -0
  129. package/.next/standalone/packages/ui/dist/public/icon.svg +7 -0
  130. package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +17 -0
  131. package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +17 -0
  132. package/.next/standalone/packages/ui/dist/public/logo.svg +17 -0
  133. package/.next/standalone/packages/ui/dist/public/next.svg +1 -0
  134. package/.next/standalone/packages/ui/dist/public/vercel.svg +1 -0
  135. package/.next/standalone/packages/ui/dist/public/window.svg +1 -0
  136. package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +196 -0
  137. package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +75 -0
  138. package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +44 -0
  139. package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +175 -0
  140. package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +317 -0
  141. package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +261 -0
  142. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +380 -0
  143. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +230 -0
  144. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +285 -0
  145. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +358 -0
  146. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +303 -0
  147. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +368 -0
  148. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +327 -0
  149. package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +117 -0
  150. package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +73 -0
  151. package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +109 -0
  152. package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +107 -0
  153. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +244 -0
  154. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +429 -0
  155. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +302 -0
  156. package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +158 -0
  157. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +359 -0
  158. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +86 -0
  159. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +437 -0
  160. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +365 -0
  161. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +203 -0
  162. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +174 -0
  163. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +156 -0
  164. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +183 -0
  165. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +229 -0
  166. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +243 -0
  167. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +217 -0
  168. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +166 -0
  169. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +126 -0
  170. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +108 -0
  171. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +382 -0
  172. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +144 -0
  173. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +146 -0
  174. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +208 -0
  175. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +182 -0
  176. package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +314 -0
  177. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +113 -0
  178. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +237 -0
  179. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +149 -0
  180. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +175 -0
  181. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +254 -0
  182. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +376 -0
  183. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +240 -0
  184. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +175 -0
  185. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +374 -0
  186. package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +339 -0
  187. package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +128 -0
  188. package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +97 -0
  189. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +93 -0
  190. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +146 -0
  191. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +175 -0
  192. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +397 -0
  193. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +342 -0
  194. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +44 -0
  195. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +150 -0
  196. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +351 -0
  197. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +238 -0
  198. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +280 -0
  199. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +372 -0
  200. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +466 -0
  201. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +178 -0
  202. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +174 -0
  203. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +295 -0
  204. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +487 -0
  205. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +241 -0
  206. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +279 -0
  207. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +642 -0
  208. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +125 -0
  209. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +286 -0
  210. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +392 -0
  211. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +1002 -0
  212. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +411 -0
  213. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +812 -0
  214. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +504 -0
  215. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +724 -0
  216. package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +125 -0
  217. package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +299 -0
  218. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +174 -0
  219. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +265 -0
  220. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +36 -0
  221. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +243 -0
  222. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +82 -0
  223. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +338 -0
  224. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +354 -0
  225. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +189 -0
  226. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +119 -0
  227. package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +170 -0
  228. package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +158 -0
  229. package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +842 -0
  230. package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +358 -0
  231. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +444 -0
  232. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +357 -0
  233. package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +551 -0
  234. package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +372 -0
  235. package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +489 -0
  236. package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +285 -0
  237. package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +323 -0
  238. package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +136 -0
  239. package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +399 -0
  240. package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +301 -0
  241. package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +235 -0
  242. package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +303 -0
  243. package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +196 -0
  244. package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +388 -0
  245. package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +824 -0
  246. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +111 -0
  247. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +69 -0
  248. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +77 -0
  249. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +184 -0
  250. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +496 -0
  251. package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +490 -0
  252. package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +389 -0
  253. package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +920 -0
  254. package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +146 -0
  255. package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +607 -0
  256. package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +104 -0
  257. package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +124 -0
  258. package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +129 -0
  259. package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +244 -0
  260. package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +148 -0
  261. package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +54 -0
  262. package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +37 -0
  263. package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +60 -0
  264. package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +113 -0
  265. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +69 -0
  266. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +112 -0
  267. package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +229 -0
  268. package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +406 -0
  269. package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +168 -0
  270. package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +174 -0
  271. package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +212 -0
  272. package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +249 -0
  273. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +60 -0
  274. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +139 -0
  275. package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +722 -0
  276. package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +413 -0
  277. package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +255 -0
  278. package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +252 -0
  279. package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +253 -0
  280. package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +612 -0
  281. package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +794 -0
  282. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +834 -0
  283. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +255 -0
  284. package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +454 -0
  285. package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +172 -0
  286. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +152 -0
  287. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +95 -0
  288. package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +87 -0
  289. package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +230 -0
  290. package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +89 -0
  291. package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +89 -0
  292. package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +166 -0
  293. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +276 -0
  294. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +122 -0
  295. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +198 -0
  296. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +192 -0
  297. package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +171 -0
  298. package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +200 -0
  299. package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +317 -0
  300. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +276 -0
  301. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +241 -0
  302. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +139 -0
  303. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +328 -0
  304. package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +400 -0
  305. package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
  306. package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
  307. package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
  308. package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
  309. package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
  310. package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
  311. package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
  312. package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
  313. package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
  314. package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
  315. package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
  316. package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
  317. package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
  318. package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
  319. package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
  320. package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
  321. package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
  322. package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
  323. package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
  324. package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
  325. package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
  326. package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
  327. package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
  328. package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
  329. package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
  330. package/.next/standalone/packages/ui/package.json +2 -1
  331. package/.next/standalone/packages/ui/server.js +1 -1
  332. package/.next/standalone/packages/ui/src/app/api/context/route.ts +22 -0
  333. package/.next/standalone/packages/ui/src/app/context/context-client.tsx +371 -0
  334. package/.next/standalone/packages/ui/src/app/context/page.tsx +17 -0
  335. package/.next/standalone/packages/ui/src/app/globals.css +16 -16
  336. package/.next/standalone/packages/ui/src/app/layout.tsx +1 -7
  337. package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +291 -0
  338. package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
  339. package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +181 -134
  340. package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +20 -0
  341. package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +3 -2
  342. package/.next/standalone/packages/ui/src/components/ui/accordion.tsx +58 -0
  343. package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +172 -3
  344. package/.next/standalone/packages/ui/src/lib/specs/types.ts +44 -0
  345. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  346. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +11 -0
  347. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +1 -0
  348. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +1 -0
  349. package/.next/static/chunks/1eb8283995f370c6.js +1 -0
  350. package/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
  351. package/.next/static/chunks/37a1236ed50645a6.js +1 -0
  352. package/.next/static/chunks/9d84ba08a41145ec.js +5 -0
  353. package/.next/static/chunks/c4b1faff3361a749.js +1 -0
  354. package/.next/{standalone/packages/ui/.next/static/chunks/294dea6dbec43ca6.js → static/chunks/d7420d2a867e57b5.js} +1 -1
  355. package/.next/{standalone/packages/ui/.next/static/chunks/cca4441cde342ae3.js → static/chunks/dae403679aae65f4.js} +1 -1
  356. package/.next/static/chunks/efded9da04c960d8.js +1 -0
  357. package/.next/static/chunks/f382932f1a5d6359.js +10 -0
  358. package/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
  359. package/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
  360. package/package.json +3 -2
  361. package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
  362. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +0 -3
  363. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__73f60f12._.js +0 -7
  364. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a7ae8552._.js +0 -7
  365. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14118969._.js +0 -3
  366. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_4129cc0f._.js +0 -3
  367. package/.next/standalone/packages/ui/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
  368. package/.next/standalone/packages/ui/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
  369. package/.next/standalone/packages/ui/.next/static/chunks/a803d646487dfc2d.js +0 -3
  370. package/.next/standalone/packages/ui/.next/static/chunks/b6976cf6c48996e5.js +0 -1
  371. package/.next/standalone/packages/ui/.next/static/chunks/b845813463167db0.js +0 -5
  372. package/.next/standalone/packages/ui/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
  373. package/.next/standalone/packages/ui/.next/static/chunks/d784d84d5b880e48.js +0 -1
  374. package/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
  375. package/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
  376. package/.next/static/chunks/a803d646487dfc2d.js +0 -3
  377. package/.next/static/chunks/b6976cf6c48996e5.js +0 -1
  378. package/.next/static/chunks/b845813463167db0.js +0 -5
  379. package/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
  380. package/.next/static/chunks/d784d84d5b880e48.js +0 -1
  381. /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_buildManifest.js +0 -0
  382. /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_clientMiddlewareManifest.json +0 -0
  383. /package/.next/standalone/packages/ui/.next/static/{RV93_WHoymRJ5886d_ry8 → -Mn9iD4O5f_khGd1P3kmB}/_ssgManifest.js +0 -0
  384. /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
  385. /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
  386. /package/.next/{static/RV93_WHoymRJ5886d_ry8 → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
@@ -0,0 +1,5 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,230827,(e,t,r)=>{t.exports=e.r(301698)},300329,e=>{"use strict";let t=(0,e.i(122436).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],300329)},686266,e=>{"use strict";let t=(0,e.i(122436).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["Check",()=>t],686266)},21079,e=>{"use strict";var t=e.i(890022),r=e.i(431231),n=e.i(632137);let o=r.forwardRef(({className:e,type:r,...o},a)=>(0,t.jsx)("input",{type:r,className:(0,n.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:a,...o}));o.displayName="Input",e.s(["Input",()=>o])},323490,e=>{"use strict";var t=e.i(890022),r=e.i(294237),n=e.i(632137);let o=(0,r.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function a({className:e,variant:r,...a}){return(0,t.jsx)("div",{className:(0,n.cn)(o({variant:r}),e),...a})}e.s(["Badge",()=>a])},94176,e=>{"use strict";let t=(0,e.i(122436).default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);e.s(["AlertCircle",()=>t],94176)},40843,e=>{"use strict";let t=(0,e.i(122436).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock",()=>t],40843)},122436,e=>{"use strict";var t=e.i(431231);let r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)},n=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim();var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=(0,t.forwardRef)(({color:e="currentColor",size:r=24,strokeWidth:a=2,absoluteStrokeWidth:i,className:l="",children:s,iconNode:u,...c},d)=>(0,t.createElement)("svg",{ref:d,...o,width:r,height:r,stroke:e,strokeWidth:i?24*Number(a)/Number(r):a,className:n("lucide",l),...!s&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0})(c)&&{"aria-hidden":"true"},...c},[...u.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(s)?s:[s]])),i=(e,o)=>{let i=(0,t.forwardRef)(({className:i,...l},s)=>(0,t.createElement)(a,{ref:s,iconNode:o,className:n(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,i),...l}));return i.displayName=r(e),i};e.s(["default",()=>i],122436)},614433,430406,e=>{"use strict";var t=e.i(431231);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function n(...e){return t=>{let n=!1,o=e.map(e=>{let o=r(e,t);return n||"function"!=typeof o||(n=!0),o});if(n)return()=>{for(let t=0;t<o.length;t++){let n=o[t];"function"==typeof n?n():r(e[t],null)}}}}function o(...e){return t.useCallback(n(...e),e)}e.s(["composeRefs",()=>n,"useComposedRefs",()=>o],430406);var a=e.i(890022),i=Symbol.for("react.lazy"),l=t[" use ".trim().toString()];function s(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===i&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}function u(e){var r;let o,i=(r=e,(o=t.forwardRef((e,r)=>{let{children:o,...a}=e;if(s(o)&&"function"==typeof l&&(o=l(o._payload)),t.isValidElement(o)){var i;let e,l,s=(i=o,(l=(e=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.ref:(l=(e=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.props.ref:i.props.ref||i.ref),u=function(e,t){let r={...t};for(let n in t){let o=e[n],a=t[n];/^on[A-Z]/.test(n)?o&&a?r[n]=(...e)=>{let t=a(...e);return o(...e),t}:o&&(r[n]=o):"style"===n?r[n]={...o,...a}:"className"===n&&(r[n]=[o,a].filter(Boolean).join(" "))}return{...e,...r}}(a,o.props);return o.type!==t.Fragment&&(u.ref=r?n(r,s):s),t.cloneElement(o,u)}return t.Children.count(o)>1?t.Children.only(null):null})).displayName=`${r}.SlotClone`,o),u=t.forwardRef((e,r)=>{let{children:n,...o}=e;s(n)&&"function"==typeof l&&(n=l(n._payload));let u=t.Children.toArray(n),c=u.find(f);if(c){let e=c.props.children,n=u.map(r=>r!==c?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,a.jsx)(i,{...o,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,a.jsx)(i,{...o,ref:r,children:n})});return u.displayName=`${e}.Slot`,u}var c=u("Slot"),d=Symbol("radix.slottable");function f(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===d}e.s(["Slot",()=>c,"createSlot",()=>u],614433)},294237,e=>{"use strict";var t=e.i(7284);let r=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,n=t.clsx;e.s(["cva",0,(e,t)=>o=>{var a;if((null==t?void 0:t.variants)==null)return n(e,null==o?void 0:o.class,null==o?void 0:o.className);let{variants:i,defaultVariants:l}=t,s=Object.keys(i).map(e=>{let t=null==o?void 0:o[e],n=null==l?void 0:l[e];if(null===t)return null;let a=r(t)||r(n);return i[e][a]}),u=o&&Object.entries(o).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return n(e,s,null==t||null==(a=t.compoundVariants)?void 0:a.reduce((e,t)=>{let{class:r,className:n,...o}=t;return Object.entries(o).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...l,...u}[t]):({...l,...u})[t]===r})?[...e,r,n]:e},[]),null==o?void 0:o.class,null==o?void 0:o.className)}])},235893,e=>{"use strict";var t=e.i(890022),r=e.i(431231),n=e.i(614433),o=e.i(294237),a=e.i(632137);let i=(0,o.cva)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),l=r.forwardRef(({className:e,variant:r,size:o,asChild:l=!1,...s},u)=>{let c=l?n.Slot:"button";return(0,t.jsx)(c,{className:(0,a.cn)(i({variant:r,size:o,className:e})),ref:u,...s})});l.displayName="Button",e.s(["Button",()=>l])},826985,e=>{"use strict";var t=e.i(431231),r=e.i(122925),n=e.i(890022),o=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),a=t.forwardRef((e,t)=>(0,n.jsx)(r.Primitive.span,{...e,ref:t,style:{...o,...e.style}}));a.displayName="VisuallyHidden",e.s(["Root",()=>a,"VISUALLY_HIDDEN_STYLES",()=>o])},20315,e=>{"use strict";let t=(0,e.i(122436).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],20315)},75364,e=>{"use strict";let t=(0,e.i(122436).default)("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["PlayCircle",()=>t],75364)},196812,e=>{"use strict";let t=(0,e.i(122436).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",()=>t],196812)},56863,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},965683,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return s},searchParamsToUrlQuery:function(){return a},urlQueryToSearchParams:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function a(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function l(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,i(e));else t.set(r,i(n));return t}function s(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},700678,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return l},formatWithValidation:function(){return u},urlObjectKeys:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(744066)._(e.r(965683)),i=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:r}=e,n=e.protocol||"",o=e.pathname||"",l=e.hash||"",s=e.query||"",u=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?u=t+e.host:r&&(u=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(u+=":"+e.port)),s&&"object"==typeof s&&(s=String(a.urlQueryToSearchParams(s)));let c=e.search||s&&`?${s}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||i.test(n))&&!1!==u?(u="//"+(u||""),o&&"/"!==o[0]&&(o="/"+o)):u||(u=""),l&&"#"!==l[0]&&(l="#"+l),c&&"?"!==c[0]&&(c="?"+c),o=o.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${u}${o}${c}${l}`}let s=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function u(e){return l(e)}},266500,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=e.r(431231);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=a(e,n)),t&&(o.current=a(t,n))},[e,t])}function a(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},789370,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return h},MiddlewareNotFoundError:function(){return w},MissingStaticPage:function(){return x},NormalizeError:function(){return v},PageNotFoundError:function(){return b},SP:function(){return g},ST:function(){return y},WEB_VITALS:function(){return a},execOnce:function(){return i},getDisplayName:function(){return d},getLocationOrigin:function(){return u},getURL:function(){return c},isAbsoluteUrl:function(){return s},isResSent:function(){return f},loadGetInitialProps:function(){return m},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return C}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let l=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,s=e=>l.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=u();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function p(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function m(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await m(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let g="undefined"!=typeof performance,y=g&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class v extends Error{}class b extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class x extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class w extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function C(e){return JSON.stringify({message:e.message,stack:e.stack})}},608672,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=e.r(789370),o=e.r(772125);function a(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},937465,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},987985,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return h},useLinkStatus:function(){return b}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(744066),i=e.r(890022),l=a._(e.r(431231)),s=e.r(700678),u=e.r(415698),c=e.r(266500),d=e.r(789370),f=e.r(912992);e.r(56863);let p=e.r(617945),m=e.r(608672),g=e.r(754772);function y(e){return"string"==typeof e?e:(0,s.formatUrl)(e)}function h(t){var r;let n,o,a,[s,h]=(0,l.useOptimistic)(p.IDLE_LINK_STATUS),b=(0,l.useRef)(null),{href:x,as:w,children:C,prefetch:k=null,passHref:E,replace:N,shallow:j,scroll:T,onClick:P,onMouseEnter:R,onTouchStart:O,legacyBehavior:S=!1,onNavigate:_,ref:M,unstable_dynamicOnHover:D,...A}=t;n=C,S&&("string"==typeof n||"number"==typeof n)&&(n=(0,i.jsx)("a",{children:n}));let I=l.default.useContext(u.AppRouterContext),L=!1!==k,F=!1!==k?null===(r=k)||"auto"===r?g.FetchStrategy.PPR:g.FetchStrategy.Full:g.FetchStrategy.PPR,{href:$,as:U}=l.default.useMemo(()=>{let e=y(x);return{href:e,as:w?y(w):e}},[x,w]);if(S){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});o=l.default.Children.only(n)}let H=S?o&&"object"==typeof o&&o.ref:M,z=l.default.useCallback(e=>(null!==I&&(b.current=(0,p.mountLinkInstance)(e,$,I,F,L,h)),()=>{b.current&&((0,p.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,p.unmountPrefetchableInstance)(e)}),[L,$,I,F,h]),B={ref:(0,c.useMergedRef)(z,H),onClick(t){S||"function"!=typeof P||P(t),S&&o.props&&"function"==typeof o.props.onClick&&o.props.onClick(t),!I||t.defaultPrevented||function(t,r,n,o,a,i,s){if("undefined"!=typeof window){let u,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((u=t.currentTarget.getAttribute("target"))&&"_self"!==u||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){a&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),s){let e=!1;if(s({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(986026);l.default.startTransition(()=>{d(n||r,a?"replace":"push",i??!0,o.current)})}}(t,$,U,b,N,T,_)},onMouseEnter(e){S||"function"!=typeof R||R(e),S&&o.props&&"function"==typeof o.props.onMouseEnter&&o.props.onMouseEnter(e),I&&L&&(0,p.onNavigationIntent)(e.currentTarget,!0===D)},onTouchStart:function(e){S||"function"!=typeof O||O(e),S&&o.props&&"function"==typeof o.props.onTouchStart&&o.props.onTouchStart(e),I&&L&&(0,p.onNavigationIntent)(e.currentTarget,!0===D)}};return(0,d.isAbsoluteUrl)(U)?B.href=U:S&&!E&&("a"!==o.type||"href"in o.props)||(B.href=(0,f.addBasePath)(U)),a=S?l.default.cloneElement(o,B):(0,i.jsx)("a",{...A,...B,children:n}),(0,i.jsx)(v.Provider,{value:s,children:a})}e.r(937465);let v=(0,l.createContext)(p.IDLE_LINK_STATUS),b=()=>(0,l.useContext)(v);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},168497,490225,606751,597705,e=>{"use strict";var t=e.i(890022),r=e.i(40843),n=e.i(75364),o=e.i(196812),a=e.i(122436);let i=(0,a.default)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);e.s(["Archive",()=>i],490225);var l=e.i(323490),s=e.i(632137);let u={planned:{icon:r.Clock,label:"Planned",className:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},"in-progress":{icon:n.PlayCircle,label:"In Progress",className:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400"},complete:{icon:o.CheckCircle2,label:"Complete",className:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},archived:{icon:i,label:"Archived",className:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"}};function c({status:e,className:r,iconOnly:n=!1}){let o=u[e]||u.planned,a=o.icon;return(0,t.jsxs)(l.Badge,{className:(0,s.cn)("flex items-center w-fit",!n&&"gap-1.5",o.className,r),children:[(0,t.jsx)(a,{className:"h-3.5 w-3.5"}),!n&&o.label]})}function d(e){return(u[e]||u.planned).label}e.s(["StatusBadge",()=>c,"getStatusLabel",()=>d],168497);var f=e.i(94176);let p=(0,a.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);e.s(["ArrowUp",()=>p],606751);let m=(0,a.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]),g=(0,a.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),y={critical:{icon:f.AlertCircle,label:"Critical",className:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},high:{icon:p,label:"High",className:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400"},medium:{icon:m,label:"Medium",className:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},low:{icon:g,label:"Low",className:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"}};function h({priority:e,className:r,iconOnly:n=!1}){let o=y[e]||y.medium,a=o.icon;return(0,t.jsxs)(l.Badge,{className:(0,s.cn)("flex items-center w-fit",!n&&"gap-1.5",o.className,r),children:[(0,t.jsx)(a,{className:"h-3.5 w-3.5"}),!n&&o.label]})}function v(e){return(y[e]||y.medium).label}e.s(["PriorityBadge",()=>h,"getPriorityLabel",()=>v],597705)},81795,e=>{"use strict";var t=e.i(431231),r=(e,t,r,n,o,a,i,l)=>{let s=document.documentElement,u=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&a?o.map(e=>a[e]||e):o;r?(s.classList.remove(...n),s.classList.add(a&&a[t]?a[t]:t)):s.setAttribute(e,t)}),r=t,l&&u.includes(r)&&(s.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}},n=["light","dark"],o="(prefers-color-scheme: dark)",a="undefined"==typeof window,i=t.createContext(void 0),l={setTheme:e=>{},themes:[]},s=()=>{var e;return null!=(e=t.useContext(i))?e:l},u=e=>t.useContext(i)?t.createElement(t.Fragment,null,e.children):t.createElement(d,{...e}),c=["light","dark"],d=({forcedTheme:e,disableTransitionOnChange:r=!1,enableSystem:a=!0,enableColorScheme:l=!0,storageKey:s="theme",themes:u=c,defaultTheme:d=a?"system":"light",attribute:y="data-theme",value:h,children:v,nonce:b,scriptProps:x})=>{let[w,C]=t.useState(()=>p(s,d)),[k,E]=t.useState(()=>"system"===w?g():w),N=h?Object.values(h):u,j=t.useCallback(e=>{let t=e;if(!t)return;"system"===e&&a&&(t=g());let o=h?h[t]:t,i=r?m(b):null,s=document.documentElement,u=e=>{"class"===e?(s.classList.remove(...N),o&&s.classList.add(o)):e.startsWith("data-")&&(o?s.setAttribute(e,o):s.removeAttribute(e))};if(Array.isArray(y)?y.forEach(u):u(y),l){let e=n.includes(d)?d:null,r=n.includes(t)?t:e;s.style.colorScheme=r}null==i||i()},[b]),T=t.useCallback(e=>{let t="function"==typeof e?e(w):e;C(t);try{localStorage.setItem(s,t)}catch(e){}},[w]),P=t.useCallback(t=>{E(g(t)),"system"===w&&a&&!e&&j("system")},[w,e]);t.useEffect(()=>{let e=window.matchMedia(o);return e.addListener(P),P(e),()=>e.removeListener(P)},[P]),t.useEffect(()=>{let e=e=>{e.key===s&&(e.newValue?C(e.newValue):T(d))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[T]),t.useEffect(()=>{j(null!=e?e:w)},[e,w]);let R=t.useMemo(()=>({theme:w,setTheme:T,forcedTheme:e,resolvedTheme:"system"===w?k:w,themes:a?[...u,"system"]:u,systemTheme:a?k:void 0}),[w,T,e,k,a,u]);return t.createElement(i.Provider,{value:R},t.createElement(f,{forcedTheme:e,storageKey:s,attribute:y,enableSystem:a,enableColorScheme:l,defaultTheme:d,value:h,themes:u,nonce:b,scriptProps:x}),v)},f=t.memo(({forcedTheme:e,storageKey:n,attribute:o,enableSystem:a,enableColorScheme:i,defaultTheme:l,value:s,themes:u,nonce:c,scriptProps:d})=>{let f=JSON.stringify([o,n,l,e,u,s,a,i]).slice(1,-1);return t.createElement("script",{...d,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?c:"",dangerouslySetInnerHTML:{__html:`(${r.toString()})(${f})`}})}),p=(e,t)=>{let r;if(!a){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},m=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},g=e=>(e||(e=window.matchMedia(o)),e.matches?"dark":"light");e.s(["ThemeProvider",()=>u,"useTheme",()=>s])},439779,739065,e=>{"use strict";var t=e.i(890022),r=e.i(431231),n=e.i(291967),o=e.i(430406),a=e.i(79014),i=e.i(315599),l=e.i(393136),s=e.i(255235),u=e.i(31007),c=e.i(214260),d=e.i(111052),f=e.i(122925),p=e.i(254440),m=e.i(97496),g=e.i(73772),y=e.i(665489),h="Dialog",[v,b]=(0,a.createContextScope)(h),[x,w]=v(h),C=e=>{let{__scopeDialog:n,children:o,open:a,defaultOpen:s,onOpenChange:u,modal:c=!0}=e,d=r.useRef(null),f=r.useRef(null),[p,m]=(0,l.useControllableState)({prop:a,defaultProp:s??!1,onChange:u,caller:h});return(0,t.jsx)(x,{scope:n,triggerRef:d,contentRef:f,contentId:(0,i.useId)(),titleId:(0,i.useId)(),descriptionId:(0,i.useId)(),open:p,onOpenChange:m,onOpenToggle:r.useCallback(()=>m(e=>!e),[m]),modal:c,children:o})};C.displayName=h;var k="DialogTrigger",E=r.forwardRef((e,r)=>{let{__scopeDialog:a,...i}=e,l=w(k,a),s=(0,o.useComposedRefs)(r,l.triggerRef);return(0,t.jsx)(f.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":l.open,"aria-controls":l.contentId,"data-state":W(l.open),...i,ref:s,onClick:(0,n.composeEventHandlers)(e.onClick,l.onOpenToggle)})});E.displayName=k;var N="DialogPortal",[j,T]=v(N,{forceMount:void 0}),P=e=>{let{__scopeDialog:n,forceMount:o,children:a,container:i}=e,l=w(N,n);return(0,t.jsx)(j,{scope:n,forceMount:o,children:r.Children.map(a,e=>(0,t.jsx)(d.Presence,{present:o||l.open,children:(0,t.jsx)(c.Portal,{asChild:!0,container:i,children:e})}))})};P.displayName=N;var R="DialogOverlay",O=r.forwardRef((e,r)=>{let n=T(R,e.__scopeDialog),{forceMount:o=n.forceMount,...a}=e,i=w(R,e.__scopeDialog);return i.modal?(0,t.jsx)(d.Presence,{present:o||i.open,children:(0,t.jsx)(_,{...a,ref:r})}):null});O.displayName=R;var S=(0,y.createSlot)("DialogOverlay.RemoveScroll"),_=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,a=w(R,n);return(0,t.jsx)(m.RemoveScroll,{as:S,allowPinchZoom:!0,shards:[a.contentRef],children:(0,t.jsx)(f.Primitive.div,{"data-state":W(a.open),...o,ref:r,style:{pointerEvents:"auto",...o.style}})})}),M="DialogContent",D=r.forwardRef((e,r)=>{let n=T(M,e.__scopeDialog),{forceMount:o=n.forceMount,...a}=e,i=w(M,e.__scopeDialog);return(0,t.jsx)(d.Presence,{present:o||i.open,children:i.modal?(0,t.jsx)(A,{...a,ref:r}):(0,t.jsx)(I,{...a,ref:r})})});D.displayName=M;var A=r.forwardRef((e,a)=>{let i=w(M,e.__scopeDialog),l=r.useRef(null),s=(0,o.useComposedRefs)(a,i.contentRef,l);return r.useEffect(()=>{let e=l.current;if(e)return(0,g.hideOthers)(e)},[]),(0,t.jsx)(L,{...e,ref:s,trapFocus:i.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,n.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),i.triggerRef.current?.focus()}),onPointerDownOutside:(0,n.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;(2===t.button||r)&&e.preventDefault()}),onFocusOutside:(0,n.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault())})}),I=r.forwardRef((e,n)=>{let o=w(M,e.__scopeDialog),a=r.useRef(!1),i=r.useRef(!1);return(0,t.jsx)(L,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(a.current||o.triggerRef.current?.focus(),t.preventDefault()),a.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(a.current=!0,"pointerdown"===t.detail.originalEvent.type&&(i.current=!0));let r=t.target;o.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),L=r.forwardRef((e,n)=>{let{__scopeDialog:a,trapFocus:i,onOpenAutoFocus:l,onCloseAutoFocus:c,...d}=e,f=w(M,a),m=r.useRef(null),g=(0,o.useComposedRefs)(n,m);return(0,p.useFocusGuards)(),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.FocusScope,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:l,onUnmountAutoFocus:c,children:(0,t.jsx)(s.DismissableLayer,{role:"dialog",id:f.contentId,"aria-describedby":f.descriptionId,"aria-labelledby":f.titleId,"data-state":W(f.open),...d,ref:g,onDismiss:()=>f.onOpenChange(!1)})}),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(q,{titleId:f.titleId}),(0,t.jsx)(Z,{contentRef:m,descriptionId:f.descriptionId})]})]})}),F="DialogTitle",$=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,a=w(F,n);return(0,t.jsx)(f.Primitive.h2,{id:a.titleId,...o,ref:r})});$.displayName=F;var U="DialogDescription",H=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,a=w(U,n);return(0,t.jsx)(f.Primitive.p,{id:a.descriptionId,...o,ref:r})});H.displayName=U;var z="DialogClose",B=r.forwardRef((e,r)=>{let{__scopeDialog:o,...a}=e,i=w(z,o);return(0,t.jsx)(f.Primitive.button,{type:"button",...a,ref:r,onClick:(0,n.composeEventHandlers)(e.onClick,()=>i.onOpenChange(!1))})});function W(e){return e?"open":"closed"}B.displayName=z;var V="DialogTitleWarning",[K,X]=(0,a.createContext)(V,{contentName:M,titleName:F,docsSlug:"dialog"}),q=({titleId:e})=>{let t=X(V),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
2
+
3
+ If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
4
+
5
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return r.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Z=({contentRef:e,descriptionId:t})=>{let n=X("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;return r.useEffect(()=>{let r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null};e.s(["Close",()=>B,"Content",()=>D,"Description",()=>H,"Overlay",()=>O,"Portal",()=>P,"Root",()=>C,"Title",()=>$,"Trigger",()=>E],739065);var Y=e.i(644021),J=e.i(632137);let Q=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(O,{ref:n,className:(0,J.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...r}));Q.displayName=O.displayName;let G=r.forwardRef(({className:e,children:r,...n},o)=>(0,t.jsxs)(P,{children:[(0,t.jsx)(Q,{}),(0,t.jsxs)(D,{ref:o,className:(0,J.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...n,children:[r,(0,t.jsxs)(B,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,t.jsx)(Y.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));G.displayName=D.displayName;let ee=({className:e,...r})=>(0,t.jsx)("div",{className:(0,J.cn)("flex flex-col space-y-1.5 text-center sm:text-left",e),...r});ee.displayName="DialogHeader";let et=({className:e,...r})=>(0,t.jsx)("div",{className:(0,J.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...r});et.displayName="DialogFooter";let er=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)($,{ref:n,className:(0,J.cn)("text-lg font-semibold leading-none tracking-tight",e),...r}));er.displayName=$.displayName;let en=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(H,{ref:n,className:(0,J.cn)("text-sm text-muted-foreground",e),...r}));en.displayName=H.displayName,e.s(["Dialog",()=>C,"DialogContent",()=>G,"DialogDescription",()=>en,"DialogFooter",()=>et,"DialogHeader",()=>ee,"DialogTitle",()=>er],439779)},497332,e=>{"use strict";let t=(0,e.i(122436).default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);e.s(["Home",()=>t],497332)},644021,e=>{"use strict";let t=(0,e.i(122436).default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",()=>t],644021)},111052,e=>{"use strict";var t=e.i(431231),r=e.i(430406),n=e.i(943988),o=e=>{var o;let i,l,{present:s,children:u}=e,c=function(e){var r,o;let[i,l]=t.useState(),s=t.useRef(null),u=t.useRef(e),c=t.useRef("none"),[d,f]=(r=e?"mounted":"unmounted",o={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},t.useReducer((e,t)=>o[e][t]??e,r));return t.useEffect(()=>{let e=a(s.current);c.current="mounted"===d?e:"none"},[d]),(0,n.useLayoutEffect)(()=>{let t=s.current,r=u.current;if(r!==e){let n=c.current,o=a(t);e?f("MOUNT"):"none"===o||t?.display==="none"?f("UNMOUNT"):r&&n!==o?f("ANIMATION_OUT"):f("UNMOUNT"),u.current=e}},[e,f]),(0,n.useLayoutEffect)(()=>{if(i){let e,t=i.ownerDocument.defaultView??window,r=r=>{let n=a(s.current).includes(CSS.escape(r.animationName));if(r.target===i&&n&&(f("ANIMATION_END"),!u.current)){let r=i.style.animationFillMode;i.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===i.style.animationFillMode&&(i.style.animationFillMode=r)})}},n=e=>{e.target===i&&(c.current=a(s.current))};return i.addEventListener("animationstart",n),i.addEventListener("animationcancel",r),i.addEventListener("animationend",r),()=>{t.clearTimeout(e),i.removeEventListener("animationstart",n),i.removeEventListener("animationcancel",r),i.removeEventListener("animationend",r)}}f("ANIMATION_END")},[i,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:t.useCallback(e=>{s.current=e?getComputedStyle(e):null,l(e)},[])}}(s),d="function"==typeof u?u({present:c.isPresent}):t.Children.only(u),f=(0,r.useComposedRefs)(c.ref,(o=d,(l=(i=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in i&&i.isReactWarning)?o.ref:(l=(i=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in i&&i.isReactWarning)?o.props.ref:o.props.ref||o.ref));return"function"==typeof u||c.isPresent?t.cloneElement(d,{ref:f}):null};function a(e){return e?.animationName||"none"}o.displayName="Presence",e.s(["Presence",()=>o])},308402,e=>{"use strict";var t=e.i(890022),r=e.i(431231),n=e.i(291967),o=e.i(430406),a=e.i(79014),i=e.i(255235),l=e.i(315599),s=e.i(306839),u=e.i(214260),c=e.i(111052),d=e.i(122925),f=e.i(665489),p=e.i(393136),m=e.i(826985),[g,y]=(0,a.createContextScope)("Tooltip",[s.createPopperScope]),h=(0,s.createPopperScope)(),v="TooltipProvider",b="tooltip.open",[x,w]=g(v),C=e=>{let{__scopeTooltip:n,delayDuration:o=700,skipDelayDuration:a=300,disableHoverableContent:i=!1,children:l}=e,s=r.useRef(!0),u=r.useRef(!1),c=r.useRef(0);return r.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,t.jsx)(x,{scope:n,isOpenDelayedRef:s,delayDuration:o,onOpen:r.useCallback(()=>{window.clearTimeout(c.current),s.current=!1},[]),onClose:r.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.current=!0,a)},[a]),isPointerInTransitRef:u,onPointerInTransitChange:r.useCallback(e=>{u.current=e},[]),disableHoverableContent:i,children:l})};C.displayName=v;var k="Tooltip",[E,N]=g(k),j=e=>{let{__scopeTooltip:n,children:o,open:a,defaultOpen:i,onOpenChange:u,disableHoverableContent:c,delayDuration:d}=e,f=w(k,e.__scopeTooltip),m=h(n),[g,y]=r.useState(null),v=(0,l.useId)(),x=r.useRef(0),C=c??f.disableHoverableContent,N=d??f.delayDuration,j=r.useRef(!1),[T,P]=(0,p.useControllableState)({prop:a,defaultProp:i??!1,onChange:e=>{e?(f.onOpen(),document.dispatchEvent(new CustomEvent(b))):f.onClose(),u?.(e)},caller:k}),R=r.useMemo(()=>T?j.current?"delayed-open":"instant-open":"closed",[T]),O=r.useCallback(()=>{window.clearTimeout(x.current),x.current=0,j.current=!1,P(!0)},[P]),S=r.useCallback(()=>{window.clearTimeout(x.current),x.current=0,P(!1)},[P]),_=r.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{j.current=!0,P(!0),x.current=0},N)},[N,P]);return r.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),(0,t.jsx)(s.Root,{...m,children:(0,t.jsx)(E,{scope:n,contentId:v,open:T,stateAttribute:R,trigger:g,onTriggerChange:y,onTriggerEnter:r.useCallback(()=>{f.isOpenDelayedRef.current?_():O()},[f.isOpenDelayedRef,_,O]),onTriggerLeave:r.useCallback(()=>{C?S():(window.clearTimeout(x.current),x.current=0)},[S,C]),onOpen:O,onClose:S,disableHoverableContent:C,children:o})})};j.displayName=k;var T="TooltipTrigger",P=r.forwardRef((e,a)=>{let{__scopeTooltip:i,...l}=e,u=N(T,i),c=w(T,i),f=h(i),p=r.useRef(null),m=(0,o.useComposedRefs)(a,p,u.onTriggerChange),g=r.useRef(!1),y=r.useRef(!1),v=r.useCallback(()=>g.current=!1,[]);return r.useEffect(()=>()=>document.removeEventListener("pointerup",v),[v]),(0,t.jsx)(s.Anchor,{asChild:!0,...f,children:(0,t.jsx)(d.Primitive.button,{"aria-describedby":u.open?u.contentId:void 0,"data-state":u.stateAttribute,...l,ref:m,onPointerMove:(0,n.composeEventHandlers)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(y.current||c.isPointerInTransitRef.current||(u.onTriggerEnter(),y.current=!0))}),onPointerLeave:(0,n.composeEventHandlers)(e.onPointerLeave,()=>{u.onTriggerLeave(),y.current=!1}),onPointerDown:(0,n.composeEventHandlers)(e.onPointerDown,()=>{u.open&&u.onClose(),g.current=!0,document.addEventListener("pointerup",v,{once:!0})}),onFocus:(0,n.composeEventHandlers)(e.onFocus,()=>{g.current||u.onOpen()}),onBlur:(0,n.composeEventHandlers)(e.onBlur,u.onClose),onClick:(0,n.composeEventHandlers)(e.onClick,u.onClose)})})});P.displayName=T;var R="TooltipPortal",[O,S]=g(R,{forceMount:void 0}),_=e=>{let{__scopeTooltip:r,forceMount:n,children:o,container:a}=e,i=N(R,r);return(0,t.jsx)(O,{scope:r,forceMount:n,children:(0,t.jsx)(c.Presence,{present:n||i.open,children:(0,t.jsx)(u.Portal,{asChild:!0,container:a,children:o})})})};_.displayName=R;var M="TooltipContent",D=r.forwardRef((e,r)=>{let n=S(M,e.__scopeTooltip),{forceMount:o=n.forceMount,side:a="top",...i}=e,l=N(M,e.__scopeTooltip);return(0,t.jsx)(c.Presence,{present:o||l.open,children:l.disableHoverableContent?(0,t.jsx)($,{side:a,...i,ref:r}):(0,t.jsx)(A,{side:a,...i,ref:r})})}),A=r.forwardRef((e,n)=>{let a=N(M,e.__scopeTooltip),i=w(M,e.__scopeTooltip),l=r.useRef(null),s=(0,o.useComposedRefs)(n,l),[u,c]=r.useState(null),{trigger:d,onClose:f}=a,p=l.current,{onPointerInTransitChange:m}=i,g=r.useCallback(()=>{c(null),m(!1)},[m]),y=r.useCallback((e,t)=>{let r,n=e.currentTarget,o={x:e.clientX,y:e.clientY},a=function(e,t){let r=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(r,n,o,a)){case a:return"left";case o:return"right";case r:return"top";case n:return"bottom";default:throw Error("unreachable")}}(o,n.getBoundingClientRect());c(((r=[...function(e,t,r=5){let n=[];switch(t){case"top":n.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":n.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":n.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":n.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r})}return n}(o,a),...function(e){let{top:t,right:r,bottom:n,left:o}=e;return[{x:o,y:t},{x:r,y:t},{x:r,y:n},{x:o,y:n}]}(t.getBoundingClientRect())].slice()).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let r=0;r<e.length;r++){let n=e[r];for(;t.length>=2;){let e=t[t.length-1],r=t[t.length-2];if((e.x-r.x)*(n.y-r.y)>=(e.y-r.y)*(n.x-r.x))t.pop();else break}t.push(n)}t.pop();let r=[];for(let t=e.length-1;t>=0;t--){let n=e[t];for(;r.length>=2;){let e=r[r.length-1],t=r[r.length-2];if((e.x-t.x)*(n.y-t.y)>=(e.y-t.y)*(n.x-t.x))r.pop();else break}r.push(n)}return(r.pop(),1===t.length&&1===r.length&&t[0].x===r[0].x&&t[0].y===r[0].y)?t:t.concat(r)}(r))),m(!0)},[m]);return r.useEffect(()=>()=>g(),[g]),r.useEffect(()=>{if(d&&p){let e=e=>y(e,p),t=e=>y(e,d);return d.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{d.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}},[d,p,y,g]),r.useEffect(()=>{if(u){let e=e=>{let t=e.target,r={x:e.clientX,y:e.clientY},n=d?.contains(t)||p?.contains(t),o=!function(e,t){let{x:r,y:n}=e,o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let i=t[e],l=t[a],s=i.x,u=i.y,c=l.x,d=l.y;u>n!=d>n&&r<(c-s)*(n-u)/(d-u)+s&&(o=!o)}return o}(r,u);n?g():o&&(g(),f())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[d,p,u,f,g]),(0,t.jsx)($,{...e,ref:s})}),[I,L]=g(k,{isInside:!1}),F=(0,f.createSlottable)("TooltipContent"),$=r.forwardRef((e,n)=>{let{__scopeTooltip:o,children:a,"aria-label":l,onEscapeKeyDown:u,onPointerDownOutside:c,...d}=e,f=N(M,o),p=h(o),{onClose:g}=f;return r.useEffect(()=>(document.addEventListener(b,g),()=>document.removeEventListener(b,g)),[g]),r.useEffect(()=>{if(f.trigger){let e=e=>{let t=e.target;t?.contains(f.trigger)&&g()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[f.trigger,g]),(0,t.jsx)(i.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:g,children:(0,t.jsxs)(s.Content,{"data-state":f.stateAttribute,...p,...d,ref:n,style:{...d.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,t.jsx)(F,{children:a}),(0,t.jsx)(I,{scope:o,isInside:!0,children:(0,t.jsx)(m.Root,{id:f.contentId,role:"tooltip",children:l||a})})]})})});D.displayName=M;var U="TooltipArrow";r.forwardRef((e,r)=>{let{__scopeTooltip:n,...o}=e,a=h(n);return L(U,n).isInside?null:(0,t.jsx)(s.Arrow,{...a,...o,ref:r})}).displayName=U;var H=e.i(632137);let z=r.forwardRef(({className:e,sideOffset:r=4,...n},o)=>(0,t.jsx)(_,{children:(0,t.jsx)(D,{ref:o,sideOffset:r,className:(0,H.cn)("z-[100] overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...n})}));z.displayName=D.displayName,e.s(["Tooltip",()=>j,"TooltipContent",()=>z,"TooltipProvider",()=>C,"TooltipTrigger",()=>P],308402)},158362,e=>{"use strict";let t=(0,e.i(122436).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",()=>t],158362)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,585458,(e,t,s)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",s="minute",r="hour",a="week",n="month",i="quarter",l="year",c="date",d="Invalid Date",o=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=function(e,t,s){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(s)+e},h="en",p={};p[h]={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],s=e%100;return"["+e+(t[(s-20)%10]||t[s]||t[0])+"]"}};var x="$isDayjsObject",f=function(e){return e instanceof y||!(!e||!e[x])},g=function e(t,s,r){var a;if(!t)return h;if("string"==typeof t){var n=t.toLowerCase();p[n]&&(a=n),s&&(p[n]=s,a=n);var i=t.split("-");if(!a&&i.length>1)return e(i[0])}else{var l=t.name;p[l]=t,a=l}return!r&&a&&(h=a),a||!r&&h},v=function(e,t){if(f(e))return e.clone();var s="object"==typeof t?t:{};return s.date=e,s.args=arguments,new y(s)},b={s:u,z:function(e){var t=-e.utcOffset(),s=Math.abs(t);return(t<=0?"+":"-")+u(Math.floor(s/60),2,"0")+":"+u(s%60,2,"0")},m:function e(t,s){if(t.date()<s.date())return-e(s,t);var r=12*(s.year()-t.year())+(s.month()-t.month()),a=t.clone().add(r,n),i=s-a<0,l=t.clone().add(r+(i?-1:1),n);return+(-(r+(s-a)/(i?a-l:l-a))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(d){return({M:n,y:l,w:a,d:"day",D:c,h:r,m:s,s:t,ms:e,Q:i})[d]||String(d||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};b.l=g,b.i=f,b.w=function(e,t){return v(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var y=function(){function u(e){this.$L=g(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var h=u.prototype;return h.parse=function(e){this.$d=function(e){var t=e.date,s=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(o);if(r){var a=r[2]-1||0,n=(r[7]||"0").substring(0,3);return s?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,n)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,n)}}return new Date(t)}(e),this.init()},h.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},h.$utils=function(){return b},h.isValid=function(){return this.$d.toString()!==d},h.isSame=function(e,t){var s=v(e);return this.startOf(t)<=s&&s<=this.endOf(t)},h.isAfter=function(e,t){return v(e)<this.startOf(t)},h.isBefore=function(e,t){return this.endOf(t)<v(e)},h.$g=function(e,t,s){return b.u(e)?this[t]:this.set(s,e)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(e,i){var d=this,o=!!b.u(i)||i,m=b.p(e),u=function(e,t){var s=b.w(d.$u?Date.UTC(d.$y,t,e):new Date(d.$y,t,e),d);return o?s:s.endOf("day")},h=function(e,t){return b.w(d.toDate()[e].apply(d.toDate("s"),(o?[0,0,0,0]:[23,59,59,999]).slice(t)),d)},p=this.$W,x=this.$M,f=this.$D,g="set"+(this.$u?"UTC":"");switch(m){case l:return o?u(1,0):u(31,11);case n:return o?u(1,x):u(0,x+1);case a:var v=this.$locale().weekStart||0,y=(p<v?p+7:p)-v;return u(o?f-y:f+(6-y),x);case"day":case c:return h(g+"Hours",0);case r:return h(g+"Minutes",1);case s:return h(g+"Seconds",2);case t:return h(g+"Milliseconds",3);default:return this.clone()}},h.endOf=function(e){return this.startOf(e,!1)},h.$set=function(a,i){var d,o=b.p(a),m="set"+(this.$u?"UTC":""),u=((d={}).day=m+"Date",d[c]=m+"Date",d[n]=m+"Month",d[l]=m+"FullYear",d[r]=m+"Hours",d[s]=m+"Minutes",d[t]=m+"Seconds",d[e]=m+"Milliseconds",d)[o],h="day"===o?this.$D+(i-this.$W):i;if(o===n||o===l){var p=this.clone().set(c,1);p.$d[u](h),p.init(),this.$d=p.set(c,Math.min(this.$D,p.daysInMonth())).$d}else u&&this.$d[u](h);return this.init(),this},h.set=function(e,t){return this.clone().$set(e,t)},h.get=function(e){return this[b.p(e)]()},h.add=function(e,i){var c,d=this;e=Number(e);var o=b.p(i),m=function(t){var s=v(d);return b.w(s.date(s.date()+Math.round(t*e)),d)};if(o===n)return this.set(n,this.$M+e);if(o===l)return this.set(l,this.$y+e);if("day"===o)return m(1);if(o===a)return m(7);var u=((c={})[s]=6e4,c[r]=36e5,c[t]=1e3,c)[o]||1,h=this.$d.getTime()+e*u;return b.w(h,this)},h.subtract=function(e,t){return this.add(-1*e,t)},h.format=function(e){var t=this,s=this.$locale();if(!this.isValid())return s.invalidDate||d;var r=e||"YYYY-MM-DDTHH:mm:ssZ",a=b.z(this),n=this.$H,i=this.$m,l=this.$M,c=s.weekdays,o=s.months,u=s.meridiem,h=function(e,s,a,n){return e&&(e[s]||e(t,r))||a[s].slice(0,n)},p=function(e){return b.s(n%12||12,e,"0")},x=u||function(e,t,s){var r=e<12?"AM":"PM";return s?r.toLowerCase():r};return r.replace(m,function(e,r){return r||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return b.s(t.$y,4,"0");case"M":return l+1;case"MM":return b.s(l+1,2,"0");case"MMM":return h(s.monthsShort,l,o,3);case"MMMM":return h(o,l);case"D":return t.$D;case"DD":return b.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return h(s.weekdaysMin,t.$W,c,2);case"ddd":return h(s.weekdaysShort,t.$W,c,3);case"dddd":return c[t.$W];case"H":return String(n);case"HH":return b.s(n,2,"0");case"h":return p(1);case"hh":return p(2);case"a":return x(n,i,!0);case"A":return x(n,i,!1);case"m":return String(i);case"mm":return b.s(i,2,"0");case"s":return String(t.$s);case"ss":return b.s(t.$s,2,"0");case"SSS":return b.s(t.$ms,3,"0");case"Z":return a}return null}(e)||a.replace(":","")})},h.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},h.diff=function(e,c,d){var o,m=this,u=b.p(c),h=v(e),p=(h.utcOffset()-this.utcOffset())*6e4,x=this-h,f=function(){return b.m(m,h)};switch(u){case l:o=f()/12;break;case n:o=f();break;case i:o=f()/3;break;case a:o=(x-p)/6048e5;break;case"day":o=(x-p)/864e5;break;case r:o=x/36e5;break;case s:o=x/6e4;break;case t:o=x/1e3;break;default:o=x}return d?o:b.a(o)},h.daysInMonth=function(){return this.endOf(n).$D},h.$locale=function(){return p[this.$L]},h.locale=function(e,t){if(!e)return this.$L;var s=this.clone(),r=g(e,t,!0);return r&&(s.$L=r),s},h.clone=function(){return b.w(this.$d,this)},h.toDate=function(){return new Date(this.valueOf())},h.toJSON=function(){return this.isValid()?this.toISOString():null},h.toISOString=function(){return this.$d.toISOString()},h.toString=function(){return this.$d.toUTCString()},u}(),w=y.prototype;return v.prototype=w,[["$ms",e],["$s",t],["$m",s],["$H",r],["$W","day"],["$M",n],["$y",l],["$D",c]].forEach(function(e){w[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),v.extend=function(e,t){return e.$i||(e(t,y,v),e.$i=!0),v},v.locale=g,v.isDayjs=f,v.unix=function(e){return v(1e3*e)},v.en=p[h],v.Ls=p,v.p={},v}()},522764,e=>{"use strict";let t=(0,e.i(122436).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",()=>t],522764)},730885,635389,340982,e=>{"use strict";var t=e.i(122436);let s=(0,t.default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>s],730885);let r=(0,t.default)("maximize-2",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]]);e.s(["Maximize2",()=>r],635389);let a=(0,t.default)("minimize-2",[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]]);e.s(["Minimize2",()=>a],340982)},76075,e=>{"use strict";var t=e.i(890022),s=e.i(431231),r=e.i(632137);let a=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)("div",{ref:a,className:(0,r.cn)("rounded-xl border border-gray-200 dark:border-gray-800 bg-card text-card-foreground shadow",e),...s}));a.displayName="Card";let n=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)("div",{ref:a,className:(0,r.cn)("flex flex-col space-y-1.5 p-6",e),...s}));n.displayName="CardHeader";let i=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)("div",{ref:a,className:(0,r.cn)("font-semibold leading-none tracking-tight",e),...s}));i.displayName="CardTitle";let l=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)("div",{ref:a,className:(0,r.cn)("text-sm text-muted-foreground",e),...s}));l.displayName="CardDescription";let c=s.forwardRef(({className:e,...s},a)=>(0,t.jsx)("div",{ref:a,className:(0,r.cn)("p-6 pt-0",e),...s}));c.displayName="CardContent",s.forwardRef(({className:e,...s},a)=>(0,t.jsx)("div",{ref:a,className:(0,r.cn)("flex items-center p-6 pt-0",e),...s})).displayName="CardFooter",e.s(["Card",()=>a,"CardContent",()=>c,"CardDescription",()=>l,"CardHeader",()=>n,"CardTitle",()=>i])},416992,e=>{"use strict";let t=(0,e.i(122436).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",()=>t],416992)},310009,e=>{"use strict";var t=e.i(890022),s=e.i(431231),r=e.i(987985),a=e.i(230827),n=e.i(76075),i=e.i(323490),l=e.i(21079),c=e.i(235893),d=e.i(708737),o=e.i(300329),m=e.i(196812),u=e.i(75364),h=e.i(40843),p=e.i(490225),x=e.i(416992),f=e.i(522764),g=e.i(20315),v=e.i(730885),b=e.i(635389),y=e.i(340982),w=e.i(826712),j=e.i(525761),N=e.i(168497),C=e.i(597705),$=e.i(632137),S=e.i(145878);e.i(178420);var k=e.i(995403);let M={planned:{icon:h.Clock,title:"Planned",colorClass:"text-blue-600 dark:text-blue-400",bgClass:"bg-blue-50 dark:bg-blue-900/20",borderClass:"border-blue-200 dark:border-blue-800"},"in-progress":{icon:u.PlayCircle,title:"In Progress",colorClass:"text-orange-600 dark:text-orange-400",bgClass:"bg-orange-50 dark:bg-orange-900/20",borderClass:"border-orange-200 dark:border-orange-800"},complete:{icon:m.CheckCircle2,title:"Complete",colorClass:"text-green-600 dark:text-green-400",bgClass:"bg-green-50 dark:bg-green-900/20",borderClass:"border-green-200 dark:border-green-800"},archived:{icon:p.Archive,title:"Archived",colorClass:"text-gray-600 dark:text-gray-400",bgClass:"bg-gray-50 dark:bg-gray-900/20",borderClass:"border-gray-200 dark:border-gray-800"}},D=["planned","in-progress","complete","archived"];function T({initialSpecs:e,projectId:r}){let n=(0,a.useSearchParams)(),i=(0,a.useRouter)(),[m,u]=(0,s.useState)(e),[h,p]=(0,s.useState)({}),[g,v]=(0,s.useState)(""),[w,j]=(0,s.useState)("all"),[N,C]=(0,s.useState)("all"),[S,D]=(0,s.useState)("id-desc"),[T,A]=(0,s.useState)(!1),[L,H]=(0,s.useState)(!1),[_,B]=(0,s.useState)(()=>{let e=n.get("view");if("board"===e||"list"===e)return e;{let e=localStorage.getItem("specs-view-mode");if("board"===e||"list"===e)return e}return"list"}),z=(0,s.useRef)(!0);(0,s.useEffect)(()=>{u(e)},[e]);let P=(0,s.useCallback)(async(e,t)=>{if(e.status===t)return;let s=e.status;p(t=>({...t,[e.id]:!0})),u(s=>s.map(s=>s.id===e.id?{...s,status:t}:s));try{let s=r?`/api/projects/${r}/specs/${encodeURIComponent(e.specName)}/status`:`/api/specs/${encodeURIComponent(e.specName)}/status`,a=await fetch(s,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:t})});if(!a.ok){let e=await a.text();throw Error(e||"Failed to update spec status")}let n=e.specNumber?`#${e.specNumber}`:e.specName;k.toast.success(`Moved ${n} to ${M[t].title}`)}catch(t){console.error("Failed to update spec status",t),u(t=>t.map(t=>t.id===e.id?{...t,status:s}:t)),k.toast.error("Unable to update status. Please try again.")}finally{p(t=>{let s={...t};return delete s[e.id],s})}},[]);(0,s.useEffect)(()=>{"archived"===w&&"board"===_&&A(!0)},[w,_]),(0,s.useEffect)(()=>{if(z.current){z.current=!1;return}let e=new URLSearchParams(window.location.search);"board"===_?e.set("view","board"):e.delete("view");let t=e.toString(),s=t?`?${t}`:"";i.replace(`/specs${s}`,{scroll:!1}),localStorage.setItem("specs-view-mode",_)},[_,i]);let R=(0,s.useMemo)(()=>{let e=[...m.filter(e=>{let t=!g||e.title?.toLowerCase().includes(g.toLowerCase())||e.specName.toLowerCase().includes(g.toLowerCase())||e.tags?.some(e=>e.toLowerCase().includes(g.toLowerCase())),s="all"===w?"list"!==_||"archived"!==e.status:e.status===w,r="all"===N||e.priority===N;return t&&s&&r})];switch(S){case"id-desc":e.sort((e,t)=>(t.specNumber||0)-(e.specNumber||0));break;case"id-asc":e.sort((e,t)=>(e.specNumber||0)-(t.specNumber||0));break;case"updated-desc":e.sort((e,t)=>e.updatedAt?t.updatedAt?t.updatedAt.getTime()-e.updatedAt.getTime():-1:1);break;case"title-asc":e.sort((e,t)=>{let s=(e.title||e.specName).toLowerCase(),r=(t.title||t.specName).toLowerCase();return s.localeCompare(r)})}return e},[m,g,w,N,S,_]);return(0,t.jsx)("div",{className:"h-[calc(100vh-3.5rem)] flex flex-col overflow-hidden bg-background p-2 sm:p-4",children:(0,t.jsxs)("div",{className:(0,$.cn)("flex flex-col h-full mx-auto transition-all duration-300",L?"w-full":"max-w-7xl w-full"),children:[(0,t.jsx)("div",{className:"flex-none mb-3 sm:mb-4",children:(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3 md:gap-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("h1",{className:"text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate",children:"Specifications"}),(0,t.jsxs)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:[R.length," specs"]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 sm:gap-2 flex-shrink-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-0.5 sm:gap-1 bg-muted/50 p-0.5 sm:p-1 rounded-lg",children:[(0,t.jsxs)(c.Button,{variant:"list"===_?"secondary":"ghost",size:"sm",onClick:()=>B("list"),className:"h-7 sm:h-8 px-2 sm:px-3",title:"List view",children:[(0,t.jsx)(f.List,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,t.jsx)("span",{className:"hidden lg:inline ml-2",children:"List"})]}),(0,t.jsxs)(c.Button,{variant:"board"===_?"secondary":"ghost",size:"sm",onClick:()=>B("board"),className:"h-7 sm:h-8 px-2 sm:px-3",title:"Board view",children:[(0,t.jsx)(x.LayoutGrid,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,t.jsx)("span",{className:"hidden lg:inline ml-2",children:"Board"})]})]}),(0,t.jsx)(c.Button,{variant:"ghost",size:"icon",onClick:()=>H(!L),className:"hidden md:flex h-8 w-8 sm:h-10 sm:w-10 text-muted-foreground hover:text-foreground",title:L?"Exit wide mode":"Enter wide mode",children:L?(0,t.jsx)(y.Minimize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):(0,t.jsx)(b.Maximize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})]})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,t.jsxs)("div",{className:"relative w-full",children:[(0,t.jsx)(o.Search,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 sm:h-4 sm:w-4 text-muted-foreground pointer-events-none"}),(0,t.jsx)(l.Input,{placeholder:"Search specs...",value:g,onChange:e=>v(e.target.value),className:"pl-8 sm:pl-9 h-9 sm:h-10 w-full text-sm"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 overflow-x-auto snap-x snap-mandatory pb-1 -mx-2 px-2 sm:mx-0 sm:px-0 sm:pb-0 scrollbar-thin",children:[(0,t.jsxs)(d.Select,{value:w,onValueChange:e=>j(e),children:[(0,t.jsx)(d.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,t.jsx)(d.SelectValue,{placeholder:"Status"})}),(0,t.jsxs)(d.SelectContent,{children:[(0,t.jsx)(d.SelectItem,{value:"all",children:"All Status"}),(0,t.jsx)(d.SelectItem,{value:"planned",children:"Planned"}),(0,t.jsx)(d.SelectItem,{value:"in-progress",children:"In Progress"}),(0,t.jsx)(d.SelectItem,{value:"complete",children:"Complete"}),(0,t.jsx)(d.SelectItem,{value:"archived",children:"Archived"})]})]}),(0,t.jsxs)(d.Select,{value:N,onValueChange:C,children:[(0,t.jsx)(d.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,t.jsx)(d.SelectValue,{placeholder:"Priority"})}),(0,t.jsxs)(d.SelectContent,{children:[(0,t.jsx)(d.SelectItem,{value:"all",children:"All Priority"}),(0,t.jsx)(d.SelectItem,{value:"critical",children:"Critical"}),(0,t.jsx)(d.SelectItem,{value:"high",children:"High"}),(0,t.jsx)(d.SelectItem,{value:"medium",children:"Medium"}),(0,t.jsx)(d.SelectItem,{value:"low",children:"Low"})]})]}),(0,t.jsxs)(d.Select,{value:S,onValueChange:e=>D(e),children:[(0,t.jsx)(d.SelectTrigger,{className:"w-[130px] sm:w-[170px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,t.jsx)(d.SelectValue,{placeholder:"Sort by"})}),(0,t.jsxs)(d.SelectContent,{children:[(0,t.jsx)(d.SelectItem,{value:"id-desc",children:"Newest First"}),(0,t.jsx)(d.SelectItem,{value:"id-asc",children:"Oldest First"}),(0,t.jsx)(d.SelectItem,{value:"updated-desc",children:"Recently Updated"}),(0,t.jsx)(d.SelectItem,{value:"title-asc",children:"Title (A-Z)"})]})]})]})]})]})}),(0,t.jsx)("div",{className:(0,$.cn)("flex-1 min-h-0","board"===_?"overflow-x-auto overflow-y-hidden":"overflow-y-auto"),children:"list"===_?(0,t.jsx)("div",{className:"w-full",children:(0,t.jsx)(O,{specs:R})}):(0,t.jsx)(I,{specs:R,onStatusChange:P,pendingSpecIds:h,showArchived:T,onToggleArchived:()=>A(!T)})})]})})}function O({specs:e}){return(0,t.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:gap-3 md:gap-4 pb-2 sm:pb-4 md:pb-8",children:e.map(e=>{let s={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[e.priority]||"border-l-gray-300",a=e.relationships&&(e.relationships.dependsOn.length>0||e.relationships.related.length>0),l=!!(e.subSpecsCount&&e.subSpecsCount>0);return(0,t.jsxs)(n.Card,{className:(0,$.cn)("hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.01] active:scale-[0.99] border-l-4 cursor-pointer touch-manipulation",s),onClick:()=>window.location.href=`/specs/${e.specNumber||e.id}`,children:[(0,t.jsx)(n.CardHeader,{className:"pb-2 sm:pb-2.5 md:pb-3 px-3 sm:px-4 md:px-6 pt-3 sm:pt-4 md:pt-6",children:(0,t.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-start md:justify-between md:gap-4",children:[(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsx)(r.default,{href:`/specs/${e.specNumber||e.id}`,children:(0,t.jsxs)(n.CardTitle,{className:"text-sm sm:text-base md:text-lg font-semibold hover:text-primary transition-colors flex items-start flex-wrap gap-1.5 sm:gap-2 leading-snug sm:leading-normal",children:[e.specNumber?(0,t.jsxs)("span",{className:"font-mono text-xs sm:text-sm md:text-base font-normal text-muted-foreground flex-shrink-0",children:["#",e.specNumber.toString().padStart(3,"0")]}):null,(0,t.jsx)("span",{className:"flex-1 break-words",children:e.title||e.specName})]})}),e.title&&e.title!==e.specName&&(0,t.jsx)("p",{className:"text-[11px] sm:text-xs font-mono text-muted-foreground mt-1 sm:mt-1.5 truncate",children:e.specName})]}),(0,t.jsxs)("div",{className:"flex gap-1.5 sm:gap-2 flex-wrap md:shrink-0",children:[e.status&&(0,t.jsx)(N.StatusBadge,{status:e.status}),e.priority&&(0,t.jsx)(C.PriorityBadge,{priority:e.priority})]})]})}),(0,t.jsx)(n.CardContent,{className:"px-3 sm:px-4 md:px-6 pb-2.5 sm:pb-3 md:pb-6 pt-0",children:(0,t.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between md:gap-4",children:[(0,t.jsx)("div",{className:"flex items-center gap-2 sm:gap-3 md:gap-4 text-[11px] sm:text-xs md:text-sm text-muted-foreground flex-wrap",children:e.updatedAt||l||a?(0,t.jsxs)(t.Fragment,{children:[e.updatedAt&&(0,t.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,t.jsx)(h.Clock,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,t.jsxs)("span",{className:"whitespace-nowrap",children:["Updated ",(0,S.formatRelativeTime)(e.updatedAt)]})]}),l&&(0,t.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,t.jsx)(g.FileText,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,t.jsxs)("span",{className:"whitespace-nowrap",children:["+",e.subSpecsCount," files"]})]}),a&&(0,t.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,t.jsx)(v.GitBranch,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,t.jsxs)("span",{className:"whitespace-nowrap",children:[e.relationships.dependsOn.length>0&&`${e.relationships.dependsOn.length} deps`,e.relationships.dependsOn.length>0&&e.relationships.related.length>0&&", ",e.relationships.related.length>0&&`${e.relationships.related.length} related`]})]})]}):(0,t.jsx)("span",{className:"invisible hidden md:inline",children:"No metadata"})}),e.tags&&e.tags.length>0&&(0,t.jsx)("div",{className:"flex flex-wrap gap-1 sm:gap-1.5 md:gap-2 md:justify-end md:shrink-0",children:e.tags.map(e=>(0,t.jsx)(i.Badge,{variant:"outline",className:"text-[10px] sm:text-xs font-mono text-muted-foreground hover:text-foreground transition-colors h-5 sm:h-auto px-1.5 sm:px-2",children:e},e))})]})})]},e.id)})})}function I({specs:e,onStatusChange:a,pendingSpecIds:l,showArchived:c,onToggleArchived:d}){let[o,m]=(0,s.useState)(null),[u,h]=(0,s.useState)(null),[p,x]=(0,s.useState)({}),f=(0,s.useMemo)(()=>D.map(t=>({status:t,config:M[t],specs:e.filter(e=>e.status===t)})),[e]),g=(0,s.useMemo)(()=>{let t=new Map;return e.forEach(e=>t.set(e.id,e)),t},[e]),v=(0,s.useCallback)((e,t)=>{t.dataTransfer.setData("text/plain",e),t.dataTransfer.effectAllowed="move",m(e)},[]),b=(0,s.useCallback)(()=>{m(null),h(null)},[]),y=(0,s.useCallback)((e,t)=>{o&&(t.preventDefault(),t.dataTransfer.dropEffect="move",h(e))},[o]),N=(0,s.useCallback)((e,t)=>{if(!o)return;let s=t.relatedTarget;s&&t.currentTarget.contains(s)||h(t=>t===e?null:t)},[o]),S=(0,s.useCallback)((e,t)=>{t.preventDefault();let s=t.dataTransfer.getData("text/plain")||o;if(!s)return void b();let r=g.get(s);r&&r.status!==e&&a(r,e),b()},[o,b,a,g]);return(0,t.jsx)("div",{className:"flex flex-col md:flex-row gap-3 sm:gap-4 md:gap-6 h-full pb-2 md:snap-x md:snap-mandatory overflow-y-auto md:overflow-y-hidden md:overflow-x-auto",children:f.map(e=>{let s=e.config.icon,a="archived"===e.status,m=p[e.status];return(0,t.jsxs)("div",{className:(0,$.cn)("flex flex-col flex-1 snap-start","h-auto md:h-full w-full md:w-auto flex-shrink-0",a&&!c?"md:w-12 md:sm:w-14 md:min-w-[3rem] md:sm:min-w-[3.5rem] flex-none":"md:min-w-[260px] md:sm:min-w-[280px] md:md:min-w-[300px]"),children:[(0,t.jsx)("div",{className:(0,$.cn)("flex-none mb-3 sm:mb-4 rounded-lg border-2 bg-background transition-all touch-manipulation",e.config.bgClass,e.config.borderClass,a?"cursor-pointer hover:opacity-80 active:opacity-70":"",a&&!c?"py-4 sm:py-6 px-1.5 sm:px-2":"p-2.5 sm:p-3","md:cursor-default cursor-pointer"),onClick:()=>{if(a)d();else{var t;window.innerWidth<768&&(t=e.status,x(e=>({...e,[t]:!e[t]})))}},children:(0,t.jsxs)("h2",{className:(0,$.cn)("text-base sm:text-lg font-semibold flex items-center gap-1.5 sm:gap-2",e.config.colorClass,a&&!c&&"flex-col text-xs sm:text-sm gap-2 sm:gap-3"),children:[(0,t.jsx)(s,{className:"h-4 w-4 sm:h-5 sm:w-5 flex-shrink-0"}),a&&!c?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"vertical-text text-xs sm:text-sm whitespace-nowrap",children:e.config.title}),(0,t.jsx)(i.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1 sm:px-2 h-4 sm:h-5",children:e.specs.length})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{className:"truncate flex-1",children:e.config.title}),(0,t.jsx)(i.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1.5 sm:px-2 h-4 sm:h-5 flex-shrink-0",children:e.specs.length}),(0,t.jsx)("div",{className:"md:hidden ml-2 text-muted-foreground/50",children:m?(0,t.jsx)(j.ChevronRight,{className:"h-4 w-4"}):(0,t.jsx)(w.ChevronDown,{className:"h-4 w-4"})})]})]})}),(!a||c)&&!m&&(0,t.jsxs)("div",{className:(0,$.cn)("space-y-2 sm:space-y-2.5 md:space-y-3 flex-1 rounded-xl border border-transparent p-1 transition-colors overflow-y-auto min-h-0 scrollbar-thin",o&&"border-dashed border-muted-foreground/40",o&&u===e.status&&"bg-muted/40 border-primary/50"),onDragOver:t=>y(e.status,t),onDragLeave:t=>N(e.status,t),onDrop:t=>S(e.status,t),children:[e.specs.map(e=>{let s={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[e.priority]||"border-l-gray-300",a=!!l[e.id];return(0,t.jsxs)(n.Card,{draggable:!a,onDragStart:t=>{a?t.preventDefault():v(e.id,t)},onDragEnd:b,"aria-disabled":a,className:(0,$.cn)("relative hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.02] active:scale-[0.99] border-l-4 cursor-pointer group flex flex-col touch-manipulation",s,a&&"opacity-60 cursor-wait"),onClick:()=>window.location.href=`/specs/${e.specNumber||e.id}`,children:[a&&(0,t.jsx)("div",{className:"absolute inset-0 rounded-lg bg-background/80 flex items-center justify-center text-xs sm:text-sm font-medium z-10",children:"Updating..."}),(0,t.jsxs)(n.CardHeader,{className:"p-3 sm:p-4 pb-1.5 sm:pb-2 space-y-1 sm:space-y-1.5",children:[(0,t.jsx)("div",{className:"flex items-center justify-between",children:(0,t.jsx)("span",{className:"font-mono text-[10px] sm:text-xs text-muted-foreground/70 group-hover:text-primary/60 transition-colors",children:e.specNumber?`#${e.specNumber}`:""})}),(0,t.jsx)(r.default,{href:`/specs/${e.specNumber||e.id}`,className:"block",children:(0,t.jsx)(n.CardTitle,{className:"text-xs sm:text-sm font-semibold leading-snug hover:text-primary transition-colors line-clamp-3",children:e.title||e.specName})})]}),(0,t.jsx)(n.CardContent,{className:"p-3 sm:p-4 pt-1.5 sm:pt-2 flex-1 flex flex-col justify-end",children:(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3",children:[e.title&&e.title!==e.specName&&(0,t.jsx)("p",{className:"text-[10px] sm:text-xs font-mono text-muted-foreground truncate opacity-70",children:e.specName}),(0,t.jsxs)("div",{className:"flex items-center justify-between gap-1.5 sm:gap-2 pt-0.5 sm:pt-1",children:[e.priority?(0,t.jsx)(C.PriorityBadge,{priority:e.priority}):(0,t.jsx)("div",{}),e.tags&&e.tags.length>0&&(0,t.jsxs)("div",{className:"flex flex-wrap gap-0.5 sm:gap-1 justify-end",children:[e.tags.slice(0,2).map(e=>(0,t.jsx)(i.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:e},e)),e.tags.length>2&&(0,t.jsxs)(i.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:["+",e.tags.length-2]})]})]})]})})]},e.id)}),0===e.specs.length&&(0,t.jsx)(n.Card,{className:"border-dashed border-gray-300 dark:border-gray-700 bg-transparent",children:(0,t.jsxs)(n.CardContent,{className:"py-6 sm:py-8 text-center px-2",children:[(0,t.jsx)(s,{className:(0,$.cn)("mx-auto h-6 w-6 sm:h-8 sm:w-8 mb-1.5 sm:mb-2",e.config.colorClass,"opacity-50")}),(0,t.jsx)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Drop here to move specs"})]})})]})]},e.status)})})}e.s(["SpecsClient",()=>T])}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,585458,(e,t,n)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",s="week",i="month",l="quarter",a="year",o="date",c="Invalid Date",u=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,d=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},f="en",m={};m[f]={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};var x="$isDayjsObject",p=function(e){return e instanceof w||!(!e||!e[x])},g=function e(t,n,r){var s;if(!t)return f;if("string"==typeof t){var i=t.toLowerCase();m[i]&&(s=i),n&&(m[i]=n,s=i);var l=t.split("-");if(!s&&l.length>1)return e(l[0])}else{var a=t.name;m[a]=t,s=a}return!r&&s&&(f=s),s||!r&&f},v=function(e,t){if(p(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new w(n)},S={s:h,z:function(e){var t=-e.utcOffset(),n=Math.abs(t);return(t<=0?"+":"-")+h(Math.floor(n/60),2,"0")+":"+h(n%60,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),s=t.clone().add(r,i),l=n-s<0,a=t.clone().add(r+(l?-1:1),i);return+(-(r+(n-s)/(l?s-a:a-s))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(c){return({M:i,y:a,w:s,d:"day",D:o,h:r,m:n,s:t,ms:e,Q:l})[c]||String(c||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};S.l=g,S.i=p,S.w=function(e,t){return v(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var w=function(){function h(e){this.$L=g(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var f=h.prototype;return f.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(u);if(r){var s=r[2]-1||0,i=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],s,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)):new Date(r[1],s,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)}}return new Date(t)}(e),this.init()},f.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},f.$utils=function(){return S},f.isValid=function(){return this.$d.toString()!==c},f.isSame=function(e,t){var n=v(e);return this.startOf(t)<=n&&n<=this.endOf(t)},f.isAfter=function(e,t){return v(e)<this.startOf(t)},f.isBefore=function(e,t){return this.endOf(t)<v(e)},f.$g=function(e,t,n){return S.u(e)?this[t]:this.set(n,e)},f.unix=function(){return Math.floor(this.valueOf()/1e3)},f.valueOf=function(){return this.$d.getTime()},f.startOf=function(e,l){var c=this,u=!!S.u(l)||l,d=S.p(e),h=function(e,t){var n=S.w(c.$u?Date.UTC(c.$y,t,e):new Date(c.$y,t,e),c);return u?n:n.endOf("day")},f=function(e,t){return S.w(c.toDate()[e].apply(c.toDate("s"),(u?[0,0,0,0]:[23,59,59,999]).slice(t)),c)},m=this.$W,x=this.$M,p=this.$D,g="set"+(this.$u?"UTC":"");switch(d){case a:return u?h(1,0):h(31,11);case i:return u?h(1,x):h(0,x+1);case s:var v=this.$locale().weekStart||0,w=(m<v?m+7:m)-v;return h(u?p-w:p+(6-w),x);case"day":case o:return f(g+"Hours",0);case r:return f(g+"Minutes",1);case n:return f(g+"Seconds",2);case t:return f(g+"Milliseconds",3);default:return this.clone()}},f.endOf=function(e){return this.startOf(e,!1)},f.$set=function(s,l){var c,u=S.p(s),d="set"+(this.$u?"UTC":""),h=((c={}).day=d+"Date",c[o]=d+"Date",c[i]=d+"Month",c[a]=d+"FullYear",c[r]=d+"Hours",c[n]=d+"Minutes",c[t]=d+"Seconds",c[e]=d+"Milliseconds",c)[u],f="day"===u?this.$D+(l-this.$W):l;if(u===i||u===a){var m=this.clone().set(o,1);m.$d[h](f),m.init(),this.$d=m.set(o,Math.min(this.$D,m.daysInMonth())).$d}else h&&this.$d[h](f);return this.init(),this},f.set=function(e,t){return this.clone().$set(e,t)},f.get=function(e){return this[S.p(e)]()},f.add=function(e,l){var o,c=this;e=Number(e);var u=S.p(l),d=function(t){var n=v(c);return S.w(n.date(n.date()+Math.round(t*e)),c)};if(u===i)return this.set(i,this.$M+e);if(u===a)return this.set(a,this.$y+e);if("day"===u)return d(1);if(u===s)return d(7);var h=((o={})[n]=6e4,o[r]=36e5,o[t]=1e3,o)[u]||1,f=this.$d.getTime()+e*h;return S.w(f,this)},f.subtract=function(e,t){return this.add(-1*e,t)},f.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||c;var r=e||"YYYY-MM-DDTHH:mm:ssZ",s=S.z(this),i=this.$H,l=this.$m,a=this.$M,o=n.weekdays,u=n.months,h=n.meridiem,f=function(e,n,s,i){return e&&(e[n]||e(t,r))||s[n].slice(0,i)},m=function(e){return S.s(i%12||12,e,"0")},x=h||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(d,function(e,r){return r||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return S.s(t.$y,4,"0");case"M":return a+1;case"MM":return S.s(a+1,2,"0");case"MMM":return f(n.monthsShort,a,u,3);case"MMMM":return f(u,a);case"D":return t.$D;case"DD":return S.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return f(n.weekdaysMin,t.$W,o,2);case"ddd":return f(n.weekdaysShort,t.$W,o,3);case"dddd":return o[t.$W];case"H":return String(i);case"HH":return S.s(i,2,"0");case"h":return m(1);case"hh":return m(2);case"a":return x(i,l,!0);case"A":return x(i,l,!1);case"m":return String(l);case"mm":return S.s(l,2,"0");case"s":return String(t.$s);case"ss":return S.s(t.$s,2,"0");case"SSS":return S.s(t.$ms,3,"0");case"Z":return s}return null}(e)||s.replace(":","")})},f.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},f.diff=function(e,o,c){var u,d=this,h=S.p(o),f=v(e),m=(f.utcOffset()-this.utcOffset())*6e4,x=this-f,p=function(){return S.m(d,f)};switch(h){case a:u=p()/12;break;case i:u=p();break;case l:u=p()/3;break;case s:u=(x-m)/6048e5;break;case"day":u=(x-m)/864e5;break;case r:u=x/36e5;break;case n:u=x/6e4;break;case t:u=x/1e3;break;default:u=x}return c?u:S.a(u)},f.daysInMonth=function(){return this.endOf(i).$D},f.$locale=function(){return m[this.$L]},f.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=g(e,t,!0);return r&&(n.$L=r),n},f.clone=function(){return S.w(this.$d,this)},f.toDate=function(){return new Date(this.valueOf())},f.toJSON=function(){return this.isValid()?this.toISOString():null},f.toISOString=function(){return this.$d.toISOString()},f.toString=function(){return this.$d.toUTCString()},h}(),b=w.prototype;return v.prototype=b,[["$ms",e],["$s",t],["$m",n],["$H",r],["$W","day"],["$M",i],["$y",a],["$D",o]].forEach(function(e){b[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),v.extend=function(e,t){return e.$i||(e(t,w,v),e.$i=!0),v},v.locale=g,v.isDayjs=p,v.unix=function(e){return v(1e3*e)},v.en=m[f],v.Ls=m,v.p={},v}()},417612,293821,222850,e=>{"use strict";var t=e.i(890022),n=e.i(431231),r=e.i(987985);let s="u">typeof window?n.useLayoutEffect:n.useEffect;function i(e){if(void 0!==e)switch(typeof e){case"number":return e;case"string":if(e.endsWith("px"))return parseFloat(e)}}let l=null;function a({containerElement:e,direction:t,isRtl:n,scrollOffset:r}){if("horizontal"===t&&n)switch(function(e=!1){if(null===l||e){let e=document.createElement("div"),t=e.style;t.width="50px",t.height="50px",t.overflow="scroll",t.direction="rtl";let n=document.createElement("div"),r=n.style;return r.width="100px",r.height="100px",e.appendChild(n),document.body.appendChild(e),e.scrollLeft>0?l="positive-descending":(e.scrollLeft=1,l=0===e.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(e),l}return l}()){case"negative":return-r;case"positive-descending":if(e){let{clientWidth:t,scrollLeft:n,scrollWidth:r}=e;return r-t-n}}return r}function o(e,t="Assertion error"){if(!e)throw console.error(t),Error(t)}function c(e,t){if(e===t)return!0;if(!!e!=!!t||(o(void 0!==e),o(void 0!==t),Object.keys(e).length!==Object.keys(t).length))return!1;for(let n in e)if(!Object.is(t[n],e[n]))return!1;return!0}function u({cachedBounds:e,itemCount:t,itemSize:n}){if(0===t)return 0;if("number"==typeof n)return t*n;{let n=e.get(0===e.size?0:e.size-1);return o(void 0!==n,"Unexpected bounds cache miss"),t*((n.scrollOffset+n.size)/e.size)}}function d({cachedBounds:e,containerScrollOffset:t,containerSize:n,itemCount:r,overscanCount:s}){let i=r-1,l=0,a=-1,o=0,c=-1,u=0;for(;u<i;){let n=e.get(u);if(n.scrollOffset+n.size>t)break;u++}for(o=Math.max(0,(l=u)-s);u<i;){let r=e.get(u);if(r.scrollOffset+r.size>=t+n)break;u++}return c=Math.min(r-1,(a=Math.min(i,u))+s),l<0&&(l=0,a=-1,o=0,c=-1),{startIndexVisible:l,stopIndexVisible:a,startIndexOverscan:o,stopIndexOverscan:c}}function h(e,t){let{ariaAttributes:n,style:r,...s}=e,{ariaAttributes:i,style:l,...a}=t;return c(n,i)&&c(r,l)&&c(s,a)}function f({children:e,className:r,defaultHeight:l=0,listRef:f,onResize:m,onRowsRendered:x,overscanCount:p=3,rowComponent:g,rowCount:v,rowHeight:S,rowProps:w,tagName:b="div",style:y,...j}){let $=(0,n.useMemo)(()=>w,Object.values(w)),C=(0,n.useMemo)(()=>(0,n.memo)(g,h),[g]),[N,M]=(0,n.useState)(null),I=null!=S&&"object"==typeof S&&"getAverageRowHeight"in S&&"function"==typeof S.getAverageRowHeight,{getCellBounds:O,getEstimatedSize:z,scrollToIndex:T,startIndexOverscan:k,startIndexVisible:D,stopIndexOverscan:A,stopIndexVisible:E}=function({containerElement:e,containerStyle:t,defaultContainerSize:r=0,direction:l,isRtl:h=!1,itemCount:f,itemProps:m,itemSize:x,onResize:p,overscanCount:g}){var v;let S,[w,b]=(0,n.useState)({startIndexVisible:0,startIndexOverscan:0,stopIndexVisible:-1,stopIndexOverscan:-1}),{startIndexVisible:y,startIndexOverscan:j,stopIndexVisible:$,stopIndexOverscan:C}={startIndexVisible:Math.min(f-1,w.startIndexVisible),startIndexOverscan:Math.min(f-1,w.startIndexOverscan),stopIndexVisible:Math.min(f-1,w.stopIndexVisible),stopIndexOverscan:Math.min(f-1,w.stopIndexOverscan)},{height:N=r,width:M=r}=function({box:e,defaultHeight:t,defaultWidth:r,disabled:l,element:a,mode:o,style:c}){let{styleHeight:u,styleWidth:d}=(0,n.useMemo)(()=>({styleHeight:i(c?.height),styleWidth:i(c?.width)}),[c?.height,c?.width]),[h,f]=(0,n.useState)({height:t,width:r}),m=l||"only-height"===o&&void 0!==u||"only-width"===o&&void 0!==d||void 0!==u&&void 0!==d;return s(()=>{if(null===a||m)return;let t=new ResizeObserver(e=>{for(let t of e){let{contentRect:e,target:n}=t;a===n&&f(t=>t.height===e.height&&t.width===e.width?t:{height:e.height,width:e.width})}});return t.observe(a,{box:e}),()=>{t?.unobserve(a)}},[e,m,a,u,d]),(0,n.useMemo)(()=>({height:u??h.height,width:d??h.width}),[h,u,d])}({defaultHeight:"vertical"===l?r:void 0,defaultWidth:"horizontal"===l?r:void 0,element:e,mode:"vertical"===l?"only-height":"only-width",style:t}),I=(0,n.useRef)({height:0,width:0}),O="vertical"===l?N:M,z=function({containerSize:e,itemSize:t}){let n;return"string"==typeof t?(o(t.endsWith("%"),`Invalid item size: "${t}"; string values must be percentages (e.g. "100%")`),o(void 0!==e,"Container size must be defined if a percentage item size is specified"),n=e*parseInt(t)/100):n=t,n}({containerSize:O,itemSize:x});(0,n.useLayoutEffect)(()=>{if("function"==typeof p){let e=I.current;(e.height!==N||e.width!==M)&&(p({height:N,width:M},{...e}),e.height=N,e.width=M)}},[N,p,M]);let T=function({itemCount:e,itemProps:t,itemSize:r}){return(0,n.useMemo)(()=>(function({itemCount:e,itemProps:t,itemSize:n}){let r=new Map;return{get(s){for(o(s<e,`Invalid index ${s}`);r.size-1<s;){let e,i=r.size;switch(typeof n){case"function":e=n(i,t);break;case"number":e=n}if(0===i)r.set(i,{size:e,scrollOffset:0});else{let t=r.get(i-1);o(void 0!==t,`Unexpected bounds cache miss for index ${s}`),r.set(i,{scrollOffset:t.scrollOffset+t.size,size:e})}}let i=r.get(s);return o(void 0!==i,`Unexpected bounds cache miss for index ${s}`),i},set(e,t){r.set(e,t)},get size(){return r.size}}})({itemCount:e,itemProps:t,itemSize:r}),[e,t,r])}({itemCount:f,itemProps:m,itemSize:z}),k=(0,n.useCallback)(e=>T.get(e),[T]),D=(0,n.useCallback)(()=>u({cachedBounds:T,itemCount:f,itemSize:z}),[T,f,z]),A=(0,n.useCallback)(t=>d({cachedBounds:T,containerScrollOffset:a({containerElement:e,direction:l,isRtl:h,scrollOffset:t}),containerSize:O,itemCount:f,overscanCount:g}),[T,e,O,l,h,f,g]);return s(()=>{b(A(("vertical"===l?e?.scrollTop:e?.scrollLeft)??0))},[e,l,A]),s(()=>{if(!e)return;let t=()=>{b(t=>{let{scrollLeft:n,scrollTop:r}=e,s=d({cachedBounds:T,containerScrollOffset:a({containerElement:e,direction:l,isRtl:h,scrollOffset:"vertical"===l?r:n}),containerSize:O,itemCount:f,overscanCount:g});return c(s,t)?t:s})};return e.addEventListener("scroll",t),()=>{e.removeEventListener("scroll",t)}},[T,e,O,l,f,g]),{getCellBounds:k,getEstimatedSize:D,scrollToIndex:(v=({align:t="auto",containerScrollOffset:n,index:r})=>{let s=function({align:e,cachedBounds:t,index:n,itemCount:r,itemSize:s,containerScrollOffset:i,containerSize:l}){if(n<0||n>=r)throw RangeError(`Invalid index specified: ${n}`,{cause:`Index ${n} is not within the range of 0 - ${r-1}`});let a=u({cachedBounds:t,itemCount:r,itemSize:s}),o=t.get(n),c=Math.max(0,Math.min(a-l,o.scrollOffset)),d=Math.max(0,o.scrollOffset-l+o.size);switch("smart"===e&&(e=i>=d&&i<=c?"auto":"center"),e){case"start":return c;case"end":return d;case"center":return o.scrollOffset<=l/2?0:o.scrollOffset+o.size/2>=a-l/2?a-l:o.scrollOffset+o.size/2-l/2;default:return i>=d&&i<=c?i:i<d?d:c}}({align:t,cachedBounds:T,containerScrollOffset:n,containerSize:O,index:r,itemCount:f,itemSize:z});if(e){if(s=a({containerElement:e,direction:l,isRtl:h,scrollOffset:s}),"function"!=typeof e.scrollTo){let e=A(s);c(w,e)||b(e)}return s}},S=(0,n.useRef)(()=>{throw Error("Cannot call during render.")}),s(()=>{S.current=v},[v]),(0,n.useCallback)(e=>S.current?.(e),[S])),startIndexOverscan:j,startIndexVisible:y,stopIndexOverscan:C,stopIndexVisible:$}}({containerElement:N,containerStyle:y,defaultContainerSize:l,direction:"vertical",itemCount:v,itemProps:$,itemSize:(0,n.useMemo)(()=>I?e=>S.getRowHeight(e)??S.getAverageRowHeight():S,[I,S]),onResize:m,overscanCount:p});(0,n.useImperativeHandle)(f,()=>({get element(){return N},scrollToRow({align:e="auto",behavior:t="auto",index:n}){let r=T({align:e,containerScrollOffset:N?.scrollTop??0,index:n});"function"==typeof N?.scrollTo&&N.scrollTo({behavior:t,top:r})}}),[N,T]),s(()=>{if(!N)return;let e=Array.from(N.children).filter((e,t)=>{if(e.hasAttribute("aria-hidden"))return!1;let n=`${k+t}`;return e.setAttribute("data-react-window-index",n),!0});if(I)return S.observeRowElements(e)},[N,I,S,k,A]),(0,n.useEffect)(()=>{k>=0&&A>=0&&x&&x({startIndex:D,stopIndex:E},{startIndex:k,stopIndex:A})},[x,k,D,A,E]);let R=(0,n.useMemo)(()=>{let e=[];if(v>0)for(let t=k;t<=A;t++){let r=O(t);e.push((0,n.createElement)(C,{...$,ariaAttributes:{"aria-posinset":t+1,"aria-setsize":v,role:"listitem"},key:t,index:t,style:{position:"absolute",left:0,transform:`translateY(${r.scrollOffset}px)`,height:I?void 0:r.size,width:"100%"}}))}return e},[C,O,I,v,$,k,A]),H=(0,t.jsx)("div",{"aria-hidden":!0,style:{height:z(),width:"100%",zIndex:-1}});return(0,n.createElement)(b,{role:"list",...j,className:r,ref:M,style:{position:"relative",maxHeight:"100%",flexGrow:1,overflowY:"auto",...y}},R,e,H)}n.useState,n.useRef,n.useState,n.useRef;var m=e.i(300329),x=e.i(158362),p=e.i(525761),g=e.i(644021);let v=(0,e.i(122436).default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]);var S=e.i(21079),w=e.i(235893),b=e.i(168497),y=e.i(308402),j=e.i(708737),$=e.i(632137),C=e.i(597705),N=e.i(145878);let M={specs:[],signature:null,scrollTop:0,activeSpecId:null},I=[],O=new Set,z=new Set,T=new Set;function k(){for(let e of O)e()}function D(e){return O.add(e),()=>{O.delete(e)}}function A(){return M}function E(){return(0,n.useSyncExternalStore)(D,A,()=>M)}function R(){let e=n.useCallback(e=>(z.add(e),()=>{z.delete(e)}),[]);return(0,n.useSyncExternalStore)(e,()=>A().specs,()=>I)}function H(){let e=n.useCallback(e=>(T.add(e),()=>{T.delete(e)}),[]);return(0,n.useSyncExternalStore)(e,()=>A().activeSpecId,()=>null)}function L(e){if(0===e.length)return;let t=e.map(e=>[e.id,e.specNumber??"",e.title??"",e.status??"",e.priority??"",e.updatedAt?new Date(e.updatedAt).getTime():0].join(":")).join("|");if(t!==M.signature)for(let n of(M={...M,specs:e,signature:t},k(),z))n()}function V(e){if(M.activeSpecId!==e)for(let t of(M={...M,activeSpecId:e},k(),T))t()}function B(e){1>Math.abs(e-M.scrollTop)||(M={...M,scrollTop:e})}function P(){return M.scrollTop}e.s(["getSidebarScrollTop",()=>P,"primeSpecsSidebar",()=>L,"setActiveSidebarSpec",()=>V,"updateSidebarScrollTop",()=>B,"useSpecsSidebarActiveSpec",()=>H,"useSpecsSidebarSpecs",()=>R,"useSpecsSidebarState",()=>E],293821);let _=n.useLayoutEffect;function W({initialSpecs:e=[],currentSpecId:s,currentSubSpec:i,onSpecHover:l}){let[a,o]=n.useState(""),[c,u]=n.useState("all"),[d,h]=n.useState("all"),[M,I]=n.useState("all"),[O,z]=n.useState(!1),[T,k]=n.useState(()=>"true"===localStorage.getItem("specs-nav-sidebar-collapsed")),[D,A]=n.useState(!1),[E,L]=n.useState(!1),V=n.useRef(null),W=n.useRef(null),Y=n.useRef(!1),F=n.useRef(null),U=n.useRef(0),q=n.useRef(!1),J=n.useRef(!0),Z=R(),K=H(),G=n.useMemo(()=>Z.length>0?Z:e,[Z,e]),Q=s||K||"";n.useEffect(()=>{L(!0)},[]),n.useEffect(()=>{document.documentElement.style.setProperty("--specs-nav-sidebar-width",T?"0px":"280px"),localStorage.setItem("specs-nav-sidebar-collapsed",String(T))},[T]),n.useEffect(()=>{A(!1)},[Q,i]);let X=n.useMemo(()=>{let e=G;if(a){let t=a.toLowerCase();e=e.filter(e=>e.title?.toLowerCase().includes(t)||e.specName.toLowerCase().includes(t)||e.specNumber?.toString().includes(t))}return"all"!==c&&(e=e.filter(e=>e.status===c)),"all"!==d&&(e=e.filter(e=>e.priority===d)),"all"!==M&&(e=e.filter(e=>e.tags?.includes(M))),console.debug(e),e},[G,a,c,d,M]),ee=n.useMemo(()=>{let e=new Set;return G.forEach(t=>{t.tags?.forEach(t=>e.add(t))}),Array.from(e).sort()},[G]),et="all"!==c||"all"!==d||"all"!==M,en=n.useMemo(()=>[...X].sort((e,t)=>(t.specNumber||0)-(e.specNumber||0)),[X]);_(()=>{let e=null,t=null;U.current=P(),q.current=U.current>0;let n=()=>{let r=F.current?.element;if(!r){e=window.requestAnimationFrame(n);return}Y.current||(U.current>0&&(r.scrollTop=U.current),Y.current=!0);let s=()=>{null===W.current&&(W.current=window.requestAnimationFrame(()=>{W.current=null,U.current=r.scrollTop,B(r.scrollTop)}))};r.addEventListener("scroll",s,{passive:!0}),t=()=>{r.removeEventListener("scroll",s)}};return n(),()=>{t&&t(),null!==e&&window.cancelAnimationFrame(e),null!==W.current&&(window.cancelAnimationFrame(W.current),W.current=null)}},[]),_(()=>{if(!J.current||(J.current=!1,q.current||!Q))return;let e=null,t=()=>{if(q.current)return;if(!Y.current||!F.current){e=window.requestAnimationFrame(t);return}let n=en.findIndex(e=>e.id===Q);-1!==n&&(q.current=!0,F.current.scrollToRow({index:n,align:"center"}))};return t(),()=>{null!==e&&window.cancelAnimationFrame(e)}},[en,Q]),n.useEffect(()=>(window.toggleSpecsSidebar=()=>A(e=>!e),()=>{window.toggleSpecsSidebar=void 0}),[]);let er=n.useCallback(e=>{let{index:n,style:s}=e,a=en[n],o=a.id===Q,c=(a.contentMd?(0,$.extractH1Title)(a.contentMd):null)||a.title||a.specName;return(0,t.jsx)("div",{style:s,className:"px-1",children:(0,t.jsx)("div",{className:"mb-0.5",children:(0,t.jsx)("div",{className:"flex items-center gap-0.5",children:(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)(r.default,{ref:o&&!i?V:null,href:`/specs/${a.specNumber||a.id}`,onMouseEnter:()=>l?.(a.specNumber?.toString()||a.id),className:(0,$.cn)("w-full flex flex-col gap-1 p-1.5 rounded-md text-sm transition-colors",o?"bg-accent text-accent-foreground font-medium":"hover:bg-accent/50"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[a.specNumber&&(0,t.jsxs)("span",{className:"text-xs font-mono text-muted-foreground shrink-0",children:["#",a.specNumber.toString().padStart(3,"0")]}),(0,t.jsx)("span",{className:"truncate text-xs leading-relaxed",children:c})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[a.status&&(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(b.StatusBadge,{status:a.status,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,t.jsx)(y.TooltipContent,{side:"right",children:(0,b.getStatusLabel)(a.status)})]}),a.priority&&(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(C.PriorityBadge,{priority:a.priority,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,t.jsx)(y.TooltipContent,{side:"right",children:(0,C.getPriorityLabel)(a.priority)})]}),"number"==typeof a.subSpecsCount&&a.subSpecsCount>0&&(0,t.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["+",a.subSpecsCount," files"]}),a.updatedAt&&(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground",children:(0,N.formatRelativeTime)(a.updatedAt)})]})]})}),(0,t.jsx)(y.TooltipContent,{side:"right",className:"max-w-[300px]",children:(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("div",{className:"font-semibold",children:c}),(0,t.jsx)("div",{className:"text-xs text-muted-foreground",children:a.specName})]})})]})})})})},[en,Q,i,l]),es=n.useMemo(()=>window.innerHeight-56-180,[]),ei=n.useMemo(()=>n.memo(f),[]);return(0,t.jsxs)(y.TooltipProvider,{delayDuration:700,children:[D&&(0,t.jsx)("div",{className:"fixed inset-0 bg-black/50 z-40 lg:hidden",onClick:()=>A(!1)}),(0,t.jsxs)("div",{className:"relative flex-shrink-0",children:[(0,t.jsxs)("aside",{className:(0,$.cn)("border-r border-border bg-background flex flex-col overflow-hidden transition-all duration-300","hidden lg:flex lg:sticky lg:top-14 lg:h-[calc(100vh-3.5rem)]",E&&T?"lg:w-0 lg:border-r-0":"lg:w-[280px]",D&&"fixed inset-y-0 left-0 z-[60] flex w-[280px]"),children:[(0,t.jsxs)("div",{className:"p-4 border-b border-border",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsx)("h2",{className:"font-semibold text-sm",children:"Specifications"}),(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(w.Button,{variant:O||et?"default":"ghost",size:"sm",onClick:()=>z(!O),className:"h-6 w-6 p-0",children:(0,t.jsx)(v,{className:"h-4 w-4"})})}),(0,t.jsx)(y.TooltipContent,{side:"bottom",children:O?"Hide filters":"Show filters"})]}),(0,t.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>A(!1),className:"h-6 w-6 p-0 lg:hidden",children:(0,t.jsx)(g.X,{className:"h-4 w-4"})}),(0,t.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>k(!0),className:"h-6 w-6 p-0 hidden lg:flex lg:items-center lg:justify-center",children:(0,t.jsx)(x.ChevronLeft,{className:"h-4 w-4"})})]})]}),O&&(0,t.jsxs)("div",{className:"space-y-2 mb-3 pb-3 border-b border-border",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:"Filters"}),et&&(0,t.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>{u("all"),h("all"),I("all")},className:"h-5 text-xs px-2 py-0",children:"Clear"})]}),(0,t.jsxs)(j.Select,{value:c,onValueChange:u,children:[(0,t.jsx)(j.SelectTrigger,{className:"h-8 text-xs",children:(0,t.jsx)(j.SelectValue,{placeholder:"Status"})}),(0,t.jsxs)(j.SelectContent,{children:[(0,t.jsx)(j.SelectItem,{value:"all",children:"All Status"}),(0,t.jsx)(j.SelectItem,{value:"planned",children:"Planned"}),(0,t.jsx)(j.SelectItem,{value:"in-progress",children:"In Progress"}),(0,t.jsx)(j.SelectItem,{value:"complete",children:"Complete"}),(0,t.jsx)(j.SelectItem,{value:"archived",children:"Archived"})]})]}),(0,t.jsxs)(j.Select,{value:d,onValueChange:h,children:[(0,t.jsx)(j.SelectTrigger,{className:"h-8 text-xs",children:(0,t.jsx)(j.SelectValue,{placeholder:"Priority"})}),(0,t.jsxs)(j.SelectContent,{children:[(0,t.jsx)(j.SelectItem,{value:"all",children:"All Priority"}),(0,t.jsx)(j.SelectItem,{value:"low",children:"Low"}),(0,t.jsx)(j.SelectItem,{value:"medium",children:"Medium"}),(0,t.jsx)(j.SelectItem,{value:"high",children:"High"}),(0,t.jsx)(j.SelectItem,{value:"critical",children:"Critical"})]})]}),ee.length>0&&(0,t.jsxs)(j.Select,{value:M,onValueChange:I,children:[(0,t.jsx)(j.SelectTrigger,{className:"h-8 text-xs",children:(0,t.jsx)(j.SelectValue,{placeholder:"Tag"})}),(0,t.jsxs)(j.SelectContent,{children:[(0,t.jsx)(j.SelectItem,{value:"all",children:"All Tags"}),ee.map(e=>(0,t.jsx)(j.SelectItem,{value:e,children:e},e))]})]})]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(m.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,t.jsx)(S.Input,{placeholder:"Search specs...",value:a,onChange:e=>o(e.target.value),className:"pl-8 h-9 border-border"})]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-hidden",children:0===en.length?(0,t.jsx)("div",{className:"text-center py-8 text-sm text-muted-foreground",children:"No specs found"}):(0,t.jsx)(ei,{listRef:F,defaultHeight:es,rowCount:en.length,rowHeight:72,overscanCount:5,rowComponent:er,rowProps:{}})})]}),E&&T&&(0,t.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>k(!1),className:"hidden lg:items-center lg:justify-center lg:flex h-6 w-6 p-0 fixed z-50 top-20 -translate-y-1 -translate-x-1/2 left-[calc(var(--main-sidebar-width,240px))] bg-background border",children:(0,t.jsx)(p.ChevronRight,{className:"h-4 w-4"})})]})]})}function Y({className:e,...n}){return(0,t.jsx)("div",{className:(0,$.cn)("animate-pulse rounded-md bg-muted",e),...n})}e.s(["SpecsNavSidebar",()=>W],417612),e.s(["Skeleton",()=>Y],222850)},653213,e=>{"use strict";var t=e.i(890022),n=e.i(417612),r=e.i(222850),s=e.i(293821);function i(){let e=(0,s.useSpecsSidebarState)(),i=e.specs,l=e.activeSpecId||"";return(0,t.jsxs)("div",{className:"flex min-h-[calc(100vh-3.5rem)] w-full min-w-0",children:[(0,t.jsx)(n.SpecsNavSidebar,{initialSpecs:i,currentSpecId:l}),(0,t.jsx)("div",{className:"flex-1 min-w-0 px-4 py-6 sm:px-8 sm:py-10",children:(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(r.Skeleton,{className:"h-7 w-56"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,t.jsx)(r.Skeleton,{className:"h-6 w-24"}),(0,t.jsx)(r.Skeleton,{className:"h-6 w-24"}),(0,t.jsx)(r.Skeleton,{className:"h-6 w-20"})]}),(0,t.jsx)(r.Skeleton,{className:"h-4 w-64"})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(r.Skeleton,{className:"h-5 w-40"}),(0,t.jsx)(r.Skeleton,{className:"h-32 w-full"})]}),(0,t.jsx)("div",{className:"space-y-4",children:[...Array(6)].map((e,n)=>(0,t.jsx)(r.Skeleton,{className:"h-4 w-full"},n))})]})})]})}e.s(["SpecDetailLoadingShell",()=>i])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,585458,(e,t,n)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",s="week",i="month",l="quarter",a="year",o="date",c="Invalid Date",u=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,d=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},f="en",m={};m[f]={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};var x="$isDayjsObject",p=function(e){return e instanceof w||!(!e||!e[x])},g=function e(t,n,r){var s;if(!t)return f;if("string"==typeof t){var i=t.toLowerCase();m[i]&&(s=i),n&&(m[i]=n,s=i);var l=t.split("-");if(!s&&l.length>1)return e(l[0])}else{var a=t.name;m[a]=t,s=a}return!r&&s&&(f=s),s||!r&&f},v=function(e,t){if(p(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new w(n)},S={s:h,z:function(e){var t=-e.utcOffset(),n=Math.abs(t);return(t<=0?"+":"-")+h(Math.floor(n/60),2,"0")+":"+h(n%60,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var r=12*(n.year()-t.year())+(n.month()-t.month()),s=t.clone().add(r,i),l=n-s<0,a=t.clone().add(r+(l?-1:1),i);return+(-(r+(n-s)/(l?s-a:a-s))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(c){return({M:i,y:a,w:s,d:"day",D:o,h:r,m:n,s:t,ms:e,Q:l})[c]||String(c||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};S.l=g,S.i=p,S.w=function(e,t){return v(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var w=function(){function h(e){this.$L=g(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[x]=!0}var f=h.prototype;return f.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(u);if(r){var s=r[2]-1||0,i=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],s,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)):new Date(r[1],s,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)}}return new Date(t)}(e),this.init()},f.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},f.$utils=function(){return S},f.isValid=function(){return this.$d.toString()!==c},f.isSame=function(e,t){var n=v(e);return this.startOf(t)<=n&&n<=this.endOf(t)},f.isAfter=function(e,t){return v(e)<this.startOf(t)},f.isBefore=function(e,t){return this.endOf(t)<v(e)},f.$g=function(e,t,n){return S.u(e)?this[t]:this.set(n,e)},f.unix=function(){return Math.floor(this.valueOf()/1e3)},f.valueOf=function(){return this.$d.getTime()},f.startOf=function(e,l){var c=this,u=!!S.u(l)||l,d=S.p(e),h=function(e,t){var n=S.w(c.$u?Date.UTC(c.$y,t,e):new Date(c.$y,t,e),c);return u?n:n.endOf("day")},f=function(e,t){return S.w(c.toDate()[e].apply(c.toDate("s"),(u?[0,0,0,0]:[23,59,59,999]).slice(t)),c)},m=this.$W,x=this.$M,p=this.$D,g="set"+(this.$u?"UTC":"");switch(d){case a:return u?h(1,0):h(31,11);case i:return u?h(1,x):h(0,x+1);case s:var v=this.$locale().weekStart||0,w=(m<v?m+7:m)-v;return h(u?p-w:p+(6-w),x);case"day":case o:return f(g+"Hours",0);case r:return f(g+"Minutes",1);case n:return f(g+"Seconds",2);case t:return f(g+"Milliseconds",3);default:return this.clone()}},f.endOf=function(e){return this.startOf(e,!1)},f.$set=function(s,l){var c,u=S.p(s),d="set"+(this.$u?"UTC":""),h=((c={}).day=d+"Date",c[o]=d+"Date",c[i]=d+"Month",c[a]=d+"FullYear",c[r]=d+"Hours",c[n]=d+"Minutes",c[t]=d+"Seconds",c[e]=d+"Milliseconds",c)[u],f="day"===u?this.$D+(l-this.$W):l;if(u===i||u===a){var m=this.clone().set(o,1);m.$d[h](f),m.init(),this.$d=m.set(o,Math.min(this.$D,m.daysInMonth())).$d}else h&&this.$d[h](f);return this.init(),this},f.set=function(e,t){return this.clone().$set(e,t)},f.get=function(e){return this[S.p(e)]()},f.add=function(e,l){var o,c=this;e=Number(e);var u=S.p(l),d=function(t){var n=v(c);return S.w(n.date(n.date()+Math.round(t*e)),c)};if(u===i)return this.set(i,this.$M+e);if(u===a)return this.set(a,this.$y+e);if("day"===u)return d(1);if(u===s)return d(7);var h=((o={})[n]=6e4,o[r]=36e5,o[t]=1e3,o)[u]||1,f=this.$d.getTime()+e*h;return S.w(f,this)},f.subtract=function(e,t){return this.add(-1*e,t)},f.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||c;var r=e||"YYYY-MM-DDTHH:mm:ssZ",s=S.z(this),i=this.$H,l=this.$m,a=this.$M,o=n.weekdays,u=n.months,h=n.meridiem,f=function(e,n,s,i){return e&&(e[n]||e(t,r))||s[n].slice(0,i)},m=function(e){return S.s(i%12||12,e,"0")},x=h||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(d,function(e,r){return r||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return S.s(t.$y,4,"0");case"M":return a+1;case"MM":return S.s(a+1,2,"0");case"MMM":return f(n.monthsShort,a,u,3);case"MMMM":return f(u,a);case"D":return t.$D;case"DD":return S.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return f(n.weekdaysMin,t.$W,o,2);case"ddd":return f(n.weekdaysShort,t.$W,o,3);case"dddd":return o[t.$W];case"H":return String(i);case"HH":return S.s(i,2,"0");case"h":return m(1);case"hh":return m(2);case"a":return x(i,l,!0);case"A":return x(i,l,!1);case"m":return String(l);case"mm":return S.s(l,2,"0");case"s":return String(t.$s);case"ss":return S.s(t.$s,2,"0");case"SSS":return S.s(t.$ms,3,"0");case"Z":return s}return null}(e)||s.replace(":","")})},f.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},f.diff=function(e,o,c){var u,d=this,h=S.p(o),f=v(e),m=(f.utcOffset()-this.utcOffset())*6e4,x=this-f,p=function(){return S.m(d,f)};switch(h){case a:u=p()/12;break;case i:u=p();break;case l:u=p()/3;break;case s:u=(x-m)/6048e5;break;case"day":u=(x-m)/864e5;break;case r:u=x/36e5;break;case n:u=x/6e4;break;case t:u=x/1e3;break;default:u=x}return c?u:S.a(u)},f.daysInMonth=function(){return this.endOf(i).$D},f.$locale=function(){return m[this.$L]},f.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=g(e,t,!0);return r&&(n.$L=r),n},f.clone=function(){return S.w(this.$d,this)},f.toDate=function(){return new Date(this.valueOf())},f.toJSON=function(){return this.isValid()?this.toISOString():null},f.toISOString=function(){return this.$d.toISOString()},f.toString=function(){return this.$d.toUTCString()},h}(),b=w.prototype;return v.prototype=b,[["$ms",e],["$s",t],["$m",n],["$H",r],["$W","day"],["$M",i],["$y",a],["$D",o]].forEach(function(e){b[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),v.extend=function(e,t){return e.$i||(e(t,w,v),e.$i=!0),v},v.locale=g,v.isDayjs=p,v.unix=function(e){return v(1e3*e)},v.en=m[f],v.Ls=m,v.p={},v}()},417612,293821,222850,e=>{"use strict";var t=e.i(890022),n=e.i(431231),r=e.i(987985);let s="u">typeof window?n.useLayoutEffect:n.useEffect;function i(e){if(void 0!==e)switch(typeof e){case"number":return e;case"string":if(e.endsWith("px"))return parseFloat(e)}}let l=null;function a({containerElement:e,direction:t,isRtl:n,scrollOffset:r}){if("horizontal"===t&&n)switch(function(e=!1){if(null===l||e){let e=document.createElement("div"),t=e.style;t.width="50px",t.height="50px",t.overflow="scroll",t.direction="rtl";let n=document.createElement("div"),r=n.style;return r.width="100px",r.height="100px",e.appendChild(n),document.body.appendChild(e),e.scrollLeft>0?l="positive-descending":(e.scrollLeft=1,l=0===e.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(e),l}return l}()){case"negative":return-r;case"positive-descending":if(e){let{clientWidth:t,scrollLeft:n,scrollWidth:r}=e;return r-t-n}}return r}function o(e,t="Assertion error"){if(!e)throw console.error(t),Error(t)}function c(e,t){if(e===t)return!0;if(!!e!=!!t||(o(void 0!==e),o(void 0!==t),Object.keys(e).length!==Object.keys(t).length))return!1;for(let n in e)if(!Object.is(t[n],e[n]))return!1;return!0}function u({cachedBounds:e,itemCount:t,itemSize:n}){if(0===t)return 0;if("number"==typeof n)return t*n;{let n=e.get(0===e.size?0:e.size-1);return o(void 0!==n,"Unexpected bounds cache miss"),t*((n.scrollOffset+n.size)/e.size)}}function d({cachedBounds:e,containerScrollOffset:t,containerSize:n,itemCount:r,overscanCount:s}){let i=r-1,l=0,a=-1,o=0,c=-1,u=0;for(;u<i;){let n=e.get(u);if(n.scrollOffset+n.size>t)break;u++}for(o=Math.max(0,(l=u)-s);u<i;){let r=e.get(u);if(r.scrollOffset+r.size>=t+n)break;u++}return c=Math.min(r-1,(a=Math.min(i,u))+s),l<0&&(l=0,a=-1,o=0,c=-1),{startIndexVisible:l,stopIndexVisible:a,startIndexOverscan:o,stopIndexOverscan:c}}function h(e,t){let{ariaAttributes:n,style:r,...s}=e,{ariaAttributes:i,style:l,...a}=t;return c(n,i)&&c(r,l)&&c(s,a)}function f({children:e,className:r,defaultHeight:l=0,listRef:f,onResize:m,onRowsRendered:x,overscanCount:p=3,rowComponent:g,rowCount:v,rowHeight:S,rowProps:w,tagName:b="div",style:y,...j}){let $=(0,n.useMemo)(()=>w,Object.values(w)),C=(0,n.useMemo)(()=>(0,n.memo)(g,h),[g]),[N,M]=(0,n.useState)(null),I=null!=S&&"object"==typeof S&&"getAverageRowHeight"in S&&"function"==typeof S.getAverageRowHeight,{getCellBounds:O,getEstimatedSize:z,scrollToIndex:T,startIndexOverscan:k,startIndexVisible:D,stopIndexOverscan:A,stopIndexVisible:E}=function({containerElement:e,containerStyle:t,defaultContainerSize:r=0,direction:l,isRtl:h=!1,itemCount:f,itemProps:m,itemSize:x,onResize:p,overscanCount:g}){var v;let S,[w,b]=(0,n.useState)({startIndexVisible:0,startIndexOverscan:0,stopIndexVisible:-1,stopIndexOverscan:-1}),{startIndexVisible:y,startIndexOverscan:j,stopIndexVisible:$,stopIndexOverscan:C}={startIndexVisible:Math.min(f-1,w.startIndexVisible),startIndexOverscan:Math.min(f-1,w.startIndexOverscan),stopIndexVisible:Math.min(f-1,w.stopIndexVisible),stopIndexOverscan:Math.min(f-1,w.stopIndexOverscan)},{height:N=r,width:M=r}=function({box:e,defaultHeight:t,defaultWidth:r,disabled:l,element:a,mode:o,style:c}){let{styleHeight:u,styleWidth:d}=(0,n.useMemo)(()=>({styleHeight:i(c?.height),styleWidth:i(c?.width)}),[c?.height,c?.width]),[h,f]=(0,n.useState)({height:t,width:r}),m=l||"only-height"===o&&void 0!==u||"only-width"===o&&void 0!==d||void 0!==u&&void 0!==d;return s(()=>{if(null===a||m)return;let t=new ResizeObserver(e=>{for(let t of e){let{contentRect:e,target:n}=t;a===n&&f(t=>t.height===e.height&&t.width===e.width?t:{height:e.height,width:e.width})}});return t.observe(a,{box:e}),()=>{t?.unobserve(a)}},[e,m,a,u,d]),(0,n.useMemo)(()=>({height:u??h.height,width:d??h.width}),[h,u,d])}({defaultHeight:"vertical"===l?r:void 0,defaultWidth:"horizontal"===l?r:void 0,element:e,mode:"vertical"===l?"only-height":"only-width",style:t}),I=(0,n.useRef)({height:0,width:0}),O="vertical"===l?N:M,z=function({containerSize:e,itemSize:t}){let n;return"string"==typeof t?(o(t.endsWith("%"),`Invalid item size: "${t}"; string values must be percentages (e.g. "100%")`),o(void 0!==e,"Container size must be defined if a percentage item size is specified"),n=e*parseInt(t)/100):n=t,n}({containerSize:O,itemSize:x});(0,n.useLayoutEffect)(()=>{if("function"==typeof p){let e=I.current;(e.height!==N||e.width!==M)&&(p({height:N,width:M},{...e}),e.height=N,e.width=M)}},[N,p,M]);let T=function({itemCount:e,itemProps:t,itemSize:r}){return(0,n.useMemo)(()=>(function({itemCount:e,itemProps:t,itemSize:n}){let r=new Map;return{get(s){for(o(s<e,`Invalid index ${s}`);r.size-1<s;){let e,i=r.size;switch(typeof n){case"function":e=n(i,t);break;case"number":e=n}if(0===i)r.set(i,{size:e,scrollOffset:0});else{let t=r.get(i-1);o(void 0!==t,`Unexpected bounds cache miss for index ${s}`),r.set(i,{scrollOffset:t.scrollOffset+t.size,size:e})}}let i=r.get(s);return o(void 0!==i,`Unexpected bounds cache miss for index ${s}`),i},set(e,t){r.set(e,t)},get size(){return r.size}}})({itemCount:e,itemProps:t,itemSize:r}),[e,t,r])}({itemCount:f,itemProps:m,itemSize:z}),k=(0,n.useCallback)(e=>T.get(e),[T]),D=(0,n.useCallback)(()=>u({cachedBounds:T,itemCount:f,itemSize:z}),[T,f,z]),A=(0,n.useCallback)(t=>d({cachedBounds:T,containerScrollOffset:a({containerElement:e,direction:l,isRtl:h,scrollOffset:t}),containerSize:O,itemCount:f,overscanCount:g}),[T,e,O,l,h,f,g]);return s(()=>{b(A(("vertical"===l?e?.scrollTop:e?.scrollLeft)??0))},[e,l,A]),s(()=>{if(!e)return;let t=()=>{b(t=>{let{scrollLeft:n,scrollTop:r}=e,s=d({cachedBounds:T,containerScrollOffset:a({containerElement:e,direction:l,isRtl:h,scrollOffset:"vertical"===l?r:n}),containerSize:O,itemCount:f,overscanCount:g});return c(s,t)?t:s})};return e.addEventListener("scroll",t),()=>{e.removeEventListener("scroll",t)}},[T,e,O,l,f,g]),{getCellBounds:k,getEstimatedSize:D,scrollToIndex:(v=({align:t="auto",containerScrollOffset:n,index:r})=>{let s=function({align:e,cachedBounds:t,index:n,itemCount:r,itemSize:s,containerScrollOffset:i,containerSize:l}){if(n<0||n>=r)throw RangeError(`Invalid index specified: ${n}`,{cause:`Index ${n} is not within the range of 0 - ${r-1}`});let a=u({cachedBounds:t,itemCount:r,itemSize:s}),o=t.get(n),c=Math.max(0,Math.min(a-l,o.scrollOffset)),d=Math.max(0,o.scrollOffset-l+o.size);switch("smart"===e&&(e=i>=d&&i<=c?"auto":"center"),e){case"start":return c;case"end":return d;case"center":return o.scrollOffset<=l/2?0:o.scrollOffset+o.size/2>=a-l/2?a-l:o.scrollOffset+o.size/2-l/2;default:return i>=d&&i<=c?i:i<d?d:c}}({align:t,cachedBounds:T,containerScrollOffset:n,containerSize:O,index:r,itemCount:f,itemSize:z});if(e){if(s=a({containerElement:e,direction:l,isRtl:h,scrollOffset:s}),"function"!=typeof e.scrollTo){let e=A(s);c(w,e)||b(e)}return s}},S=(0,n.useRef)(()=>{throw Error("Cannot call during render.")}),s(()=>{S.current=v},[v]),(0,n.useCallback)(e=>S.current?.(e),[S])),startIndexOverscan:j,startIndexVisible:y,stopIndexOverscan:C,stopIndexVisible:$}}({containerElement:N,containerStyle:y,defaultContainerSize:l,direction:"vertical",itemCount:v,itemProps:$,itemSize:(0,n.useMemo)(()=>I?e=>S.getRowHeight(e)??S.getAverageRowHeight():S,[I,S]),onResize:m,overscanCount:p});(0,n.useImperativeHandle)(f,()=>({get element(){return N},scrollToRow({align:e="auto",behavior:t="auto",index:n}){let r=T({align:e,containerScrollOffset:N?.scrollTop??0,index:n});"function"==typeof N?.scrollTo&&N.scrollTo({behavior:t,top:r})}}),[N,T]),s(()=>{if(!N)return;let e=Array.from(N.children).filter((e,t)=>{if(e.hasAttribute("aria-hidden"))return!1;let n=`${k+t}`;return e.setAttribute("data-react-window-index",n),!0});if(I)return S.observeRowElements(e)},[N,I,S,k,A]),(0,n.useEffect)(()=>{k>=0&&A>=0&&x&&x({startIndex:D,stopIndex:E},{startIndex:k,stopIndex:A})},[x,k,D,A,E]);let R=(0,n.useMemo)(()=>{let e=[];if(v>0)for(let t=k;t<=A;t++){let r=O(t);e.push((0,n.createElement)(C,{...$,ariaAttributes:{"aria-posinset":t+1,"aria-setsize":v,role:"listitem"},key:t,index:t,style:{position:"absolute",left:0,transform:`translateY(${r.scrollOffset}px)`,height:I?void 0:r.size,width:"100%"}}))}return e},[C,O,I,v,$,k,A]),H=(0,t.jsx)("div",{"aria-hidden":!0,style:{height:z(),width:"100%",zIndex:-1}});return(0,n.createElement)(b,{role:"list",...j,className:r,ref:M,style:{position:"relative",maxHeight:"100%",flexGrow:1,overflowY:"auto",...y}},R,e,H)}n.useState,n.useRef,n.useState,n.useRef;var m=e.i(300329),x=e.i(158362),p=e.i(525761),g=e.i(644021);let v=(0,e.i(122436).default)("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]);var S=e.i(21079),w=e.i(235893),b=e.i(168497),y=e.i(308402),j=e.i(708737),$=e.i(632137),C=e.i(597705),N=e.i(145878);let M={specs:[],signature:null,scrollTop:0,activeSpecId:null},I=[],O=new Set,z=new Set,T=new Set;function k(){for(let e of O)e()}function D(e){return O.add(e),()=>{O.delete(e)}}function A(){return M}function E(){return(0,n.useSyncExternalStore)(D,A,()=>M)}function R(){let e=n.useCallback(e=>(z.add(e),()=>{z.delete(e)}),[]);return(0,n.useSyncExternalStore)(e,()=>A().specs,()=>I)}function H(){let e=n.useCallback(e=>(T.add(e),()=>{T.delete(e)}),[]);return(0,n.useSyncExternalStore)(e,()=>A().activeSpecId,()=>null)}function L(e){if(0===e.length)return;let t=e.map(e=>[e.id,e.specNumber??"",e.title??"",e.status??"",e.priority??"",e.updatedAt?new Date(e.updatedAt).getTime():0].join(":")).join("|");if(t!==M.signature)for(let n of(M={...M,specs:e,signature:t},k(),z))n()}function V(e){if(M.activeSpecId!==e)for(let t of(M={...M,activeSpecId:e},k(),T))t()}function B(e){1>Math.abs(e-M.scrollTop)||(M={...M,scrollTop:e})}function P(){return M.scrollTop}e.s(["getSidebarScrollTop",()=>P,"primeSpecsSidebar",()=>L,"setActiveSidebarSpec",()=>V,"updateSidebarScrollTop",()=>B,"useSpecsSidebarActiveSpec",()=>H,"useSpecsSidebarSpecs",()=>R,"useSpecsSidebarState",()=>E],293821);let _=n.useLayoutEffect;function W({initialSpecs:e=[],currentSpecId:s,currentSubSpec:i,onSpecHover:l,className:a}){let[o,c]=n.useState(""),[u,d]=n.useState("all"),[h,M]=n.useState("all"),[I,O]=n.useState("all"),[z,T]=n.useState(!1),[k,D]=n.useState(()=>"true"===localStorage.getItem("specs-nav-sidebar-collapsed")),[A,E]=n.useState(!1),[L,V]=n.useState(!1),W=n.useRef(null),Y=n.useRef(null),F=n.useRef(!1),U=n.useRef(null),q=n.useRef(0),J=n.useRef(!1),Z=n.useRef(!0),K=R(),G=H(),Q=n.useMemo(()=>K.length>0?K:e,[K,e]),X=s||G||"";n.useEffect(()=>{V(!0)},[]),n.useEffect(()=>{document.documentElement.style.setProperty("--specs-nav-sidebar-width",k?"0px":"280px"),localStorage.setItem("specs-nav-sidebar-collapsed",String(k))},[k]),n.useEffect(()=>{E(!1)},[X,i]);let ee=n.useMemo(()=>{let e=Q;if(o){let t=o.toLowerCase();e=e.filter(e=>e.title?.toLowerCase().includes(t)||e.specName.toLowerCase().includes(t)||e.specNumber?.toString().includes(t))}return"all"!==u&&(e=e.filter(e=>e.status===u)),"all"!==h&&(e=e.filter(e=>e.priority===h)),"all"!==I&&(e=e.filter(e=>e.tags?.includes(I))),console.debug(e),e},[Q,o,u,h,I]),et=n.useMemo(()=>{let e=new Set;return Q.forEach(t=>{t.tags?.forEach(t=>e.add(t))}),Array.from(e).sort()},[Q]),en="all"!==u||"all"!==h||"all"!==I,er=n.useMemo(()=>[...ee].sort((e,t)=>(t.specNumber||0)-(e.specNumber||0)),[ee]);_(()=>{let e=null,t=null;q.current=P(),J.current=q.current>0;let n=()=>{let r=U.current?.element;if(!r){e=window.requestAnimationFrame(n);return}F.current||(q.current>0&&(r.scrollTop=q.current),F.current=!0);let s=()=>{null===Y.current&&(Y.current=window.requestAnimationFrame(()=>{Y.current=null,q.current=r.scrollTop,B(r.scrollTop)}))};r.addEventListener("scroll",s,{passive:!0}),t=()=>{r.removeEventListener("scroll",s)}};return n(),()=>{t&&t(),null!==e&&window.cancelAnimationFrame(e),null!==Y.current&&(window.cancelAnimationFrame(Y.current),Y.current=null)}},[]),_(()=>{if(!Z.current||(Z.current=!1,J.current||!X))return;let e=null,t=()=>{if(J.current)return;if(!F.current||!U.current){e=window.requestAnimationFrame(t);return}let n=er.findIndex(e=>e.id===X);-1!==n&&(J.current=!0,U.current.scrollToRow({index:n,align:"center"}))};return t(),()=>{null!==e&&window.cancelAnimationFrame(e)}},[er,X]),n.useEffect(()=>(window.toggleSpecsSidebar=()=>E(e=>!e),()=>{window.toggleSpecsSidebar=void 0}),[]);let es=n.useCallback(e=>{let{index:n,style:s}=e,a=er[n],o=a.id===X,c=(a.contentMd?(0,$.extractH1Title)(a.contentMd):null)||a.title||a.specName;return(0,t.jsx)("div",{style:s,className:"px-1",children:(0,t.jsx)("div",{className:"mb-0.5",children:(0,t.jsx)("div",{className:"flex items-center gap-0.5",children:(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsxs)(r.default,{ref:o&&!i?W:null,href:`/specs/${a.specNumber||a.id}`,onMouseEnter:()=>l?.(a.specNumber?.toString()||a.id),className:(0,$.cn)("w-full flex flex-col gap-1 p-1.5 rounded-md text-sm transition-colors",o?"bg-accent text-accent-foreground font-medium":"hover:bg-accent/50"),children:[(0,t.jsxs)("div",{className:"flex items-center gap-1.5",children:[a.specNumber&&(0,t.jsxs)("span",{className:"text-xs font-mono text-muted-foreground shrink-0",children:["#",a.specNumber.toString().padStart(3,"0")]}),(0,t.jsx)("span",{className:"truncate text-xs leading-relaxed",children:c})]}),(0,t.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[a.status&&(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(b.StatusBadge,{status:a.status,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,t.jsx)(y.TooltipContent,{side:"right",children:(0,b.getStatusLabel)(a.status)})]}),a.priority&&(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("div",{children:(0,t.jsx)(C.PriorityBadge,{priority:a.priority,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,t.jsx)(y.TooltipContent,{side:"right",children:(0,C.getPriorityLabel)(a.priority)})]}),"number"==typeof a.subSpecsCount&&a.subSpecsCount>0&&(0,t.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["+",a.subSpecsCount," files"]}),a.updatedAt&&(0,t.jsx)("span",{className:"text-[10px] text-muted-foreground",children:(0,N.formatRelativeTime)(a.updatedAt)})]})]})}),(0,t.jsx)(y.TooltipContent,{side:"right",className:"max-w-[300px]",children:(0,t.jsxs)("div",{className:"space-y-1",children:[(0,t.jsx)("div",{className:"font-semibold",children:c}),(0,t.jsx)("div",{className:"text-xs text-muted-foreground",children:a.specName})]})})]})})})})},[er,X,i,l]),ei=n.useMemo(()=>window.innerHeight-56-180,[]),el=n.useMemo(()=>n.memo(f),[]);return(0,t.jsxs)(y.TooltipProvider,{delayDuration:700,children:[A&&(0,t.jsx)("div",{className:"fixed inset-0 bg-black/50 z-40 lg:hidden",onClick:()=>E(!1)}),(0,t.jsxs)("div",{className:(0,$.cn)("relative flex-shrink-0",a),children:[(0,t.jsxs)("aside",{className:(0,$.cn)("border-r border-border bg-background flex flex-col overflow-hidden transition-all duration-300","hidden lg:flex lg:sticky lg:top-14 lg:h-[calc(100vh-3.5rem)]",L&&k?"lg:w-0 lg:border-r-0":"lg:w-[280px]",A&&"fixed inset-y-0 left-0 z-[60] flex w-[280px]"),children:[(0,t.jsxs)("div",{className:"p-4 border-b border-border",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsx)("h2",{className:"font-semibold text-sm",children:"Specifications"}),(0,t.jsxs)("div",{className:"flex items-center gap-1",children:[(0,t.jsxs)(y.Tooltip,{children:[(0,t.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,t.jsx)(w.Button,{variant:z||en?"default":"ghost",size:"sm",onClick:()=>T(!z),className:"h-6 w-6 p-0",children:(0,t.jsx)(v,{className:"h-4 w-4"})})}),(0,t.jsx)(y.TooltipContent,{side:"bottom",children:z?"Hide filters":"Show filters"})]}),(0,t.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>E(!1),className:"h-6 w-6 p-0 lg:hidden",children:(0,t.jsx)(g.X,{className:"h-4 w-4"})}),(0,t.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>D(!0),className:"h-6 w-6 p-0 hidden lg:flex lg:items-center lg:justify-center",children:(0,t.jsx)(x.ChevronLeft,{className:"h-4 w-4"})})]})]}),z&&(0,t.jsxs)("div",{className:"space-y-2 mb-3 pb-3 border-b border-border",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:"Filters"}),en&&(0,t.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>{d("all"),M("all"),O("all")},className:"h-5 text-xs px-2 py-0",children:"Clear"})]}),(0,t.jsxs)(j.Select,{value:u,onValueChange:d,children:[(0,t.jsx)(j.SelectTrigger,{className:"h-8 text-xs",children:(0,t.jsx)(j.SelectValue,{placeholder:"Status"})}),(0,t.jsxs)(j.SelectContent,{children:[(0,t.jsx)(j.SelectItem,{value:"all",children:"All Status"}),(0,t.jsx)(j.SelectItem,{value:"planned",children:"Planned"}),(0,t.jsx)(j.SelectItem,{value:"in-progress",children:"In Progress"}),(0,t.jsx)(j.SelectItem,{value:"complete",children:"Complete"}),(0,t.jsx)(j.SelectItem,{value:"archived",children:"Archived"})]})]}),(0,t.jsxs)(j.Select,{value:h,onValueChange:M,children:[(0,t.jsx)(j.SelectTrigger,{className:"h-8 text-xs",children:(0,t.jsx)(j.SelectValue,{placeholder:"Priority"})}),(0,t.jsxs)(j.SelectContent,{children:[(0,t.jsx)(j.SelectItem,{value:"all",children:"All Priority"}),(0,t.jsx)(j.SelectItem,{value:"low",children:"Low"}),(0,t.jsx)(j.SelectItem,{value:"medium",children:"Medium"}),(0,t.jsx)(j.SelectItem,{value:"high",children:"High"}),(0,t.jsx)(j.SelectItem,{value:"critical",children:"Critical"})]})]}),et.length>0&&(0,t.jsxs)(j.Select,{value:I,onValueChange:O,children:[(0,t.jsx)(j.SelectTrigger,{className:"h-8 text-xs",children:(0,t.jsx)(j.SelectValue,{placeholder:"Tag"})}),(0,t.jsxs)(j.SelectContent,{children:[(0,t.jsx)(j.SelectItem,{value:"all",children:"All Tags"}),et.map(e=>(0,t.jsx)(j.SelectItem,{value:e,children:e},e))]})]})]}),(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)(m.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,t.jsx)(S.Input,{placeholder:"Search specs...",value:o,onChange:e=>c(e.target.value),className:"pl-8 h-9 border-border"})]})]}),(0,t.jsx)("div",{className:"flex-1 overflow-hidden",children:0===er.length?(0,t.jsx)("div",{className:"text-center py-8 text-sm text-muted-foreground",children:"No specs found"}):(0,t.jsx)(el,{listRef:U,defaultHeight:ei,rowCount:er.length,rowHeight:72,overscanCount:5,rowComponent:es,rowProps:{}})})]}),L&&k&&(0,t.jsx)(w.Button,{variant:"ghost",size:"sm",onClick:()=>D(!1),className:"hidden lg:items-center lg:justify-center lg:flex h-6 w-6 p-0 fixed z-50 top-20 -translate-y-1 -translate-x-1/2 left-[calc(var(--main-sidebar-width,240px))] bg-background border",children:(0,t.jsx)(p.ChevronRight,{className:"h-4 w-4"})})]})]})}function Y({className:e,...n}){return(0,t.jsx)("div",{className:(0,$.cn)("animate-pulse rounded-md bg-muted",e),...n})}e.s(["SpecsNavSidebar",()=>W],417612),e.s(["Skeleton",()=>Y],222850)},653213,e=>{"use strict";var t=e.i(890022),n=e.i(417612),r=e.i(222850),s=e.i(293821);function i(){let e=(0,s.useSpecsSidebarState)(),i=e.specs,l=e.activeSpecId||"";return(0,t.jsxs)("div",{className:"flex min-h-[calc(100vh-3.5rem)] w-full min-w-0",children:[(0,t.jsx)(n.SpecsNavSidebar,{initialSpecs:i,currentSpecId:l}),(0,t.jsx)("div",{className:"flex-1 min-w-0 px-4 py-6 sm:px-8 sm:py-10",children:(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("div",{className:"space-y-3",children:[(0,t.jsx)(r.Skeleton,{className:"h-7 w-56"}),(0,t.jsxs)("div",{className:"flex flex-wrap gap-3",children:[(0,t.jsx)(r.Skeleton,{className:"h-6 w-24"}),(0,t.jsx)(r.Skeleton,{className:"h-6 w-24"}),(0,t.jsx)(r.Skeleton,{className:"h-6 w-20"})]}),(0,t.jsx)(r.Skeleton,{className:"h-4 w-64"})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)(r.Skeleton,{className:"h-5 w-40"}),(0,t.jsx)(r.Skeleton,{className:"h-32 w-full"})]}),(0,t.jsx)("div",{className:"space-y-4",children:[...Array(6)].map((e,n)=>(0,t.jsx)(r.Skeleton,{className:"h-4 w-full"},n))})]})})]})}e.s(["SpecDetailLoadingShell",()=>i])}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,995403,t=>{"use strict";var e=t.i(431231),a=t.i(395635);let r=Array(12).fill(0),o=({visible:t,className:a})=>e.default.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":t},e.default.createElement("div",{className:"sonner-spinner"},r.map((t,a)=>e.default.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),s=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),n=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),i=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),l=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),d=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},e.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),c=1,u=new class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:a,...r}=t,o="number"==typeof(null==t?void 0:t.id)||(null==(e=t.id)?void 0:e.length)>0?t.id:c++,s=this.toasts.find(t=>t.id===o),n=void 0===t.dismissible||t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),s?this.toasts=this.toasts.map(e=>e.id===o?(this.publish({...e,...t,id:o,title:a}),{...e,...t,id:o,dismissible:n,title:a}):e):this.addToast({title:a,...r,dismissible:n,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:t,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(e=>e({id:t.id,dismiss:!0}))}),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,a)=>{let r,o;if(!a)return;void 0!==a.loading&&(o=this.create({...a,promise:t,type:"loading",message:a.loading,description:"function"!=typeof a.description?a.description:void 0}));let s=Promise.resolve(t instanceof Function?t():t),n=void 0!==o,i=s.then(async t=>{if(r=["resolve",t],e.default.isValidElement(t))n=!1,this.create({id:o,type:"default",message:t});else if(f(t)&&!t.ok){n=!1;let r="function"==typeof a.error?await a.error(`HTTP error! status: ${t.status}`):a.error,s="function"==typeof a.description?await a.description(`HTTP error! status: ${t.status}`):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}else if(t instanceof Error){n=!1;let r="function"==typeof a.error?await a.error(t):a.error,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}else if(void 0!==a.success){n=!1;let r="function"==typeof a.success?await a.success(t):a.success,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"success",description:s,...i})}}).catch(async t=>{if(r=["reject",t],void 0!==a.error){n=!1;let r="function"==typeof a.error?await a.error(t):a.error,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}}).finally(()=>{n&&(this.dismiss(o),o=void 0),null==a.finally||a.finally.call(a)}),l=()=>new Promise((t,e)=>i.then(()=>"reject"===r[0]?e(r[1]):t(r[1])).catch(e));return"string"!=typeof o&&"number"!=typeof o?{unwrap:l}:Object.assign(o,{unwrap:l})},this.custom=(t,e)=>{let a=(null==e?void 0:e.id)||c++;return this.create({jsx:t(a),id:a,...e}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},f=t=>t&&"object"==typeof t&&"ok"in t&&"boolean"==typeof t.ok&&"status"in t&&"number"==typeof t.status,m=Object.assign((t,e)=>{let a=(null==e?void 0:e.id)||c++;return u.addToast({title:t,...e,id:a}),a},{success:u.success,info:u.info,warning:u.warning,error:u.error,custom:u.custom,message:u.message,promise:u.promise,dismiss:u.dismiss,loading:u.loading},{getHistory:()=>u.toasts,getToasts:()=>u.getActiveToasts()});function p(t){return void 0!==t.label}function h(...t){return t.filter(Boolean).join(" ")}!function(t){if(!t||"undefined"==typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",e.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");let g=t=>{var a,r,c,u,f,m,g,v,y,b,x,w,j;let{invert:k,toast:E,unstyled:N,interacting:C,setHeights:S,visibleToasts:T,heights:B,index:M,toasts:P,expanded:z,removeToast:D,defaultRichColors:R,closeButton:A,style:L,cancelButtonStyle:F,actionButtonStyle:$,className:Y="",descriptionClassName:H="",duration:I,position:O,gap:V,expandByDefault:U,classNames:X,icons:K,closeButtonAriaLabel:J="Close toast"}=t,[W,q]=e.default.useState(null),[G,Z]=e.default.useState(null),[Q,_]=e.default.useState(!1),[tt,te]=e.default.useState(!1),[ta,tr]=e.default.useState(!1),[to,ts]=e.default.useState(!1),[tn,ti]=e.default.useState(!1),[tl,td]=e.default.useState(0),[tc,tu]=e.default.useState(0),tf=e.default.useRef(E.duration||I||4e3),tm=e.default.useRef(null),tp=e.default.useRef(null),th=0===M,tg=M+1<=T,tv=E.type,ty=!1!==E.dismissible,tb=E.className||"",tx=E.descriptionClassName||"",tw=e.default.useMemo(()=>B.findIndex(t=>t.toastId===E.id)||0,[B,E.id]),tj=e.default.useMemo(()=>{var t;return null!=(t=E.closeButton)?t:A},[E.closeButton,A]),tk=e.default.useMemo(()=>E.duration||I||4e3,[E.duration,I]),tE=e.default.useRef(0),tN=e.default.useRef(0),tC=e.default.useRef(0),tS=e.default.useRef(null),[tT,tB]=O.split("-"),tM=e.default.useMemo(()=>B.reduce((t,e,a)=>a>=tw?t:t+e.height,0),[B,tw]),tP=(()=>{let[t,a]=e.default.useState(document.hidden);return e.default.useEffect(()=>{let t=()=>{a(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),t})(),tz=E.invert||k,tD="loading"===tv;tN.current=e.default.useMemo(()=>tw*V+tM,[tw,tM]),e.default.useEffect(()=>{tf.current=tk},[tk]),e.default.useEffect(()=>{_(!0)},[]),e.default.useEffect(()=>{let t=tp.current;if(t){let e=t.getBoundingClientRect().height;return tu(e),S(t=>[{toastId:E.id,height:e,position:E.position},...t]),()=>S(t=>t.filter(t=>t.toastId!==E.id))}},[S,E.id]),e.default.useLayoutEffect(()=>{if(!Q)return;let t=tp.current,e=t.style.height;t.style.height="auto";let a=t.getBoundingClientRect().height;t.style.height=e,tu(a),S(t=>t.find(t=>t.toastId===E.id)?t.map(t=>t.toastId===E.id?{...t,height:a}:t):[{toastId:E.id,height:a,position:E.position},...t])},[Q,E.title,E.description,S,E.id,E.jsx,E.action,E.cancel]);let tR=e.default.useCallback(()=>{te(!0),td(tN.current),S(t=>t.filter(t=>t.toastId!==E.id)),setTimeout(()=>{D(E)},200)},[E,D,S,tN]);e.default.useEffect(()=>{let t;if((!E.promise||"loading"!==tv)&&E.duration!==1/0&&"loading"!==E.type){if(z||C||tP){if(tC.current<tE.current){let t=new Date().getTime()-tE.current;tf.current=tf.current-t}tC.current=new Date().getTime()}else tf.current!==1/0&&(tE.current=new Date().getTime(),t=setTimeout(()=>{null==E.onAutoClose||E.onAutoClose.call(E,E),tR()},tf.current));return()=>clearTimeout(t)}},[z,C,E,tv,tP,tR]),e.default.useEffect(()=>{E.delete&&(tR(),null==E.onDismiss||E.onDismiss.call(E,E))},[tR,E.delete]);let tA=E.icon||(null==K?void 0:K[tv])||(t=>{switch(t){case"success":return s;case"info":return i;case"warning":return n;case"error":return l;default:return null}})(tv);return e.default.createElement("li",{tabIndex:0,ref:tp,className:h(Y,tb,null==X?void 0:X.toast,null==E||null==(a=E.classNames)?void 0:a.toast,null==X?void 0:X.default,null==X?void 0:X[tv],null==E||null==(r=E.classNames)?void 0:r[tv]),"data-sonner-toast":"","data-rich-colors":null!=(b=E.richColors)?b:R,"data-styled":!(E.jsx||E.unstyled||N),"data-mounted":Q,"data-promise":!!E.promise,"data-swiped":tn,"data-removed":tt,"data-visible":tg,"data-y-position":tT,"data-x-position":tB,"data-index":M,"data-front":th,"data-swiping":ta,"data-dismissible":ty,"data-type":tv,"data-invert":tz,"data-swipe-out":to,"data-swipe-direction":G,"data-expanded":!!(z||U&&Q),"data-testid":E.testId,style:{"--index":M,"--toasts-before":M,"--z-index":P.length-M,"--offset":`${tt?tl:tN.current}px`,"--initial-height":U?"auto":`${tc}px`,...L,...E.style},onDragEnd:()=>{tr(!1),q(null),tS.current=null},onPointerDown:t=>{2===t.button||tD||!ty||(tm.current=new Date,td(tN.current),t.target.setPointerCapture(t.pointerId),"BUTTON"!==t.target.tagName&&(tr(!0),tS.current={x:t.clientX,y:t.clientY}))},onPointerUp:()=>{var t,e,a,r,o;if(to||!ty)return;tS.current=null;let s=Number((null==(t=tp.current)?void 0:t.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),n=Number((null==(e=tp.current)?void 0:e.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),i=new Date().getTime()-(null==(a=tm.current)?void 0:a.getTime()),l="x"===W?s:n,d=Math.abs(l)/i;if(Math.abs(l)>=45||d>.11){td(tN.current),null==E.onDismiss||E.onDismiss.call(E,E),"x"===W?Z(s>0?"right":"left"):Z(n>0?"down":"up"),tR(),ts(!0);return}null==(r=tp.current)||r.style.setProperty("--swipe-amount-x","0px"),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y","0px"),ti(!1),tr(!1),q(null)},onPointerMove:e=>{var a,r,o,s;if(!tS.current||!ty||(null==(a=window.getSelection())?void 0:a.toString().length)>0)return;let n=e.clientY-tS.current.y,i=e.clientX-tS.current.x,l=null!=(s=t.swipeDirections)?s:function(t){let[e,a]=t.split("-"),r=[];return e&&r.push(e),a&&r.push(a),r}(O);!W&&(Math.abs(i)>1||Math.abs(n)>1)&&q(Math.abs(i)>Math.abs(n)?"x":"y");let d={x:0,y:0},c=t=>1/(1.5+Math.abs(t)/20);if("y"===W){if(l.includes("top")||l.includes("bottom"))if(l.includes("top")&&n<0||l.includes("bottom")&&n>0)d.y=n;else{let t=n*c(n);d.y=Math.abs(t)<Math.abs(n)?t:n}}else if("x"===W&&(l.includes("left")||l.includes("right")))if(l.includes("left")&&i<0||l.includes("right")&&i>0)d.x=i;else{let t=i*c(i);d.x=Math.abs(t)<Math.abs(i)?t:i}(Math.abs(d.x)>0||Math.abs(d.y)>0)&&ti(!0),null==(r=tp.current)||r.style.setProperty("--swipe-amount-x",`${d.x}px`),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y",`${d.y}px`)}},tj&&!E.jsx&&"loading"!==tv?e.default.createElement("button",{"aria-label":J,"data-disabled":tD,"data-close-button":!0,onClick:tD||!ty?()=>{}:()=>{tR(),null==E.onDismiss||E.onDismiss.call(E,E)},className:h(null==X?void 0:X.closeButton,null==E||null==(c=E.classNames)?void 0:c.closeButton)},null!=(x=null==K?void 0:K.close)?x:d):null,(tv||E.icon||E.promise)&&null!==E.icon&&((null==K?void 0:K[tv])!==null||E.icon)?e.default.createElement("div",{"data-icon":"",className:h(null==X?void 0:X.icon,null==E||null==(u=E.classNames)?void 0:u.icon)},E.promise||"loading"===E.type&&!E.icon?E.icon||((null==K?void 0:K.loading)?e.default.createElement("div",{className:h(null==X?void 0:X.loader,null==E||null==(j=E.classNames)?void 0:j.loader,"sonner-loader"),"data-visible":"loading"===tv},K.loading):e.default.createElement(o,{className:h(null==X?void 0:X.loader,null==E||null==(w=E.classNames)?void 0:w.loader),visible:"loading"===tv})):null,"loading"!==E.type?tA:null):null,e.default.createElement("div",{"data-content":"",className:h(null==X?void 0:X.content,null==E||null==(f=E.classNames)?void 0:f.content)},e.default.createElement("div",{"data-title":"",className:h(null==X?void 0:X.title,null==E||null==(m=E.classNames)?void 0:m.title)},E.jsx?E.jsx:"function"==typeof E.title?E.title():E.title),E.description?e.default.createElement("div",{"data-description":"",className:h(H,tx,null==X?void 0:X.description,null==E||null==(g=E.classNames)?void 0:g.description)},"function"==typeof E.description?E.description():E.description):null),e.default.isValidElement(E.cancel)?E.cancel:E.cancel&&p(E.cancel)?e.default.createElement("button",{"data-button":!0,"data-cancel":!0,style:E.cancelButtonStyle||F,onClick:t=>{!p(E.cancel)||ty&&(null==E.cancel.onClick||E.cancel.onClick.call(E.cancel,t),tR())},className:h(null==X?void 0:X.cancelButton,null==E||null==(v=E.classNames)?void 0:v.cancelButton)},E.cancel.label):null,e.default.isValidElement(E.action)?E.action:E.action&&p(E.action)?e.default.createElement("button",{"data-button":!0,"data-action":!0,style:E.actionButtonStyle||$,onClick:t=>{!p(E.action)||(null==E.action.onClick||E.action.onClick.call(E.action,t),t.defaultPrevented||tR())},className:h(null==X?void 0:X.actionButton,null==E||null==(y=E.classNames)?void 0:y.actionButton)},E.action.label):null)};function v(){if("undefined"==typeof window||"undefined"==typeof document)return"ltr";let t=document.documentElement.getAttribute("dir");return"auto"!==t&&t?t:window.getComputedStyle(document.documentElement).direction}let y=e.default.forwardRef(function(t,r){let{id:o,invert:s,position:n="bottom-right",hotkey:i=["altKey","KeyT"],expand:l,closeButton:d,className:c,offset:f,mobileOffset:m,theme:p="light",richColors:h,duration:y,style:b,visibleToasts:x=3,toastOptions:w,dir:j=v(),gap:k=14,icons:E,containerAriaLabel:N="Notifications"}=t,[C,S]=e.default.useState([]),T=e.default.useMemo(()=>o?C.filter(t=>t.toasterId===o):C.filter(t=>!t.toasterId),[C,o]),B=e.default.useMemo(()=>Array.from(new Set([n].concat(T.filter(t=>t.position).map(t=>t.position)))),[T,n]),[M,P]=e.default.useState([]),[z,D]=e.default.useState(!1),[R,A]=e.default.useState(!1),[L,F]=e.default.useState("system"!==p?p:"undefined"!=typeof window&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),$=e.default.useRef(null),Y=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),H=e.default.useRef(null),I=e.default.useRef(!1),O=e.default.useCallback(t=>{S(e=>{var a;return(null==(a=e.find(e=>e.id===t.id))?void 0:a.delete)||u.dismiss(t.id),e.filter(({id:e})=>e!==t.id)})},[]);return e.default.useEffect(()=>u.subscribe(t=>{t.dismiss?requestAnimationFrame(()=>{S(e=>e.map(e=>e.id===t.id?{...e,delete:!0}:e))}):setTimeout(()=>{a.default.flushSync(()=>{S(e=>{let a=e.findIndex(e=>e.id===t.id);return -1!==a?[...e.slice(0,a),{...e[a],...t},...e.slice(a+1)]:[t,...e]})})})}),[C]),e.default.useEffect(()=>{if("system"!==p)return void F(p);if("system"===p&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?F("dark"):F("light")),"undefined"==typeof window)return;let t=window.matchMedia("(prefers-color-scheme: dark)");try{t.addEventListener("change",({matches:t})=>{t?F("dark"):F("light")})}catch(e){t.addListener(({matches:t})=>{try{t?F("dark"):F("light")}catch(t){console.error(t)}})}},[p]),e.default.useEffect(()=>{C.length<=1&&D(!1)},[C]),e.default.useEffect(()=>{let t=t=>{var e,a;i.every(e=>t[e]||t.code===e)&&(D(!0),null==(a=$.current)||a.focus()),"Escape"===t.code&&(document.activeElement===$.current||(null==(e=$.current)?void 0:e.contains(document.activeElement)))&&D(!1)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[i]),e.default.useEffect(()=>{if($.current)return()=>{H.current&&(H.current.focus({preventScroll:!0}),H.current=null,I.current=!1)}},[$.current]),e.default.createElement("section",{ref:r,"aria-label":`${N} ${Y}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},B.map((a,r)=>{var o;let n,[i,u]=a.split("-");return T.length?e.default.createElement("ol",{key:a,dir:"auto"===j?v():j,tabIndex:-1,ref:$,className:c,"data-sonner-toaster":!0,"data-sonner-theme":L,"data-y-position":i,"data-x-position":u,style:{"--front-toast-height":`${(null==(o=M[0])?void 0:o.height)||0}px`,"--width":"356px","--gap":`${k}px`,...b,...(n={},[f,m].forEach((t,e)=>{let a=1===e,r=a?"--mobile-offset":"--offset",o=a?"16px":"24px";function s(t){["top","right","bottom","left"].forEach(e=>{n[`${r}-${e}`]="number"==typeof t?`${t}px`:t})}"number"==typeof t||"string"==typeof t?s(t):"object"==typeof t?["top","right","bottom","left"].forEach(e=>{void 0===t[e]?n[`${r}-${e}`]=o:n[`${r}-${e}`]="number"==typeof t[e]?`${t[e]}px`:t[e]}):s(o)}),n)},onBlur:t=>{I.current&&!t.currentTarget.contains(t.relatedTarget)&&(I.current=!1,H.current&&(H.current.focus({preventScroll:!0}),H.current=null))},onFocus:t=>{!(t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible)&&(I.current||(I.current=!0,H.current=t.relatedTarget))},onMouseEnter:()=>D(!0),onMouseMove:()=>D(!0),onMouseLeave:()=>{R||D(!1)},onDragEnd:()=>D(!1),onPointerDown:t=>{t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible||A(!0)},onPointerUp:()=>A(!1)},T.filter(t=>!t.position&&0===r||t.position===a).map((r,o)=>{var n,i;return e.default.createElement(g,{key:r.id,icons:E,index:o,toast:r,defaultRichColors:h,duration:null!=(n=null==w?void 0:w.duration)?n:y,className:null==w?void 0:w.className,descriptionClassName:null==w?void 0:w.descriptionClassName,invert:s,visibleToasts:x,closeButton:null!=(i=null==w?void 0:w.closeButton)?i:d,interacting:R,position:a,style:null==w?void 0:w.style,unstyled:null==w?void 0:w.unstyled,classNames:null==w?void 0:w.classNames,cancelButtonStyle:null==w?void 0:w.cancelButtonStyle,actionButtonStyle:null==w?void 0:w.actionButtonStyle,closeButtonAriaLabel:null==w?void 0:w.closeButtonAriaLabel,removeToast:O,toasts:T.filter(t=>t.position==r.position),heights:M.filter(t=>t.position==r.position),setHeights:P,expandByDefault:l,gap:k,expanded:z,swipeDirections:t.swipeDirections})})):null}))});t.s(["Toaster",()=>y,"toast",()=>m])},178420,t=>{"use strict";var e=t.i(890022),a=t.i(995403),r=t.i(81795);function o(){let{theme:t}=(0,r.useTheme)();return(0,e.jsx)(a.Toaster,{theme:t,position:"bottom-right",richColors:!0,closeButton:!0,expand:!1,duration:4e3,toastOptions:{classNames:{toast:"group",title:"font-semibold",description:"text-sm opacity-90",actionButton:"bg-primary text-primary-foreground",cancelButton:"bg-muted text-muted-foreground"}}})}t.s(["Toast",()=>o])},20648,t=>{"use strict";var e=t.i(890022),a=t.i(431231);let r=(0,a.createContext)(null);function o(){let t=(0,a.useContext)(r);if(!t)throw Error("useProject must be used within ProjectProvider");return t}function s({children:t,initialProjectId:o}){let[s,n]=(0,a.useState)("single-project"),[i,l]=(0,a.useState)(null),[d,c]=(0,a.useState)([]),[u,f]=(0,a.useState)([]),[m,p]=(0,a.useState)([]),[h,g]=(0,a.useState)(!0),[v,y]=(0,a.useState)(null),b=(0,a.useCallback)(async()=>{try{g(!0),y(null);let t=await fetch("/api/projects");if(!t.ok)throw Error("Failed to fetch projects");let e=await t.json();if(n(e.mode||"single-project"),c(e.projects||[]),f(e.recentProjects||[]),p(e.favoriteProjects||[]),!i&&e.projects.length>0){let t=o?e.projects.find(t=>t.id===o):e.recentProjects?.[0]||e.projects[0];t&&l(t)}}catch(t){console.error("Error fetching projects:",t),y(t instanceof Error?t.message:"Failed to load projects")}finally{g(!1)}},[i,o]),x=(0,a.useCallback)(async t=>{try{let e=await fetch(`/api/projects/${t}`);if(!e.ok)throw Error("Failed to fetch project");let a=await e.json();l(a.project),await b()}catch(t){throw console.error("Error switching project:",t),y(t instanceof Error?t.message:"Failed to switch project"),t}},[b]),w=(0,a.useCallback)(async(t,e)=>{try{let a=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t,...e})});if(!a.ok){let t=await a.json();throw Error(t.details||"Failed to add project")}let r=await a.json();return await b(),r.project}catch(t){throw console.error("Error adding project:",t),y(t instanceof Error?t.message:"Failed to add project"),t}},[b]),j=(0,a.useCallback)(async t=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"DELETE"})).ok)throw Error("Failed to remove project");if(i?.id===t){let e=d.find(e=>e.id!==t);l(e||null)}await b()}catch(t){throw console.error("Error removing project:",t),y(t instanceof Error?t.message:"Failed to remove project"),t}},[i,d,b]),k=(0,a.useCallback)(async t=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({favorite:!0})})).ok)throw Error("Failed to toggle favorite");await b()}catch(t){throw console.error("Error toggling favorite:",t),y(t instanceof Error?t.message:"Failed to toggle favorite"),t}},[b]),E=(0,a.useCallback)(async(t,e)=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok)throw Error("Failed to update project");await b()}catch(t){throw console.error("Error updating project:",t),y(t instanceof Error?t.message:"Failed to update project"),t}},[b]);return(0,a.useEffect)(()=>{b()},[b]),(0,e.jsx)(r.Provider,{value:{mode:s,currentProject:i,projects:d,recentProjects:u,favoriteProjects:m,isLoading:h,error:v,switchProject:x,addProject:w,removeProject:j,toggleFavorite:k,updateProject:E,refreshProjects:b},children:t})}t.s(["ProjectProvider",()=>s,"useProject",()=>o])},787949,t=>{"use strict";let e=(0,t.i(122436).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);t.s(["Loader2",()=>e],787949)},963781,723882,828964,361877,t=>{"use strict";var e=t.i(122436);let a=(0,e.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);t.s(["Plus",()=>a],963781);let r=(0,e.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);t.s(["FolderOpen",()=>r],723882);let o=(0,e.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);t.s(["Star",()=>o],828964);var s=t.i(890022),n=t.i(431231),i=t.i(230827),l=t.i(20648),d=t.i(235893),c=t.i(21079);let u=(0,e.default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);var f=t.i(787949);let m=(0,e.default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);var p=t.i(497332),h=t.i(525761),g=t.i(632137);function v({onSelect:t,onCancel:e,initialPath:a,actionLabel:r="Select This Folder",isLoading:o}){let[i,l]=(0,n.useState)(a||""),[c,v]=(0,n.useState)([]),[y,b]=(0,n.useState)(!1),[x,w]=(0,n.useState)(null),j=(0,n.useRef)(null),k=o||y;(0,n.useEffect)(()=>{E(i)},[i]),(0,n.useEffect)(()=>{j.current&&(j.current.scrollLeft=j.current.scrollWidth)},[i]);let E=async t=>{try{b(!0),w(null);let e=await fetch("/api/local-projects/list-directory",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})});if(!e.ok)throw Error("Failed to list directory");let a=await e.json();v(a.items),t||l(a.path)}catch(t){w(t instanceof Error?t.message:String(t))}finally{b(!1)}},N=t=>{l(t)},C=c.find(t=>".."===t.name),S=c.filter(t=>".."!==t.name),T=(t=>{if(!t)return[];let e=t.includes("\\")?"\\":"/",a=t.split(e).filter(Boolean),r=t.startsWith("/");return a.map((t,o)=>{let s=a.slice(0,o+1).join(e);return r&&(s="/"+s),{name:t,path:s}})})(i);return(0,s.jsxs)("div",{className:"flex flex-col h-[400px] gap-4 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center border rounded-md p-1 gap-1 bg-muted/30",children:[(0,s.jsx)(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0",disabled:!C||k,onClick:()=>C&&N(C.path),title:"Go to parent directory",children:(0,s.jsx)(m,{className:"h-4 w-4"})}),(0,s.jsx)("div",{className:"w-px h-5 bg-border mx-1"}),(0,s.jsxs)("div",{ref:j,className:"flex-1 overflow-x-auto whitespace-nowrap flex items-center scrollbar-hide px-1 min-w-0",children:[(0,s.jsx)("button",{onClick:()=>N("/"),className:"hover:bg-accent p-1 rounded-sm transition-colors shrink-0",title:"Go to root",children:(0,s.jsx)(p.Home,{className:"h-4 w-4 text-muted-foreground"})}),T.map((t,e)=>(0,s.jsxs)("div",{className:"flex items-center shrink-0",children:[(0,s.jsx)(h.ChevronRight,{className:"h-3 w-3 text-muted-foreground mx-0.5 shrink-0"}),(0,s.jsx)("button",{onClick:()=>N(t.path),className:(0,g.cn)("px-1.5 py-0.5 rounded-sm transition-colors text-sm hover:bg-accent hover:text-accent-foreground",e===T.length-1?"font-medium text-foreground":"text-muted-foreground"),children:t.name})]},t.path))]})]}),(0,s.jsxs)("div",{className:"flex-1 border rounded-md overflow-hidden relative bg-background min-h-0",children:[k&&(0,s.jsx)("div",{className:"absolute inset-0 bg-background/50 flex items-center justify-center z-10",children:(0,s.jsx)(f.Loader2,{className:"h-6 w-6 animate-spin"})}),x?(0,s.jsxs)("div",{className:"p-4 text-destructive text-sm text-center",children:[x,(0,s.jsx)(d.Button,{variant:"link",onClick:()=>E(i),className:"block mx-auto mt-2",children:"Retry"})]}):(0,s.jsx)("div",{className:"h-full overflow-auto",children:(0,s.jsx)("div",{className:"p-1",children:0!==S.length||k?S.map(t=>(0,s.jsxs)("button",{onClick:()=>N(t.path),className:"flex items-center gap-3 w-full px-3 py-2 text-sm rounded-sm hover:bg-accent hover:text-accent-foreground text-left group transition-colors",children:[(0,s.jsx)(u,{className:"h-4 w-4 text-blue-500 fill-blue-500/20 group-hover:fill-blue-500/30 transition-colors shrink-0"}),(0,s.jsx)("span",{className:"truncate",children:t.name})]},t.path)):(0,s.jsx)("div",{className:"p-4 text-center text-sm text-muted-foreground",children:"Empty directory"})})})]}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)(d.Button,{variant:"outline",onClick:e,disabled:k,children:"Cancel"}),(0,s.jsx)(d.Button,{onClick:()=>t(i),disabled:k||!i,children:r})]})]})}var y=t.i(439779),b=t.i(995403);function x({open:t,onOpenChange:e}){let{addProject:a,switchProject:o}=(0,l.useProject)(),[u,f]=(0,n.useState)(""),[m,p]=(0,n.useState)(!1),[h,g]=(0,n.useState)("picker"),x=(0,i.useRouter)();(0,n.useEffect)(()=>{t&&(g("picker"),f(""))},[t]);let w=async t=>{try{p(!0);let r=await a(t);await o(r.id),b.toast.success("Project added successfully"),e(!1),x.push("/")}catch(e){let t=e instanceof Error?e.message:"Failed to add project";b.toast.error(t)}finally{p(!1)}};return(0,s.jsx)(y.Dialog,{open:t,onOpenChange:e,children:(0,s.jsxs)(y.DialogContent,{className:"sm:max-w-[600px]",children:[(0,s.jsxs)(y.DialogHeader,{children:[(0,s.jsx)(y.DialogTitle,{children:"Add Project"}),(0,s.jsx)(y.DialogDescription,{children:"picker"===h?"Browse and select the project directory.":"Enter the absolute path to your local project directory."})]}),"picker"===h?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(v,{onSelect:w,onCancel:()=>e(!1),initialPath:u,actionLabel:m?"Adding...":"Add Project",isLoading:m}),(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(d.Button,{variant:"link",size:"sm",onClick:()=>g("manual"),className:"text-muted-foreground",children:"Enter path manually"})})]}):(0,s.jsxs)("form",{onSubmit:t=>{t.preventDefault(),u&&w(u)},children:[(0,s.jsx)("div",{className:"grid gap-4 py-4",children:(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)("label",{htmlFor:"path",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Project Path"}),(0,s.jsx)("div",{className:"flex gap-2",children:(0,s.jsx)(c.Input,{id:"path",value:u,onChange:t=>f(t.target.value),placeholder:"/path/to/your/project",className:"flex-1",disabled:m})}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:"Select the root directory of your project."})]})}),(0,s.jsxs)(y.DialogFooter,{className:"flex-col sm:flex-row gap-2",children:[(0,s.jsx)("div",{className:"flex-1 flex justify-start",children:(0,s.jsxs)(d.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>g("picker"),children:[(0,s.jsx)(r,{className:"h-4 w-4 mr-2"}),"Browse folders"]})}),(0,s.jsx)(d.Button,{type:"button",variant:"outline",onClick:()=>e(!1),disabled:m,children:"Cancel"}),(0,s.jsx)(d.Button,{type:"submit",disabled:m||!u,children:m?"Adding...":"Add Project"})]})]})]})})}t.s(["CreateProjectDialog",()=>x],361877)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,995403,t=>{"use strict";var e=t.i(431231),a=t.i(395635);let r=Array(12).fill(0),o=({visible:t,className:a})=>e.default.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":t},e.default.createElement("div",{className:"sonner-spinner"},r.map((t,a)=>e.default.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${a}`})))),s=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),n=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),i=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),l=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},e.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),d=e.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},e.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),c=1,u=new class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:a,...r}=t,o="number"==typeof(null==t?void 0:t.id)||(null==(e=t.id)?void 0:e.length)>0?t.id:c++,s=this.toasts.find(t=>t.id===o),n=void 0===t.dismissible||t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),s?this.toasts=this.toasts.map(e=>e.id===o?(this.publish({...e,...t,id:o,title:a}),{...e,...t,id:o,dismissible:n,title:a}):e):this.addToast({title:a,...r,dismissible:n,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:t,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(e=>e({id:t.id,dismiss:!0}))}),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,a)=>{let r,o;if(!a)return;void 0!==a.loading&&(o=this.create({...a,promise:t,type:"loading",message:a.loading,description:"function"!=typeof a.description?a.description:void 0}));let s=Promise.resolve(t instanceof Function?t():t),n=void 0!==o,i=s.then(async t=>{if(r=["resolve",t],e.default.isValidElement(t))n=!1,this.create({id:o,type:"default",message:t});else if(f(t)&&!t.ok){n=!1;let r="function"==typeof a.error?await a.error(`HTTP error! status: ${t.status}`):a.error,s="function"==typeof a.description?await a.description(`HTTP error! status: ${t.status}`):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}else if(t instanceof Error){n=!1;let r="function"==typeof a.error?await a.error(t):a.error,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}else if(void 0!==a.success){n=!1;let r="function"==typeof a.success?await a.success(t):a.success,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"success",description:s,...i})}}).catch(async t=>{if(r=["reject",t],void 0!==a.error){n=!1;let r="function"==typeof a.error?await a.error(t):a.error,s="function"==typeof a.description?await a.description(t):a.description,i="object"!=typeof r||e.default.isValidElement(r)?{message:r}:r;this.create({id:o,type:"error",description:s,...i})}}).finally(()=>{n&&(this.dismiss(o),o=void 0),null==a.finally||a.finally.call(a)}),l=()=>new Promise((t,e)=>i.then(()=>"reject"===r[0]?e(r[1]):t(r[1])).catch(e));return"string"!=typeof o&&"number"!=typeof o?{unwrap:l}:Object.assign(o,{unwrap:l})},this.custom=(t,e)=>{let a=(null==e?void 0:e.id)||c++;return this.create({jsx:t(a),id:a,...e}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},f=t=>t&&"object"==typeof t&&"ok"in t&&"boolean"==typeof t.ok&&"status"in t&&"number"==typeof t.status,m=Object.assign((t,e)=>{let a=(null==e?void 0:e.id)||c++;return u.addToast({title:t,...e,id:a}),a},{success:u.success,info:u.info,warning:u.warning,error:u.error,custom:u.custom,message:u.message,promise:u.promise,dismiss:u.dismiss,loading:u.loading},{getHistory:()=>u.toasts,getToasts:()=>u.getActiveToasts()});function p(t){return void 0!==t.label}function h(...t){return t.filter(Boolean).join(" ")}!function(t){if(!t||"undefined"==typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",e.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");let g=t=>{var a,r,c,u,f,m,g,v,y,b,x,w,j;let{invert:k,toast:E,unstyled:N,interacting:C,setHeights:S,visibleToasts:T,heights:B,index:M,toasts:P,expanded:z,removeToast:D,defaultRichColors:R,closeButton:A,style:L,cancelButtonStyle:F,actionButtonStyle:$,className:Y="",descriptionClassName:H="",duration:I,position:O,gap:V,expandByDefault:U,classNames:X,icons:K,closeButtonAriaLabel:J="Close toast"}=t,[W,q]=e.default.useState(null),[G,Z]=e.default.useState(null),[Q,_]=e.default.useState(!1),[tt,te]=e.default.useState(!1),[ta,tr]=e.default.useState(!1),[to,ts]=e.default.useState(!1),[tn,ti]=e.default.useState(!1),[tl,td]=e.default.useState(0),[tc,tu]=e.default.useState(0),tf=e.default.useRef(E.duration||I||4e3),tm=e.default.useRef(null),tp=e.default.useRef(null),th=0===M,tg=M+1<=T,tv=E.type,ty=!1!==E.dismissible,tb=E.className||"",tx=E.descriptionClassName||"",tw=e.default.useMemo(()=>B.findIndex(t=>t.toastId===E.id)||0,[B,E.id]),tj=e.default.useMemo(()=>{var t;return null!=(t=E.closeButton)?t:A},[E.closeButton,A]),tk=e.default.useMemo(()=>E.duration||I||4e3,[E.duration,I]),tE=e.default.useRef(0),tN=e.default.useRef(0),tC=e.default.useRef(0),tS=e.default.useRef(null),[tT,tB]=O.split("-"),tM=e.default.useMemo(()=>B.reduce((t,e,a)=>a>=tw?t:t+e.height,0),[B,tw]),tP=(()=>{let[t,a]=e.default.useState(document.hidden);return e.default.useEffect(()=>{let t=()=>{a(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),t})(),tz=E.invert||k,tD="loading"===tv;tN.current=e.default.useMemo(()=>tw*V+tM,[tw,tM]),e.default.useEffect(()=>{tf.current=tk},[tk]),e.default.useEffect(()=>{_(!0)},[]),e.default.useEffect(()=>{let t=tp.current;if(t){let e=t.getBoundingClientRect().height;return tu(e),S(t=>[{toastId:E.id,height:e,position:E.position},...t]),()=>S(t=>t.filter(t=>t.toastId!==E.id))}},[S,E.id]),e.default.useLayoutEffect(()=>{if(!Q)return;let t=tp.current,e=t.style.height;t.style.height="auto";let a=t.getBoundingClientRect().height;t.style.height=e,tu(a),S(t=>t.find(t=>t.toastId===E.id)?t.map(t=>t.toastId===E.id?{...t,height:a}:t):[{toastId:E.id,height:a,position:E.position},...t])},[Q,E.title,E.description,S,E.id,E.jsx,E.action,E.cancel]);let tR=e.default.useCallback(()=>{te(!0),td(tN.current),S(t=>t.filter(t=>t.toastId!==E.id)),setTimeout(()=>{D(E)},200)},[E,D,S,tN]);e.default.useEffect(()=>{let t;if((!E.promise||"loading"!==tv)&&E.duration!==1/0&&"loading"!==E.type){if(z||C||tP){if(tC.current<tE.current){let t=new Date().getTime()-tE.current;tf.current=tf.current-t}tC.current=new Date().getTime()}else tf.current!==1/0&&(tE.current=new Date().getTime(),t=setTimeout(()=>{null==E.onAutoClose||E.onAutoClose.call(E,E),tR()},tf.current));return()=>clearTimeout(t)}},[z,C,E,tv,tP,tR]),e.default.useEffect(()=>{E.delete&&(tR(),null==E.onDismiss||E.onDismiss.call(E,E))},[tR,E.delete]);let tA=E.icon||(null==K?void 0:K[tv])||(t=>{switch(t){case"success":return s;case"info":return i;case"warning":return n;case"error":return l;default:return null}})(tv);return e.default.createElement("li",{tabIndex:0,ref:tp,className:h(Y,tb,null==X?void 0:X.toast,null==E||null==(a=E.classNames)?void 0:a.toast,null==X?void 0:X.default,null==X?void 0:X[tv],null==E||null==(r=E.classNames)?void 0:r[tv]),"data-sonner-toast":"","data-rich-colors":null!=(b=E.richColors)?b:R,"data-styled":!(E.jsx||E.unstyled||N),"data-mounted":Q,"data-promise":!!E.promise,"data-swiped":tn,"data-removed":tt,"data-visible":tg,"data-y-position":tT,"data-x-position":tB,"data-index":M,"data-front":th,"data-swiping":ta,"data-dismissible":ty,"data-type":tv,"data-invert":tz,"data-swipe-out":to,"data-swipe-direction":G,"data-expanded":!!(z||U&&Q),"data-testid":E.testId,style:{"--index":M,"--toasts-before":M,"--z-index":P.length-M,"--offset":`${tt?tl:tN.current}px`,"--initial-height":U?"auto":`${tc}px`,...L,...E.style},onDragEnd:()=>{tr(!1),q(null),tS.current=null},onPointerDown:t=>{2===t.button||tD||!ty||(tm.current=new Date,td(tN.current),t.target.setPointerCapture(t.pointerId),"BUTTON"!==t.target.tagName&&(tr(!0),tS.current={x:t.clientX,y:t.clientY}))},onPointerUp:()=>{var t,e,a,r,o;if(to||!ty)return;tS.current=null;let s=Number((null==(t=tp.current)?void 0:t.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),n=Number((null==(e=tp.current)?void 0:e.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),i=new Date().getTime()-(null==(a=tm.current)?void 0:a.getTime()),l="x"===W?s:n,d=Math.abs(l)/i;if(Math.abs(l)>=45||d>.11){td(tN.current),null==E.onDismiss||E.onDismiss.call(E,E),"x"===W?Z(s>0?"right":"left"):Z(n>0?"down":"up"),tR(),ts(!0);return}null==(r=tp.current)||r.style.setProperty("--swipe-amount-x","0px"),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y","0px"),ti(!1),tr(!1),q(null)},onPointerMove:e=>{var a,r,o,s;if(!tS.current||!ty||(null==(a=window.getSelection())?void 0:a.toString().length)>0)return;let n=e.clientY-tS.current.y,i=e.clientX-tS.current.x,l=null!=(s=t.swipeDirections)?s:function(t){let[e,a]=t.split("-"),r=[];return e&&r.push(e),a&&r.push(a),r}(O);!W&&(Math.abs(i)>1||Math.abs(n)>1)&&q(Math.abs(i)>Math.abs(n)?"x":"y");let d={x:0,y:0},c=t=>1/(1.5+Math.abs(t)/20);if("y"===W){if(l.includes("top")||l.includes("bottom"))if(l.includes("top")&&n<0||l.includes("bottom")&&n>0)d.y=n;else{let t=n*c(n);d.y=Math.abs(t)<Math.abs(n)?t:n}}else if("x"===W&&(l.includes("left")||l.includes("right")))if(l.includes("left")&&i<0||l.includes("right")&&i>0)d.x=i;else{let t=i*c(i);d.x=Math.abs(t)<Math.abs(i)?t:i}(Math.abs(d.x)>0||Math.abs(d.y)>0)&&ti(!0),null==(r=tp.current)||r.style.setProperty("--swipe-amount-x",`${d.x}px`),null==(o=tp.current)||o.style.setProperty("--swipe-amount-y",`${d.y}px`)}},tj&&!E.jsx&&"loading"!==tv?e.default.createElement("button",{"aria-label":J,"data-disabled":tD,"data-close-button":!0,onClick:tD||!ty?()=>{}:()=>{tR(),null==E.onDismiss||E.onDismiss.call(E,E)},className:h(null==X?void 0:X.closeButton,null==E||null==(c=E.classNames)?void 0:c.closeButton)},null!=(x=null==K?void 0:K.close)?x:d):null,(tv||E.icon||E.promise)&&null!==E.icon&&((null==K?void 0:K[tv])!==null||E.icon)?e.default.createElement("div",{"data-icon":"",className:h(null==X?void 0:X.icon,null==E||null==(u=E.classNames)?void 0:u.icon)},E.promise||"loading"===E.type&&!E.icon?E.icon||((null==K?void 0:K.loading)?e.default.createElement("div",{className:h(null==X?void 0:X.loader,null==E||null==(j=E.classNames)?void 0:j.loader,"sonner-loader"),"data-visible":"loading"===tv},K.loading):e.default.createElement(o,{className:h(null==X?void 0:X.loader,null==E||null==(w=E.classNames)?void 0:w.loader),visible:"loading"===tv})):null,"loading"!==E.type?tA:null):null,e.default.createElement("div",{"data-content":"",className:h(null==X?void 0:X.content,null==E||null==(f=E.classNames)?void 0:f.content)},e.default.createElement("div",{"data-title":"",className:h(null==X?void 0:X.title,null==E||null==(m=E.classNames)?void 0:m.title)},E.jsx?E.jsx:"function"==typeof E.title?E.title():E.title),E.description?e.default.createElement("div",{"data-description":"",className:h(H,tx,null==X?void 0:X.description,null==E||null==(g=E.classNames)?void 0:g.description)},"function"==typeof E.description?E.description():E.description):null),e.default.isValidElement(E.cancel)?E.cancel:E.cancel&&p(E.cancel)?e.default.createElement("button",{"data-button":!0,"data-cancel":!0,style:E.cancelButtonStyle||F,onClick:t=>{!p(E.cancel)||ty&&(null==E.cancel.onClick||E.cancel.onClick.call(E.cancel,t),tR())},className:h(null==X?void 0:X.cancelButton,null==E||null==(v=E.classNames)?void 0:v.cancelButton)},E.cancel.label):null,e.default.isValidElement(E.action)?E.action:E.action&&p(E.action)?e.default.createElement("button",{"data-button":!0,"data-action":!0,style:E.actionButtonStyle||$,onClick:t=>{!p(E.action)||(null==E.action.onClick||E.action.onClick.call(E.action,t),t.defaultPrevented||tR())},className:h(null==X?void 0:X.actionButton,null==E||null==(y=E.classNames)?void 0:y.actionButton)},E.action.label):null)};function v(){if("undefined"==typeof window||"undefined"==typeof document)return"ltr";let t=document.documentElement.getAttribute("dir");return"auto"!==t&&t?t:window.getComputedStyle(document.documentElement).direction}let y=e.default.forwardRef(function(t,r){let{id:o,invert:s,position:n="bottom-right",hotkey:i=["altKey","KeyT"],expand:l,closeButton:d,className:c,offset:f,mobileOffset:m,theme:p="light",richColors:h,duration:y,style:b,visibleToasts:x=3,toastOptions:w,dir:j=v(),gap:k=14,icons:E,containerAriaLabel:N="Notifications"}=t,[C,S]=e.default.useState([]),T=e.default.useMemo(()=>o?C.filter(t=>t.toasterId===o):C.filter(t=>!t.toasterId),[C,o]),B=e.default.useMemo(()=>Array.from(new Set([n].concat(T.filter(t=>t.position).map(t=>t.position)))),[T,n]),[M,P]=e.default.useState([]),[z,D]=e.default.useState(!1),[R,A]=e.default.useState(!1),[L,F]=e.default.useState("system"!==p?p:"undefined"!=typeof window&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),$=e.default.useRef(null),Y=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),H=e.default.useRef(null),I=e.default.useRef(!1),O=e.default.useCallback(t=>{S(e=>{var a;return(null==(a=e.find(e=>e.id===t.id))?void 0:a.delete)||u.dismiss(t.id),e.filter(({id:e})=>e!==t.id)})},[]);return e.default.useEffect(()=>u.subscribe(t=>{t.dismiss?requestAnimationFrame(()=>{S(e=>e.map(e=>e.id===t.id?{...e,delete:!0}:e))}):setTimeout(()=>{a.default.flushSync(()=>{S(e=>{let a=e.findIndex(e=>e.id===t.id);return -1!==a?[...e.slice(0,a),{...e[a],...t},...e.slice(a+1)]:[t,...e]})})})}),[C]),e.default.useEffect(()=>{if("system"!==p)return void F(p);if("system"===p&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?F("dark"):F("light")),"undefined"==typeof window)return;let t=window.matchMedia("(prefers-color-scheme: dark)");try{t.addEventListener("change",({matches:t})=>{t?F("dark"):F("light")})}catch(e){t.addListener(({matches:t})=>{try{t?F("dark"):F("light")}catch(t){console.error(t)}})}},[p]),e.default.useEffect(()=>{C.length<=1&&D(!1)},[C]),e.default.useEffect(()=>{let t=t=>{var e,a;i.every(e=>t[e]||t.code===e)&&(D(!0),null==(a=$.current)||a.focus()),"Escape"===t.code&&(document.activeElement===$.current||(null==(e=$.current)?void 0:e.contains(document.activeElement)))&&D(!1)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[i]),e.default.useEffect(()=>{if($.current)return()=>{H.current&&(H.current.focus({preventScroll:!0}),H.current=null,I.current=!1)}},[$.current]),e.default.createElement("section",{ref:r,"aria-label":`${N} ${Y}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},B.map((a,r)=>{var o;let n,[i,u]=a.split("-");return T.length?e.default.createElement("ol",{key:a,dir:"auto"===j?v():j,tabIndex:-1,ref:$,className:c,"data-sonner-toaster":!0,"data-sonner-theme":L,"data-y-position":i,"data-x-position":u,style:{"--front-toast-height":`${(null==(o=M[0])?void 0:o.height)||0}px`,"--width":"356px","--gap":`${k}px`,...b,...(n={},[f,m].forEach((t,e)=>{let a=1===e,r=a?"--mobile-offset":"--offset",o=a?"16px":"24px";function s(t){["top","right","bottom","left"].forEach(e=>{n[`${r}-${e}`]="number"==typeof t?`${t}px`:t})}"number"==typeof t||"string"==typeof t?s(t):"object"==typeof t?["top","right","bottom","left"].forEach(e=>{void 0===t[e]?n[`${r}-${e}`]=o:n[`${r}-${e}`]="number"==typeof t[e]?`${t[e]}px`:t[e]}):s(o)}),n)},onBlur:t=>{I.current&&!t.currentTarget.contains(t.relatedTarget)&&(I.current=!1,H.current&&(H.current.focus({preventScroll:!0}),H.current=null))},onFocus:t=>{!(t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible)&&(I.current||(I.current=!0,H.current=t.relatedTarget))},onMouseEnter:()=>D(!0),onMouseMove:()=>D(!0),onMouseLeave:()=>{R||D(!1)},onDragEnd:()=>D(!1),onPointerDown:t=>{t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible||A(!0)},onPointerUp:()=>A(!1)},T.filter(t=>!t.position&&0===r||t.position===a).map((r,o)=>{var n,i;return e.default.createElement(g,{key:r.id,icons:E,index:o,toast:r,defaultRichColors:h,duration:null!=(n=null==w?void 0:w.duration)?n:y,className:null==w?void 0:w.className,descriptionClassName:null==w?void 0:w.descriptionClassName,invert:s,visibleToasts:x,closeButton:null!=(i=null==w?void 0:w.closeButton)?i:d,interacting:R,position:a,style:null==w?void 0:w.style,unstyled:null==w?void 0:w.unstyled,classNames:null==w?void 0:w.classNames,cancelButtonStyle:null==w?void 0:w.cancelButtonStyle,actionButtonStyle:null==w?void 0:w.actionButtonStyle,closeButtonAriaLabel:null==w?void 0:w.closeButtonAriaLabel,removeToast:O,toasts:T.filter(t=>t.position==r.position),heights:M.filter(t=>t.position==r.position),setHeights:P,expandByDefault:l,gap:k,expanded:z,swipeDirections:t.swipeDirections})})):null}))});t.s(["Toaster",()=>y,"toast",()=>m])},178420,t=>{"use strict";var e=t.i(890022),a=t.i(995403),r=t.i(81795);function o(){let{theme:t}=(0,r.useTheme)();return(0,e.jsx)(a.Toaster,{theme:t,position:"bottom-right",richColors:!0,closeButton:!0,expand:!1,duration:4e3,toastOptions:{classNames:{toast:"group",title:"font-semibold",description:"text-sm opacity-90",actionButton:"bg-primary text-primary-foreground",cancelButton:"bg-muted text-muted-foreground"}}})}t.s(["Toast",()=>o])},954049,t=>{"use strict";let e=(0,t.i(122436).default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);t.s(["BookOpen",()=>e],954049)},20648,t=>{"use strict";var e=t.i(890022),a=t.i(431231);let r=(0,a.createContext)(null);function o(){let t=(0,a.useContext)(r);if(!t)throw Error("useProject must be used within ProjectProvider");return t}function s({children:t,initialProjectId:o}){let[s,n]=(0,a.useState)("single-project"),[i,l]=(0,a.useState)(null),[d,c]=(0,a.useState)([]),[u,f]=(0,a.useState)([]),[m,p]=(0,a.useState)([]),[h,g]=(0,a.useState)(!0),[v,y]=(0,a.useState)(null),b=(0,a.useCallback)(async()=>{try{g(!0),y(null);let t=await fetch("/api/projects");if(!t.ok)throw Error("Failed to fetch projects");let e=await t.json();if(n(e.mode||"single-project"),c(e.projects||[]),f(e.recentProjects||[]),p(e.favoriteProjects||[]),!i&&e.projects.length>0){let t=o?e.projects.find(t=>t.id===o):e.recentProjects?.[0]||e.projects[0];t&&l(t)}}catch(t){console.error("Error fetching projects:",t),y(t instanceof Error?t.message:"Failed to load projects")}finally{g(!1)}},[i,o]),x=(0,a.useCallback)(async t=>{try{let e=await fetch(`/api/projects/${t}`);if(!e.ok)throw Error("Failed to fetch project");let a=await e.json();l(a.project),await b()}catch(t){throw console.error("Error switching project:",t),y(t instanceof Error?t.message:"Failed to switch project"),t}},[b]),w=(0,a.useCallback)(async(t,e)=>{try{let a=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t,...e})});if(!a.ok){let t=await a.json();throw Error(t.details||"Failed to add project")}let r=await a.json();return await b(),r.project}catch(t){throw console.error("Error adding project:",t),y(t instanceof Error?t.message:"Failed to add project"),t}},[b]),j=(0,a.useCallback)(async t=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"DELETE"})).ok)throw Error("Failed to remove project");if(i?.id===t){let e=d.find(e=>e.id!==t);l(e||null)}await b()}catch(t){throw console.error("Error removing project:",t),y(t instanceof Error?t.message:"Failed to remove project"),t}},[i,d,b]),k=(0,a.useCallback)(async t=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({favorite:!0})})).ok)throw Error("Failed to toggle favorite");await b()}catch(t){throw console.error("Error toggling favorite:",t),y(t instanceof Error?t.message:"Failed to toggle favorite"),t}},[b]),E=(0,a.useCallback)(async(t,e)=>{try{if(!(await fetch(`/api/projects/${t}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})).ok)throw Error("Failed to update project");await b()}catch(t){throw console.error("Error updating project:",t),y(t instanceof Error?t.message:"Failed to update project"),t}},[b]);return(0,a.useEffect)(()=>{b()},[b]),(0,e.jsx)(r.Provider,{value:{mode:s,currentProject:i,projects:d,recentProjects:u,favoriteProjects:m,isLoading:h,error:v,switchProject:x,addProject:w,removeProject:j,toggleFavorite:k,updateProject:E,refreshProjects:b},children:t})}t.s(["ProjectProvider",()=>s,"useProject",()=>o])},787949,t=>{"use strict";let e=(0,t.i(122436).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);t.s(["Loader2",()=>e],787949)},963781,723882,828964,361877,t=>{"use strict";var e=t.i(122436);let a=(0,e.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]);t.s(["Plus",()=>a],963781);let r=(0,e.default)("folder-open",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]]);t.s(["FolderOpen",()=>r],723882);let o=(0,e.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);t.s(["Star",()=>o],828964);var s=t.i(890022),n=t.i(431231),i=t.i(230827),l=t.i(20648),d=t.i(235893),c=t.i(21079);let u=(0,e.default)("folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);var f=t.i(787949);let m=(0,e.default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);var p=t.i(497332),h=t.i(525761),g=t.i(632137);function v({onSelect:t,onCancel:e,initialPath:a,actionLabel:r="Select This Folder",isLoading:o}){let[i,l]=(0,n.useState)(a||""),[c,v]=(0,n.useState)([]),[y,b]=(0,n.useState)(!1),[x,w]=(0,n.useState)(null),j=(0,n.useRef)(null),k=o||y;(0,n.useEffect)(()=>{E(i)},[i]),(0,n.useEffect)(()=>{j.current&&(j.current.scrollLeft=j.current.scrollWidth)},[i]);let E=async t=>{try{b(!0),w(null);let e=await fetch("/api/local-projects/list-directory",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:t})});if(!e.ok)throw Error("Failed to list directory");let a=await e.json();v(a.items),t||l(a.path)}catch(t){w(t instanceof Error?t.message:String(t))}finally{b(!1)}},N=t=>{l(t)},C=c.find(t=>".."===t.name),S=c.filter(t=>".."!==t.name),T=(t=>{if(!t)return[];let e=t.includes("\\")?"\\":"/",a=t.split(e).filter(Boolean),r=t.startsWith("/");return a.map((t,o)=>{let s=a.slice(0,o+1).join(e);return r&&(s="/"+s),{name:t,path:s}})})(i);return(0,s.jsxs)("div",{className:"flex flex-col h-[400px] gap-4 min-w-0",children:[(0,s.jsxs)("div",{className:"flex items-center border rounded-md p-1 gap-1 bg-muted/30",children:[(0,s.jsx)(d.Button,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0",disabled:!C||k,onClick:()=>C&&N(C.path),title:"Go to parent directory",children:(0,s.jsx)(m,{className:"h-4 w-4"})}),(0,s.jsx)("div",{className:"w-px h-5 bg-border mx-1"}),(0,s.jsxs)("div",{ref:j,className:"flex-1 overflow-x-auto whitespace-nowrap flex items-center scrollbar-hide px-1 min-w-0",children:[(0,s.jsx)("button",{onClick:()=>N("/"),className:"hover:bg-accent p-1 rounded-sm transition-colors shrink-0",title:"Go to root",children:(0,s.jsx)(p.Home,{className:"h-4 w-4 text-muted-foreground"})}),T.map((t,e)=>(0,s.jsxs)("div",{className:"flex items-center shrink-0",children:[(0,s.jsx)(h.ChevronRight,{className:"h-3 w-3 text-muted-foreground mx-0.5 shrink-0"}),(0,s.jsx)("button",{onClick:()=>N(t.path),className:(0,g.cn)("px-1.5 py-0.5 rounded-sm transition-colors text-sm hover:bg-accent hover:text-accent-foreground",e===T.length-1?"font-medium text-foreground":"text-muted-foreground"),children:t.name})]},t.path))]})]}),(0,s.jsxs)("div",{className:"flex-1 border rounded-md overflow-hidden relative bg-background min-h-0",children:[k&&(0,s.jsx)("div",{className:"absolute inset-0 bg-background/50 flex items-center justify-center z-10",children:(0,s.jsx)(f.Loader2,{className:"h-6 w-6 animate-spin"})}),x?(0,s.jsxs)("div",{className:"p-4 text-destructive text-sm text-center",children:[x,(0,s.jsx)(d.Button,{variant:"link",onClick:()=>E(i),className:"block mx-auto mt-2",children:"Retry"})]}):(0,s.jsx)("div",{className:"h-full overflow-auto",children:(0,s.jsx)("div",{className:"p-1",children:0!==S.length||k?S.map(t=>(0,s.jsxs)("button",{onClick:()=>N(t.path),className:"flex items-center gap-3 w-full px-3 py-2 text-sm rounded-sm hover:bg-accent hover:text-accent-foreground text-left group transition-colors",children:[(0,s.jsx)(u,{className:"h-4 w-4 text-blue-500 fill-blue-500/20 group-hover:fill-blue-500/30 transition-colors shrink-0"}),(0,s.jsx)("span",{className:"truncate",children:t.name})]},t.path)):(0,s.jsx)("div",{className:"p-4 text-center text-sm text-muted-foreground",children:"Empty directory"})})})]}),(0,s.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,s.jsx)(d.Button,{variant:"outline",onClick:e,disabled:k,children:"Cancel"}),(0,s.jsx)(d.Button,{onClick:()=>t(i),disabled:k||!i,children:r})]})]})}var y=t.i(439779),b=t.i(995403);function x({open:t,onOpenChange:e}){let{addProject:a,switchProject:o}=(0,l.useProject)(),[u,f]=(0,n.useState)(""),[m,p]=(0,n.useState)(!1),[h,g]=(0,n.useState)("picker"),x=(0,i.useRouter)();(0,n.useEffect)(()=>{t&&(g("picker"),f(""))},[t]);let w=async t=>{try{p(!0);let r=await a(t);await o(r.id),b.toast.success("Project added successfully"),e(!1),x.push("/")}catch(e){let t=e instanceof Error?e.message:"Failed to add project";b.toast.error(t)}finally{p(!1)}};return(0,s.jsx)(y.Dialog,{open:t,onOpenChange:e,children:(0,s.jsxs)(y.DialogContent,{className:"sm:max-w-[600px]",children:[(0,s.jsxs)(y.DialogHeader,{children:[(0,s.jsx)(y.DialogTitle,{children:"Add Project"}),(0,s.jsx)(y.DialogDescription,{children:"picker"===h?"Browse and select the project directory.":"Enter the absolute path to your local project directory."})]}),"picker"===h?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)(v,{onSelect:w,onCancel:()=>e(!1),initialPath:u,actionLabel:m?"Adding...":"Add Project",isLoading:m}),(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(d.Button,{variant:"link",size:"sm",onClick:()=>g("manual"),className:"text-muted-foreground",children:"Enter path manually"})})]}):(0,s.jsxs)("form",{onSubmit:t=>{t.preventDefault(),u&&w(u)},children:[(0,s.jsx)("div",{className:"grid gap-4 py-4",children:(0,s.jsxs)("div",{className:"grid gap-2",children:[(0,s.jsx)("label",{htmlFor:"path",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Project Path"}),(0,s.jsx)("div",{className:"flex gap-2",children:(0,s.jsx)(c.Input,{id:"path",value:u,onChange:t=>f(t.target.value),placeholder:"/path/to/your/project",className:"flex-1",disabled:m})}),(0,s.jsx)("p",{className:"text-xs text-muted-foreground",children:"Select the root directory of your project."})]})}),(0,s.jsxs)(y.DialogFooter,{className:"flex-col sm:flex-row gap-2",children:[(0,s.jsx)("div",{className:"flex-1 flex justify-start",children:(0,s.jsxs)(d.Button,{type:"button",variant:"ghost",size:"sm",onClick:()=>g("picker"),children:[(0,s.jsx)(r,{className:"h-4 w-4 mr-2"}),"Browse folders"]})}),(0,s.jsx)(d.Button,{type:"button",variant:"outline",onClick:()=>e(!1),disabled:m,children:"Cancel"}),(0,s.jsx)(d.Button,{type:"submit",disabled:m||!u,children:m?"Adding...":"Add Project"})]})]})]})})}t.s(["CreateProjectDialog",()=>x],361877)}]);