@leanspec/ui 0.2.8 → 0.2.9-dev.20251205030455

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 (640) 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/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +95 -0
  3. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  4. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +8 -0
  5. package/.next/standalone/packages/ui/.next/build-manifest.json +4 -4
  6. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  7. package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
  8. package/.next/standalone/packages/ui/.next/routes-manifest.json +60 -0
  9. package/.next/standalone/packages/ui/.next/server/app/_global-error/page/build-manifest.json +2 -2
  10. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js +1 -1
  11. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  12. package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  15. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  16. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  17. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  18. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  19. package/.next/standalone/packages/ui/.next/server/app/_not-found/page/build-manifest.json +2 -2
  20. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +2 -2
  21. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  24. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -18
  25. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
  26. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  27. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  28. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  29. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
  30. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +1 -1
  31. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
  32. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/app-paths-manifest.json +3 -0
  33. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/build-manifest.json +11 -0
  34. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/server-reference-manifest.json +4 -0
  35. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +8 -0
  36. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.map +5 -0
  37. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -0
  38. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route_client-reference-manifest.js +2 -0
  39. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  40. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  41. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
  42. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  43. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/app-paths-manifest.json +3 -0
  44. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/build-manifest.json +11 -0
  45. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route/server-reference-manifest.json +4 -0
  46. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js +8 -0
  47. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.map +5 -0
  48. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route.js.nft.json +1 -0
  49. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/context/route_client-reference-manifest.js +2 -0
  50. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/app-paths-manifest.json +3 -0
  51. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/build-manifest.json +11 -0
  52. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route/server-reference-manifest.json +4 -0
  53. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js +8 -0
  54. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.map +5 -0
  55. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route.js.nft.json +1 -0
  56. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/dependencies/route_client-reference-manifest.js +2 -0
  57. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js +1 -3
  58. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  59. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js +1 -2
  60. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
  61. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js +1 -1
  62. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
  63. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +1 -2
  64. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  65. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js +1 -1
  66. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
  67. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/app-paths-manifest.json +3 -0
  68. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/build-manifest.json +11 -0
  69. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route/server-reference-manifest.json +4 -0
  70. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js +6 -0
  71. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.map +5 -0
  72. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route.js.nft.json +1 -0
  73. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/validate/route_client-reference-manifest.js +2 -0
  74. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js +1 -3
  75. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  76. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js +1 -1
  77. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  78. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js +1 -1
  79. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  80. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js +1 -1
  81. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  82. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  83. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js +1 -1
  84. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  85. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js +1 -1
  86. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  87. package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +2 -2
  88. package/.next/standalone/packages/ui/.next/server/app/context/page.js +2 -2
  89. package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
  90. package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
  91. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/app-paths-manifest.json +3 -0
  92. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/build-manifest.json +18 -0
  93. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/next-font-manifest.json +6 -0
  94. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/react-loadable-manifest.json +1 -0
  95. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/server-reference-manifest.json +4 -0
  96. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +19 -0
  97. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.map +5 -0
  98. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -0
  99. package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +2 -0
  100. package/.next/standalone/packages/ui/.next/server/app/page/build-manifest.json +2 -2
  101. package/.next/standalone/packages/ui/.next/server/app/page.js +4 -3
  102. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  103. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/app-paths-manifest.json +3 -0
  105. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/build-manifest.json +18 -0
  106. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/next-font-manifest.json +6 -0
  107. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/react-loadable-manifest.json +1 -0
  108. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page/server-reference-manifest.json +4 -0
  109. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js +21 -0
  110. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.map +5 -0
  111. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page.js.nft.json +1 -0
  112. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/context/page_client-reference-manifest.js +2 -0
  113. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/app-paths-manifest.json +3 -0
  114. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/build-manifest.json +18 -0
  115. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/next-font-manifest.json +6 -0
  116. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/react-loadable-manifest.json +1 -0
  117. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page/server-reference-manifest.json +4 -0
  118. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js +21 -0
  119. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.map +5 -0
  120. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page.js.nft.json +1 -0
  121. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/dependencies/page_client-reference-manifest.js +2 -0
  122. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/build-manifest.json +2 -2
  123. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +7 -7
  124. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
  125. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
  126. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/build-manifest.json +2 -2
  127. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +8 -7
  128. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
  129. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
  130. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/build-manifest.json +2 -2
  131. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +7 -6
  132. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
  133. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
  134. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/app-paths-manifest.json +3 -0
  135. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/build-manifest.json +18 -0
  136. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/next-font-manifest.json +6 -0
  137. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/react-loadable-manifest.json +1 -0
  138. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page/server-reference-manifest.json +4 -0
  139. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js +21 -0
  140. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.map +5 -0
  141. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page.js.nft.json +1 -0
  142. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/stats/page_client-reference-manifest.js +2 -0
  143. package/.next/standalone/packages/ui/.next/server/app/projects/page/build-manifest.json +2 -2
  144. package/.next/standalone/packages/ui/.next/server/app/projects/page.js +7 -6
  145. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
  146. package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  147. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
  148. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +24 -23
  149. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -23
  150. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
  151. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  152. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  153. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  154. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page/build-manifest.json +2 -2
  155. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +2 -2
  156. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  157. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  158. package/.next/standalone/packages/ui/.next/server/app/specs/page/build-manifest.json +2 -2
  159. package/.next/standalone/packages/ui/.next/server/app/specs/page.js +2 -2
  160. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  161. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  162. package/.next/standalone/packages/ui/.next/server/app/stats/page/build-manifest.json +2 -2
  163. package/.next/standalone/packages/ui/.next/server/app/stats/page.js +2 -2
  164. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  165. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  166. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +8 -0
  167. package/.next/standalone/packages/ui/.next/server/chunks/6681a__next-internal_server_app_api_projects_[id]_dependencies_route_actions_7ac49581.js +3 -0
  168. package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_context_route_actions_96adca70.js +3 -0
  169. package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_validate_route_actions_b60372c9.js +3 -0
  170. package/.next/standalone/packages/ui/.next/server/chunks/[externals]_better-sqlite3_a1cc22cb._.js +3 -0
  171. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1706515f._.js +3 -0
  172. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__18aca702._.js +3 -0
  173. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__27348781._.js +3 -0
  174. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3a7f0840._.js +3 -0
  175. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3e17db24._.js +3 -0
  176. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__5f1e0195._.js +3 -0
  177. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6e06fd2a._.js +3 -0
  178. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__71d98924._.js +3 -0
  179. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__97b99cc0._.js +3 -0
  180. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9d9758e1._.js +3 -0
  181. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b1ad8b69._.js +3 -0
  182. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b212b9bd._.js +3 -0
  183. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b9c03a57._.js +3 -0
  184. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e99e7672._.js +3 -0
  185. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f38a5f20._.js +3 -0
  186. package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__126dea7b._.js → [root-of-the-server]__fa8cf2bc._.js} +2 -2
  187. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_dependencies_route_actions_cf6b14c3.js +3 -0
  188. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_b8c1af87._.js +3 -0
  189. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js +72 -1
  190. package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_context_page_actions_e4940a48.js +3 -0
  191. package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_stats_page_actions_82a85203.js +3 -0
  192. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__0f0dade1._.js +1 -1
  193. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__13f96ef4._.js +3 -0
  194. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__212c8580._.js +3 -0
  195. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__2b66bcca._.js +3 -0
  196. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__312221a2._.js +3 -0
  197. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__366688dd._.js +3 -0
  198. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__fd80e4dd._.js → [root-of-the-server]__38c56adc._.js} +2 -2
  199. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +3 -0
  200. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__46b71f61._.js +3 -0
  201. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__53f4506c._.js +3 -0
  202. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__665ae766._.js +3 -0
  203. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__84124d4b._.js +3 -0
  204. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__921689ca._.js +3 -0
  205. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a34731d8._.js +3 -0
  206. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a9d7fd42._.js +3 -0
  207. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b0d6e2ad._.js +3 -0
  208. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b27b2469._.js +3 -0
  209. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b3633d6e._.js +3 -0
  210. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__dcee62dd._.js +3 -0
  211. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
  212. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +7 -0
  213. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_39562b2a._.js → _170362f4._.js} +3 -3
  214. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_1a642e67._.js +4 -0
  215. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
  216. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_85effc18._.js → _2bc76f88._.js} +3 -3
  217. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_fdd7780b._.js → _3f059230._.js} +3 -3
  218. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_58b98a8f._.js +4 -0
  219. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8ab6f9ca._.js +3 -0
  220. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_90eed09a._.js +3 -0
  221. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_22274047._.js → _adb9d7cb._.js} +2 -2
  222. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b303aeea._.js +3 -0
  223. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_bae6d2b8._.js → _b421ba4a._.js} +3 -3
  224. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_d840ffc6._.js +3 -0
  225. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_da18b655._.js +3 -0
  226. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ec637d7c._.js +3 -0
  227. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f05260d6._.js +4 -0
  228. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f38e75b7._.js +4 -0
  229. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f9129aae._.js +3 -0
  230. package/.next/standalone/packages/ui/.next/server/chunks/ssr/f825c_server_app_projects_[projectId]_dependencies_page_actions_ba2321b8.js +3 -0
  231. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_0056f1f2._.js +3 -0
  232. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_015f83ca._.js +3 -0
  233. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_30b0b05a._.js +3 -0
  234. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_478d57e5._.js +3 -0
  235. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_4e3e790c._.js +3 -0
  236. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_80605a06._.js +3 -0
  237. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_f5b29533._.js → node_modules__pnpm_8680dc29._.js} +2 -2
  238. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_e175b92a._.js → node_modules__pnpm_94a0b1f5._.js} +2 -2
  239. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_b4ff5c78._.js +3 -0
  240. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_bb80de48._.js +3 -0
  241. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{node_modules__pnpm_7791e3b8._.js → node_modules__pnpm_d3262b3d._.js} +2 -2
  242. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e8075f9b._.js +3 -0
  243. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_f919ef4a._.js +3 -0
  244. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_dependencies_page_actions_57387d47.js +3 -0
  245. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +2 -2
  246. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_dependencies_dependencies-client_tsx_0e82443a._.js +4 -0
  247. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_layout_tsx_86c2ce0f._.js +3 -0
  248. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_page_tsx_6e166c8e._.js +1 -1
  249. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
  250. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +3 -0
  251. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
  252. package/.next/standalone/packages/ui/.next/server/middleware-build-manifest.js +2 -2
  253. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  254. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  255. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  256. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  257. package/.next/standalone/packages/ui/.next/static/chunks/04de9ed512b8098b.js +10 -0
  258. package/.next/standalone/packages/ui/.next/static/chunks/1e0689744f87e958.js +2 -0
  259. package/.next/standalone/packages/ui/.next/static/chunks/3d12a8c3152b526d.js +3 -0
  260. package/.next/standalone/packages/ui/.next/static/chunks/4610aea3ca2e69eb.js +2 -0
  261. package/.next/standalone/packages/ui/.next/static/chunks/46275d9d67603bf5.js +1 -0
  262. package/.next/standalone/packages/ui/.next/static/chunks/7931c6cb379305b1.js +1 -0
  263. package/.next/standalone/packages/ui/.next/static/chunks/7a00633903e066b4.js +1 -0
  264. package/.next/standalone/packages/ui/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
  265. package/.next/standalone/packages/ui/.next/static/chunks/7f9a218732be8099.js +5 -0
  266. package/.next/standalone/packages/ui/.next/static/chunks/840c6743a491a398.js +1 -0
  267. package/.next/standalone/packages/ui/.next/static/chunks/8a6e8f3394240dbb.js +1 -0
  268. package/.next/standalone/packages/ui/.next/static/chunks/8d8c106c6848d15b.js +1 -0
  269. package/.next/standalone/packages/ui/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
  270. package/.next/standalone/packages/ui/.next/static/chunks/a640b005f2e15d98.js +1 -0
  271. package/.next/standalone/packages/ui/.next/static/chunks/a7075a240adea8e8.js +1 -0
  272. package/.next/standalone/packages/ui/.next/static/chunks/b53250480fde6816.js +1 -0
  273. package/.next/{static/chunks/794f3931f1ca12d2.js → standalone/packages/ui/.next/static/chunks/bbd498aa5689c057.js} +1 -1
  274. package/.next/standalone/packages/ui/.next/static/chunks/c26909a25ca9fc9b.js +1 -0
  275. package/.next/standalone/packages/ui/.next/static/chunks/c658e22a605e0ed1.js +1 -0
  276. package/.next/standalone/packages/ui/.next/static/chunks/c92660d8d0c4763d.js +1 -0
  277. package/.next/standalone/packages/ui/.next/static/chunks/{e3bc96a996e2a314.js → d26f4109b44eb240.js} +1 -1
  278. package/.next/standalone/packages/ui/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
  279. package/.next/standalone/packages/ui/.next/static/chunks/ddb2935cfe5310c7.css +1 -0
  280. package/.next/standalone/packages/ui/.next/static/chunks/e399b4afc7936907.js +1 -0
  281. package/.next/standalone/packages/ui/.next/static/chunks/f924ae32752e1583.js +1 -0
  282. package/.next/standalone/packages/ui/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
  283. package/.next/{static/chunks/turbopack-5fa55215af0efb15.js → standalone/packages/ui/.next/static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
  284. package/.next/standalone/packages/ui/package.json +3 -1
  285. package/.next/standalone/packages/ui/server.js +1 -1
  286. package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +81 -0
  287. package/.next/standalone/packages/ui/src/app/api/projects/[id]/context/route.ts +39 -0
  288. package/.next/standalone/packages/ui/src/app/api/projects/[id]/dependencies/route.ts +69 -0
  289. package/.next/standalone/packages/ui/src/app/api/projects/[id]/route.ts +25 -9
  290. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/route.ts +14 -14
  291. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/route.ts +9 -8
  292. package/.next/standalone/packages/ui/src/app/api/projects/[id]/validate/route.ts +49 -0
  293. package/.next/standalone/packages/ui/src/app/api/projects/route.ts +18 -5
  294. package/.next/standalone/packages/ui/src/app/api/specs/[id]/dependency-graph/route.test.ts +0 -2
  295. package/.next/standalone/packages/ui/src/app/api/specs/[id]/dependency-graph/route.ts +0 -15
  296. package/.next/standalone/packages/ui/src/app/context/context-client.tsx +23 -1
  297. package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +29 -58
  298. package/.next/standalone/packages/ui/src/app/dependencies/constants.ts +25 -0
  299. package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +700 -0
  300. package/.next/standalone/packages/ui/src/app/dependencies/index.ts +19 -0
  301. package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +38 -0
  302. package/.next/standalone/packages/ui/src/app/dependencies/spec-node.tsx +80 -0
  303. package/.next/standalone/packages/ui/src/app/dependencies/spec-sidebar.tsx +171 -0
  304. package/.next/standalone/packages/ui/src/app/dependencies/types.ts +37 -0
  305. package/.next/standalone/packages/ui/src/app/dependencies/utils.ts +194 -0
  306. package/.next/standalone/packages/ui/src/app/page.tsx +24 -0
  307. package/.next/standalone/packages/ui/src/app/projects/[projectId]/context/page.tsx +41 -0
  308. package/.next/standalone/packages/ui/src/app/projects/[projectId]/dependencies/page.tsx +43 -0
  309. package/.next/standalone/packages/ui/src/app/projects/[projectId]/page.tsx +18 -2
  310. package/.next/standalone/packages/ui/src/app/projects/[projectId]/stats/page.tsx +24 -0
  311. package/.next/standalone/packages/ui/src/app/projects/layout.tsx +7 -0
  312. package/.next/standalone/packages/ui/src/app/projects/page.tsx +167 -20
  313. package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +27 -17
  314. package/.next/standalone/packages/ui/src/components/color-picker.tsx +73 -0
  315. package/.next/standalone/packages/ui/src/components/context-file-detail.tsx +308 -0
  316. package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +96 -2
  317. package/.next/standalone/packages/ui/src/components/create-project-dialog.tsx +3 -5
  318. package/.next/standalone/packages/ui/src/components/directory-picker.tsx +1 -0
  319. package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +31 -6
  320. package/.next/standalone/packages/ui/src/components/markdown-link.tsx +15 -8
  321. package/.next/standalone/packages/ui/src/components/project-switcher.tsx +24 -5
  322. package/.next/standalone/packages/ui/src/components/quick-search.tsx +3 -1
  323. package/.next/standalone/packages/ui/src/components/spec-dependency-graph.tsx +13 -52
  324. package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +36 -11
  325. package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +3 -4
  326. package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +8 -6
  327. package/.next/standalone/packages/ui/src/contexts/project-context.tsx +24 -0
  328. package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +85 -31
  329. package/.next/standalone/packages/ui/src/lib/dependency-graph.ts +0 -13
  330. package/.next/standalone/packages/ui/src/types/specs.ts +6 -4
  331. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  332. package/.next/static/chunks/04de9ed512b8098b.js +10 -0
  333. package/.next/static/chunks/1e0689744f87e958.js +2 -0
  334. package/.next/static/chunks/3d12a8c3152b526d.js +3 -0
  335. package/.next/static/chunks/4610aea3ca2e69eb.js +2 -0
  336. package/.next/static/chunks/46275d9d67603bf5.js +1 -0
  337. package/.next/static/chunks/7931c6cb379305b1.js +1 -0
  338. package/.next/static/chunks/7a00633903e066b4.js +1 -0
  339. package/.next/static/chunks/{942cf63b4032c808.js → 7df6308e6cfcf902.js} +1 -1
  340. package/.next/static/chunks/7f9a218732be8099.js +5 -0
  341. package/.next/static/chunks/840c6743a491a398.js +1 -0
  342. package/.next/static/chunks/8a6e8f3394240dbb.js +1 -0
  343. package/.next/static/chunks/8d8c106c6848d15b.js +1 -0
  344. package/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
  345. package/.next/static/chunks/a640b005f2e15d98.js +1 -0
  346. package/.next/static/chunks/a7075a240adea8e8.js +1 -0
  347. package/.next/static/chunks/b53250480fde6816.js +1 -0
  348. package/.next/{standalone/packages/ui/.next/static/chunks/794f3931f1ca12d2.js → static/chunks/bbd498aa5689c057.js} +1 -1
  349. package/.next/static/chunks/c26909a25ca9fc9b.js +1 -0
  350. package/.next/static/chunks/c658e22a605e0ed1.js +1 -0
  351. package/.next/static/chunks/c92660d8d0c4763d.js +1 -0
  352. package/.next/static/chunks/{e3bc96a996e2a314.js → d26f4109b44eb240.js} +1 -1
  353. package/.next/static/chunks/{3276ca6fd9005903.js → d52a048b511c32bd.js} +1 -1
  354. package/.next/static/chunks/ddb2935cfe5310c7.css +1 -0
  355. package/.next/static/chunks/e399b4afc7936907.js +1 -0
  356. package/.next/static/chunks/f924ae32752e1583.js +1 -0
  357. package/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
  358. package/.next/{standalone/packages/ui/.next/static/chunks/turbopack-5fa55215af0efb15.js → static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
  359. package/package.json +4 -2
  360. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +0 -3
  361. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__675a763e._.js +0 -3
  362. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +0 -3
  363. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8233e09b._.js +0 -3
  364. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +0 -3
  365. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +0 -3
  366. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__aa677b0d._.js +0 -3
  367. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__ae726e9c._.js +0 -3
  368. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +0 -3
  369. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f06435b0._.js +0 -3
  370. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +0 -3
  371. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fb91986f._.js +0 -3
  372. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_db_index_ts_556307fa._.js +0 -74
  373. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_0bd881ee._.js +0 -3
  374. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__01bfc8ff._.js +0 -3
  375. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +0 -3
  376. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__4ec37765._.js +0 -3
  377. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__50122e7e._.js +0 -3
  378. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +0 -7
  379. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__88a691ee._.js +0 -3
  380. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +0 -7
  381. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +0 -3
  382. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__bdbbba01._.js +0 -3
  383. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__cc589a54._.js +0 -3
  384. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +0 -3
  385. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ead1539c._.js +0 -3
  386. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +0 -3
  387. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +0 -3
  388. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_3b617676._.js +0 -3
  389. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +0 -3
  390. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ac867463._.js +0 -3
  391. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b397e94a._.js +0 -3
  392. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_3ba1438c._.js +0 -3
  393. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +0 -3
  394. package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +0 -1
  395. package/.next/standalone/packages/ui/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
  396. package/.next/standalone/packages/ui/.next/static/chunks/2c85b8059e42248a.js +0 -1
  397. package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
  398. package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +0 -1
  399. package/.next/standalone/packages/ui/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
  400. package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +0 -5
  401. package/.next/standalone/packages/ui/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
  402. package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +0 -1
  403. package/.next/standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js +0 -1
  404. package/.next/standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js +0 -1
  405. package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +0 -1
  406. package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +0 -10
  407. package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
  408. package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +0 -3
  409. package/.next/standalone/packages/ui/dist/BUILD_ID +0 -1
  410. package/.next/standalone/packages/ui/dist/public/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -1
  411. package/.next/standalone/packages/ui/dist/public/favicon.ico +0 -0
  412. package/.next/standalone/packages/ui/dist/public/file.svg +0 -1
  413. package/.next/standalone/packages/ui/dist/public/github-mark-white.svg +0 -1
  414. package/.next/standalone/packages/ui/dist/public/github-mark.svg +0 -1
  415. package/.next/standalone/packages/ui/dist/public/globe.svg +0 -1
  416. package/.next/standalone/packages/ui/dist/public/icon.svg +0 -7
  417. package/.next/standalone/packages/ui/dist/public/logo-dark-bg.svg +0 -17
  418. package/.next/standalone/packages/ui/dist/public/logo-with-bg.svg +0 -17
  419. package/.next/standalone/packages/ui/dist/public/logo.svg +0 -17
  420. package/.next/standalone/packages/ui/dist/public/next.svg +0 -1
  421. package/.next/standalone/packages/ui/dist/public/vercel.svg +0 -1
  422. package/.next/standalone/packages/ui/dist/public/window.svg +0 -1
  423. package/.next/standalone/packages/ui/dist/standalone/packages/web/README.md +0 -196
  424. package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +0 -75
  425. package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +0 -44
  426. package/.next/standalone/packages/ui/dist/standalone/specs/014-complete-custom-frontmatter/README.md +0 -175
  427. package/.next/standalone/packages/ui/dist/standalone/specs/016-github-action/README.md +0 -317
  428. package/.next/standalone/packages/ui/dist/standalone/specs/017-vscode-extension/README.md +0 -261
  429. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CLI-DESIGN.md +0 -380
  430. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION-EXAMPLES.md +0 -230
  431. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/CONFIGURATION.md +0 -285
  432. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/IMPLEMENTATION.md +0 -358
  433. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/README.md +0 -303
  434. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/TESTING.md +0 -368
  435. package/.next/standalone/packages/ui/dist/standalone/specs/018-spec-validation/VALIDATION-RULES.md +0 -327
  436. package/.next/standalone/packages/ui/dist/standalone/specs/024-pattern-aware-list-grouping/README.md +0 -117
  437. package/.next/standalone/packages/ui/dist/standalone/specs/025-template-config-updates/README.md +0 -73
  438. package/.next/standalone/packages/ui/dist/standalone/specs/026-init-pattern-selection/README.md +0 -109
  439. package/.next/standalone/packages/ui/dist/standalone/specs/034-copilot-slash-commands/README.md +0 -107
  440. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/ARCHITECTURE.md +0 -244
  441. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/IMPLEMENTATION.md +0 -429
  442. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +0 -302
  443. package/.next/standalone/packages/ui/dist/standalone/specs/036-pm-integrations/README.md +0 -158
  444. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-AI-ASSISTED.md +0 -359
  445. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-FULL-LIFECYCLE.md +0 -86
  446. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-REAL-FEATURE.md +0 -437
  447. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DEMO-SCRIPT.md +0 -365
  448. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-FINAL.md +0 -203
  449. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SESSION-2025-11-06.md +0 -174
  450. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/DOGFOODING-SUMMARY.md +0 -156
  451. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/IMPLEMENTATION.md +0 -183
  452. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/MARKETING.md +0 -229
  453. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/NEXT-STEPS-DEMO.md +0 -243
  454. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/README.md +0 -217
  455. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/SESSION-2025-11-06.md +0 -166
  456. package/.next/standalone/packages/ui/dist/standalone/specs/043-official-launch-02/TESTING.md +0 -126
  457. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/ACTUAL-IMPLEMENTATION.md +0 -108
  458. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/DESIGN.md +0 -382
  459. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/IMPLEMENTATION.md +0 -144
  460. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/RATIONALE.md +0 -146
  461. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/README.md +0 -208
  462. package/.next/standalone/packages/ui/dist/standalone/specs/045-unified-dashboard/TESTING.md +0 -182
  463. package/.next/standalone/packages/ui/dist/standalone/specs/047-git-backfill-timestamps/README.md +0 -314
  464. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/FINDINGS.md +0 -113
  465. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/GUIDELINES.md +0 -237
  466. package/.next/standalone/packages/ui/dist/standalone/specs/048-spec-complexity-analysis/README.md +0 -149
  467. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-COMPARISONS.md +0 -175
  468. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/ANALYSIS-CONSTRAINTS.md +0 -254
  469. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/FIRST-PRINCIPLES.md +0 -376
  470. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-ROADMAP.md +0 -240
  471. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/OPERATIONALIZATION-TOOLS.md +0 -175
  472. package/.next/standalone/packages/ui/dist/standalone/specs/049-leanspec-first-principles/README.md +0 -374
  473. package/.next/standalone/packages/ui/dist/standalone/specs/051-docs-system-prompt-principles/README.md +0 -339
  474. package/.next/standalone/packages/ui/dist/standalone/specs/052-branding-assets/README.md +0 -128
  475. package/.next/standalone/packages/ui/dist/standalone/specs/053-spec-assets-philosophy/README.md +0 -97
  476. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/DESIGN-DECISIONS.md +0 -93
  477. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/OUTPUT-FORMAT-SPEC.md +0 -146
  478. package/.next/standalone/packages/ui/dist/standalone/specs/054-validate-output-lint-style/README.md +0 -175
  479. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART1.md +0 -397
  480. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS-PART2.md +0 -342
  481. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/ANALYSIS.md +0 -44
  482. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CHANGES.md +0 -150
  483. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/CONCERNS-ANALYSIS.md +0 -351
  484. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/DOCS-ALIGNMENT-ANALYSIS.md +0 -238
  485. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/README.md +0 -280
  486. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-DRAFT.md +0 -372
  487. package/.next/standalone/packages/ui/dist/standalone/specs/055-readme-redesign-ai-first/REDESIGN-REFINED.md +0 -466
  488. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/AUDIT-RESULTS.md +0 -178
  489. package/.next/standalone/packages/ui/dist/standalone/specs/056-docs-site-accuracy-audit/README.md +0 -174
  490. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/README.md +0 -295
  491. package/.next/standalone/packages/ui/dist/standalone/specs/057-docs-validation-comprehensive/VALIDATION-RESULTS.md +0 -487
  492. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/ANALYSIS.md +0 -241
  493. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/DESIGN.md +0 -279
  494. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/IMPLEMENTATION.md +0 -642
  495. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/NOTES.md +0 -125
  496. package/.next/standalone/packages/ui/dist/standalone/specs/058-docs-overview-polish/README.md +0 -286
  497. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/ARCHITECTURE.md +0 -392
  498. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/COMMANDS.md +0 -1002
  499. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/CONTEXT-ENGINEERING.md +0 -411
  500. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/IMPLEMENTATION.md +0 -812
  501. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/README.md +0 -504
  502. package/.next/standalone/packages/ui/dist/standalone/specs/059-programmatic-spec-management/TESTING.md +0 -724
  503. package/.next/standalone/packages/ui/dist/standalone/specs/060-core-concepts-coherence/README.md +0 -125
  504. package/.next/standalone/packages/ui/dist/standalone/specs/061-ai-assisted-spec-writing/README.md +0 -299
  505. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/IMPLEMENTATION-PLAN.md +0 -174
  506. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PAGE-SPECIFICATIONS.md +0 -265
  507. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/PROBLEM-ANALYSIS.md +0 -36
  508. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/README.md +0 -243
  509. package/.next/standalone/packages/ui/dist/standalone/specs/062-docs-info-architecture-v2/SOLUTION-DESIGN.md +0 -82
  510. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/DESIGN.md +0 -338
  511. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/EXAMPLES.md +0 -354
  512. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/IMPLEMENTATION.md +0 -189
  513. package/.next/standalone/packages/ui/dist/standalone/specs/063-migration-from-existing-tools/README.md +0 -119
  514. package/.next/standalone/packages/ui/dist/standalone/specs/064-docs-site-zh-translation/README.md +0 -170
  515. package/.next/standalone/packages/ui/dist/standalone/specs/065-v03-planning/README.md +0 -158
  516. package/.next/standalone/packages/ui/dist/standalone/specs/066-context-economy-thresholds-refinement/README.md +0 -842
  517. package/.next/standalone/packages/ui/dist/standalone/specs/067-monorepo-core-extraction/README.md +0 -358
  518. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/DESIGN.md +0 -444
  519. package/.next/standalone/packages/ui/dist/standalone/specs/068-live-specs-ux-enhancements/README.md +0 -357
  520. package/.next/standalone/packages/ui/dist/standalone/specs/069-token-counting-utils/README.md +0 -551
  521. package/.next/standalone/packages/ui/dist/standalone/specs/070-mcp-token-counting-tool/README.md +0 -372
  522. package/.next/standalone/packages/ui/dist/standalone/specs/071-simplified-token-validation/README.md +0 -489
  523. package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +0 -285
  524. package/.next/standalone/packages/ui/dist/standalone/specs/073-template-engine-agents-md/README.md +0 -323
  525. package/.next/standalone/packages/ui/dist/standalone/specs/074-content-at-creation/README.md +0 -136
  526. package/.next/standalone/packages/ui/dist/standalone/specs/075-intelligent-search-engine/README.md +0 -399
  527. package/.next/standalone/packages/ui/dist/standalone/specs/076-programmatic-spec-relationships/README.md +0 -301
  528. package/.next/standalone/packages/ui/dist/standalone/specs/077-archiving-strategy/README.md +0 -235
  529. package/.next/standalone/packages/ui/dist/standalone/specs/078-sub-spec-template-system/README.md +0 -303
  530. package/.next/standalone/packages/ui/dist/standalone/specs/079-cli-alphabetical-organization/README.md +0 -196
  531. package/.next/standalone/packages/ui/dist/standalone/specs/080-mcp-server-modular-architecture/README.md +0 -388
  532. package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +0 -824
  533. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DATABASE.md +0 -111
  534. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/DEPLOYMENT.md +0 -69
  535. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/FILESYSTEM.md +0 -77
  536. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/IMPLEMENTATION.md +0 -184
  537. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +0 -496
  538. package/.next/standalone/packages/ui/dist/standalone/specs/083-web-navigation-performance/README.md +0 -490
  539. package/.next/standalone/packages/ui/dist/standalone/specs/084-sub-spec-visibility-in-tools/README.md +0 -389
  540. package/.next/standalone/packages/ui/dist/standalone/specs/085-cli-relationship-commands/README.md +0 -920
  541. package/.next/standalone/packages/ui/dist/standalone/specs/086-template-component-deduplication/README.md +0 -146
  542. package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +0 -607
  543. package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +0 -104
  544. package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +0 -124
  545. package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +0 -129
  546. package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +0 -244
  547. package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +0 -148
  548. package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +0 -54
  549. package/.next/standalone/packages/ui/dist/standalone/specs/archived/001-typescript-cli-migration/README.md +0 -37
  550. package/.next/standalone/packages/ui/dist/standalone/specs/archived/002-template-system-redesign/README.md +0 -60
  551. package/.next/standalone/packages/ui/dist/standalone/specs/archived/003-init-system-redesign/README.md +0 -113
  552. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/README.md +0 -69
  553. package/.next/standalone/packages/ui/dist/standalone/specs/archived/004-existing-project-integration/SUMMARY.md +0 -112
  554. package/.next/standalone/packages/ui/dist/standalone/specs/archived/005-structured-frontmatter/README.md +0 -229
  555. package/.next/standalone/packages/ui/dist/standalone/specs/archived/006-pm-visualization-tools/README.md +0 -406
  556. package/.next/standalone/packages/ui/dist/standalone/specs/archived/007-system-prompt-updates/README.md +0 -168
  557. package/.next/standalone/packages/ui/dist/standalone/specs/archived/008-commander-migration/README.md +0 -174
  558. package/.next/standalone/packages/ui/dist/standalone/specs/archived/009-cli-ux-enhancement/README.md +0 -212
  559. package/.next/standalone/packages/ui/dist/standalone/specs/archived/010-commands-refactor/README.md +0 -249
  560. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/README.md +0 -60
  561. package/.next/standalone/packages/ui/dist/standalone/specs/archived/011-test-results/TEST_SUMMARY.md +0 -139
  562. package/.next/standalone/packages/ui/dist/standalone/specs/archived/012-sub-spec-files/README.md +0 -722
  563. package/.next/standalone/packages/ui/dist/standalone/specs/archived/013-custom-spec-templates/README.md +0 -413
  564. package/.next/standalone/packages/ui/dist/standalone/specs/archived/015-npm-publishing/README.md +0 -255
  565. package/.next/standalone/packages/ui/dist/standalone/specs/archived/019-readme-improvement/README.md +0 -252
  566. package/.next/standalone/packages/ui/dist/standalone/specs/archived/020-documentation-website/README.md +0 -253
  567. package/.next/standalone/packages/ui/dist/standalone/specs/archived/021-docusaurus-vercel-migration/README.md +0 -612
  568. package/.next/standalone/packages/ui/dist/standalone/specs/archived/022-flexible-folder-structure/README.md +0 -794
  569. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/DESIGN.md +0 -834
  570. package/.next/standalone/packages/ui/dist/standalone/specs/archived/023-folder-structure-improvements/README.md +0 -255
  571. package/.next/standalone/packages/ui/dist/standalone/specs/archived/027-cli-ui-ux-optimization/README.md +0 -454
  572. package/.next/standalone/packages/ui/dist/standalone/specs/archived/028-cli-ui-modernization/README.md +0 -172
  573. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/IMPLEMENTATION.md +0 -152
  574. package/.next/standalone/packages/ui/dist/standalone/specs/archived/029-visualization-improvements/README.md +0 -95
  575. package/.next/standalone/packages/ui/dist/standalone/specs/archived/030-created-date-format-bug/README.md +0 -87
  576. package/.next/standalone/packages/ui/dist/standalone/specs/archived/031-gantt-ux-improvements/README.md +0 -230
  577. package/.next/standalone/packages/ui/dist/standalone/specs/archived/032-console-log-chalk-security/README.md +0 -89
  578. package/.next/standalone/packages/ui/dist/standalone/specs/archived/033-mcp-server/README.md +0 -89
  579. package/.next/standalone/packages/ui/dist/standalone/specs/archived/037-docs-overhaul/README.md +0 -166
  580. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-flat-structure-migration/README.md +0 -276
  581. package/.next/standalone/packages/ui/dist/standalone/specs/archived/038-mcp-frontmatter-bug-fix/README.md +0 -122
  582. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-simplify-viewer-commands/README.md +0 -198
  583. package/.next/standalone/packages/ui/dist/standalone/specs/archived/039-template-variable-sync/README.md +0 -192
  584. package/.next/standalone/packages/ui/dist/standalone/specs/archived/040-spec-viewer-commands/README.md +0 -171
  585. package/.next/standalone/packages/ui/dist/standalone/specs/archived/042-mcp-error-handling/README.md +0 -200
  586. package/.next/standalone/packages/ui/dist/standalone/specs/archived/044-spec-relationships-clarity/README.md +0 -317
  587. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/DESIGN.md +0 -276
  588. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/IMPLEMENTATION.md +0 -241
  589. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/README.md +0 -139
  590. package/.next/standalone/packages/ui/dist/standalone/specs/archived/046-stats-dashboard-refactor/TESTING.md +0 -328
  591. package/.next/standalone/packages/ui/dist/standalone/specs/archived/050-tool-redesign-first-principles/README.md +0 -400
  592. package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +0 -1
  593. package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +0 -1
  594. package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +0 -1
  595. package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +0 -1
  596. package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +0 -1
  597. package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +0 -3
  598. package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +0 -1
  599. package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +0 -1
  600. package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +0 -1
  601. package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +0 -1
  602. package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +0 -1
  603. package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +0 -1
  604. package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +0 -1
  605. package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +0 -1
  606. package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +0 -1
  607. package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +0 -1
  608. package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +0 -1
  609. package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +0 -1
  610. package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +0 -5
  611. package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +0 -1
  612. package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +0 -1
  613. package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +0 -4
  614. package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +0 -2
  615. package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +0 -19
  616. package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +0 -3
  617. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +0 -11
  618. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +0 -1
  619. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +0 -1
  620. package/.next/static/chunks/1eb8283995f370c6.js +0 -1
  621. package/.next/static/chunks/20f4141ccb5d4eb4.js +0 -1
  622. package/.next/static/chunks/2c85b8059e42248a.js +0 -1
  623. package/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
  624. package/.next/static/chunks/37a1236ed50645a6.js +0 -1
  625. package/.next/static/chunks/3b6b058ebd14dbed.js +0 -1
  626. package/.next/static/chunks/9d84ba08a41145ec.js +0 -5
  627. package/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
  628. package/.next/static/chunks/c4b1faff3361a749.js +0 -1
  629. package/.next/static/chunks/d7420d2a867e57b5.js +0 -1
  630. package/.next/static/chunks/dae403679aae65f4.js +0 -1
  631. package/.next/static/chunks/efded9da04c960d8.js +0 -1
  632. package/.next/static/chunks/f382932f1a5d6359.js +0 -10
  633. package/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
  634. package/.next/static/chunks/f6dd06e6d22d2d12.js +0 -3
  635. /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_buildManifest.js +0 -0
  636. /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_clientMiddlewareManifest.json +0 -0
  637. /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → T8X9UGfigRL0qWZiBHNjy}/_ssgManifest.js +0 -0
  638. /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_buildManifest.js +0 -0
  639. /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_clientMiddlewareManifest.json +0 -0
  640. /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/T8X9UGfigRL0qWZiBHNjy}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[531428,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(479220),e=a.i(793090),f=a.i(66497),g=a.i(108920),h=a.i(863535);let i=(0,h.default)("ellipsis-vertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]]),j=(0,h.default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);var k=a.i(72245),l=a.i(227725),m=a.i(406334),n=a.i(980096),o=a.i(559653),p=a.i(517988),q=a.i(763375),r=a.i(317449),s=a.i(675655),t=a.i(466965),u=a.i(553484),v=a.i(983644),w=a.i(241857),x=a.i(84228),y=a.i(699700),z=a.i(272311),A=a.i(407547),B=a.i(544329),C=a.i(244293),D="rovingFocusGroup.onEntryFocus",E={bubbles:!1,cancelable:!0},F="RovingFocusGroup",[G,H,I]=(0,t.createCollection)(F),[J,K]=(0,q.createContextScope)(F,[I]),[L,M]=J(F),N=c.forwardRef((a,c)=>(0,b.jsx)(G.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(G.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(O,{...a,ref:c})})}));N.displayName=F;var O=c.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:e,orientation:f,loop:g=!1,dir:h,currentTabStopId:i,defaultCurrentTabStopId:j,onCurrentTabStopIdChange:k,onEntryFocus:l,preventScrollOnEntryFocus:m=!1,...n}=a,q=c.useRef(null),t=(0,p.useComposedRefs)(d,q),v=(0,u.useDirection)(h),[w,x]=(0,r.useControllableState)({prop:i,defaultProp:j??null,onChange:k,caller:F}),[y,z]=c.useState(!1),A=(0,C.useCallbackRef)(l),B=H(e),G=c.useRef(!1),[I,J]=c.useState(0);return c.useEffect(()=>{let a=q.current;if(a)return a.addEventListener(D,A),()=>a.removeEventListener(D,A)},[A]),(0,b.jsx)(L,{scope:e,orientation:f,dir:v,loop:g,currentTabStopId:w,onItemFocus:c.useCallback(a=>x(a),[x]),onItemShiftTab:c.useCallback(()=>z(!0),[]),onFocusableItemAdd:c.useCallback(()=>J(a=>a+1),[]),onFocusableItemRemove:c.useCallback(()=>J(a=>a-1),[]),children:(0,b.jsx)(s.Primitive.div,{tabIndex:y||0===I?-1:0,"data-orientation":f,...n,ref:t,style:{outline:"none",...a.style},onMouseDown:(0,o.composeEventHandlers)(a.onMouseDown,()=>{G.current=!0}),onFocus:(0,o.composeEventHandlers)(a.onFocus,a=>{let b=!G.current;if(a.target===a.currentTarget&&b&&!y){let b=new CustomEvent(D,E);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=B().filter(a=>a.focusable);S([a.find(a=>a.active),a.find(a=>a.id===w),...a].filter(Boolean).map(a=>a.ref.current),m)}}G.current=!1}),onBlur:(0,o.composeEventHandlers)(a.onBlur,()=>z(!1))})})}),P="RovingFocusGroupItem",Q=c.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:e,focusable:f=!0,active:g=!1,tabStopId:h,children:i,...j}=a,k=(0,y.useId)(),l=h||k,m=M(P,e),n=m.currentTabStopId===l,p=H(e),{onFocusableItemAdd:q,onFocusableItemRemove:r,currentTabStopId:t}=m;return c.useEffect(()=>{if(f)return q(),()=>r()},[f,q,r]),(0,b.jsx)(G.ItemSlot,{scope:e,id:l,focusable:f,active:g,children:(0,b.jsx)(s.Primitive.span,{tabIndex:n?0:-1,"data-orientation":m.orientation,...j,ref:d,onMouseDown:(0,o.composeEventHandlers)(a.onMouseDown,a=>{f?m.onItemFocus(l):a.preventDefault()}),onFocus:(0,o.composeEventHandlers)(a.onFocus,()=>m.onItemFocus(l)),onKeyDown:(0,o.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void m.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return R[e]}(a,m.orientation,m.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=p().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=m.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>S(e))}}),children:"function"==typeof i?i({isCurrentTabStop:n,hasTabStop:null!=t}):i})})});Q.displayName=P;var R={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function S(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}var T=a.i(878357),U=a.i(516164),V=a.i(151867),W=["Enter"," "],X=["ArrowUp","PageDown","End"],Y=["ArrowDown","PageUp","Home",...X],Z={ltr:[...W,"ArrowRight"],rtl:[...W,"ArrowLeft"]},$={ltr:["ArrowLeft"],rtl:["ArrowRight"]},_="Menu",[aa,ab,ac]=(0,t.createCollection)(_),[ad,ae]=(0,q.createContextScope)(_,[ac,z.createPopperScope,K]),af=(0,z.createPopperScope)(),ag=K(),[ah,ai]=ad(_),[aj,ak]=ad(_),al=a=>{let{__scopeMenu:d,open:e=!1,children:f,dir:g,onOpenChange:h,modal:i=!0}=a,j=af(d),[k,l]=c.useState(null),m=c.useRef(!1),n=(0,C.useCallbackRef)(h),o=(0,u.useDirection)(g);return c.useEffect(()=>{let a=()=>{m.current=!0,document.addEventListener("pointerdown",b,{capture:!0,once:!0}),document.addEventListener("pointermove",b,{capture:!0,once:!0})},b=()=>m.current=!1;return document.addEventListener("keydown",a,{capture:!0}),()=>{document.removeEventListener("keydown",a,{capture:!0}),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("pointermove",b,{capture:!0})}},[]),(0,b.jsx)(z.Root,{...j,children:(0,b.jsx)(ah,{scope:d,open:e,onOpenChange:n,content:k,onContentChange:l,children:(0,b.jsx)(aj,{scope:d,onClose:c.useCallback(()=>n(!1),[n]),isUsingKeyboardRef:m,dir:o,modal:i,children:f})})})};al.displayName=_;var am=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a,f=af(d);return(0,b.jsx)(z.Anchor,{...f,...e,ref:c})});am.displayName="MenuAnchor";var an="MenuPortal",[ao,ap]=ad(an,{forceMount:void 0}),aq=a=>{let{__scopeMenu:c,forceMount:d,children:e,container:f}=a,g=ai(an,c);return(0,b.jsx)(ao,{scope:c,forceMount:d,children:(0,b.jsx)(B.Presence,{present:d||g.open,children:(0,b.jsx)(A.Portal,{asChild:!0,container:f,children:e})})})};aq.displayName=an;var ar="MenuContent",[as,at]=ad(ar),au=c.forwardRef((a,c)=>{let d=ap(ar,a.__scopeMenu),{forceMount:e=d.forceMount,...f}=a,g=ai(ar,a.__scopeMenu),h=ak(ar,a.__scopeMenu);return(0,b.jsx)(aa.Provider,{scope:a.__scopeMenu,children:(0,b.jsx)(B.Presence,{present:e||g.open,children:(0,b.jsx)(aa.Slot,{scope:a.__scopeMenu,children:h.modal?(0,b.jsx)(av,{...f,ref:c}):(0,b.jsx)(aw,{...f,ref:c})})})})}),av=c.forwardRef((a,d)=>{let e=ai(ar,a.__scopeMenu),f=c.useRef(null),g=(0,p.useComposedRefs)(d,f);return c.useEffect(()=>{let a=f.current;if(a)return(0,U.hideOthers)(a)},[]),(0,b.jsx)(ay,{...a,ref:g,trapFocus:e.open,disableOutsidePointerEvents:e.open,disableOutsideScroll:!0,onFocusOutside:(0,o.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>e.onOpenChange(!1)})}),aw=c.forwardRef((a,c)=>{let d=ai(ar,a.__scopeMenu);return(0,b.jsx)(ay,{...a,ref:c,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>d.onOpenChange(!1)})}),ax=(0,T.createSlot)("MenuContent.ScrollLock"),ay=c.forwardRef((a,d)=>{let{__scopeMenu:e,loop:f=!1,trapFocus:g,onOpenAutoFocus:h,onCloseAutoFocus:i,disableOutsidePointerEvents:j,onEntryFocus:k,onEscapeKeyDown:l,onPointerDownOutside:m,onFocusOutside:n,onInteractOutside:q,onDismiss:r,disableOutsideScroll:s,...t}=a,u=ai(ar,e),y=ak(ar,e),A=af(e),B=ag(e),C=ab(e),[D,E]=c.useState(null),F=c.useRef(null),G=(0,p.useComposedRefs)(d,F,u.onContentChange),H=c.useRef(0),I=c.useRef(""),J=c.useRef(0),K=c.useRef(null),L=c.useRef("right"),M=c.useRef(0),O=s?V.RemoveScroll:c.Fragment;c.useEffect(()=>()=>window.clearTimeout(H.current),[]),(0,w.useFocusGuards)();let P=c.useCallback(a=>{var b,c;return L.current===K.current?.side&&(b=a,!!(c=K.current?.area)&&function(a,b){let{x:c,y:d}=a,e=!1;for(let a=0,f=b.length-1;a<b.length;f=a++){let g=b[a],h=b[f],i=g.x,j=g.y,k=h.x,l=h.y;j>d!=l>d&&c<(k-i)*(d-j)/(l-j)+i&&(e=!e)}return e}({x:b.clientX,y:b.clientY},c))},[]);return(0,b.jsx)(as,{scope:e,searchRef:I,onItemEnter:c.useCallback(a=>{P(a)&&a.preventDefault()},[P]),onItemLeave:c.useCallback(a=>{P(a)||(F.current?.focus(),E(null))},[P]),onTriggerLeave:c.useCallback(a=>{P(a)&&a.preventDefault()},[P]),pointerGraceTimerRef:J,onPointerGraceIntentChange:c.useCallback(a=>{K.current=a},[]),children:(0,b.jsx)(O,{...s?{as:ax,allowPinchZoom:!0}:void 0,children:(0,b.jsx)(x.FocusScope,{asChild:!0,trapped:g,onMountAutoFocus:(0,o.composeEventHandlers)(h,a=>{a.preventDefault(),F.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:(0,b.jsx)(v.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:j,onEscapeKeyDown:l,onPointerDownOutside:m,onFocusOutside:n,onInteractOutside:q,onDismiss:r,children:(0,b.jsx)(N,{asChild:!0,...B,dir:y.dir,orientation:"vertical",loop:f,currentTabStopId:D,onCurrentTabStopIdChange:E,onEntryFocus:(0,o.composeEventHandlers)(k,a=>{y.isUsingKeyboardRef.current||a.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,b.jsx)(z.Content,{role:"menu","aria-orientation":"vertical","data-state":aY(u.open),"data-radix-menu-content":"",dir:y.dir,...A,...t,ref:G,style:{outline:"none",...t.style},onKeyDown:(0,o.composeEventHandlers)(t.onKeyDown,a=>{let b=a.target.closest("[data-radix-menu-content]")===a.currentTarget,c=a.ctrlKey||a.altKey||a.metaKey,d=1===a.key.length;if(b){var e;let b,f,g,h,i,j;"Tab"===a.key&&a.preventDefault(),!c&&d&&(e=a.key,b=I.current+e,f=C().filter(a=>!a.disabled),g=document.activeElement,h=f.find(a=>a.ref.current===g)?.textValue,i=function(a,b,c){var d;let e=b.length>1&&Array.from(b).every(a=>a===b[0])?b[0]:b,f=c?a.indexOf(c):-1,g=(d=Math.max(f,0),a.map((b,c)=>a[(d+c)%a.length]));1===e.length&&(g=g.filter(a=>a!==c));let h=g.find(a=>a.toLowerCase().startsWith(e.toLowerCase()));return h!==c?h:void 0}(f.map(a=>a.textValue),b,h),j=f.find(a=>a.textValue===i)?.ref.current,function a(b){I.current=b,window.clearTimeout(H.current),""!==b&&(H.current=window.setTimeout(()=>a(""),1e3))}(b),j&&setTimeout(()=>j.focus()))}let f=F.current;if(a.target!==f||!Y.includes(a.key))return;a.preventDefault();let g=C().filter(a=>!a.disabled).map(a=>a.ref.current);X.includes(a.key)&&g.reverse(),function(a){let b=document.activeElement;for(let c of a)if(c===b||(c.focus(),document.activeElement!==b))return}(g)}),onBlur:(0,o.composeEventHandlers)(a.onBlur,a=>{a.currentTarget.contains(a.target)||(window.clearTimeout(H.current),I.current="")}),onPointerMove:(0,o.composeEventHandlers)(a.onPointerMove,a_(a=>{let b=a.target,c=M.current!==a.clientX;a.currentTarget.contains(b)&&c&&(L.current=a.clientX>M.current?"right":"left",M.current=a.clientX)}))})})})})})})});au.displayName=ar;var az=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a;return(0,b.jsx)(s.Primitive.div,{role:"group",...e,ref:c})});az.displayName="MenuGroup";var aA=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a;return(0,b.jsx)(s.Primitive.div,{...e,ref:c})});aA.displayName="MenuLabel";var aB="MenuItem",aC="menu.itemSelect",aD=c.forwardRef((a,d)=>{let{disabled:e=!1,onSelect:f,...g}=a,h=c.useRef(null),i=ak(aB,a.__scopeMenu),j=at(aB,a.__scopeMenu),k=(0,p.useComposedRefs)(d,h),l=c.useRef(!1);return(0,b.jsx)(aE,{...g,ref:k,disabled:e,onClick:(0,o.composeEventHandlers)(a.onClick,()=>{let a=h.current;if(!e&&a){let b=new CustomEvent(aC,{bubbles:!0,cancelable:!0});a.addEventListener(aC,a=>f?.(a),{once:!0}),(0,s.dispatchDiscreteCustomEvent)(a,b),b.defaultPrevented?l.current=!1:i.onClose()}}),onPointerDown:b=>{a.onPointerDown?.(b),l.current=!0},onPointerUp:(0,o.composeEventHandlers)(a.onPointerUp,a=>{l.current||a.currentTarget?.click()}),onKeyDown:(0,o.composeEventHandlers)(a.onKeyDown,a=>{let b=""!==j.searchRef.current;e||b&&" "===a.key||W.includes(a.key)&&(a.currentTarget.click(),a.preventDefault())})})});aD.displayName=aB;var aE=c.forwardRef((a,d)=>{let{__scopeMenu:e,disabled:f=!1,textValue:g,...h}=a,i=at(aB,e),j=ag(e),k=c.useRef(null),l=(0,p.useComposedRefs)(d,k),[m,n]=c.useState(!1),[q,r]=c.useState("");return c.useEffect(()=>{let a=k.current;a&&r((a.textContent??"").trim())},[h.children]),(0,b.jsx)(aa.ItemSlot,{scope:e,disabled:f,textValue:g??q,children:(0,b.jsx)(Q,{asChild:!0,...j,focusable:!f,children:(0,b.jsx)(s.Primitive.div,{role:"menuitem","data-highlighted":m?"":void 0,"aria-disabled":f||void 0,"data-disabled":f?"":void 0,...h,ref:l,onPointerMove:(0,o.composeEventHandlers)(a.onPointerMove,a_(a=>{f?i.onItemLeave(a):(i.onItemEnter(a),a.defaultPrevented||a.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,o.composeEventHandlers)(a.onPointerLeave,a_(a=>i.onItemLeave(a))),onFocus:(0,o.composeEventHandlers)(a.onFocus,()=>n(!0)),onBlur:(0,o.composeEventHandlers)(a.onBlur,()=>n(!1))})})})}),aF=c.forwardRef((a,c)=>{let{checked:d=!1,onCheckedChange:e,...f}=a;return(0,b.jsx)(aN,{scope:a.__scopeMenu,checked:d,children:(0,b.jsx)(aD,{role:"menuitemcheckbox","aria-checked":aZ(d)?"mixed":d,...f,ref:c,"data-state":a$(d),onSelect:(0,o.composeEventHandlers)(f.onSelect,()=>e?.(!!aZ(d)||!d),{checkForDefaultPrevented:!1})})})});aF.displayName="MenuCheckboxItem";var aG="MenuRadioGroup",[aH,aI]=ad(aG,{value:void 0,onValueChange:()=>{}}),aJ=c.forwardRef((a,c)=>{let{value:d,onValueChange:e,...f}=a,g=(0,C.useCallbackRef)(e);return(0,b.jsx)(aH,{scope:a.__scopeMenu,value:d,onValueChange:g,children:(0,b.jsx)(az,{...f,ref:c})})});aJ.displayName=aG;var aK="MenuRadioItem",aL=c.forwardRef((a,c)=>{let{value:d,...e}=a,f=aI(aK,a.__scopeMenu),g=d===f.value;return(0,b.jsx)(aN,{scope:a.__scopeMenu,checked:g,children:(0,b.jsx)(aD,{role:"menuitemradio","aria-checked":g,...e,ref:c,"data-state":a$(g),onSelect:(0,o.composeEventHandlers)(e.onSelect,()=>f.onValueChange?.(d),{checkForDefaultPrevented:!1})})})});aL.displayName=aK;var aM="MenuItemIndicator",[aN,aO]=ad(aM,{checked:!1}),aP=c.forwardRef((a,c)=>{let{__scopeMenu:d,forceMount:e,...f}=a,g=aO(aM,d);return(0,b.jsx)(B.Presence,{present:e||aZ(g.checked)||!0===g.checked,children:(0,b.jsx)(s.Primitive.span,{...f,ref:c,"data-state":a$(g.checked)})})});aP.displayName=aM;var aQ=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a;return(0,b.jsx)(s.Primitive.div,{role:"separator","aria-orientation":"horizontal",...e,ref:c})});aQ.displayName="MenuSeparator";var aR=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a,f=af(d);return(0,b.jsx)(z.Arrow,{...f,...e,ref:c})});aR.displayName="MenuArrow";var[aS,aT]=ad("MenuSub"),aU="MenuSubTrigger",aV=c.forwardRef((a,d)=>{let e=ai(aU,a.__scopeMenu),f=ak(aU,a.__scopeMenu),g=aT(aU,a.__scopeMenu),h=at(aU,a.__scopeMenu),i=c.useRef(null),{pointerGraceTimerRef:j,onPointerGraceIntentChange:k}=h,l={__scopeMenu:a.__scopeMenu},m=c.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return c.useEffect(()=>m,[m]),c.useEffect(()=>{let a=j.current;return()=>{window.clearTimeout(a),k(null)}},[j,k]),(0,b.jsx)(am,{asChild:!0,...l,children:(0,b.jsx)(aE,{id:g.triggerId,"aria-haspopup":"menu","aria-expanded":e.open,"aria-controls":g.contentId,"data-state":aY(e.open),...a,ref:(0,p.composeRefs)(d,g.onTriggerChange),onClick:b=>{a.onClick?.(b),a.disabled||b.defaultPrevented||(b.currentTarget.focus(),e.open||e.onOpenChange(!0))},onPointerMove:(0,o.composeEventHandlers)(a.onPointerMove,a_(b=>{h.onItemEnter(b),!b.defaultPrevented&&(a.disabled||e.open||i.current||(h.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{e.onOpenChange(!0),m()},100)))})),onPointerLeave:(0,o.composeEventHandlers)(a.onPointerLeave,a_(a=>{m();let b=e.content?.getBoundingClientRect();if(b){let c=e.content?.dataset.side,d="right"===c,f=b[d?"left":"right"],g=b[d?"right":"left"];h.onPointerGraceIntentChange({area:[{x:a.clientX+(d?-5:5),y:a.clientY},{x:f,y:b.top},{x:g,y:b.top},{x:g,y:b.bottom},{x:f,y:b.bottom}],side:c}),window.clearTimeout(j.current),j.current=window.setTimeout(()=>h.onPointerGraceIntentChange(null),300)}else{if(h.onTriggerLeave(a),a.defaultPrevented)return;h.onPointerGraceIntentChange(null)}})),onKeyDown:(0,o.composeEventHandlers)(a.onKeyDown,b=>{let c=""!==h.searchRef.current;a.disabled||c&&" "===b.key||Z[f.dir].includes(b.key)&&(e.onOpenChange(!0),e.content?.focus(),b.preventDefault())})})})});aV.displayName=aU;var aW="MenuSubContent",aX=c.forwardRef((a,d)=>{let e=ap(ar,a.__scopeMenu),{forceMount:f=e.forceMount,...g}=a,h=ai(ar,a.__scopeMenu),i=ak(ar,a.__scopeMenu),j=aT(aW,a.__scopeMenu),k=c.useRef(null),l=(0,p.useComposedRefs)(d,k);return(0,b.jsx)(aa.Provider,{scope:a.__scopeMenu,children:(0,b.jsx)(B.Presence,{present:f||h.open,children:(0,b.jsx)(aa.Slot,{scope:a.__scopeMenu,children:(0,b.jsx)(ay,{id:j.contentId,"aria-labelledby":j.triggerId,...g,ref:l,align:"start",side:"rtl"===i.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:a=>{i.isUsingKeyboardRef.current&&k.current?.focus(),a.preventDefault()},onCloseAutoFocus:a=>a.preventDefault(),onFocusOutside:(0,o.composeEventHandlers)(a.onFocusOutside,a=>{a.target!==j.trigger&&h.onOpenChange(!1)}),onEscapeKeyDown:(0,o.composeEventHandlers)(a.onEscapeKeyDown,a=>{i.onClose(),a.preventDefault()}),onKeyDown:(0,o.composeEventHandlers)(a.onKeyDown,a=>{let b=a.currentTarget.contains(a.target),c=$[i.dir].includes(a.key);b&&c&&(h.onOpenChange(!1),j.trigger?.focus(),a.preventDefault())})})})})})});function aY(a){return a?"open":"closed"}function aZ(a){return"indeterminate"===a}function a$(a){return aZ(a)?"indeterminate":a?"checked":"unchecked"}function a_(a){return b=>"mouse"===b.pointerType?a(b):void 0}aX.displayName=aW;var a0="DropdownMenu",[a1,a2]=(0,q.createContextScope)(a0,[ae]),a3=ae(),[a4,a5]=a1(a0),a6=a=>{let{__scopeDropdownMenu:d,children:e,dir:f,open:g,defaultOpen:h,onOpenChange:i,modal:j=!0}=a,k=a3(d),l=c.useRef(null),[m,n]=(0,r.useControllableState)({prop:g,defaultProp:h??!1,onChange:i,caller:a0});return(0,b.jsx)(a4,{scope:d,triggerId:(0,y.useId)(),triggerRef:l,contentId:(0,y.useId)(),open:m,onOpenChange:n,onOpenToggle:c.useCallback(()=>n(a=>!a),[n]),modal:j,children:(0,b.jsx)(al,{...k,open:m,onOpenChange:n,dir:f,modal:j,children:e})})};a6.displayName=a0;var a7="DropdownMenuTrigger",a8=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,disabled:e=!1,...f}=a,g=a5(a7,d),h=a3(d);return(0,b.jsx)(am,{asChild:!0,...h,children:(0,b.jsx)(s.Primitive.button,{type:"button",id:g.triggerId,"aria-haspopup":"menu","aria-expanded":g.open,"aria-controls":g.open?g.contentId:void 0,"data-state":g.open?"open":"closed","data-disabled":e?"":void 0,disabled:e,...f,ref:(0,p.composeRefs)(c,g.triggerRef),onPointerDown:(0,o.composeEventHandlers)(a.onPointerDown,a=>{!e&&0===a.button&&!1===a.ctrlKey&&(g.onOpenToggle(),g.open||a.preventDefault())}),onKeyDown:(0,o.composeEventHandlers)(a.onKeyDown,a=>{!e&&(["Enter"," "].includes(a.key)&&g.onOpenToggle(),"ArrowDown"===a.key&&g.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(a.key)&&a.preventDefault())})})})});a8.displayName=a7;var a9=a=>{let{__scopeDropdownMenu:c,...d}=a,e=a3(c);return(0,b.jsx)(aq,{...e,...d})};a9.displayName="DropdownMenuPortal";var ba="DropdownMenuContent",bb=c.forwardRef((a,d)=>{let{__scopeDropdownMenu:e,...f}=a,g=a5(ba,e),h=a3(e),i=c.useRef(!1);return(0,b.jsx)(au,{id:g.contentId,"aria-labelledby":g.triggerId,...h,...f,ref:d,onCloseAutoFocus:(0,o.composeEventHandlers)(a.onCloseAutoFocus,a=>{i.current||g.triggerRef.current?.focus(),i.current=!1,a.preventDefault()}),onInteractOutside:(0,o.composeEventHandlers)(a.onInteractOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey,d=2===b.button||c;(!g.modal||d)&&(i.current=!0)}),style:{...a.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});bb.displayName=ba,c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(az,{...f,...e,ref:c})}).displayName="DropdownMenuGroup";var bc=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aA,{...f,...e,ref:c})});bc.displayName="DropdownMenuLabel";var bd=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aD,{...f,...e,ref:c})});bd.displayName="DropdownMenuItem";var be=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aF,{...f,...e,ref:c})});be.displayName="DropdownMenuCheckboxItem",c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aJ,{...f,...e,ref:c})}).displayName="DropdownMenuRadioGroup";var bf=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aL,{...f,...e,ref:c})});bf.displayName="DropdownMenuRadioItem";var bg=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aP,{...f,...e,ref:c})});bg.displayName="DropdownMenuItemIndicator";var bh=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aQ,{...f,...e,ref:c})});bh.displayName="DropdownMenuSeparator",c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aR,{...f,...e,ref:c})}).displayName="DropdownMenuArrow";var bi=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aV,{...f,...e,ref:c})});bi.displayName="DropdownMenuSubTrigger";var bj=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=a3(d);return(0,b.jsx)(aX,{...f,...e,ref:c,style:{...a.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});bj.displayName="DropdownMenuSubContent";var bk=a.i(470485),bl=a.i(141270),bm=a.i(532418),bn=a.i(687052);c.forwardRef(({className:a,inset:c,children:d,...e},f)=>(0,b.jsxs)(bi,{ref:f,className:(0,bn.cn)("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",c&&"pl-8",a),...e,children:[d,(0,b.jsx)(bl.ChevronRight,{className:"ml-auto h-4 w-4"})]})).displayName=bi.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(bj,{ref:d,className:(0,bn.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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-[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",a),...c})).displayName=bj.displayName;let bo=c.forwardRef(({className:a,sideOffset:c=4,...d},e)=>(0,b.jsx)(a9,{children:(0,b.jsx)(bb,{ref:e,sideOffset:c,className:(0,bn.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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-[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",a),...d})}));bo.displayName=bb.displayName;let bp=c.forwardRef(({className:a,inset:c,...d},e)=>(0,b.jsx)(bd,{ref:e,className:(0,bn.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",c&&"pl-8",a),...d}));bp.displayName=bd.displayName,c.forwardRef(({className:a,children:c,checked:d,...e},f)=>(0,b.jsxs)(be,{ref:f,className:(0,bn.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),checked:d,...e,children:[(0,b.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,b.jsx)(bg,{children:(0,b.jsx)(bk.Check,{className:"h-4 w-4"})})}),c]})).displayName=be.displayName,c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(bf,{ref:e,className:(0,bn.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...d,children:[(0,b.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,b.jsx)(bg,{children:(0,b.jsx)(bm.Circle,{className:"h-2 w-2 fill-current"})})}),c]})).displayName=bf.displayName,c.forwardRef(({className:a,inset:c,...d},e)=>(0,b.jsx)(bc,{ref:e,className:(0,bn.cn)("px-2 py-1.5 text-sm font-semibold",c&&"pl-8",a),...d})).displayName=bc.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(bh,{ref:d,className:(0,bn.cn)("-mx-1 my-1 h-px bg-muted",a),...c})).displayName=bh.displayName;var bq=a.i(365791),br=a.i(435133),bs=a.i(779121);function bt(){let{projects:a,switchProject:h,toggleFavorite:o,removeProject:p}=(0,k.useProject)(),[q,r]=(0,c.useState)(""),[s,t]=(0,c.useState)(!1),u=a.filter(a=>a.name.toLowerCase().includes(q.toLowerCase())),v=async a=>{await h(a)};return(0,b.jsxs)("div",{className:"container max-w-5xl py-8 space-y-8",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"Projects"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-2",children:"Manage your LeanSpec projects and workspaces."})]}),(0,b.jsxs)(l.Button,{onClick:()=>t(!0),children:[(0,b.jsx)(d.Plus,{className:"mr-2 h-4 w-4"}),"Add Project"]})]}),(0,b.jsx)("div",{className:"flex items-center space-x-2",children:(0,b.jsxs)("div",{className:"relative flex-1 max-w-sm",children:[(0,b.jsx)(e.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,b.jsx)(m.Input,{placeholder:"Search projects...",value:q,onChange:a=>r(a.target.value),className:"pl-8"})]})}),(0,b.jsxs)("div",{className:"grid gap-6 md:grid-cols-2 lg:grid-cols-3",children:[u.map(a=>(0,b.jsxs)(n.Card,{className:"group relative hover:border-primary/50 transition-colors",children:[(0,b.jsx)(n.CardHeader,{className:"pb-4",children:(0,b.jsxs)("div",{className:"flex items-start justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,b.jsx)("div",{className:"h-8 w-8 rounded-full flex items-center justify-center text-white text-xs font-bold",style:{backgroundColor:a.color||"#666"},children:a.name.substring(0,2).toUpperCase()}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)(n.CardTitle,{className:"text-base leading-none",children:(0,b.jsx)("button",{onClick:()=>v(a.id),className:"hover:underline focus:outline-none",children:a.name})}),(0,b.jsx)(n.CardDescription,{className:"text-xs truncate max-w-[150px]",children:a.path})]})]}),(0,b.jsxs)(a6,{children:[(0,b.jsx)(a8,{asChild:!0,children:(0,b.jsxs)(l.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",children:[(0,b.jsx)(i,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Open menu"})]})}),(0,b.jsxs)(bo,{align:"end",children:[(0,b.jsxs)(bp,{onClick:()=>o(a.id),children:[(0,b.jsx)(g.Star,{className:"mr-2 h-4 w-4"}),a.favorite?"Unfavorite":"Favorite"]}),(0,b.jsxs)(bp,{className:"text-destructive",onClick:()=>p(a.id),children:[(0,b.jsx)(j,{className:"mr-2 h-4 w-4"}),"Remove"]})]})]})]})}),(0,b.jsx)(n.CardContent,{className:"pb-4",children:(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm text-muted-foreground",children:[(0,b.jsxs)("div",{className:"flex items-center",children:[(0,b.jsx)(f.FolderOpen,{className:"mr-1 h-3 w-3"}),(0,b.jsx)("span",{className:"text-xs",children:"Local"})]}),a.lastAccessed&&(0,b.jsxs)("span",{className:"text-xs",children:["Opened ",(0,br.default)(a.lastAccessed).fromNow()]})]})}),a.favorite&&(0,b.jsx)("div",{className:"absolute top-2 right-10 text-yellow-500",children:(0,b.jsx)(g.Star,{className:"h-4 w-4 fill-current"})})]},a.id)),0===u.length&&(0,b.jsxs)("div",{className:"col-span-full flex flex-col items-center justify-center py-12 text-center border rounded-lg border-dashed",children:[(0,b.jsx)(f.FolderOpen,{className:"h-10 w-10 text-muted-foreground mb-4"}),(0,b.jsx)("h3",{className:"text-lg font-medium",children:"No projects found"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground mt-1 mb-4",children:q?"Try adjusting your search query.":"Get started by adding your first project."}),(0,b.jsxs)(l.Button,{onClick:()=>t(!0),children:[(0,b.jsx)(d.Plus,{className:"mr-2 h-4 w-4"}),"Add Project"]})]})]}),(0,b.jsx)(bq.CreateProjectDialog,{open:s,onOpenChange:t})]})}br.default.extend(bs.default),a.s(["default",()=>bt],531428)}];
1
+ module.exports=[531428,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(681612),e=a.i(479220),f=a.i(793090),g=a.i(66497),h=a.i(108920),i=a.i(863535);let j=(0,i.default)("ellipsis-vertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]]),k=(0,i.default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]),l=(0,i.default)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]),m=(0,i.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);var n=a.i(470485),o=a.i(914174);let p=(0,i.default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);var q=a.i(800966),r=a.i(72245),s=a.i(227725),t=a.i(406334),u=a.i(980096),v=a.i(559653),w=a.i(517988),x=a.i(763375),y=a.i(317449),z=a.i(675655),A=a.i(466965),B=a.i(553484),C=a.i(983644),D=a.i(241857),E=a.i(84228),F=a.i(699700),G=a.i(272311),H=a.i(407547),I=a.i(544329),J=a.i(244293),K="rovingFocusGroup.onEntryFocus",L={bubbles:!1,cancelable:!0},M="RovingFocusGroup",[N,O,P]=(0,A.createCollection)(M),[Q,R]=(0,x.createContextScope)(M,[P]),[S,T]=Q(M),U=c.forwardRef((a,c)=>(0,b.jsx)(N.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(N.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(V,{...a,ref:c})})}));U.displayName=M;var V=c.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:e,orientation:f,loop:g=!1,dir:h,currentTabStopId:i,defaultCurrentTabStopId:j,onCurrentTabStopIdChange:k,onEntryFocus:l,preventScrollOnEntryFocus:m=!1,...n}=a,o=c.useRef(null),p=(0,w.useComposedRefs)(d,o),q=(0,B.useDirection)(h),[r,s]=(0,y.useControllableState)({prop:i,defaultProp:j??null,onChange:k,caller:M}),[t,u]=c.useState(!1),x=(0,J.useCallbackRef)(l),A=O(e),C=c.useRef(!1),[D,E]=c.useState(0);return c.useEffect(()=>{let a=o.current;if(a)return a.addEventListener(K,x),()=>a.removeEventListener(K,x)},[x]),(0,b.jsx)(S,{scope:e,orientation:f,dir:q,loop:g,currentTabStopId:r,onItemFocus:c.useCallback(a=>s(a),[s]),onItemShiftTab:c.useCallback(()=>u(!0),[]),onFocusableItemAdd:c.useCallback(()=>E(a=>a+1),[]),onFocusableItemRemove:c.useCallback(()=>E(a=>a-1),[]),children:(0,b.jsx)(z.Primitive.div,{tabIndex:t||0===D?-1:0,"data-orientation":f,...n,ref:p,style:{outline:"none",...a.style},onMouseDown:(0,v.composeEventHandlers)(a.onMouseDown,()=>{C.current=!0}),onFocus:(0,v.composeEventHandlers)(a.onFocus,a=>{let b=!C.current;if(a.target===a.currentTarget&&b&&!t){let b=new CustomEvent(K,L);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=A().filter(a=>a.focusable);Z([a.find(a=>a.active),a.find(a=>a.id===r),...a].filter(Boolean).map(a=>a.ref.current),m)}}C.current=!1}),onBlur:(0,v.composeEventHandlers)(a.onBlur,()=>u(!1))})})}),W="RovingFocusGroupItem",X=c.forwardRef((a,d)=>{let{__scopeRovingFocusGroup:e,focusable:f=!0,active:g=!1,tabStopId:h,children:i,...j}=a,k=(0,F.useId)(),l=h||k,m=T(W,e),n=m.currentTabStopId===l,o=O(e),{onFocusableItemAdd:p,onFocusableItemRemove:q,currentTabStopId:r}=m;return c.useEffect(()=>{if(f)return p(),()=>q()},[f,p,q]),(0,b.jsx)(N.ItemSlot,{scope:e,id:l,focusable:f,active:g,children:(0,b.jsx)(z.Primitive.span,{tabIndex:n?0:-1,"data-orientation":m.orientation,...j,ref:d,onMouseDown:(0,v.composeEventHandlers)(a.onMouseDown,a=>{f?m.onItemFocus(l):a.preventDefault()}),onFocus:(0,v.composeEventHandlers)(a.onFocus,()=>m.onItemFocus(l)),onKeyDown:(0,v.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void m.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return Y[e]}(a,m.orientation,m.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=o().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=m.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>Z(e))}}),children:"function"==typeof i?i({isCurrentTabStop:n,hasTabStop:null!=r}):i})})});X.displayName=W;var Y={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Z(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}var $=a.i(878357),_=a.i(516164),aa=a.i(151867),ab=["Enter"," "],ac=["ArrowUp","PageDown","End"],ad=["ArrowDown","PageUp","Home",...ac],ae={ltr:[...ab,"ArrowRight"],rtl:[...ab,"ArrowLeft"]},af={ltr:["ArrowLeft"],rtl:["ArrowRight"]},ag="Menu",[ah,ai,aj]=(0,A.createCollection)(ag),[ak,al]=(0,x.createContextScope)(ag,[aj,G.createPopperScope,R]),am=(0,G.createPopperScope)(),an=R(),[ao,ap]=ak(ag),[aq,ar]=ak(ag),as=a=>{let{__scopeMenu:d,open:e=!1,children:f,dir:g,onOpenChange:h,modal:i=!0}=a,j=am(d),[k,l]=c.useState(null),m=c.useRef(!1),n=(0,J.useCallbackRef)(h),o=(0,B.useDirection)(g);return c.useEffect(()=>{let a=()=>{m.current=!0,document.addEventListener("pointerdown",b,{capture:!0,once:!0}),document.addEventListener("pointermove",b,{capture:!0,once:!0})},b=()=>m.current=!1;return document.addEventListener("keydown",a,{capture:!0}),()=>{document.removeEventListener("keydown",a,{capture:!0}),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("pointermove",b,{capture:!0})}},[]),(0,b.jsx)(G.Root,{...j,children:(0,b.jsx)(ao,{scope:d,open:e,onOpenChange:n,content:k,onContentChange:l,children:(0,b.jsx)(aq,{scope:d,onClose:c.useCallback(()=>n(!1),[n]),isUsingKeyboardRef:m,dir:o,modal:i,children:f})})})};as.displayName=ag;var at=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a,f=am(d);return(0,b.jsx)(G.Anchor,{...f,...e,ref:c})});at.displayName="MenuAnchor";var au="MenuPortal",[av,aw]=ak(au,{forceMount:void 0}),ax=a=>{let{__scopeMenu:c,forceMount:d,children:e,container:f}=a,g=ap(au,c);return(0,b.jsx)(av,{scope:c,forceMount:d,children:(0,b.jsx)(I.Presence,{present:d||g.open,children:(0,b.jsx)(H.Portal,{asChild:!0,container:f,children:e})})})};ax.displayName=au;var ay="MenuContent",[az,aA]=ak(ay),aB=c.forwardRef((a,c)=>{let d=aw(ay,a.__scopeMenu),{forceMount:e=d.forceMount,...f}=a,g=ap(ay,a.__scopeMenu),h=ar(ay,a.__scopeMenu);return(0,b.jsx)(ah.Provider,{scope:a.__scopeMenu,children:(0,b.jsx)(I.Presence,{present:e||g.open,children:(0,b.jsx)(ah.Slot,{scope:a.__scopeMenu,children:h.modal?(0,b.jsx)(aC,{...f,ref:c}):(0,b.jsx)(aD,{...f,ref:c})})})})}),aC=c.forwardRef((a,d)=>{let e=ap(ay,a.__scopeMenu),f=c.useRef(null),g=(0,w.useComposedRefs)(d,f);return c.useEffect(()=>{let a=f.current;if(a)return(0,_.hideOthers)(a)},[]),(0,b.jsx)(aF,{...a,ref:g,trapFocus:e.open,disableOutsidePointerEvents:e.open,disableOutsideScroll:!0,onFocusOutside:(0,v.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>e.onOpenChange(!1)})}),aD=c.forwardRef((a,c)=>{let d=ap(ay,a.__scopeMenu);return(0,b.jsx)(aF,{...a,ref:c,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>d.onOpenChange(!1)})}),aE=(0,$.createSlot)("MenuContent.ScrollLock"),aF=c.forwardRef((a,d)=>{let{__scopeMenu:e,loop:f=!1,trapFocus:g,onOpenAutoFocus:h,onCloseAutoFocus:i,disableOutsidePointerEvents:j,onEntryFocus:k,onEscapeKeyDown:l,onPointerDownOutside:m,onFocusOutside:n,onInteractOutside:o,onDismiss:p,disableOutsideScroll:q,...r}=a,s=ap(ay,e),t=ar(ay,e),u=am(e),x=an(e),y=ai(e),[z,A]=c.useState(null),B=c.useRef(null),F=(0,w.useComposedRefs)(d,B,s.onContentChange),H=c.useRef(0),I=c.useRef(""),J=c.useRef(0),K=c.useRef(null),L=c.useRef("right"),M=c.useRef(0),N=q?aa.RemoveScroll:c.Fragment;c.useEffect(()=>()=>window.clearTimeout(H.current),[]),(0,D.useFocusGuards)();let O=c.useCallback(a=>{var b,c;return L.current===K.current?.side&&(b=a,!!(c=K.current?.area)&&function(a,b){let{x:c,y:d}=a,e=!1;for(let a=0,f=b.length-1;a<b.length;f=a++){let g=b[a],h=b[f],i=g.x,j=g.y,k=h.x,l=h.y;j>d!=l>d&&c<(k-i)*(d-j)/(l-j)+i&&(e=!e)}return e}({x:b.clientX,y:b.clientY},c))},[]);return(0,b.jsx)(az,{scope:e,searchRef:I,onItemEnter:c.useCallback(a=>{O(a)&&a.preventDefault()},[O]),onItemLeave:c.useCallback(a=>{O(a)||(B.current?.focus(),A(null))},[O]),onTriggerLeave:c.useCallback(a=>{O(a)&&a.preventDefault()},[O]),pointerGraceTimerRef:J,onPointerGraceIntentChange:c.useCallback(a=>{K.current=a},[]),children:(0,b.jsx)(N,{...q?{as:aE,allowPinchZoom:!0}:void 0,children:(0,b.jsx)(E.FocusScope,{asChild:!0,trapped:g,onMountAutoFocus:(0,v.composeEventHandlers)(h,a=>{a.preventDefault(),B.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:(0,b.jsx)(C.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:j,onEscapeKeyDown:l,onPointerDownOutside:m,onFocusOutside:n,onInteractOutside:o,onDismiss:p,children:(0,b.jsx)(U,{asChild:!0,...x,dir:t.dir,orientation:"vertical",loop:f,currentTabStopId:z,onCurrentTabStopIdChange:A,onEntryFocus:(0,v.composeEventHandlers)(k,a=>{t.isUsingKeyboardRef.current||a.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,b.jsx)(G.Content,{role:"menu","aria-orientation":"vertical","data-state":a3(s.open),"data-radix-menu-content":"",dir:t.dir,...u,...r,ref:F,style:{outline:"none",...r.style},onKeyDown:(0,v.composeEventHandlers)(r.onKeyDown,a=>{let b=a.target.closest("[data-radix-menu-content]")===a.currentTarget,c=a.ctrlKey||a.altKey||a.metaKey,d=1===a.key.length;if(b){var e;let b,f,g,h,i,j;"Tab"===a.key&&a.preventDefault(),!c&&d&&(e=a.key,b=I.current+e,f=y().filter(a=>!a.disabled),g=document.activeElement,h=f.find(a=>a.ref.current===g)?.textValue,i=function(a,b,c){var d;let e=b.length>1&&Array.from(b).every(a=>a===b[0])?b[0]:b,f=c?a.indexOf(c):-1,g=(d=Math.max(f,0),a.map((b,c)=>a[(d+c)%a.length]));1===e.length&&(g=g.filter(a=>a!==c));let h=g.find(a=>a.toLowerCase().startsWith(e.toLowerCase()));return h!==c?h:void 0}(f.map(a=>a.textValue),b,h),j=f.find(a=>a.textValue===i)?.ref.current,function a(b){I.current=b,window.clearTimeout(H.current),""!==b&&(H.current=window.setTimeout(()=>a(""),1e3))}(b),j&&setTimeout(()=>j.focus()))}let f=B.current;if(a.target!==f||!ad.includes(a.key))return;a.preventDefault();let g=y().filter(a=>!a.disabled).map(a=>a.ref.current);ac.includes(a.key)&&g.reverse(),function(a){let b=document.activeElement;for(let c of a)if(c===b||(c.focus(),document.activeElement!==b))return}(g)}),onBlur:(0,v.composeEventHandlers)(a.onBlur,a=>{a.currentTarget.contains(a.target)||(window.clearTimeout(H.current),I.current="")}),onPointerMove:(0,v.composeEventHandlers)(a.onPointerMove,a6(a=>{let b=a.target,c=M.current!==a.clientX;a.currentTarget.contains(b)&&c&&(L.current=a.clientX>M.current?"right":"left",M.current=a.clientX)}))})})})})})})});aB.displayName=ay;var aG=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a;return(0,b.jsx)(z.Primitive.div,{role:"group",...e,ref:c})});aG.displayName="MenuGroup";var aH=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a;return(0,b.jsx)(z.Primitive.div,{...e,ref:c})});aH.displayName="MenuLabel";var aI="MenuItem",aJ="menu.itemSelect",aK=c.forwardRef((a,d)=>{let{disabled:e=!1,onSelect:f,...g}=a,h=c.useRef(null),i=ar(aI,a.__scopeMenu),j=aA(aI,a.__scopeMenu),k=(0,w.useComposedRefs)(d,h),l=c.useRef(!1);return(0,b.jsx)(aL,{...g,ref:k,disabled:e,onClick:(0,v.composeEventHandlers)(a.onClick,()=>{let a=h.current;if(!e&&a){let b=new CustomEvent(aJ,{bubbles:!0,cancelable:!0});a.addEventListener(aJ,a=>f?.(a),{once:!0}),(0,z.dispatchDiscreteCustomEvent)(a,b),b.defaultPrevented?l.current=!1:i.onClose()}}),onPointerDown:b=>{a.onPointerDown?.(b),l.current=!0},onPointerUp:(0,v.composeEventHandlers)(a.onPointerUp,a=>{l.current||a.currentTarget?.click()}),onKeyDown:(0,v.composeEventHandlers)(a.onKeyDown,a=>{let b=""!==j.searchRef.current;e||b&&" "===a.key||ab.includes(a.key)&&(a.currentTarget.click(),a.preventDefault())})})});aK.displayName=aI;var aL=c.forwardRef((a,d)=>{let{__scopeMenu:e,disabled:f=!1,textValue:g,...h}=a,i=aA(aI,e),j=an(e),k=c.useRef(null),l=(0,w.useComposedRefs)(d,k),[m,n]=c.useState(!1),[o,p]=c.useState("");return c.useEffect(()=>{let a=k.current;a&&p((a.textContent??"").trim())},[h.children]),(0,b.jsx)(ah.ItemSlot,{scope:e,disabled:f,textValue:g??o,children:(0,b.jsx)(X,{asChild:!0,...j,focusable:!f,children:(0,b.jsx)(z.Primitive.div,{role:"menuitem","data-highlighted":m?"":void 0,"aria-disabled":f||void 0,"data-disabled":f?"":void 0,...h,ref:l,onPointerMove:(0,v.composeEventHandlers)(a.onPointerMove,a6(a=>{f?i.onItemLeave(a):(i.onItemEnter(a),a.defaultPrevented||a.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,v.composeEventHandlers)(a.onPointerLeave,a6(a=>i.onItemLeave(a))),onFocus:(0,v.composeEventHandlers)(a.onFocus,()=>n(!0)),onBlur:(0,v.composeEventHandlers)(a.onBlur,()=>n(!1))})})})}),aM=c.forwardRef((a,c)=>{let{checked:d=!1,onCheckedChange:e,...f}=a;return(0,b.jsx)(aU,{scope:a.__scopeMenu,checked:d,children:(0,b.jsx)(aK,{role:"menuitemcheckbox","aria-checked":a4(d)?"mixed":d,...f,ref:c,"data-state":a5(d),onSelect:(0,v.composeEventHandlers)(f.onSelect,()=>e?.(!!a4(d)||!d),{checkForDefaultPrevented:!1})})})});aM.displayName="MenuCheckboxItem";var aN="MenuRadioGroup",[aO,aP]=ak(aN,{value:void 0,onValueChange:()=>{}}),aQ=c.forwardRef((a,c)=>{let{value:d,onValueChange:e,...f}=a,g=(0,J.useCallbackRef)(e);return(0,b.jsx)(aO,{scope:a.__scopeMenu,value:d,onValueChange:g,children:(0,b.jsx)(aG,{...f,ref:c})})});aQ.displayName=aN;var aR="MenuRadioItem",aS=c.forwardRef((a,c)=>{let{value:d,...e}=a,f=aP(aR,a.__scopeMenu),g=d===f.value;return(0,b.jsx)(aU,{scope:a.__scopeMenu,checked:g,children:(0,b.jsx)(aK,{role:"menuitemradio","aria-checked":g,...e,ref:c,"data-state":a5(g),onSelect:(0,v.composeEventHandlers)(e.onSelect,()=>f.onValueChange?.(d),{checkForDefaultPrevented:!1})})})});aS.displayName=aR;var aT="MenuItemIndicator",[aU,aV]=ak(aT,{checked:!1}),aW=c.forwardRef((a,c)=>{let{__scopeMenu:d,forceMount:e,...f}=a,g=aV(aT,d);return(0,b.jsx)(I.Presence,{present:e||a4(g.checked)||!0===g.checked,children:(0,b.jsx)(z.Primitive.span,{...f,ref:c,"data-state":a5(g.checked)})})});aW.displayName=aT;var aX=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a;return(0,b.jsx)(z.Primitive.div,{role:"separator","aria-orientation":"horizontal",...e,ref:c})});aX.displayName="MenuSeparator";var aY=c.forwardRef((a,c)=>{let{__scopeMenu:d,...e}=a,f=am(d);return(0,b.jsx)(G.Arrow,{...f,...e,ref:c})});aY.displayName="MenuArrow";var[aZ,a$]=ak("MenuSub"),a_="MenuSubTrigger",a0=c.forwardRef((a,d)=>{let e=ap(a_,a.__scopeMenu),f=ar(a_,a.__scopeMenu),g=a$(a_,a.__scopeMenu),h=aA(a_,a.__scopeMenu),i=c.useRef(null),{pointerGraceTimerRef:j,onPointerGraceIntentChange:k}=h,l={__scopeMenu:a.__scopeMenu},m=c.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return c.useEffect(()=>m,[m]),c.useEffect(()=>{let a=j.current;return()=>{window.clearTimeout(a),k(null)}},[j,k]),(0,b.jsx)(at,{asChild:!0,...l,children:(0,b.jsx)(aL,{id:g.triggerId,"aria-haspopup":"menu","aria-expanded":e.open,"aria-controls":g.contentId,"data-state":a3(e.open),...a,ref:(0,w.composeRefs)(d,g.onTriggerChange),onClick:b=>{a.onClick?.(b),a.disabled||b.defaultPrevented||(b.currentTarget.focus(),e.open||e.onOpenChange(!0))},onPointerMove:(0,v.composeEventHandlers)(a.onPointerMove,a6(b=>{h.onItemEnter(b),!b.defaultPrevented&&(a.disabled||e.open||i.current||(h.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{e.onOpenChange(!0),m()},100)))})),onPointerLeave:(0,v.composeEventHandlers)(a.onPointerLeave,a6(a=>{m();let b=e.content?.getBoundingClientRect();if(b){let c=e.content?.dataset.side,d="right"===c,f=b[d?"left":"right"],g=b[d?"right":"left"];h.onPointerGraceIntentChange({area:[{x:a.clientX+(d?-5:5),y:a.clientY},{x:f,y:b.top},{x:g,y:b.top},{x:g,y:b.bottom},{x:f,y:b.bottom}],side:c}),window.clearTimeout(j.current),j.current=window.setTimeout(()=>h.onPointerGraceIntentChange(null),300)}else{if(h.onTriggerLeave(a),a.defaultPrevented)return;h.onPointerGraceIntentChange(null)}})),onKeyDown:(0,v.composeEventHandlers)(a.onKeyDown,b=>{let c=""!==h.searchRef.current;a.disabled||c&&" "===b.key||ae[f.dir].includes(b.key)&&(e.onOpenChange(!0),e.content?.focus(),b.preventDefault())})})})});a0.displayName=a_;var a1="MenuSubContent",a2=c.forwardRef((a,d)=>{let e=aw(ay,a.__scopeMenu),{forceMount:f=e.forceMount,...g}=a,h=ap(ay,a.__scopeMenu),i=ar(ay,a.__scopeMenu),j=a$(a1,a.__scopeMenu),k=c.useRef(null),l=(0,w.useComposedRefs)(d,k);return(0,b.jsx)(ah.Provider,{scope:a.__scopeMenu,children:(0,b.jsx)(I.Presence,{present:f||h.open,children:(0,b.jsx)(ah.Slot,{scope:a.__scopeMenu,children:(0,b.jsx)(aF,{id:j.contentId,"aria-labelledby":j.triggerId,...g,ref:l,align:"start",side:"rtl"===i.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:a=>{i.isUsingKeyboardRef.current&&k.current?.focus(),a.preventDefault()},onCloseAutoFocus:a=>a.preventDefault(),onFocusOutside:(0,v.composeEventHandlers)(a.onFocusOutside,a=>{a.target!==j.trigger&&h.onOpenChange(!1)}),onEscapeKeyDown:(0,v.composeEventHandlers)(a.onEscapeKeyDown,a=>{i.onClose(),a.preventDefault()}),onKeyDown:(0,v.composeEventHandlers)(a.onKeyDown,a=>{let b=a.currentTarget.contains(a.target),c=af[i.dir].includes(a.key);b&&c&&(h.onOpenChange(!1),j.trigger?.focus(),a.preventDefault())})})})})})});function a3(a){return a?"open":"closed"}function a4(a){return"indeterminate"===a}function a5(a){return a4(a)?"indeterminate":a?"checked":"unchecked"}function a6(a){return b=>"mouse"===b.pointerType?a(b):void 0}a2.displayName=a1;var a7="DropdownMenu",[a8,a9]=(0,x.createContextScope)(a7,[al]),ba=al(),[bb,bc]=a8(a7),bd=a=>{let{__scopeDropdownMenu:d,children:e,dir:f,open:g,defaultOpen:h,onOpenChange:i,modal:j=!0}=a,k=ba(d),l=c.useRef(null),[m,n]=(0,y.useControllableState)({prop:g,defaultProp:h??!1,onChange:i,caller:a7});return(0,b.jsx)(bb,{scope:d,triggerId:(0,F.useId)(),triggerRef:l,contentId:(0,F.useId)(),open:m,onOpenChange:n,onOpenToggle:c.useCallback(()=>n(a=>!a),[n]),modal:j,children:(0,b.jsx)(as,{...k,open:m,onOpenChange:n,dir:f,modal:j,children:e})})};bd.displayName=a7;var be="DropdownMenuTrigger",bf=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,disabled:e=!1,...f}=a,g=bc(be,d),h=ba(d);return(0,b.jsx)(at,{asChild:!0,...h,children:(0,b.jsx)(z.Primitive.button,{type:"button",id:g.triggerId,"aria-haspopup":"menu","aria-expanded":g.open,"aria-controls":g.open?g.contentId:void 0,"data-state":g.open?"open":"closed","data-disabled":e?"":void 0,disabled:e,...f,ref:(0,w.composeRefs)(c,g.triggerRef),onPointerDown:(0,v.composeEventHandlers)(a.onPointerDown,a=>{!e&&0===a.button&&!1===a.ctrlKey&&(g.onOpenToggle(),g.open||a.preventDefault())}),onKeyDown:(0,v.composeEventHandlers)(a.onKeyDown,a=>{!e&&(["Enter"," "].includes(a.key)&&g.onOpenToggle(),"ArrowDown"===a.key&&g.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(a.key)&&a.preventDefault())})})})});bf.displayName=be;var bg=a=>{let{__scopeDropdownMenu:c,...d}=a,e=ba(c);return(0,b.jsx)(ax,{...e,...d})};bg.displayName="DropdownMenuPortal";var bh="DropdownMenuContent",bi=c.forwardRef((a,d)=>{let{__scopeDropdownMenu:e,...f}=a,g=bc(bh,e),h=ba(e),i=c.useRef(!1);return(0,b.jsx)(aB,{id:g.contentId,"aria-labelledby":g.triggerId,...h,...f,ref:d,onCloseAutoFocus:(0,v.composeEventHandlers)(a.onCloseAutoFocus,a=>{i.current||g.triggerRef.current?.focus(),i.current=!1,a.preventDefault()}),onInteractOutside:(0,v.composeEventHandlers)(a.onInteractOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey,d=2===b.button||c;(!g.modal||d)&&(i.current=!0)}),style:{...a.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});bi.displayName=bh,c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aG,{...f,...e,ref:c})}).displayName="DropdownMenuGroup";var bj=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aH,{...f,...e,ref:c})});bj.displayName="DropdownMenuLabel";var bk=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aK,{...f,...e,ref:c})});bk.displayName="DropdownMenuItem";var bl=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aM,{...f,...e,ref:c})});bl.displayName="DropdownMenuCheckboxItem",c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aQ,{...f,...e,ref:c})}).displayName="DropdownMenuRadioGroup";var bm=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aS,{...f,...e,ref:c})});bm.displayName="DropdownMenuRadioItem";var bn=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aW,{...f,...e,ref:c})});bn.displayName="DropdownMenuItemIndicator";var bo=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aX,{...f,...e,ref:c})});bo.displayName="DropdownMenuSeparator",c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(aY,{...f,...e,ref:c})}).displayName="DropdownMenuArrow";var bp=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(a0,{...f,...e,ref:c})});bp.displayName="DropdownMenuSubTrigger";var bq=c.forwardRef((a,c)=>{let{__scopeDropdownMenu:d,...e}=a,f=ba(d);return(0,b.jsx)(a2,{...f,...e,ref:c,style:{...a.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});bq.displayName="DropdownMenuSubContent";var br=a.i(141270),bs=a.i(532418),bt=a.i(687052);c.forwardRef(({className:a,inset:c,children:d,...e},f)=>(0,b.jsxs)(bp,{ref:f,className:(0,bt.cn)("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",c&&"pl-8",a),...e,children:[d,(0,b.jsx)(br.ChevronRight,{className:"ml-auto h-4 w-4"})]})).displayName=bp.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(bq,{ref:d,className:(0,bt.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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-[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",a),...c})).displayName=bq.displayName;let bu=c.forwardRef(({className:a,sideOffset:c=4,...d},e)=>(0,b.jsx)(bg,{children:(0,b.jsx)(bi,{ref:e,sideOffset:c,className:(0,bt.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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-[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",a),...d})}));bu.displayName=bi.displayName;let bv=c.forwardRef(({className:a,inset:c,...d},e)=>(0,b.jsx)(bk,{ref:e,className:(0,bt.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",c&&"pl-8",a),...d}));bv.displayName=bk.displayName,c.forwardRef(({className:a,children:c,checked:d,...e},f)=>(0,b.jsxs)(bl,{ref:f,className:(0,bt.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),checked:d,...e,children:[(0,b.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,b.jsx)(bn,{children:(0,b.jsx)(n.Check,{className:"h-4 w-4"})})}),c]})).displayName=bl.displayName,c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(bm,{ref:e,className:(0,bt.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...d,children:[(0,b.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,b.jsx)(bn,{children:(0,b.jsx)(bs.Circle,{className:"h-2 w-2 fill-current"})})}),c]})).displayName=bm.displayName,c.forwardRef(({className:a,inset:c,...d},e)=>(0,b.jsx)(bj,{ref:e,className:(0,bt.cn)("px-2 py-1.5 text-sm font-semibold",c&&"pl-8",a),...d})).displayName=bj.displayName;let bw=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(bo,{ref:d,className:(0,bt.cn)("-mx-1 my-1 h-px bg-muted",a),...c}));bw.displayName=bo.displayName;var bx=a.i(365791),by=a.i(285232);let bz=["#ef4444","#f97316","#eab308","#22c55e","#14b8a6","#3b82f6","#6366f1","#8b5cf6","#d946ef","#ec4899","#6b7280","#78716c"];function bA({value:a,onChange:d,disabled:e}){let[f,g]=(0,c.useState)(!1);return(0,b.jsxs)(by.Popover,{open:f,onOpenChange:g,children:[(0,b.jsx)(by.PopoverTrigger,{asChild:!0,children:(0,b.jsx)(s.Button,{variant:"outline",size:"sm",className:"h-8 w-8 p-0",disabled:e,"aria-label":"Pick color",children:(0,b.jsx)("div",{className:"h-4 w-4 rounded-full border",style:{backgroundColor:a||"#666"}})})}),(0,b.jsx)(by.PopoverContent,{className:"w-[200px] p-3",align:"start",children:(0,b.jsx)("div",{className:"grid grid-cols-6 gap-2",children:bz.map(c=>(0,b.jsx)("button",{className:(0,bt.cn)("h-6 w-6 rounded-full border-2 transition-transform hover:scale-110",a===c?"border-primary":"border-transparent"),style:{backgroundColor:c},onClick:()=>{d(c),g(!1)},"aria-label":`Select color ${c}`},c))})})]})}var bB=a.i(156916),bC=a.i(435133),bD=a.i(779121);function bE(){let a=(0,d.useRouter)(),{projects:i,switchProject:v,toggleFavorite:w,removeProject:x,updateProject:y}=(0,r.useProject)(),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useState)(!1),[D,E]=(0,c.useState)(null),[F,G]=(0,c.useState)(""),[H,I]=(0,c.useState)({}),J=i.filter(a=>a.name.toLowerCase().includes(z.toLowerCase())),K=async b=>{await v(b),a.push(`/projects/${b}/specs`)},L=()=>{E(null),G("")},M=async a=>{if(!F.trim())return void bB.toast.error("Project name cannot be empty");try{await y(a,{name:F.trim()}),bB.toast.success("Project name updated"),E(null),G("")}catch{bB.toast.error("Failed to update project name")}},N=async(a,b)=>{try{await y(a,{color:b}),bB.toast.success("Project color updated")}catch{bB.toast.error("Failed to update project color")}},O=(0,c.useCallback)(async a=>{I(b=>({...b,[a]:{status:"validating"}}));try{let b=await fetch(`/api/projects/${a}/validate`,{method:"POST"});if(!b.ok)throw Error("Validation request failed");let c=await b.json();I(b=>({...b,[a]:{status:c.validation.isValid?"valid":"invalid",error:c.validation.error}})),c.validation.isValid?bB.toast.success("Project path is valid"):bB.toast.error(`Project path invalid: ${c.validation.error||"Unknown error"}`)}catch{I(b=>({...b,[a]:{status:"invalid",error:"Failed to validate"}})),bB.toast.error("Failed to validate project")}},[]);return(0,b.jsxs)("div",{className:"container max-w-5xl py-8 space-y-8",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"Projects"}),(0,b.jsx)("p",{className:"text-muted-foreground mt-2",children:"Manage your LeanSpec projects and workspaces."})]}),(0,b.jsxs)(s.Button,{onClick:()=>C(!0),children:[(0,b.jsx)(e.Plus,{className:"mr-2 h-4 w-4"}),"Add Project"]})]}),(0,b.jsx)("div",{className:"flex items-center space-x-2",children:(0,b.jsxs)("div",{className:"relative flex-1 max-w-sm",children:[(0,b.jsx)(f.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,b.jsx)(t.Input,{placeholder:"Search projects...",value:z,onChange:a=>A(a.target.value),className:"pl-8"})]})}),(0,b.jsxs)("div",{className:"grid gap-6 md:grid-cols-2 lg:grid-cols-3",children:[J.map(a=>{let c;return(0,b.jsxs)(u.Card,{className:"group relative hover:border-primary/50 transition-colors",children:[(0,b.jsx)(u.CardHeader,{className:"pb-4",children:(0,b.jsxs)("div",{className:"flex items-start justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,b.jsx)(bA,{value:a.color,onChange:b=>N(a.id,b)}),(0,b.jsxs)("div",{className:"space-y-1 flex-1 min-w-0",children:[D===a.id?(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)(t.Input,{value:F,onChange:a=>G(a.target.value),className:"h-7 text-sm",autoFocus:!0,onKeyDown:b=>{"Enter"===b.key&&M(a.id),"Escape"===b.key&&L()}}),(0,b.jsx)(s.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>M(a.id),children:(0,b.jsx)(n.Check,{className:"h-3 w-3"})}),(0,b.jsx)(s.Button,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:L,children:(0,b.jsx)(o.X,{className:"h-3 w-3"})})]}):(0,b.jsxs)(u.CardTitle,{className:"text-base leading-none flex items-center gap-2",children:[(0,b.jsx)("button",{onClick:()=>K(a.id),className:"hover:underline focus:outline-none truncate",children:a.name}),(c=H[a.id])&&"unknown"!==c.status?"validating"===c.status?(0,b.jsx)(m,{className:"h-4 w-4 animate-spin text-muted-foreground"}):"valid"===c.status?(0,b.jsx)(q.CheckCircle2,{className:"h-4 w-4 text-green-500"}):"invalid"===c.status?(0,b.jsx)("span",{title:c.error||"Invalid project",children:(0,b.jsx)(p,{className:"h-4 w-4 text-destructive"})}):null:null]}),(0,b.jsx)(u.CardDescription,{className:"text-xs truncate max-w-[180px]",title:a.path,children:a.path})]})]}),(0,b.jsxs)(bd,{children:[(0,b.jsx)(bf,{asChild:!0,children:(0,b.jsxs)(s.Button,{variant:"ghost",size:"icon",className:"h-8 w-8",children:[(0,b.jsx)(j,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Open menu"})]})}),(0,b.jsxs)(bu,{align:"end",children:[(0,b.jsxs)(bv,{onClick:()=>{var b,c;return b=a.id,c=a.name,void(E(b),G(c))},children:[(0,b.jsx)(l,{className:"mr-2 h-4 w-4"}),"Rename"]}),(0,b.jsxs)(bv,{onClick:()=>w(a.id),children:[(0,b.jsx)(h.Star,{className:"mr-2 h-4 w-4"}),a.favorite?"Unfavorite":"Favorite"]}),(0,b.jsxs)(bv,{onClick:()=>O(a.id),children:[(0,b.jsx)(m,{className:"mr-2 h-4 w-4"}),"Validate Path"]}),(0,b.jsx)(bw,{}),(0,b.jsxs)(bv,{className:"text-destructive",onClick:()=>x(a.id),children:[(0,b.jsx)(k,{className:"mr-2 h-4 w-4"}),"Remove"]})]})]})]})}),(0,b.jsx)(u.CardContent,{className:"pb-4",children:(0,b.jsxs)("div",{className:"flex items-center justify-between text-sm text-muted-foreground",children:[(0,b.jsxs)("div",{className:"flex items-center",children:[(0,b.jsx)(g.FolderOpen,{className:"mr-1 h-3 w-3"}),(0,b.jsx)("span",{className:"text-xs",children:"Local"})]}),a.lastAccessed&&(0,b.jsxs)("span",{className:"text-xs",children:["Opened ",(0,bC.default)(a.lastAccessed).fromNow()]})]})}),a.favorite&&(0,b.jsx)("div",{className:"absolute top-2 right-10 text-yellow-500",children:(0,b.jsx)(h.Star,{className:"h-4 w-4 fill-current"})})]},a.id)}),0===J.length&&(0,b.jsxs)("div",{className:"col-span-full flex flex-col items-center justify-center py-12 text-center border rounded-lg border-dashed",children:[(0,b.jsx)(g.FolderOpen,{className:"h-10 w-10 text-muted-foreground mb-4"}),(0,b.jsx)("h3",{className:"text-lg font-medium",children:"No projects found"}),(0,b.jsx)("p",{className:"text-sm text-muted-foreground mt-1 mb-4",children:z?"Try adjusting your search query.":"Get started by adding your first project."}),(0,b.jsxs)(s.Button,{onClick:()=>C(!0),children:[(0,b.jsx)(e.Plus,{className:"mr-2 h-4 w-4"}),"Add Project"]})]})]}),(0,b.jsx)(bx.CreateProjectDialog,{open:B,onOpenChange:C})]})}bC.default.extend(bD.default),a.s(["default",()=>bE],531428)}];
2
2
 
3
3
  //# sourceMappingURL=packages_ui_src_app_projects_page_tsx_6e166c8e._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[113142,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(920378),e=a.i(681612),f=a.i(980096),g=a.i(837717),h=a.i(406334),i=a.i(227725),j=a.i(915929),k=a.i(793090),l=a.i(800966),m=a.i(659358),n=a.i(297557),o=a.i(262936),p=a.i(307840),q=a.i(730702),r=a.i(615268),s=a.i(915970),t=a.i(404620),u=a.i(709211),v=a.i(633093),w=a.i(141270),x=a.i(882479),y=a.i(322570),z=a.i(687052),A=a.i(890075);a.i(294783);var B=a.i(156916);let C={planned:{icon:n.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:m.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:l.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:o.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 E({initialSpecs:a,projectId:d}){let f=(0,e.useSearchParams)(),g=(0,e.useRouter)(),[l,m]=(0,c.useState)(a),[n,o]=(0,c.useState)({}),[r,s]=(0,c.useState)(""),[v,w]=(0,c.useState)("all"),[x,y]=(0,c.useState)("all"),[A,D]=(0,c.useState)("id-desc"),[E,H]=(0,c.useState)(!1),[I,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(()=>{let a=f.get("view");return"board"===a||"list"===a?a:"list"}),M=(0,c.useRef)(!0);(0,c.useEffect)(()=>{m(a)},[a]);let N=(0,c.useCallback)(async(a,b)=>{if(a.status===b)return;let c=a.status;o(b=>({...b,[a.id]:!0})),m(c=>c.map(c=>c.id===a.id?{...c,status:b}:c));try{let c=d?`/api/projects/${d}/specs/${encodeURIComponent(a.specName)}/status`:`/api/specs/${encodeURIComponent(a.specName)}/status`,e=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:b})});if(!e.ok){let a=await e.text();throw Error(a||"Failed to update spec status")}let f=a.specNumber?`#${a.specNumber}`:a.specName;B.toast.success(`Moved ${f} to ${C[b].title}`)}catch(b){console.error("Failed to update spec status",b),m(b=>b.map(b=>b.id===a.id?{...b,status:c}:b)),B.toast.error("Unable to update status. Please try again.")}finally{o(b=>{let c={...b};return delete c[a.id],c})}},[]);(0,c.useEffect)(()=>{"archived"===v&&"board"===K&&H(!0)},[v,K]),(0,c.useEffect)(()=>{if(M.current){M.current=!1;return}let a=new URLSearchParams(window.location.search);"board"===K?a.set("view","board"):a.delete("view");let b=a.toString(),c=b?`?${b}`:"";g.replace(`/specs${c}`,{scroll:!1})},[K,g]);let O=(0,c.useMemo)(()=>{let a=[...l.filter(a=>{let b=!r||a.title?.toLowerCase().includes(r.toLowerCase())||a.specName.toLowerCase().includes(r.toLowerCase())||a.tags?.some(a=>a.toLowerCase().includes(r.toLowerCase())),c="all"===v?"list"!==K||"archived"!==a.status:a.status===v,d="all"===x||a.priority===x;return b&&c&&d})];switch(A){case"id-desc":a.sort((a,b)=>(b.specNumber||0)-(a.specNumber||0));break;case"id-asc":a.sort((a,b)=>(a.specNumber||0)-(b.specNumber||0));break;case"updated-desc":a.sort((a,b)=>a.updatedAt?b.updatedAt?b.updatedAt.getTime()-a.updatedAt.getTime():-1:1);break;case"title-asc":a.sort((a,b)=>{let c=(a.title||a.specName).toLowerCase(),d=(b.title||b.specName).toLowerCase();return c.localeCompare(d)})}return a},[l,r,v,x,A,K]);return(0,b.jsx)("div",{className:"h-[calc(100vh-3.5rem)] flex flex-col overflow-hidden bg-background p-2 sm:p-4",children:(0,b.jsxs)("div",{className:(0,z.cn)("flex flex-col h-full mx-auto transition-all duration-300",I?"w-full":"max-w-7xl w-full"),children:[(0,b.jsx)("div",{className:"flex-none mb-3 sm:mb-4",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3 md:gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h1",{className:"text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate",children:"Specifications"}),(0,b.jsxs)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:[O.length," specs"]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 sm:gap-2 flex-shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-0.5 sm:gap-1 bg-muted/50 p-0.5 sm:p-1 rounded-lg",children:[(0,b.jsxs)(i.Button,{variant:"list"===K?"secondary":"ghost",size:"sm",onClick:()=>L("list"),className:"h-7 sm:h-8 px-2 sm:px-3",title:"List view",children:[(0,b.jsx)(q.List,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,b.jsx)("span",{className:"hidden lg:inline ml-2",children:"List"})]}),(0,b.jsxs)(i.Button,{variant:"board"===K?"secondary":"ghost",size:"sm",onClick:()=>L("board"),className:"h-7 sm:h-8 px-2 sm:px-3",title:"Board view",children:[(0,b.jsx)(p.LayoutGrid,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,b.jsx)("span",{className:"hidden lg:inline ml-2",children:"Board"})]})]}),(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",onClick:()=>J(!I),className:"hidden md:flex h-8 w-8 sm:h-10 sm:w-10 text-muted-foreground hover:text-foreground",title:I?"Exit wide mode":"Enter wide mode",children:I?(0,b.jsx)(u.Minimize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):(0,b.jsx)(t.Maximize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"relative w-full",children:[(0,b.jsx)(k.Search,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 sm:h-4 sm:w-4 text-muted-foreground pointer-events-none"}),(0,b.jsx)(h.Input,{placeholder:"Search specs...",value:r,onChange:a=>s(a.target.value),className:"pl-8 sm:pl-9 h-9 sm:h-10 w-full text-sm"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 overflow-x-auto snap-x snap-mandatory pb-1 -mx-2 px-2 sm:mx-0 sm:px-0 sm:pb-0 scrollbar-thin",children:[(0,b.jsxs)(j.Select,{value:v,onValueChange:a=>w(a),children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:"Status"})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"all",children:"All Status"}),(0,b.jsx)(j.SelectItem,{value:"planned",children:"Planned"}),(0,b.jsx)(j.SelectItem,{value:"in-progress",children:"In Progress"}),(0,b.jsx)(j.SelectItem,{value:"complete",children:"Complete"}),(0,b.jsx)(j.SelectItem,{value:"archived",children:"Archived"})]})]}),(0,b.jsxs)(j.Select,{value:x,onValueChange:y,children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:"Priority"})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"all",children:"All Priority"}),(0,b.jsx)(j.SelectItem,{value:"critical",children:"Critical"}),(0,b.jsx)(j.SelectItem,{value:"high",children:"High"}),(0,b.jsx)(j.SelectItem,{value:"medium",children:"Medium"}),(0,b.jsx)(j.SelectItem,{value:"low",children:"Low"})]})]}),(0,b.jsxs)(j.Select,{value:A,onValueChange:a=>D(a),children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[130px] sm:w-[170px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:"Sort by"})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"id-desc",children:"Newest First"}),(0,b.jsx)(j.SelectItem,{value:"id-asc",children:"Oldest First"}),(0,b.jsx)(j.SelectItem,{value:"updated-desc",children:"Recently Updated"}),(0,b.jsx)(j.SelectItem,{value:"title-asc",children:"Title (A-Z)"})]})]})]})]})]})}),(0,b.jsx)("div",{className:(0,z.cn)("flex-1 min-h-0","board"===K?"overflow-x-auto overflow-y-hidden":"overflow-y-auto"),children:"list"===K?(0,b.jsx)("div",{className:"w-full",children:(0,b.jsx)(F,{specs:O})}):(0,b.jsx)(G,{specs:O,onStatusChange:N,pendingSpecIds:n,showArchived:E,onToggleArchived:()=>H(!E)})})]})})}function F({specs:a}){return(0,b.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:gap-3 md:gap-4 pb-2 sm:pb-4 md:pb-8",children:a.map(a=>{let c={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[a.priority]||"border-l-gray-300",e=a.relationships&&(a.relationships.dependsOn.length>0||a.relationships.related.length>0),h=!!(a.subSpecsCount&&a.subSpecsCount>0);return(0,b.jsxs)(f.Card,{className:(0,z.cn)("hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.01] active:scale-[0.99] border-l-4 cursor-pointer touch-manipulation",c),onClick:()=>window.location.href=`/specs/${a.specNumber||a.id}`,children:[(0,b.jsx)(f.CardHeader,{className:"pb-2 sm:pb-2.5 md:pb-3 px-3 sm:px-4 md:px-6 pt-3 sm:pt-4 md:pt-6",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-start md:justify-between md:gap-4",children:[(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)(d.default,{href:`/specs/${a.specNumber||a.id}`,children:(0,b.jsxs)(f.CardTitle,{className:"text-sm sm:text-base md:text-lg font-semibold hover:text-primary transition-colors flex items-start flex-wrap gap-1.5 sm:gap-2 leading-snug sm:leading-normal",children:[a.specNumber?(0,b.jsxs)("span",{className:"font-mono text-xs sm:text-sm md:text-base font-normal text-muted-foreground flex-shrink-0",children:["#",a.specNumber.toString().padStart(3,"0")]}):null,(0,b.jsx)("span",{className:"flex-1 break-words",children:a.title||a.specName})]})}),a.title&&a.title!==a.specName&&(0,b.jsx)("p",{className:"text-[11px] sm:text-xs font-mono text-muted-foreground mt-1 sm:mt-1.5 truncate",children:a.specName})]}),(0,b.jsxs)("div",{className:"flex gap-1.5 sm:gap-2 flex-wrap md:shrink-0",children:[a.status&&(0,b.jsx)(x.StatusBadge,{status:a.status}),a.priority&&(0,b.jsx)(y.PriorityBadge,{priority:a.priority})]})]})}),(0,b.jsx)(f.CardContent,{className:"px-3 sm:px-4 md:px-6 pb-2.5 sm:pb-3 md:pb-6 pt-0",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between md:gap-4",children:[(0,b.jsx)("div",{className:"flex items-center gap-2 sm:gap-3 md:gap-4 text-[11px] sm:text-xs md:text-sm text-muted-foreground flex-wrap",children:a.updatedAt||h||e?(0,b.jsxs)(b.Fragment,{children:[a.updatedAt&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(n.Clock,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsxs)("span",{className:"whitespace-nowrap",children:["Updated ",(0,A.formatRelativeTime)(a.updatedAt)]})]}),h&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(r.FileText,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsxs)("span",{className:"whitespace-nowrap",children:["+",a.subSpecsCount," files"]})]}),e&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(s.GitBranch,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsxs)("span",{className:"whitespace-nowrap",children:[a.relationships.dependsOn.length>0&&`${a.relationships.dependsOn.length} deps`,a.relationships.dependsOn.length>0&&a.relationships.related.length>0&&", ",a.relationships.related.length>0&&`${a.relationships.related.length} related`]})]})]}):(0,b.jsx)("span",{className:"invisible hidden md:inline",children:"No metadata"})}),a.tags&&a.tags.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1 sm:gap-1.5 md:gap-2 md:justify-end md:shrink-0",children:a.tags.map(a=>(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs font-mono text-muted-foreground hover:text-foreground transition-colors h-5 sm:h-auto px-1.5 sm:px-2",children:a},a))})]})})]},a.id)})})}function G({specs:a,onStatusChange:e,pendingSpecIds:h,showArchived:i,onToggleArchived:j}){let[k,l]=(0,c.useState)(null),[m,n]=(0,c.useState)(null),[o,p]=(0,c.useState)({}),q=(0,c.useMemo)(()=>D.map(b=>({status:b,config:C[b],specs:a.filter(a=>a.status===b)})),[a]),r=(0,c.useMemo)(()=>{let b=new Map;return a.forEach(a=>b.set(a.id,a)),b},[a]),s=(0,c.useCallback)((a,b)=>{b.dataTransfer.setData("text/plain",a),b.dataTransfer.effectAllowed="move",l(a)},[]),t=(0,c.useCallback)(()=>{l(null),n(null)},[]),u=(0,c.useCallback)((a,b)=>{k&&(b.preventDefault(),b.dataTransfer.dropEffect="move",n(a))},[k]),x=(0,c.useCallback)((a,b)=>{if(!k)return;let c=b.relatedTarget;c&&b.currentTarget.contains(c)||n(b=>b===a?null:b)},[k]),A=(0,c.useCallback)((a,b)=>{b.preventDefault();let c=b.dataTransfer.getData("text/plain")||k;if(!c)return void t();let d=r.get(c);d&&d.status!==a&&e(d,a),t()},[k,t,e,r]);return(0,b.jsx)("div",{className:"flex flex-col md:flex-row gap-3 sm:gap-4 md:gap-6 h-full pb-2 md:snap-x md:snap-mandatory overflow-y-auto md:overflow-y-hidden md:overflow-x-auto",children:q.map(a=>{let c=a.config.icon,e="archived"===a.status,l=o[a.status];return(0,b.jsxs)("div",{className:(0,z.cn)("flex flex-col flex-1 snap-start","h-auto md:h-full w-full md:w-auto flex-shrink-0",e&&!i?"md:w-12 md:sm:w-14 md:min-w-[3rem] md:sm:min-w-[3.5rem] flex-none":"md:min-w-[260px] md:sm:min-w-[280px] md:md:min-w-[300px]"),children:[(0,b.jsx)("div",{className:(0,z.cn)("flex-none mb-3 sm:mb-4 rounded-lg border-2 bg-background transition-all touch-manipulation",a.config.bgClass,a.config.borderClass,e?"cursor-pointer hover:opacity-80 active:opacity-70":"",e&&!i?"py-4 sm:py-6 px-1.5 sm:px-2":"p-2.5 sm:p-3","md:cursor-default cursor-pointer"),onClick:()=>{if(e)j();else{var b;window.innerWidth<768&&(b=a.status,p(a=>({...a,[b]:!a[b]})))}},children:(0,b.jsxs)("h2",{className:(0,z.cn)("text-base sm:text-lg font-semibold flex items-center gap-1.5 sm:gap-2",a.config.colorClass,e&&!i&&"flex-col text-xs sm:text-sm gap-2 sm:gap-3"),children:[(0,b.jsx)(c,{className:"h-4 w-4 sm:h-5 sm:w-5 flex-shrink-0"}),e&&!i?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"vertical-text text-xs sm:text-sm whitespace-nowrap",children:a.config.title}),(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1 sm:px-2 h-4 sm:h-5",children:a.specs.length})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"truncate flex-1",children:a.config.title}),(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1.5 sm:px-2 h-4 sm:h-5 flex-shrink-0",children:a.specs.length}),(0,b.jsx)("div",{className:"md:hidden ml-2 text-muted-foreground/50",children:l?(0,b.jsx)(w.ChevronRight,{className:"h-4 w-4"}):(0,b.jsx)(v.ChevronDown,{className:"h-4 w-4"})})]})]})}),(!e||i)&&!l&&(0,b.jsxs)("div",{className:(0,z.cn)("space-y-2 sm:space-y-2.5 md:space-y-3 flex-1 rounded-xl border border-transparent p-1 transition-colors overflow-y-auto min-h-0 scrollbar-thin",k&&"border-dashed border-muted-foreground/40",k&&m===a.status&&"bg-muted/40 border-primary/50"),onDragOver:b=>u(a.status,b),onDragLeave:b=>x(a.status,b),onDrop:b=>A(a.status,b),children:[a.specs.map(a=>{let c={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[a.priority]||"border-l-gray-300",e=!!h[a.id];return(0,b.jsxs)(f.Card,{draggable:!e,onDragStart:b=>{e?b.preventDefault():s(a.id,b)},onDragEnd:t,"aria-disabled":e,className:(0,z.cn)("relative hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.02] active:scale-[0.99] border-l-4 cursor-pointer group flex flex-col touch-manipulation",c,e&&"opacity-60 cursor-wait"),onClick:()=>window.location.href=`/specs/${a.specNumber||a.id}`,children:[e&&(0,b.jsx)("div",{className:"absolute inset-0 rounded-lg bg-background/80 flex items-center justify-center text-xs sm:text-sm font-medium z-10",children:"Updating..."}),(0,b.jsxs)(f.CardHeader,{className:"p-3 sm:p-4 pb-1.5 sm:pb-2 space-y-1 sm:space-y-1.5",children:[(0,b.jsx)("div",{className:"flex items-center justify-between",children:(0,b.jsx)("span",{className:"font-mono text-[10px] sm:text-xs text-muted-foreground/70 group-hover:text-primary/60 transition-colors",children:a.specNumber?`#${a.specNumber}`:""})}),(0,b.jsx)(d.default,{href:`/specs/${a.specNumber||a.id}`,className:"block",children:(0,b.jsx)(f.CardTitle,{className:"text-xs sm:text-sm font-semibold leading-snug hover:text-primary transition-colors line-clamp-3",children:a.title||a.specName})})]}),(0,b.jsx)(f.CardContent,{className:"p-3 sm:p-4 pt-1.5 sm:pt-2 flex-1 flex flex-col justify-end",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3",children:[a.title&&a.title!==a.specName&&(0,b.jsx)("p",{className:"text-[10px] sm:text-xs font-mono text-muted-foreground truncate opacity-70",children:a.specName}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1.5 sm:gap-2 pt-0.5 sm:pt-1",children:[a.priority?(0,b.jsx)(y.PriorityBadge,{priority:a.priority}):(0,b.jsx)("div",{}),a.tags&&a.tags.length>0&&(0,b.jsxs)("div",{className:"flex flex-wrap gap-0.5 sm:gap-1 justify-end",children:[a.tags.slice(0,2).map(a=>(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:a},a)),a.tags.length>2&&(0,b.jsxs)(g.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:["+",a.tags.length-2]})]})]})]})})]},a.id)}),0===a.specs.length&&(0,b.jsx)(f.Card,{className:"border-dashed border-gray-300 dark:border-gray-700 bg-transparent",children:(0,b.jsxs)(f.CardContent,{className:"py-6 sm:py-8 text-center px-2",children:[(0,b.jsx)(c,{className:(0,z.cn)("mx-auto h-6 w-6 sm:h-8 sm:w-8 mb-1.5 sm:mb-2",a.config.colorClass,"opacity-50")}),(0,b.jsx)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Drop here to move specs"})]})})]})]},a.status)})})}a.s(["SpecsClient",()=>E])}];
1
+ module.exports=[113142,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(920378),e=a.i(681612),f=a.i(980096),g=a.i(837717),h=a.i(406334),i=a.i(227725),j=a.i(915929),k=a.i(793090),l=a.i(800966),m=a.i(659358),n=a.i(297557),o=a.i(262936),p=a.i(307840),q=a.i(730702),r=a.i(615268),s=a.i(915970),t=a.i(404620),u=a.i(709211),v=a.i(633093),w=a.i(141270),x=a.i(882479),y=a.i(322570),z=a.i(687052),A=a.i(890075);a.i(294783);var B=a.i(156916);let C={planned:{icon:n.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:m.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:l.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:o.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 E({initialSpecs:a,projectId:d}){let f=(0,e.useSearchParams)(),g=(0,e.useRouter)(),l=(0,c.useCallback)(a=>d?`/projects/${d}/specs/${a}`:`/specs/${a}`,[d]),m=(0,c.useCallback)(()=>d?`/projects/${d}/specs`:"/specs",[d]),[n,o]=(0,c.useState)(a),[r,s]=(0,c.useState)({}),[v,w]=(0,c.useState)(""),[x,y]=(0,c.useState)("all"),[A,D]=(0,c.useState)("all"),[E,H]=(0,c.useState)("id-desc"),[I,J]=(0,c.useState)(!1),[K,L]=(0,c.useState)(!1),[M,N]=(0,c.useState)(()=>{let a=f.get("view");return"board"===a||"list"===a?a:"list"}),O=(0,c.useRef)(!0);(0,c.useEffect)(()=>{o(a)},[a]);let P=(0,c.useCallback)(async(a,b)=>{if(a.status===b)return;let c=a.status;s(b=>({...b,[a.id]:!0})),o(c=>c.map(c=>c.id===a.id?{...c,status:b}:c));try{let c=d?`/api/projects/${d}/specs/${encodeURIComponent(a.specName)}/status`:`/api/specs/${encodeURIComponent(a.specName)}/status`,e=await fetch(c,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({status:b})});if(!e.ok){let a=await e.text();throw Error(a||"Failed to update spec status")}let f=a.specNumber?`#${a.specNumber}`:a.specName;B.toast.success(`Moved ${f} to ${C[b].title}`)}catch(b){console.error("Failed to update spec status",b),o(b=>b.map(b=>b.id===a.id?{...b,status:c}:b)),B.toast.error("Unable to update status. Please try again.")}finally{s(b=>{let c={...b};return delete c[a.id],c})}},[]);(0,c.useEffect)(()=>{"archived"===x&&"board"===M&&J(!0)},[x,M]),(0,c.useEffect)(()=>{if(O.current){O.current=!1;return}let a=new URLSearchParams(window.location.search);"board"===M?a.set("view","board"):a.delete("view");let b=a.toString(),c=b?`?${b}`:"";g.replace(`${m()}${c}`,{scroll:!1})},[M,g,m]);let Q=(0,c.useMemo)(()=>{let a=[...n.filter(a=>{let b=!v||a.title?.toLowerCase().includes(v.toLowerCase())||a.specName.toLowerCase().includes(v.toLowerCase())||a.tags?.some(a=>a.toLowerCase().includes(v.toLowerCase())),c="all"===x?"list"!==M||"archived"!==a.status:a.status===x,d="all"===A||a.priority===A;return b&&c&&d})];switch(E){case"id-desc":a.sort((a,b)=>(b.specNumber||0)-(a.specNumber||0));break;case"id-asc":a.sort((a,b)=>(a.specNumber||0)-(b.specNumber||0));break;case"updated-desc":a.sort((a,b)=>a.updatedAt?b.updatedAt?b.updatedAt.getTime()-a.updatedAt.getTime():-1:1);break;case"title-asc":a.sort((a,b)=>{let c=(a.title||a.specName).toLowerCase(),d=(b.title||b.specName).toLowerCase();return c.localeCompare(d)})}return a},[n,v,x,A,E,M]);return(0,b.jsx)("div",{className:"h-[calc(100vh-3.5rem)] flex flex-col overflow-hidden bg-background p-2 sm:p-4",children:(0,b.jsxs)("div",{className:(0,z.cn)("flex flex-col h-full mx-auto transition-all duration-300",K?"w-full":"max-w-7xl w-full"),children:[(0,b.jsx)("div",{className:"flex-none mb-3 sm:mb-4",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3 md:gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)("h1",{className:"text-lg sm:text-xl md:text-2xl font-bold tracking-tight truncate",children:"Specifications"}),(0,b.jsxs)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:[Q.length," specs"]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 sm:gap-2 flex-shrink-0",children:[(0,b.jsxs)("div",{className:"flex items-center gap-0.5 sm:gap-1 bg-muted/50 p-0.5 sm:p-1 rounded-lg",children:[(0,b.jsxs)(i.Button,{variant:"list"===M?"secondary":"ghost",size:"sm",onClick:()=>N("list"),className:"h-7 sm:h-8 px-2 sm:px-3",title:"List view",children:[(0,b.jsx)(q.List,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,b.jsx)("span",{className:"hidden lg:inline ml-2",children:"List"})]}),(0,b.jsxs)(i.Button,{variant:"board"===M?"secondary":"ghost",size:"sm",onClick:()=>N("board"),className:"h-7 sm:h-8 px-2 sm:px-3",title:"Board view",children:[(0,b.jsx)(p.LayoutGrid,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}),(0,b.jsx)("span",{className:"hidden lg:inline ml-2",children:"Board"})]})]}),(0,b.jsx)(i.Button,{variant:"ghost",size:"icon",onClick:()=>L(!K),className:"hidden md:flex h-8 w-8 sm:h-10 sm:w-10 text-muted-foreground hover:text-foreground",title:K?"Exit wide mode":"Enter wide mode",children:K?(0,b.jsx)(u.Minimize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):(0,b.jsx)(t.Maximize2,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"relative w-full",children:[(0,b.jsx)(k.Search,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 sm:h-4 sm:w-4 text-muted-foreground pointer-events-none"}),(0,b.jsx)(h.Input,{placeholder:"Search specs...",value:v,onChange:a=>w(a.target.value),className:"pl-8 sm:pl-9 h-9 sm:h-10 w-full text-sm"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 overflow-x-auto snap-x snap-mandatory pb-1 -mx-2 px-2 sm:mx-0 sm:px-0 sm:pb-0 scrollbar-thin",children:[(0,b.jsxs)(j.Select,{value:x,onValueChange:a=>y(a),children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:"Status"})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"all",children:"All Status"}),(0,b.jsx)(j.SelectItem,{value:"planned",children:"Planned"}),(0,b.jsx)(j.SelectItem,{value:"in-progress",children:"In Progress"}),(0,b.jsx)(j.SelectItem,{value:"complete",children:"Complete"}),(0,b.jsx)(j.SelectItem,{value:"archived",children:"Archived"})]})]}),(0,b.jsxs)(j.Select,{value:A,onValueChange:D,children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[110px] sm:w-[130px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:"Priority"})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"all",children:"All Priority"}),(0,b.jsx)(j.SelectItem,{value:"critical",children:"Critical"}),(0,b.jsx)(j.SelectItem,{value:"high",children:"High"}),(0,b.jsx)(j.SelectItem,{value:"medium",children:"Medium"}),(0,b.jsx)(j.SelectItem,{value:"low",children:"Low"})]})]}),(0,b.jsxs)(j.Select,{value:E,onValueChange:a=>H(a),children:[(0,b.jsx)(j.SelectTrigger,{className:"w-[130px] sm:w-[170px] h-9 sm:h-10 flex-shrink-0 snap-start text-xs sm:text-sm",children:(0,b.jsx)(j.SelectValue,{placeholder:"Sort by"})}),(0,b.jsxs)(j.SelectContent,{children:[(0,b.jsx)(j.SelectItem,{value:"id-desc",children:"Newest First"}),(0,b.jsx)(j.SelectItem,{value:"id-asc",children:"Oldest First"}),(0,b.jsx)(j.SelectItem,{value:"updated-desc",children:"Recently Updated"}),(0,b.jsx)(j.SelectItem,{value:"title-asc",children:"Title (A-Z)"})]})]})]})]})]})}),(0,b.jsx)("div",{className:(0,z.cn)("flex-1 min-h-0","board"===M?"overflow-x-auto overflow-y-hidden":"overflow-y-auto"),children:"list"===M?(0,b.jsx)("div",{className:"w-full",children:(0,b.jsx)(F,{specs:Q,getSpecUrl:l})}):(0,b.jsx)(G,{specs:Q,onStatusChange:P,pendingSpecIds:r,showArchived:I,onToggleArchived:()=>J(!I),getSpecUrl:l})})]})})}function F({specs:a,getSpecUrl:c}){return(0,b.jsx)("div",{className:"grid grid-cols-1 gap-2 sm:gap-3 md:gap-4 pb-2 sm:pb-4 md:pb-8",children:a.map(a=>{let e={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[a.priority]||"border-l-gray-300",h=a.relationships&&a.relationships.dependsOn.length>0,i=!!(a.subSpecsCount&&a.subSpecsCount>0),j=c(a.specNumber||a.id);return(0,b.jsxs)(f.Card,{className:(0,z.cn)("hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.01] active:scale-[0.99] border-l-4 cursor-pointer touch-manipulation",e),onClick:()=>window.location.href=j,children:[(0,b.jsx)(f.CardHeader,{className:"pb-2 sm:pb-2.5 md:pb-3 px-3 sm:px-4 md:px-6 pt-3 sm:pt-4 md:pt-6",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-start md:justify-between md:gap-4",children:[(0,b.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,b.jsx)(d.default,{href:j,children:(0,b.jsxs)(f.CardTitle,{className:"text-sm sm:text-base md:text-lg font-semibold hover:text-primary transition-colors flex items-start flex-wrap gap-1.5 sm:gap-2 leading-snug sm:leading-normal",children:[a.specNumber?(0,b.jsxs)("span",{className:"font-mono text-xs sm:text-sm md:text-base font-normal text-muted-foreground flex-shrink-0",children:["#",a.specNumber.toString().padStart(3,"0")]}):null,(0,b.jsx)("span",{className:"flex-1 break-words",children:a.title||a.specName})]})}),a.title&&a.title!==a.specName&&(0,b.jsx)("p",{className:"text-[11px] sm:text-xs font-mono text-muted-foreground mt-1 sm:mt-1.5 truncate",children:a.specName})]}),(0,b.jsxs)("div",{className:"flex gap-1.5 sm:gap-2 flex-wrap md:shrink-0",children:[a.status&&(0,b.jsx)(x.StatusBadge,{status:a.status}),a.priority&&(0,b.jsx)(y.PriorityBadge,{priority:a.priority})]})]})}),(0,b.jsx)(f.CardContent,{className:"px-3 sm:px-4 md:px-6 pb-2.5 sm:pb-3 md:pb-6 pt-0",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 md:flex-row md:items-center md:justify-between md:gap-4",children:[(0,b.jsx)("div",{className:"flex items-center gap-2 sm:gap-3 md:gap-4 text-[11px] sm:text-xs md:text-sm text-muted-foreground flex-wrap",children:a.updatedAt||i||h?(0,b.jsxs)(b.Fragment,{children:[a.updatedAt&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(n.Clock,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsxs)("span",{className:"whitespace-nowrap",children:["Updated ",(0,A.formatRelativeTime)(a.updatedAt)]})]}),i&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(r.FileText,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsxs)("span",{className:"whitespace-nowrap",children:["+",a.subSpecsCount," files"]})]}),h&&(0,b.jsxs)("div",{className:"flex items-center gap-1 sm:gap-1.5",children:[(0,b.jsx)(s.GitBranch,{className:"h-3 w-3 sm:h-3.5 sm:w-3.5 flex-shrink-0"}),(0,b.jsxs)("span",{className:"whitespace-nowrap",children:[a.relationships.dependsOn.length," deps"]})]})]}):(0,b.jsx)("span",{className:"invisible hidden md:inline",children:"No metadata"})}),a.tags&&a.tags.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap gap-1 sm:gap-1.5 md:gap-2 md:justify-end md:shrink-0",children:a.tags.map(a=>(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs font-mono text-muted-foreground hover:text-foreground transition-colors h-5 sm:h-auto px-1.5 sm:px-2",children:a},a))})]})})]},a.id)})})}function G({specs:a,onStatusChange:e,pendingSpecIds:h,showArchived:i,onToggleArchived:j,getSpecUrl:k}){let[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)({}),r=(0,c.useMemo)(()=>D.map(b=>({status:b,config:C[b],specs:a.filter(a=>a.status===b)})),[a]),s=(0,c.useMemo)(()=>{let b=new Map;return a.forEach(a=>b.set(a.id,a)),b},[a]),t=(0,c.useCallback)((a,b)=>{b.dataTransfer.setData("text/plain",a),b.dataTransfer.effectAllowed="move",m(a)},[]),u=(0,c.useCallback)(()=>{m(null),o(null)},[]),x=(0,c.useCallback)((a,b)=>{l&&(b.preventDefault(),b.dataTransfer.dropEffect="move",o(a))},[l]),A=(0,c.useCallback)((a,b)=>{if(!l)return;let c=b.relatedTarget;c&&b.currentTarget.contains(c)||o(b=>b===a?null:b)},[l]),B=(0,c.useCallback)((a,b)=>{b.preventDefault();let c=b.dataTransfer.getData("text/plain")||l;if(!c)return void u();let d=s.get(c);d&&d.status!==a&&e(d,a),u()},[l,u,e,s]);return(0,b.jsx)("div",{className:"flex flex-col md:flex-row gap-3 sm:gap-4 md:gap-6 h-full pb-2 md:snap-x md:snap-mandatory overflow-y-auto md:overflow-y-hidden md:overflow-x-auto",children:r.map(a=>{let c=a.config.icon,e="archived"===a.status,m=p[a.status];return(0,b.jsxs)("div",{className:(0,z.cn)("flex flex-col flex-1 snap-start","h-auto md:h-full w-full md:w-auto flex-shrink-0",e&&!i?"md:w-12 md:sm:w-14 md:min-w-[3rem] md:sm:min-w-[3.5rem] flex-none":"md:min-w-[260px] md:sm:min-w-[280px] md:md:min-w-[300px]"),children:[(0,b.jsx)("div",{className:(0,z.cn)("flex-none mb-3 sm:mb-4 rounded-lg border-2 bg-background transition-all touch-manipulation",a.config.bgClass,a.config.borderClass,e?"cursor-pointer hover:opacity-80 active:opacity-70":"",e&&!i?"py-4 sm:py-6 px-1.5 sm:px-2":"p-2.5 sm:p-3","md:cursor-default cursor-pointer"),onClick:()=>{if(e)j();else{var b;window.innerWidth<768&&(b=a.status,q(a=>({...a,[b]:!a[b]})))}},children:(0,b.jsxs)("h2",{className:(0,z.cn)("text-base sm:text-lg font-semibold flex items-center gap-1.5 sm:gap-2",a.config.colorClass,e&&!i&&"flex-col text-xs sm:text-sm gap-2 sm:gap-3"),children:[(0,b.jsx)(c,{className:"h-4 w-4 sm:h-5 sm:w-5 flex-shrink-0"}),e&&!i?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"vertical-text text-xs sm:text-sm whitespace-nowrap",children:a.config.title}),(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1 sm:px-2 h-4 sm:h-5",children:a.specs.length})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"truncate flex-1",children:a.config.title}),(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[10px] sm:text-xs px-1.5 sm:px-2 h-4 sm:h-5 flex-shrink-0",children:a.specs.length}),(0,b.jsx)("div",{className:"md:hidden ml-2 text-muted-foreground/50",children:m?(0,b.jsx)(w.ChevronRight,{className:"h-4 w-4"}):(0,b.jsx)(v.ChevronDown,{className:"h-4 w-4"})})]})]})}),(!e||i)&&!m&&(0,b.jsxs)("div",{className:(0,z.cn)("space-y-2 sm:space-y-2.5 md:space-y-3 flex-1 rounded-xl border border-transparent p-1 transition-colors overflow-y-auto min-h-0 scrollbar-thin",l&&"border-dashed border-muted-foreground/40",l&&n===a.status&&"bg-muted/40 border-primary/50"),onDragOver:b=>x(a.status,b),onDragLeave:b=>A(a.status,b),onDrop:b=>B(a.status,b),children:[a.specs.map(a=>{let c={critical:"border-l-red-500",high:"border-l-orange-500",medium:"border-l-blue-500",low:"border-l-gray-400"}[a.priority]||"border-l-gray-300",e=!!h[a.id],i=k(a.specNumber||a.id);return(0,b.jsxs)(f.Card,{draggable:!e,onDragStart:b=>{e?b.preventDefault():t(a.id,b)},onDragEnd:u,"aria-disabled":e,className:(0,z.cn)("relative hover:shadow-lg active:shadow-xl transition-all duration-150 hover:scale-[1.02] active:scale-[0.99] border-l-4 cursor-pointer group flex flex-col touch-manipulation",c,e&&"opacity-60 cursor-wait"),onClick:()=>window.location.href=i,children:[e&&(0,b.jsx)("div",{className:"absolute inset-0 rounded-lg bg-background/80 flex items-center justify-center text-xs sm:text-sm font-medium z-10",children:"Updating..."}),(0,b.jsxs)(f.CardHeader,{className:"p-3 sm:p-4 pb-1.5 sm:pb-2 space-y-1 sm:space-y-1.5",children:[(0,b.jsx)("div",{className:"flex items-center justify-between",children:(0,b.jsx)("span",{className:"font-mono text-[10px] sm:text-xs text-muted-foreground/70 group-hover:text-primary/60 transition-colors",children:a.specNumber?`#${a.specNumber}`:""})}),(0,b.jsx)(d.default,{href:i,className:"block",children:(0,b.jsx)(f.CardTitle,{className:"text-xs sm:text-sm font-semibold leading-snug hover:text-primary transition-colors line-clamp-3",children:a.title||a.specName})})]}),(0,b.jsx)(f.CardContent,{className:"p-3 sm:p-4 pt-1.5 sm:pt-2 flex-1 flex flex-col justify-end",children:(0,b.jsxs)("div",{className:"flex flex-col gap-2 sm:gap-3",children:[a.title&&a.title!==a.specName&&(0,b.jsx)("p",{className:"text-[10px] sm:text-xs font-mono text-muted-foreground truncate opacity-70",children:a.specName}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1.5 sm:gap-2 pt-0.5 sm:pt-1",children:[a.priority?(0,b.jsx)(y.PriorityBadge,{priority:a.priority}):(0,b.jsx)("div",{}),a.tags&&a.tags.length>0&&(0,b.jsxs)("div",{className:"flex flex-wrap gap-0.5 sm:gap-1 justify-end",children:[a.tags.slice(0,2).map(a=>(0,b.jsx)(g.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:a},a)),a.tags.length>2&&(0,b.jsxs)(g.Badge,{variant:"outline",className:"text-[9px] sm:text-[10px] px-1 sm:px-1.5 h-4 sm:h-5 font-mono text-muted-foreground/80",children:["+",a.tags.length-2]})]})]})]})})]},a.id)}),0===a.specs.length&&(0,b.jsx)(f.Card,{className:"border-dashed border-gray-300 dark:border-gray-700 bg-transparent",children:(0,b.jsxs)(f.CardContent,{className:"py-6 sm:py-8 text-center px-2",children:[(0,b.jsx)(c,{className:(0,z.cn)("mx-auto h-6 w-6 sm:h-8 sm:w-8 mb-1.5 sm:mb-2",a.config.colorClass,"opacity-50")}),(0,b.jsx)("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Drop here to move specs"})]})})]})]},a.status)})})}a.s(["SpecsClient",()=>E])}];
2
2
 
3
3
  //# sourceMappingURL=packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[599302,a=>{"use strict";let b;var c=a.i(40352),d=a.i(936883),e=a.i(558285),f=a.i(681612),g=a.i(836180);a.s(["ERROR_REVALIDATE_EVENT",()=>3,"FOCUS_EVENT",()=>0,"MUTATE_EVENT",()=>2,"RECONNECT_EVENT",()=>1],869111);var h=Object.prototype.hasOwnProperty;let i=new WeakMap,j=()=>{},k=j(),l=Object,m=a=>a===k,n=(a,b)=>({...a,...b}),o={},p={},q="undefined",r=typeof document!=q,s=!1,t=(a,b)=>{let c=i.get(a);return[()=>!m(b)&&a.get(b)||o,d=>{if(!m(b)){let e=a.get(b);b in p||(p[b]=e),c[5](b,n(e,d),e||o)}},c[6],()=>!m(b)&&b in p?p[b]:!m(b)&&a.get(b)||o]},u=!0,[v,w]=[j,j],x={initFocus:a=>(r&&document.addEventListener("visibilitychange",a),v("focus",a),()=>{r&&document.removeEventListener("visibilitychange",a),w("focus",a)}),initReconnect:a=>{let b=()=>{u=!0,a()},c=()=>{u=!1};return v("online",b),v("offline",c),()=>{w("online",b),w("offline",c)}}},y=!d.default.useId,z=!0,A=d.useEffect,B="undefined"!=typeof navigator&&navigator.connection;!z&&B&&(["slow-2g","2g"].includes(B.effectiveType)||B.saveData);let C=new WeakMap,D=(a,b)=>a===`[object ${b}]`,E=0,F=a=>{let b,c,d=typeof a,e=l.prototype.toString.call(a),f=D(e,"Date"),g=D(e,"RegExp"),h=D(e,"Object");if(l(a)!==a||f||g)b=f?a.toJSON():"symbol"==d?a.toString():"string"==d?JSON.stringify(a):""+a;else{if(b=C.get(a))return b;if(b=++E+"~",C.set(a,b),Array.isArray(a)){for(c=0,b="@";c<a.length;c++)b+=F(a[c])+",";C.set(a,b)}if(h){b="#";let d=l.keys(a).sort();for(;!m(c=d.pop());)m(a[c])||(b+=c+":"+F(a[c])+",");C.set(a,b)}}return b},G=a=>{if("function"==typeof a)try{a=a()}catch(b){a=""}let b=a;return[a="string"==typeof a?a:(Array.isArray(a)?a.length:a)?F(a):"",b]},H=0,I=()=>++H;async function J(...a){let[b,c,d,e]=a,f=n({populateCache:!0,throwOnError:!0},"boolean"==typeof e?{revalidate:e}:e||{}),g=f.populateCache,h=f.rollbackOnError,j=f.optimisticData,l=f.throwOnError;if("function"==typeof c){let a=[];for(let d of b.keys())!/^\$(inf|sub)\$/.test(d)&&c(b.get(d)._k)&&a.push(d);return Promise.all(a.map(o))}return o(c);async function o(c){let e,[n]=G(c);if(!n)return;let[o,p]=t(b,n),[q,r,s,u]=i.get(b),v=()=>{let a=q[n];return("function"==typeof f.revalidate?f.revalidate(o().data,c):!1!==f.revalidate)&&(delete s[n],delete u[n],a&&a[0])?a[0](2).then(()=>o().data):o().data};if(a.length<3)return v();let w=d,x=!1,y=I();r[n]=[y,0];let z=!m(j),A=o(),B=A.data,C=A._c,D=m(C)?B:C;if(z&&p({data:j="function"==typeof j?j(D,B):j,_c:D}),"function"==typeof w)try{w=w(D)}catch(a){e=a,x=!0}if(w&&"function"==typeof w.then){let a;if(w=await w.catch(a=>{e=a,x=!0}),y!==r[n][0]){if(x)throw e;return w}x&&z&&(a=e,"function"==typeof h?h(a):!1!==h)&&(g=!0,p({data:D,_c:k}))}if(g&&!x&&("function"==typeof g?p({data:g(w,D),error:k,_c:k}):p({data:w,error:k,_c:k})),r[n][1]=I(),Promise.resolve(v()).then(()=>{p({_c:k})}),x){if(l)throw e;return}return w}}let K=(a,b)=>{if(!i.has(a)){n(x,b);let c=Object.create(null),d=J.bind(k,a),e=Object.create(null),f=(a,b)=>{let c=e[a]||[];return e[a]=c,c.push(b),()=>c.splice(c.indexOf(b),1)},g=(b,c,d)=>{a.set(b,c);let f=e[b];if(f)for(let a of f)a(c,d)},h=()=>{i.has(a)||i.set(a,[c,Object.create(null),Object.create(null),Object.create(null),d,g,f])};return h(),[a,d,h,j]}return[a,i.get(a)[4]]},[L,M]=K(new Map),N=n({onLoadingSlow:j,onSuccess:j,onError:j,onErrorRetry:(a,b,c,d,e)=>{let f=c.errorRetryCount,g=e.retryCount,h=~~((Math.random()+.5)*(1<<(g<8?g:8)))*c.errorRetryInterval;(m(f)||!(g>f))&&setTimeout(d,h,e)},onDiscarded:j,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:5e3,focusThrottleInterval:5e3,dedupingInterval:2e3,loadingTimeout:3e3,compare:function a(b,c){var d,e;if(b===c)return!0;if(b&&c&&(d=b.constructor)===c.constructor){if(d===Date)return b.getTime()===c.getTime();if(d===RegExp)return b.toString()===c.toString();if(d===Array){if((e=b.length)===c.length)for(;e--&&a(b[e],c[e]););return -1===e}if(!d||"object"==typeof b){for(d in e=0,b)if(h.call(b,d)&&++e&&!h.call(c,d)||!(d in c)||!a(b[d],c[d]))return!1;return Object.keys(c).length===e}}return b!=b&&c!=c},isPaused:()=>!1,cache:L,mutate:M,fallback:{}},{isOnline:()=>u,isVisible:()=>{let a=r&&document.visibilityState;return m(a)||"hidden"!==a}}),O=(a,b)=>{let c=n(a,b);if(b){let{use:d,fallback:e}=a,{use:f,fallback:g}=b;d&&f&&(c.use=d.concat(f)),e&&g&&(c.fallback=n(e,g))}return c},P=(0,d.createContext)({});var Q=a.i(869111);let R=!1,S=(R?window.__SWR_DEVTOOLS_USE__:[]).concat(a=>(b,c,d)=>{let e=c&&((...a)=>{let[d]=G(b),[,,,e]=i.get(L);if(d.startsWith("$inf$"))return c(...a);let f=e[d];return m(f)?c(...a):(delete e[d],f)});return a(b,e,d)});R&&(window.__SWR_DEVTOOLS_REACT__=d.default);let T=()=>{},U=T(),V=(new WeakMap,d.default.use||(a=>{switch(a.status){case"pending":throw a;case"fulfilled":return a.value;case"rejected":throw a.reason;default:throw a.status="pending",a.then(b=>{a.status="fulfilled",a.value=b},b=>{a.status="rejected",a.reason=b}),a}})),W={dedupe:!0},X=Promise.resolve(k);l.defineProperty(a=>{let{value:b}=a,c=(0,d.useContext)(P),e="function"==typeof b,f=(0,d.useMemo)(()=>e?b(c):b,[e,c,b]),g=(0,d.useMemo)(()=>e?f:O(c,f),[e,c,f]),h=f&&f.provider,i=(0,d.useRef)(k);h&&!i.current&&(i.current=K(h(g.cache||L),f));let j=i.current;return j&&(g.cache=j[0],g.mutate=j[1]),A(()=>{if(j)return j[2]&&j[2](),j[3]},[]),(0,d.createElement)(P.Provider,n(a,{value:g}))},"defaultValue",{value:N});let Y=(b=(a,b,c)=>{let{cache:e,compare:f,suspense:h,fallbackData:j,revalidateOnMount:l,revalidateIfStale:o,refreshInterval:p,refreshWhenHidden:q,refreshWhenOffline:r,keepPreviousData:s}=c,[u,v,w,x]=i.get(e),[B,C]=G(a),D=(0,d.useRef)(!1),E=(0,d.useRef)(!1),F=(0,d.useRef)(B),H=(0,d.useRef)(b),K=(0,d.useRef)(c),L=()=>K.current.isVisible()&&K.current.isOnline(),[M,N,O,P]=t(e,B),R=(0,d.useRef)({}).current,S=m(j)?m(c.fallback)?k:c.fallback[B]:j,T=(a,b)=>{for(let c in R)if("data"===c){if(!f(a[c],b[c])&&(!m(a[c])||!f(ad,b[c])))return!1}else if(b[c]!==a[c])return!1;return!0},U=(0,d.useMemo)(()=>{let a=!!B&&!!b&&(m(l)?!K.current.isPaused()&&!h&&!1!==o:l),c=b=>{let c=n(b);return(delete c._k,a)?{isValidating:!0,isLoading:!0,...c}:c},d=M(),e=P(),f=c(d),g=d===e?f:c(e),i=f;return[()=>{let a=c(M());return T(a,i)?(i.data=a.data,i.isLoading=a.isLoading,i.isValidating=a.isValidating,i.error=a.error,i):(i=a,a)},()=>g]},[e,B]),Y=(0,g.useSyncExternalStore)((0,d.useCallback)(a=>O(B,(b,c)=>{T(c,b)||a()}),[e,B]),U[0],U[1]),Z=!D.current,$=u[B]&&u[B].length>0,_=Y.data,aa=m(_)?S&&"function"==typeof S.then?V(S):S:_,ab=Y.error,ac=(0,d.useRef)(aa),ad=s?m(_)?m(ac.current)?aa:ac.current:_:aa,ae=(!$||!!m(ab))&&(Z&&!m(l)?l:!K.current.isPaused()&&(h?!m(aa)&&o:m(aa)||o)),af=!!(B&&b&&Z&&ae),ag=m(Y.isValidating)?af:Y.isValidating,ah=m(Y.isLoading)?af:Y.isLoading,ai=(0,d.useCallback)(async a=>{let b,d,e=H.current;if(!B||!e||E.current||K.current.isPaused())return!1;let g=!0,h=a||{},i=!w[B]||!h.dedupe,j=()=>y?!E.current&&B===F.current&&D.current:B===F.current,l={isValidating:!1,isLoading:!1},n=()=>{N(l)},o=()=>{let a=w[B];a&&a[1]===d&&delete w[B]},p={isValidating:!0};m(M().data)&&(p.isLoading=!0);try{if(i&&(N(p),c.loadingTimeout&&m(M().data)&&setTimeout(()=>{g&&j()&&K.current.onLoadingSlow(B,c)},c.loadingTimeout),w[B]=[e(C),I()]),[b,d]=w[B],b=await b,i&&setTimeout(o,c.dedupingInterval),!w[B]||w[B][1]!==d)return i&&j()&&K.current.onDiscarded(B),!1;l.error=k;let a=v[B];if(!m(a)&&(d<=a[0]||d<=a[1]||0===a[1]))return n(),i&&j()&&K.current.onDiscarded(B),!1;let h=M().data;l.data=f(h,b)?h:b,i&&j()&&K.current.onSuccess(b,B,c)}catch(c){o();let a=K.current,{shouldRetryOnError:b}=a;!a.isPaused()&&(l.error=c,i&&j())&&(a.onError(c,B,a),(!0===b||"function"==typeof b&&b(c))&&(!K.current.revalidateOnFocus||!K.current.revalidateOnReconnect||L())&&a.onErrorRetry(c,B,a,a=>{let b=u[B];b&&b[0]&&b[0](Q.ERROR_REVALIDATE_EVENT,a)},{retryCount:(h.retryCount||0)+1,dedupe:!0}))}return g=!1,n(),!0},[B,e]),aj=(0,d.useCallback)((...a)=>J(e,F.current,...a),[]);if(A(()=>{H.current=b,K.current=c,m(_)||(ac.current=_)}),A(()=>{var a;let b;if(!B)return;let c=ai.bind(k,W),d=0;K.current.revalidateOnFocus&&(d=Date.now()+K.current.focusThrottleInterval);let e=(a=(a,b={})=>{if(a==Q.FOCUS_EVENT){let a=Date.now();K.current.revalidateOnFocus&&a>d&&L()&&(d=a+K.current.focusThrottleInterval,c())}else if(a==Q.RECONNECT_EVENT)K.current.revalidateOnReconnect&&L()&&c();else if(a==Q.MUTATE_EVENT)return ai();else if(a==Q.ERROR_REVALIDATE_EVENT)return ai(b)},(b=u[B]||(u[B]=[])).push(a),()=>{let c=b.indexOf(a);c>=0&&(b[c]=b[b.length-1],b.pop())});if(E.current=!1,F.current=B,D.current=!0,N({_k:C}),ae&&!w[B])if(m(aa)||z)c();else setTimeout(c,1);return()=>{E.current=!0,e()}},[B]),A(()=>{let a;function b(){let b="function"==typeof p?p(M().data):p;b&&-1!==a&&(a=setTimeout(c,b))}function c(){!M().error&&(q||K.current.isVisible())&&(r||K.current.isOnline())?ai(W).then(b):b()}return b(),()=>{a&&(clearTimeout(a),a=-1)}},[p,q,r,B]),(0,d.useDebugValue)(ad),h){let a=B&&m(aa);if(!y&&z&&a)throw Error("Fallback data is required when using Suspense in SSR.");a&&(H.current=b,K.current=c,E.current=!1);let d=x[B];if(V(!m(d)&&a?aj(d):X),!m(ab)&&a)throw ab;let e=a?ai(W):X;!m(ad)&&a&&(e.status="fulfilled",e.value=!0),V(e)}return{mutate:aj,get data(){return R.data=!0,ad},get error(){return R.error=!0,ab},get isValidating(){return R.isValidating=!0,ag},get isLoading(){return R.isLoading=!0,ah}}},function(...a){let c,e=(c=(0,d.useContext)(P),(0,d.useMemo)(()=>n(N,c),[c])),[f,g,h]="function"==typeof a[1]?[a[0],a[1],a[2]||{}]:[a[0],null,(null===a[1]?a[2]:a[1])||{}],i=O(e,h),j=b,{use:k}=i,l=(k||[]).concat(S);for(let a=l.length;a--;)j=l[a](j);return j(f,g||i.fetcher||null,i)});var Z=a.i(459500),$=a.i(316828),_=a.i(312750),aa=a.i(524172),ab=a.i(837717),ac=a.i(227725),ad=a.i(297557),ae=a.i(659358),af=a.i(800966),ag=a.i(262936),ah=a.i(532418),ai=a.i(890075),aj=a.i(687052);function ak({createdAt:a,updatedAt:b,completedAt:d,status:e,className:f}){let g=[];return(a&&g.push({label:"Created",date:a,isActive:!0,isFuture:!1,icon:ad.Clock,color:"text-blue-600"}),"in-progress"===e||"complete"===e||"archived"===e?g.push({label:"In Progress",date:b||a,isActive:!0,isFuture:!1,icon:ae.PlayCircle,color:"text-orange-600"}):g.push({label:"In Progress",date:null,isActive:!1,isFuture:!0,icon:ah.Circle,color:"text-muted-foreground"}),"complete"===e||"archived"===e?g.push({label:"Complete",date:d||b,isActive:!0,isFuture:!1,icon:af.CheckCircle2,color:"text-green-600"}):g.push({label:"Complete",date:null,isActive:!1,isFuture:!0,icon:ah.Circle,color:"text-muted-foreground"}),"archived"===e&&g.push({label:"Archived",date:b,isActive:!0,isFuture:!1,icon:ag.Archive,color:"text-gray-600"}),0===g.length)?null:(0,c.jsx)("div",{className:(0,aj.cn)("flex items-start gap-2",f),children:g.map((a,b)=>{let d=a.icon,e=b===g.length-1,f=e?null:g[b+1],h=a.date&&f?.date&&!f.isFuture?(0,ai.formatDuration)(a.date,f.date):"";return(0,c.jsxs)("div",{className:"flex items-center gap-2 flex-1",children:[(0,c.jsxs)("div",{className:"flex flex-col items-center gap-1 min-w-0",children:[(0,c.jsx)("div",{className:(0,aj.cn)("w-8 h-8 rounded-full border-2 bg-background flex items-center justify-center shrink-0",a.isActive&&!a.isFuture?"border-primary":"border-muted-foreground/40"),children:d&&(0,c.jsx)(d,{className:(0,aj.cn)("h-4 w-4",a.isActive&&!a.isFuture?"text-primary":"text-muted-foreground/60")})}),(0,c.jsx)("div",{className:(0,aj.cn)("text-xs font-medium text-center whitespace-nowrap",a.isActive&&!a.isFuture?"text-foreground":"text-muted-foreground"),children:a.label}),(0,c.jsxs)("div",{className:"text-[10px] text-center min-h-[14px]",children:[a.date&&!a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground",children:(0,ai.formatRelativeTime)(a.date)}),!a.date&&a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/70",children:"Awaiting start"}),a.date&&a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/70",children:"Queued"}),!a.date&&!a.isFuture&&(0,c.jsx)("span",{className:"text-muted-foreground/60",children:"Pending update"})]})]}),!e&&(0,c.jsxs)("div",{className:"flex flex-col items-center flex-1 min-w-4 gap-0.5",children:[(0,c.jsx)("div",{className:(0,aj.cn)("h-0.5 w-full",a.isActive&&!a.isFuture?"bg-primary":"bg-muted-foreground/40")}),h&&(0,c.jsx)("div",{className:"text-[10px] text-muted-foreground font-medium whitespace-nowrap",children:h})]})]},b)})})}var al=a.i(882479),am=a.i(322570),an=a.i(920378);function ao({href:a,children:b,currentSpecNumber:d,projectId:e,...f}){if(!a)return(0,c.jsx)("a",{...f,children:b});let g=function(a,b,c){if(a.startsWith("#")||a.startsWith("http://")||a.startsWith("https://"))return a;let d=(a,b)=>{let d=c?`/projects/${c}/specs/${a}`:`/specs/${a}`;return b?`${d}?subspec=${b}`:d},e=a.match(/^\.\/([^/]+\.md)$/);if(e&&b){let a=e[1];return"README.md"!==a?d(b,a):d(b)}let f=a.match(/^\.\.\/(\d+)-[^/]+\/?([^/]+\.md)?$/);if(f){let a=parseInt(f[1],10),b=f[2];return b&&"README.md"!==b?d(a,b):d(a)}return a}(a,d,e),h=g.startsWith("http://")||g.startsWith("https://"),i=g.startsWith("#");return h||i?(0,c.jsx)("a",{href:g,...f,target:h?"_blank":void 0,rel:h?"noopener noreferrer":void 0,children:b}):(0,c.jsx)(an.default,{href:g,...f,className:"text-primary hover:underline",children:b})}var ap=a.i(87140),aq=a.i(731751),ar=a.i(183214),as=a.i(398293),at=a.i(231008),au=a.i(53897),av=a.i(669153);let aw="#f59e0b",ax="#ef4444",ay={current:"border-primary/70 bg-primary/5 text-foreground",precedence:"border-amber-400/70 bg-amber-400/10 text-amber-900 dark:text-amber-200","required-by":"border-red-400/70 bg-red-400/10 text-red-900 dark:text-red-200"},az={rankdir:"LR",align:"UL",nodesep:60,ranksep:120,marginx:40,marginy:40},aA=d.memo(function({data:a}){return(0,c.jsxs)("div",{className:(0,aj.cn)("flex w-[280px] flex-col gap-1.5 rounded-xl border-2 px-5 py-4 text-base shadow-md transition-colors",ay[a.tone],a.interactive&&"cursor-pointer hover:border-primary/70 hover:shadow-lg"),children:[(0,c.jsx)(av.Handle,{type:"target",position:av.Position.Left,className:"opacity-0"}),(0,c.jsx)("span",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/70",children:a.badge}),(0,c.jsx)("span",{className:"text-base font-semibold leading-snug",children:a.label}),a.subtitle&&(0,c.jsx)("span",{className:"text-sm text-muted-foreground/80",children:a.subtitle}),(0,c.jsx)(av.Handle,{type:"source",position:av.Position.Right,className:"opacity-0"})]})});aA.displayName="SpecNode";let aB={specNode:aA};function aC(a){let b=a.trim();if(!b)return"Unknown Spec";let c=b.match(/^(\d+)[-_]?(.*)$/);if(!c)return b;let d=c[1].padStart(3,"0"),e=c[2]?.replace(/[-_]/g," ").trim();return e?`#${d} ${e}`:`#${d}`}function aD(a,b){let c=a.trim(),d=c.match(/^(\d+)/),e=d?parseInt(d[1],10):c;return b?`/projects/${b}/specs/${e}`:`/specs/${e}`}function aE(a,b,c){return`${a}-${c}-${b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||c}`}function aF({relationships:a,specNumber:b,specTitle:e,projectId:g}){let h=(0,f.useRouter)(),[i,j]=d.useState(null),k=d.useMemo(()=>{let c,d,f,h;return c=[],d=[],f={id:"current-spec",type:"specNode",data:{label:b?`#${b.toString().padStart(3,"0")} ${e}`:e,badge:"Current Spec",subtitle:"This spec",tone:"current",interactive:!1},position:{x:0,y:0},draggable:!1,selectable:!1,sourcePosition:av.Position.Right,targetPosition:av.Position.Left},c.push(f),a.dependsOn?.forEach((a,b)=>{let e=aE("precedence",a,b);c.push({id:e,type:"specNode",data:{label:aC(a),badge:"Depends On",subtitle:"Must complete first",tone:"precedence",href:aD(a,g),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:av.Position.Right,targetPosition:av.Position.Left}),d.push({id:`edge-${e}-current`,source:e,target:f.id,type:"smoothstep",markerEnd:{type:av.MarkerType.ArrowClosed,color:aw,width:28,height:28},style:{stroke:aw,strokeWidth:3}})}),a.requiredBy?.forEach((a,b)=>{let e=aE("required-by",a,b);c.push({id:e,type:"specNode",data:{label:aC(a),badge:"Required By",subtitle:"Blocked by this spec",tone:"required-by",href:aD(a,g),interactive:!0},position:{x:0,y:0},draggable:!1,selectable:!0,sourcePosition:av.Position.Right,targetPosition:av.Position.Left}),d.push({id:`edge-current-${e}`,source:f.id,target:e,type:"smoothstep",markerEnd:{type:av.MarkerType.ArrowClosed,color:ax,width:28,height:28},style:{stroke:ax,strokeWidth:3}})}),(h=new ar.default.graphlib.Graph).setGraph(az),h.setDefaultEdgeLabel(()=>({})),c.forEach(a=>{h.setNode(a.id,{width:280,height:110})}),d.forEach(a=>{h.setEdge(a.source,a.target)}),ar.default.layout(h),{nodes:c.map(a=>{let{x:b,y:c}=h.node(a.id);return{...a,position:{x:b-140,y:c-55}}}),edges:d}},[a,b,e,g]),l=d.useCallback(a=>{j(a),requestAnimationFrame(()=>{a.fitView({padding:.4,duration:350})})},[]);d.useEffect(()=>{i&&i.fitView({padding:.4,duration:350})},[i,k.nodes]);let m=d.useCallback((a,b)=>{!b?.data||b.data.href&&h.push(b.data.href)},[h]);return(0,c.jsxs)("div",{className:"flex h-full flex-col gap-4",children:[(0,c.jsxs)("div",{className:"flex flex-wrap items-center justify-between gap-3 text-sm text-muted-foreground",children:[(0,c.jsxs)("div",{children:[(0,c.jsx)("p",{className:"text-xs font-semibold uppercase tracking-wide",children:"Dependency Map"}),(0,c.jsx)("p",{className:"text-base text-foreground",children:"Explore precedence and connected work"})]}),(0,c.jsx)("div",{className:"rounded-full border border-border px-3 py-1.5 text-sm font-medium uppercase tracking-wide",children:"React Flow DAG"})]}),(0,c.jsx)("div",{className:"flex-1 overflow-hidden rounded-2xl border border-border bg-muted/30",children:(0,c.jsxs)(as.default,{nodes:k.nodes,edges:k.edges,nodeTypes:aB,onInit:l,className:"h-full w-full",fitView:!0,proOptions:{hideAttribution:!0},nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,panOnScroll:!0,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,minZoom:.4,maxZoom:1.6,onNodeClick:m,children:[(0,c.jsx)(at.Background,{gap:24,size:1,color:"rgba(148, 163, 184, 0.3)"}),(0,c.jsx)(au.Controls,{showInteractive:!1})]})}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-4 text-sm text-muted-foreground",children:[(0,c.jsxs)("span",{className:"inline-flex items-center gap-2 font-medium",children:[(0,c.jsx)("span",{className:"inline-block h-2.5 w-8 rounded-full bg-amber-400/80"}),"Depends On → blocks until complete"]}),(0,c.jsxs)("span",{className:"inline-flex items-center gap-2 font-medium",children:[(0,c.jsx)("span",{className:"inline-block h-2.5 w-8 rounded-full bg-red-400/80"}),"Required By ← blocked by this spec"]}),(0,c.jsxs)("span",{className:"inline-flex items-center gap-2 font-medium",children:[(0,c.jsx)("span",{className:"inline-block h-2.5 w-8 rounded-full bg-sky-400/80"}),"Related ↔ connected work (bidirectional)"]}),(0,c.jsxs)("span",{className:"inline-flex items-center gap-2",children:[(0,c.jsx)("span",{className:"inline-block h-2.5 w-8 rounded-full bg-primary/60"}),"Drag to pan • Scroll / pinch to zoom."]})]})]})}var aG=a.i(228e3),aH=a.i(186945),aI=a.i(72245),aJ=a.i(615268),aK=a.i(863535);let aL=(0,aK.default)("palette",[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]]),aM=(0,aK.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]),aN=(0,aK.default)("test-tube",[["path",{d:"M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5c-1.4 0-2.5-1.1-2.5-2.5V2",key:"125lnx"}],["path",{d:"M8.5 2h7",key:"csnxdl"}],["path",{d:"M14.5 16h-5",key:"1ox875"}]]),aO=(0,aK.default)("square-check-big",[["path",{d:"M21 10.656V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.344",key:"2acyp4"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]),aP=(0,aK.default)("wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]]),aQ=(0,aK.default)("map",[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]]);var aR=a.i(915970),aS=a.i(476011),aT=a.i(418419),aU=a.i(404620),aV=a.i(709211),aW=a.i(730702),aX=a.i(475661),aY=a.i(386868);let aZ=()=>a=>{(0,aY.visit)(a,"html",a=>{"string"==typeof a.value&&a.value.trim().startsWith("<!--")&&(a.value="")})},a$={FileText:aJ.FileText,Palette:aL,Code:aM,TestTube:aN,CheckSquare:aO,Wrench:aP,Map:aQ,GitBranch:aR.GitBranch,Home:aS.Home,TrendingUp:aT.TrendingUp},a_=a=>fetch(a).then(a=>{if(!a.ok)throw Error(`HTTP error! status: ${a.status}`);return a.json()});function a0({initialSpec:a,initialSubSpec:b,isFocusMode:e=!1,onToggleFocusMode:g}){let h=(0,f.useRouter)(),i=(0,f.useSearchParams)().get("subspec")||b,[j,k]=d.useState(!1),[l,m]=d.useState(!1),{getSpecUrl:n,projectId:o}=(0,aI.useProjectUrl)(),p=o?`/api/projects/${o}/specs/${a.specNumber||a.id}`:`/api/specs/${a.specNumber||a.id}`,q=o?`/api/projects/${o}/specs/${a.specNumber||a.id}/dependency-graph`:`/api/specs/${a.specNumber||a.id}/dependency-graph`,{data:r,error:s,isLoading:t}=Y(p,a_,{fallbackData:{spec:a},revalidateOnFocus:!1,dedupingInterval:5e3}),{data:u}=Y(l?q:null,a_,{revalidateOnFocus:!1,dedupingInterval:6e4}),v=r?.spec||a,w=d.useMemo(()=>v.tags||[],[v.tags]),x=v.updatedAt?(0,ai.formatRelativeTime)(v.updatedAt):"N/A",y=v.relationships,z=u?{dependsOn:u.dependsOn.map(a=>a.specName),requiredBy:u.requiredBy.map(a=>a.specName)}:y,A=!!(y&&((y.dependsOn?.length??0)>0||(y.requiredBy?.length??0)>0));d.useEffect(()=>{A||m(!1)},[A]);let B=(0,aj.extractH1Title)(v.contentMd)||v.title||v.specName,C=v.contentMd;if(i&&v.subSpecs){let a=v.subSpecs.find(a=>a.file===i);a&&(C=a.content)}let D=a=>a?new Date(a).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"N/A",E=a=>{let b=a?n(v.specNumber||v.id,a):n(v.specNumber||v.id);h.push(b,{scroll:!1})},F=d.useRef(null);return d.useEffect(()=>{let a=()=>{let a=56;window.innerWidth>=1024&&F.current&&(a+=F.current.offsetHeight-56),document.documentElement.style.scrollPaddingTop=`${a}px`};a(),window.addEventListener("resize",a);let b=new ResizeObserver(a);return F.current&&b.observe(F.current),()=>{window.removeEventListener("resize",a),b.disconnect(),document.documentElement.style.scrollPaddingTop=""}},[v,w]),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("header",{ref:F,className:"lg:sticky lg:top-14 lg:z-20 border-b bg-card",children:[(0,c.jsx)("div",{className:(0,aj.cn)("px-3 sm:px-6",e?"py-1.5":"py-2 sm:py-3"),children:e?(0,c.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,c.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,c.jsxs)("h1",{className:"text-base font-semibold tracking-tight truncate",children:[v.specNumber&&(0,c.jsxs)("span",{className:"text-muted-foreground",children:["#",v.specNumber.toString().padStart(3,"0")," "]}),B]}),(0,c.jsx)(al.StatusBadge,{status:v.status||"planned"}),(0,c.jsx)(am.PriorityBadge,{priority:v.priority||"medium"})]}),(0,c.jsx)(ac.Button,{type:"button",variant:"ghost",size:"sm",onClick:g,className:"h-7 px-2 text-xs text-muted-foreground hover:text-foreground shrink-0",title:"Exit focus mode",children:(0,c.jsx)(aV.Minimize2,{className:"h-4 w-4"})})]}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{className:"flex items-start justify-between gap-2 mb-1.5 sm:mb-2",children:[(0,c.jsxs)("h1",{className:"text-lg sm:text-xl font-bold tracking-tight",children:[v.specNumber&&(0,c.jsxs)("span",{className:"text-muted-foreground",children:["#",v.specNumber.toString().padStart(3,"0")," "]}),B]}),(0,c.jsxs)(ac.Button,{variant:"ghost",size:"icon",className:"lg:hidden h-8 w-8 -mr-2 shrink-0 text-muted-foreground",onClick:()=>{},children:[(0,c.jsx)(aW.List,{className:"h-5 w-5"}),(0,c.jsx)("span",{className:"sr-only",children:"Toggle specs list"})]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,c.jsx)(al.StatusBadge,{status:v.status||"planned"}),(0,c.jsx)(am.PriorityBadge,{priority:v.priority||"medium"}),w.length>0&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{className:"h-4 w-px bg-border mx-1 hidden sm:block"}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-1",children:[w.slice(0,5).map(a=>(0,c.jsx)(ab.Badge,{variant:"secondary",className:"text-xs",children:a},a)),w.length>5&&(0,c.jsxs)(ab.Badge,{variant:"secondary",className:"text-xs",children:["+",w.length-5," more"]})]})]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap gap-2 sm:gap-4 text-xs text-muted-foreground mt-1.5 sm:mt-2",children:[(0,c.jsxs)("span",{className:"hidden sm:inline",children:["Created: ",D(v.createdAt)]}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{children:["Updated: ",D(v.updatedAt),v.updatedAt&&(0,c.jsxs)("span",{className:"ml-1 text-[11px] text-muted-foreground/80",children:["(",x,")"]})]}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{className:"hidden md:inline",children:["Name: ",v.specName]}),v.assignee&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{className:"hidden sm:inline",children:["Assignee: ",v.assignee]})]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mt-2",children:[(0,c.jsxs)(aH.Dialog,{open:j,onOpenChange:k,children:[(0,c.jsxs)(ac.Button,{type:"button",variant:"outline",size:"sm","aria-haspopup":"dialog","aria-expanded":j,onClick:()=>k(!0),className:"h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",children:[(0,c.jsx)(ad.Clock,{className:"mr-1.5 h-3.5 w-3.5"}),"View Timeline",(0,c.jsx)(aU.Maximize2,{className:"ml-1.5 h-3.5 w-3.5"})]}),(0,c.jsxs)(aH.DialogContent,{className:"w-[min(900px,90vw)] max-w-3xl max-h-[90vh] overflow-y-auto",children:[(0,c.jsxs)(aH.DialogHeader,{children:[(0,c.jsx)(aH.DialogTitle,{children:"Spec Timeline"}),(0,c.jsx)(aH.DialogDescription,{children:"Created, updated, and completion milestones."})]}),(0,c.jsx)("div",{className:"rounded-xl border border-border bg-muted/30 p-4",children:(0,c.jsx)(ak,{createdAt:v.createdAt,updatedAt:v.updatedAt,completedAt:v.completedAt,status:v.status||"planned"})})]})]}),(0,c.jsxs)(aH.Dialog,{open:l,onOpenChange:m,children:[(0,c.jsxs)(ac.Button,{type:"button",variant:"outline",size:"sm","aria-haspopup":"dialog","aria-expanded":l,onClick:()=>m(!0),disabled:!A,className:(0,aj.cn)("h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",!A&&"cursor-not-allowed opacity-50"),children:[(0,c.jsx)(aR.GitBranch,{className:"mr-1.5 h-3.5 w-3.5"}),"View Dependencies",(0,c.jsx)(aU.Maximize2,{className:"ml-1.5 h-3.5 w-3.5"})]}),(0,c.jsxs)(aH.DialogContent,{className:"flex h-[85vh] w-[min(1200px,95vw)] max-w-6xl flex-col gap-4 overflow-hidden",children:[(0,c.jsxs)(aH.DialogHeader,{children:[(0,c.jsx)(aH.DialogTitle,{children:"Dependency Graph"}),(0,c.jsxs)(aH.DialogDescription,{className:"flex flex-col gap-2",children:[(0,c.jsx)("span",{children:"Precedence requirements and connected specs rendered with automatic layout."}),(0,c.jsxs)(an.default,{href:`/dependencies?spec=${v.specNumber||v.id}`,className:"inline-flex items-center gap-1.5 text-xs text-primary hover:underline w-fit",onClick:()=>m(!1),children:[(0,c.jsx)(aX.ExternalLink,{className:"h-3 w-3"}),"View in full dependencies page"]})]})]}),(0,c.jsx)("div",{className:"min-h-0 flex-1",children:z&&(0,c.jsx)(aF,{relationships:z,specNumber:v.specNumber,specTitle:B,projectId:o})})]})]}),g&&(0,c.jsxs)(ac.Button,{type:"button",variant:"outline",size:"sm",onClick:g,className:"hidden lg:inline-flex h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",title:"Enter focus mode",children:[(0,c.jsx)(aU.Maximize2,{className:"mr-1.5 h-3.5 w-3.5"}),"Focus"]})]})]})}),v.subSpecs&&v.subSpecs.length>0&&(0,c.jsx)("div",{className:"border-t bg-muted/30",children:(0,c.jsx)("div",{className:"px-3 sm:px-6 overflow-x-auto",children:(0,c.jsxs)("div",{className:"flex gap-1 py-2 min-w-max",children:[(0,c.jsxs)("button",{onClick:()=>E(null),className:`flex items-center gap-2 px-3 sm:px-4 py-2 text-xs sm:text-sm font-medium rounded-md whitespace-nowrap transition-colors ${!i?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[(0,c.jsx)(aS.Home,{className:"h-4 w-4"}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"Overview"})]}),v.subSpecs.map(a=>{let b=a$[a.iconName]||aJ.FileText;return(0,c.jsxs)("button",{onClick:()=>E(a.file),className:`flex items-center gap-2 px-3 sm:px-4 py-2 text-xs sm:text-sm font-medium rounded-md whitespace-nowrap transition-colors ${i===a.file?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,children:[(0,c.jsx)(b,{className:`h-4 w-4 ${a.color}`}),(0,c.jsx)("span",{className:"hidden sm:inline",children:a.name})]},a.file)})]})})})]}),(0,c.jsxs)("div",{className:"flex flex-col xl:flex-row xl:items-start",children:[(0,c.jsx)("main",{className:"flex-1 px-3 sm:px-6 py-3 sm:py-6 min-w-0",children:(0,c.jsxs)("div",{className:"space-y-4",children:[t&&(0,c.jsx)("div",{className:"text-sm text-muted-foreground",children:"Loading..."}),s&&(0,c.jsx)("div",{className:"text-sm text-destructive",children:"Error loading spec"}),(0,c.jsx)("article",{className:"prose prose-slate dark:prose-invert max-w-none prose-sm sm:prose-base",children:(0,c.jsx)(Z.default,{remarkPlugins:[$.default,aZ],rehypePlugins:[_.default,aa.default],components:{a:a=>(0,c.jsx)(ao,{...a,currentSpecNumber:v.specNumber||void 0,projectId:o}),pre:({children:a,...b})=>{let e=d.Children.toArray(a)[0];if(d.isValidElement(e)&&"code"===e.type&&"string"==typeof e.props.className&&e.props.className?.includes("language-mermaid")){let a=e.props,b="string"==typeof a.children?a.children:"";return(0,c.jsx)(aG.MermaidDiagram,{code:b})}return(0,c.jsx)("pre",{...b,children:a})}},children:C})})]})}),(0,c.jsx)("aside",{className:"hidden xl:block w-72 shrink-0 px-6 py-6 sticky top-32 h-[calc(100vh-8rem)] overflow-y-auto scrollbar-auto-hide",children:(0,c.jsx)(ap.TableOfContentsSidebar,{content:C})})]}),(0,c.jsx)("div",{className:"xl:hidden",children:(0,c.jsx)(ap.TableOfContents,{content:C})}),(0,c.jsx)(aq.BackToTop,{})]})}var a1=a.i(90555);function a2({spec:a,allSpecs:b,currentSubSpec:f}){let[g,h]=d.useState(()=>!1),i=d.useCallback(()=>{h(a=>{let b=!a;return localStorage.setItem("spec-detail-focus-mode",String(b)),b})},[]),j=d.useMemo(()=>b.map(a=>({id:a.id,specNumber:a.specNumber,title:a.title,specName:a.specName,status:a.status,priority:a.priority,tags:a.tags,updatedAt:a.updatedAt,subSpecsCount:"subSpecsCount"in a?a.subSpecsCount:void 0})),[b]);d.useEffect(()=>{(0,a1.primeSpecsSidebar)(j)},[j]),d.useEffect(()=>{(0,a1.setActiveSidebarSpec)(a.id)},[a.id]);let k=d.useCallback(a=>{fetch(`/api/specs/${a}`).catch(()=>{})},[]);return(0,c.jsxs)("div",{className:"flex min-h-[calc(100vh-3.5rem)] w-full min-w-0",children:[(0,c.jsx)(e.SpecsNavSidebar,{initialSpecs:j,currentSpecId:a.id,currentSubSpec:f,onSpecHover:k,className:(0,aj.cn)(g&&"hidden")}),(0,c.jsx)("div",{className:"flex-1 min-w-0",children:(0,c.jsx)(a0,{initialSpec:a,initialSubSpec:f,isFocusMode:g,onToggleFocusMode:i})})]})}a.s(["SpecDetailWrapper",()=>a2],599302)}];
2
+
3
+ //# sourceMappingURL=packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[558285,90555,631868,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(920378);let e=c.useEffect;function f(a){if(void 0!==a)switch(typeof a){case"number":return a;case"string":if(a.endsWith("px"))return parseFloat(a)}}let g=null;function h({containerElement:a,direction:b,isRtl:c,scrollOffset:d}){if("horizontal"===b&&c)switch(function(a=!1){if(null===g||a){let a=document.createElement("div"),b=a.style;b.width="50px",b.height="50px",b.overflow="scroll",b.direction="rtl";let c=document.createElement("div"),d=c.style;return d.width="100px",d.height="100px",a.appendChild(c),document.body.appendChild(a),a.scrollLeft>0?g="positive-descending":(a.scrollLeft=1,g=0===a.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(a),g}return g}()){case"negative":return-d;case"positive-descending":if(a){let{clientWidth:b,scrollLeft:c,scrollWidth:d}=a;return d-b-c}}return d}function i(a,b="Assertion error"){if(!a)throw console.error(b),Error(b)}function j(a,b){if(a===b)return!0;if(!!a!=!!b||(i(void 0!==a),i(void 0!==b),Object.keys(a).length!==Object.keys(b).length))return!1;for(let c in a)if(!Object.is(b[c],a[c]))return!1;return!0}function k({cachedBounds:a,itemCount:b,itemSize:c}){if(0===b)return 0;if("number"==typeof c)return b*c;{let c=a.get(0===a.size?0:a.size-1);return i(void 0!==c,"Unexpected bounds cache miss"),b*((c.scrollOffset+c.size)/a.size)}}function l({cachedBounds:a,containerScrollOffset:b,containerSize:c,itemCount:d,overscanCount:e}){let f=d-1,g=0,h=-1,i=0,j=-1,k=0;for(;k<f;){let c=a.get(k);if(c.scrollOffset+c.size>b)break;k++}for(i=Math.max(0,(g=k)-e);k<f;){let d=a.get(k);if(d.scrollOffset+d.size>=b+c)break;k++}return j=Math.min(d-1,(h=Math.min(f,k))+e),g<0&&(g=0,h=-1,i=0,j=-1),{startIndexVisible:g,stopIndexVisible:h,startIndexOverscan:i,stopIndexOverscan:j}}function m(a,b){let{ariaAttributes:c,style:d,...e}=a,{ariaAttributes:f,style:g,...h}=b;return j(c,f)&&j(d,g)&&j(e,h)}function n({children:a,className:d,defaultHeight:g=0,listRef:n,onResize:o,onRowsRendered:p,overscanCount:q=3,rowComponent:r,rowCount:s,rowHeight:t,rowProps:u,tagName:v="div",style:w,...x}){let y=(0,c.useMemo)(()=>u,Object.values(u)),z=(0,c.useMemo)(()=>(0,c.memo)(r,m),[r]),[A,B]=(0,c.useState)(null),C=null!=t&&"object"==typeof t&&"getAverageRowHeight"in t&&"function"==typeof t.getAverageRowHeight,{getCellBounds:D,getEstimatedSize:E,scrollToIndex:F,startIndexOverscan:G,startIndexVisible:H,stopIndexOverscan:I,stopIndexVisible:J}=function({containerElement:a,containerStyle:b,defaultContainerSize:d=0,direction:g,isRtl:m=!1,itemCount:n,itemProps:o,itemSize:p,onResize:q,overscanCount:r}){var s;let t,[u,v]=(0,c.useState)({startIndexVisible:0,startIndexOverscan:0,stopIndexVisible:-1,stopIndexOverscan:-1}),{startIndexVisible:w,startIndexOverscan:x,stopIndexVisible:y,stopIndexOverscan:z}={startIndexVisible:Math.min(n-1,u.startIndexVisible),startIndexOverscan:Math.min(n-1,u.startIndexOverscan),stopIndexVisible:Math.min(n-1,u.stopIndexVisible),stopIndexOverscan:Math.min(n-1,u.stopIndexOverscan)},{height:A=d,width:B=d}=function({box:a,defaultHeight:b,defaultWidth:d,disabled:g,element:h,mode:i,style:j}){let{styleHeight:k,styleWidth:l}=(0,c.useMemo)(()=>({styleHeight:f(j?.height),styleWidth:f(j?.width)}),[j?.height,j?.width]),[m,n]=(0,c.useState)({height:b,width:d}),o=g||"only-height"===i&&void 0!==k||"only-width"===i&&void 0!==l||void 0!==k&&void 0!==l;return e(()=>{if(null===h||o)return;let b=new ResizeObserver(a=>{for(let b of a){let{contentRect:a,target:c}=b;h===c&&n(b=>b.height===a.height&&b.width===a.width?b:{height:a.height,width:a.width})}});return b.observe(h,{box:a}),()=>{b?.unobserve(h)}},[a,o,h,k,l]),(0,c.useMemo)(()=>({height:k??m.height,width:l??m.width}),[m,k,l])}({defaultHeight:"vertical"===g?d:void 0,defaultWidth:"horizontal"===g?d:void 0,element:a,mode:"vertical"===g?"only-height":"only-width",style:b}),C=(0,c.useRef)({height:0,width:0}),D="vertical"===g?A:B,E=function({containerSize:a,itemSize:b}){let c;return"string"==typeof b?(i(b.endsWith("%"),`Invalid item size: "${b}"; string values must be percentages (e.g. "100%")`),i(void 0!==a,"Container size must be defined if a percentage item size is specified"),c=a*parseInt(b)/100):c=b,c}({containerSize:D,itemSize:p});(0,c.useLayoutEffect)(()=>{if("function"==typeof q){let a=C.current;(a.height!==A||a.width!==B)&&(q({height:A,width:B},{...a}),a.height=A,a.width=B)}},[A,q,B]);let F=function({itemCount:a,itemProps:b,itemSize:d}){return(0,c.useMemo)(()=>(function({itemCount:a,itemProps:b,itemSize:c}){let d=new Map;return{get(e){for(i(e<a,`Invalid index ${e}`);d.size-1<e;){let a,f=d.size;switch(typeof c){case"function":a=c(f,b);break;case"number":a=c}if(0===f)d.set(f,{size:a,scrollOffset:0});else{let b=d.get(f-1);i(void 0!==b,`Unexpected bounds cache miss for index ${e}`),d.set(f,{scrollOffset:b.scrollOffset+b.size,size:a})}}let f=d.get(e);return i(void 0!==f,`Unexpected bounds cache miss for index ${e}`),f},set(a,b){d.set(a,b)},get size(){return d.size}}})({itemCount:a,itemProps:b,itemSize:d}),[a,b,d])}({itemCount:n,itemProps:o,itemSize:E}),G=(0,c.useCallback)(a=>F.get(a),[F]),H=(0,c.useCallback)(()=>k({cachedBounds:F,itemCount:n,itemSize:E}),[F,n,E]),I=(0,c.useCallback)(b=>l({cachedBounds:F,containerScrollOffset:h({containerElement:a,direction:g,isRtl:m,scrollOffset:b}),containerSize:D,itemCount:n,overscanCount:r}),[F,a,D,g,m,n,r]);return e(()=>{v(I(("vertical"===g?a?.scrollTop:a?.scrollLeft)??0))},[a,g,I]),e(()=>{if(!a)return;let b=()=>{v(b=>{let{scrollLeft:c,scrollTop:d}=a,e=l({cachedBounds:F,containerScrollOffset:h({containerElement:a,direction:g,isRtl:m,scrollOffset:"vertical"===g?d:c}),containerSize:D,itemCount:n,overscanCount:r});return j(e,b)?b:e})};return a.addEventListener("scroll",b),()=>{a.removeEventListener("scroll",b)}},[F,a,D,g,n,r]),{getCellBounds:G,getEstimatedSize:H,scrollToIndex:(s=({align:b="auto",containerScrollOffset:c,index:d})=>{let e=function({align:a,cachedBounds:b,index:c,itemCount:d,itemSize:e,containerScrollOffset:f,containerSize:g}){if(c<0||c>=d)throw RangeError(`Invalid index specified: ${c}`,{cause:`Index ${c} is not within the range of 0 - ${d-1}`});let h=k({cachedBounds:b,itemCount:d,itemSize:e}),i=b.get(c),j=Math.max(0,Math.min(h-g,i.scrollOffset)),l=Math.max(0,i.scrollOffset-g+i.size);switch("smart"===a&&(a=f>=l&&f<=j?"auto":"center"),a){case"start":return j;case"end":return l;case"center":return i.scrollOffset<=g/2?0:i.scrollOffset+i.size/2>=h-g/2?h-g:i.scrollOffset+i.size/2-g/2;default:return f>=l&&f<=j?f:f<l?l:j}}({align:b,cachedBounds:F,containerScrollOffset:c,containerSize:D,index:d,itemCount:n,itemSize:E});if(a){if(e=h({containerElement:a,direction:g,isRtl:m,scrollOffset:e}),"function"!=typeof a.scrollTo){let a=I(e);j(u,a)||v(a)}return e}},t=(0,c.useRef)(()=>{throw Error("Cannot call during render.")}),e(()=>{t.current=s},[s]),(0,c.useCallback)(a=>t.current?.(a),[t])),startIndexOverscan:x,startIndexVisible:w,stopIndexOverscan:z,stopIndexVisible:y}}({containerElement:A,containerStyle:w,defaultContainerSize:g,direction:"vertical",itemCount:s,itemProps:y,itemSize:(0,c.useMemo)(()=>C?a=>t.getRowHeight(a)??t.getAverageRowHeight():t,[C,t]),onResize:o,overscanCount:q});(0,c.useImperativeHandle)(n,()=>({get element(){return A},scrollToRow({align:a="auto",behavior:b="auto",index:c}){let d=F({align:a,containerScrollOffset:A?.scrollTop??0,index:c});"function"==typeof A?.scrollTo&&A.scrollTo({behavior:b,top:d})}}),[A,F]),e(()=>{if(!A)return;let a=Array.from(A.children).filter((a,b)=>{if(a.hasAttribute("aria-hidden"))return!1;let c=`${G+b}`;return a.setAttribute("data-react-window-index",c),!0});if(C)return t.observeRowElements(a)},[A,C,t,G,I]),(0,c.useEffect)(()=>{G>=0&&I>=0&&p&&p({startIndex:H,stopIndex:J},{startIndex:G,stopIndex:I})},[p,G,H,I,J]);let K=(0,c.useMemo)(()=>{let a=[];if(s>0)for(let b=G;b<=I;b++){let d=D(b);a.push((0,c.createElement)(z,{...y,ariaAttributes:{"aria-posinset":b+1,"aria-setsize":s,role:"listitem"},key:b,index:b,style:{position:"absolute",left:0,transform:`translateY(${d.scrollOffset}px)`,height:C?void 0:d.size,width:"100%"}}))}return a},[z,D,C,s,y,G,I]),L=(0,b.jsx)("div",{"aria-hidden":!0,style:{height:E(),width:"100%",zIndex:-1}});return(0,c.createElement)(v,{role:"list",...x,className:d,ref:B,style:{position:"relative",maxHeight:"100%",flexGrow:1,overflowY:"auto",...w}},K,a,L)}c.useState,c.useRef,c.useState,c.useRef;var o=a.i(793090),p=a.i(629620),q=a.i(141270),r=a.i(914174);let s=(0,a.i(863535).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 t=a.i(406334),u=a.i(227725),v=a.i(882479),w=a.i(96151),x=a.i(915929),y=a.i(687052),z=a.i(322570),A=a.i(890075);let B={specs:[],signature:null,scrollTop:0,activeSpecId:null},C=[],D=new Set,E=new Set,F=new Set;function G(){for(let a of D)a()}function H(a){return D.add(a),()=>{D.delete(a)}}function I(){return B}function J(){return(0,c.useSyncExternalStore)(H,I,()=>B)}function K(){let a=c.useCallback(a=>(E.add(a),()=>{E.delete(a)}),[]);return(0,c.useSyncExternalStore)(a,()=>I().specs,()=>C)}function L(){let a=c.useCallback(a=>(F.add(a),()=>{F.delete(a)}),[]);return(0,c.useSyncExternalStore)(a,()=>I().activeSpecId,()=>null)}function M(a){if(0===a.length)return;let b=a.map(a=>[a.id,a.specNumber??"",a.title??"",a.status??"",a.priority??"",a.updatedAt?new Date(a.updatedAt).getTime():0].join(":")).join("|");if(b!==B.signature)for(let c of(B={...B,specs:a,signature:b},G(),E))c()}function N(a){if(B.activeSpecId!==a)for(let b of(B={...B,activeSpecId:a},G(),F))b()}a.s(["primeSpecsSidebar",()=>M,"setActiveSidebarSpec",()=>N,"useSpecsSidebarActiveSpec",()=>L,"useSpecsSidebarSpecs",()=>K,"useSpecsSidebarState",()=>J],90555);let O=c.useEffect;function P({initialSpecs:a=[],currentSpecId:e,currentSubSpec:f,onSpecHover:g,className:h}){let[i,j]=c.useState(""),[k,l]=c.useState("all"),[m,B]=c.useState("all"),[C,D]=c.useState("all"),[E,F]=c.useState(!1),[G,H]=c.useState(()=>!1),[I,J]=c.useState(!1),[M,N]=c.useState(!1),P=c.useRef(null);c.useRef(null),c.useRef(!1);let Q=c.useRef(null);c.useRef(0),c.useRef(!1),c.useRef(!0);let R=K(),S=L(),T=c.useMemo(()=>R.length>0?R:a,[R,a]),U=e||S||"";c.useEffect(()=>{N(!0)},[]),c.useEffect(()=>{document.documentElement.style.setProperty("--specs-nav-sidebar-width",G?"0px":"280px"),localStorage.setItem("specs-nav-sidebar-collapsed",String(G))},[G]),c.useEffect(()=>{J(!1)},[U,f]);let V=c.useMemo(()=>{let a=T;if(i){let b=i.toLowerCase();a=a.filter(a=>a.title?.toLowerCase().includes(b)||a.specName.toLowerCase().includes(b)||a.specNumber?.toString().includes(b))}return"all"!==k&&(a=a.filter(a=>a.status===k)),"all"!==m&&(a=a.filter(a=>a.priority===m)),"all"!==C&&(a=a.filter(a=>a.tags?.includes(C))),console.debug(a),a},[T,i,k,m,C]),W=c.useMemo(()=>{let a=new Set;return T.forEach(b=>{b.tags?.forEach(b=>a.add(b))}),Array.from(a).sort()},[T]),X="all"!==k||"all"!==m||"all"!==C,Y=c.useMemo(()=>[...V].sort((a,b)=>(b.specNumber||0)-(a.specNumber||0)),[V]);O(()=>{},[]),O(()=>{},[Y,U]),c.useEffect(()=>{},[]);let Z=c.useCallback(a=>{let{index:c,style:e}=a,h=Y[c],i=h.id===U,j=(h.contentMd?(0,y.extractH1Title)(h.contentMd):null)||h.title||h.specName;return(0,b.jsx)("div",{style:e,className:"px-1",children:(0,b.jsx)("div",{className:"mb-0.5",children:(0,b.jsx)("div",{className:"flex items-center gap-0.5",children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)(d.default,{ref:i&&!f?P:null,href:`/specs/${h.specNumber||h.id}`,onMouseEnter:()=>g?.(h.specNumber?.toString()||h.id),className:(0,y.cn)("w-full flex flex-col gap-1 p-1.5 rounded-md text-sm transition-colors",i?"bg-accent text-accent-foreground font-medium":"hover:bg-accent/50"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[h.specNumber&&(0,b.jsxs)("span",{className:"text-xs font-mono text-muted-foreground shrink-0",children:["#",h.specNumber.toString().padStart(3,"0")]}),(0,b.jsx)("span",{className:"truncate text-xs leading-relaxed",children:j})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[h.status&&(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(v.StatusBadge,{status:h.status,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,b.jsx)(w.TooltipContent,{side:"right",children:(0,v.getStatusLabel)(h.status)})]}),h.priority&&(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(z.PriorityBadge,{priority:h.priority,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,b.jsx)(w.TooltipContent,{side:"right",children:(0,z.getPriorityLabel)(h.priority)})]}),"number"==typeof h.subSpecsCount&&h.subSpecsCount>0&&(0,b.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["+",h.subSpecsCount," files"]}),h.updatedAt&&(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:(0,A.formatRelativeTime)(h.updatedAt)})]})]})}),(0,b.jsx)(w.TooltipContent,{side:"right",className:"max-w-[300px]",children:(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("div",{className:"font-semibold",children:j}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:h.specName})]})})]})})})})},[Y,U,f,g]),$=c.useMemo(()=>600,[]),_=c.useMemo(()=>c.memo(n),[]);return(0,b.jsxs)(w.TooltipProvider,{delayDuration:700,children:[I&&(0,b.jsx)("div",{className:"fixed inset-0 bg-black/50 z-40 lg:hidden",onClick:()=>J(!1)}),(0,b.jsxs)("div",{className:(0,y.cn)("relative flex-shrink-0",h),children:[(0,b.jsxs)("aside",{className:(0,y.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)]",M&&G?"lg:w-0 lg:border-r-0":"lg:w-[280px]",I&&"fixed inset-y-0 left-0 z-[60] flex w-[280px]"),children:[(0,b.jsxs)("div",{className:"p-4 border-b border-border",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsx)("h2",{className:"font-semibold text-sm",children:"Specifications"}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(u.Button,{variant:E||X?"default":"ghost",size:"sm",onClick:()=>F(!E),className:"h-6 w-6 p-0",children:(0,b.jsx)(s,{className:"h-4 w-4"})})}),(0,b.jsx)(w.TooltipContent,{side:"bottom",children:E?"Hide filters":"Show filters"})]}),(0,b.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>J(!1),className:"h-6 w-6 p-0 lg:hidden",children:(0,b.jsx)(r.X,{className:"h-4 w-4"})}),(0,b.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>H(!0),className:"h-6 w-6 p-0 hidden lg:flex lg:items-center lg:justify-center",children:(0,b.jsx)(p.ChevronLeft,{className:"h-4 w-4"})})]})]}),E&&(0,b.jsxs)("div",{className:"space-y-2 mb-3 pb-3 border-b border-border",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:"Filters"}),X&&(0,b.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>{l("all"),B("all"),D("all")},className:"h-5 text-xs px-2 py-0",children:"Clear"})]}),(0,b.jsxs)(x.Select,{value:k,onValueChange:l,children:[(0,b.jsx)(x.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(x.SelectValue,{placeholder:"Status"})}),(0,b.jsxs)(x.SelectContent,{children:[(0,b.jsx)(x.SelectItem,{value:"all",children:"All Status"}),(0,b.jsx)(x.SelectItem,{value:"planned",children:"Planned"}),(0,b.jsx)(x.SelectItem,{value:"in-progress",children:"In Progress"}),(0,b.jsx)(x.SelectItem,{value:"complete",children:"Complete"}),(0,b.jsx)(x.SelectItem,{value:"archived",children:"Archived"})]})]}),(0,b.jsxs)(x.Select,{value:m,onValueChange:B,children:[(0,b.jsx)(x.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(x.SelectValue,{placeholder:"Priority"})}),(0,b.jsxs)(x.SelectContent,{children:[(0,b.jsx)(x.SelectItem,{value:"all",children:"All Priority"}),(0,b.jsx)(x.SelectItem,{value:"low",children:"Low"}),(0,b.jsx)(x.SelectItem,{value:"medium",children:"Medium"}),(0,b.jsx)(x.SelectItem,{value:"high",children:"High"}),(0,b.jsx)(x.SelectItem,{value:"critical",children:"Critical"})]})]}),W.length>0&&(0,b.jsxs)(x.Select,{value:C,onValueChange:D,children:[(0,b.jsx)(x.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(x.SelectValue,{placeholder:"Tag"})}),(0,b.jsxs)(x.SelectContent,{children:[(0,b.jsx)(x.SelectItem,{value:"all",children:"All Tags"}),W.map(a=>(0,b.jsx)(x.SelectItem,{value:a,children:a},a))]})]})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(o.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,b.jsx)(t.Input,{placeholder:"Search specs...",value:i,onChange:a=>j(a.target.value),className:"pl-8 h-9 border-border"})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:0===Y.length?(0,b.jsx)("div",{className:"text-center py-8 text-sm text-muted-foreground",children:"No specs found"}):(0,b.jsx)(_,{listRef:Q,defaultHeight:$,rowCount:Y.length,rowHeight:72,overscanCount:5,rowComponent:Z,rowProps:{}})})]}),M&&G&&(0,b.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>H(!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,b.jsx)(q.ChevronRight,{className:"h-4 w-4"})})]})]})}function Q({className:a,...c}){return(0,b.jsx)("div",{className:(0,y.cn)("animate-pulse rounded-md bg-muted",a),...c})}a.s(["SpecsNavSidebar",()=>P],558285),a.s(["Skeleton",()=>Q],631868)}];
1
+ module.exports=[558285,90555,a=>{"use strict";var b=a.i(40352),c=a.i(936883),d=a.i(920378);let e=c.useEffect;function f(a){if(void 0!==a)switch(typeof a){case"number":return a;case"string":if(a.endsWith("px"))return parseFloat(a)}}let g=null;function h({containerElement:a,direction:b,isRtl:c,scrollOffset:d}){if("horizontal"===b&&c)switch(function(a=!1){if(null===g||a){let a=document.createElement("div"),b=a.style;b.width="50px",b.height="50px",b.overflow="scroll",b.direction="rtl";let c=document.createElement("div"),d=c.style;return d.width="100px",d.height="100px",a.appendChild(c),document.body.appendChild(a),a.scrollLeft>0?g="positive-descending":(a.scrollLeft=1,g=0===a.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(a),g}return g}()){case"negative":return-d;case"positive-descending":if(a){let{clientWidth:b,scrollLeft:c,scrollWidth:d}=a;return d-b-c}}return d}function i(a,b="Assertion error"){if(!a)throw console.error(b),Error(b)}function j(a,b){if(a===b)return!0;if(!!a!=!!b||(i(void 0!==a),i(void 0!==b),Object.keys(a).length!==Object.keys(b).length))return!1;for(let c in a)if(!Object.is(b[c],a[c]))return!1;return!0}function k({cachedBounds:a,itemCount:b,itemSize:c}){if(0===b)return 0;if("number"==typeof c)return b*c;{let c=a.get(0===a.size?0:a.size-1);return i(void 0!==c,"Unexpected bounds cache miss"),b*((c.scrollOffset+c.size)/a.size)}}function l({cachedBounds:a,containerScrollOffset:b,containerSize:c,itemCount:d,overscanCount:e}){let f=d-1,g=0,h=-1,i=0,j=-1,k=0;for(;k<f;){let c=a.get(k);if(c.scrollOffset+c.size>b)break;k++}for(i=Math.max(0,(g=k)-e);k<f;){let d=a.get(k);if(d.scrollOffset+d.size>=b+c)break;k++}return j=Math.min(d-1,(h=Math.min(f,k))+e),g<0&&(g=0,h=-1,i=0,j=-1),{startIndexVisible:g,stopIndexVisible:h,startIndexOverscan:i,stopIndexOverscan:j}}function m(a,b){let{ariaAttributes:c,style:d,...e}=a,{ariaAttributes:f,style:g,...h}=b;return j(c,f)&&j(d,g)&&j(e,h)}function n({children:a,className:d,defaultHeight:g=0,listRef:n,onResize:o,onRowsRendered:p,overscanCount:q=3,rowComponent:r,rowCount:s,rowHeight:t,rowProps:u,tagName:v="div",style:w,...x}){let y=(0,c.useMemo)(()=>u,Object.values(u)),z=(0,c.useMemo)(()=>(0,c.memo)(r,m),[r]),[A,B]=(0,c.useState)(null),C=null!=t&&"object"==typeof t&&"getAverageRowHeight"in t&&"function"==typeof t.getAverageRowHeight,{getCellBounds:D,getEstimatedSize:E,scrollToIndex:F,startIndexOverscan:G,startIndexVisible:H,stopIndexOverscan:I,stopIndexVisible:J}=function({containerElement:a,containerStyle:b,defaultContainerSize:d=0,direction:g,isRtl:m=!1,itemCount:n,itemProps:o,itemSize:p,onResize:q,overscanCount:r}){var s;let t,[u,v]=(0,c.useState)({startIndexVisible:0,startIndexOverscan:0,stopIndexVisible:-1,stopIndexOverscan:-1}),{startIndexVisible:w,startIndexOverscan:x,stopIndexVisible:y,stopIndexOverscan:z}={startIndexVisible:Math.min(n-1,u.startIndexVisible),startIndexOverscan:Math.min(n-1,u.startIndexOverscan),stopIndexVisible:Math.min(n-1,u.stopIndexVisible),stopIndexOverscan:Math.min(n-1,u.stopIndexOverscan)},{height:A=d,width:B=d}=function({box:a,defaultHeight:b,defaultWidth:d,disabled:g,element:h,mode:i,style:j}){let{styleHeight:k,styleWidth:l}=(0,c.useMemo)(()=>({styleHeight:f(j?.height),styleWidth:f(j?.width)}),[j?.height,j?.width]),[m,n]=(0,c.useState)({height:b,width:d}),o=g||"only-height"===i&&void 0!==k||"only-width"===i&&void 0!==l||void 0!==k&&void 0!==l;return e(()=>{if(null===h||o)return;let b=new ResizeObserver(a=>{for(let b of a){let{contentRect:a,target:c}=b;h===c&&n(b=>b.height===a.height&&b.width===a.width?b:{height:a.height,width:a.width})}});return b.observe(h,{box:a}),()=>{b?.unobserve(h)}},[a,o,h,k,l]),(0,c.useMemo)(()=>({height:k??m.height,width:l??m.width}),[m,k,l])}({defaultHeight:"vertical"===g?d:void 0,defaultWidth:"horizontal"===g?d:void 0,element:a,mode:"vertical"===g?"only-height":"only-width",style:b}),C=(0,c.useRef)({height:0,width:0}),D="vertical"===g?A:B,E=function({containerSize:a,itemSize:b}){let c;return"string"==typeof b?(i(b.endsWith("%"),`Invalid item size: "${b}"; string values must be percentages (e.g. "100%")`),i(void 0!==a,"Container size must be defined if a percentage item size is specified"),c=a*parseInt(b)/100):c=b,c}({containerSize:D,itemSize:p});(0,c.useLayoutEffect)(()=>{if("function"==typeof q){let a=C.current;(a.height!==A||a.width!==B)&&(q({height:A,width:B},{...a}),a.height=A,a.width=B)}},[A,q,B]);let F=function({itemCount:a,itemProps:b,itemSize:d}){return(0,c.useMemo)(()=>(function({itemCount:a,itemProps:b,itemSize:c}){let d=new Map;return{get(e){for(i(e<a,`Invalid index ${e}`);d.size-1<e;){let a,f=d.size;switch(typeof c){case"function":a=c(f,b);break;case"number":a=c}if(0===f)d.set(f,{size:a,scrollOffset:0});else{let b=d.get(f-1);i(void 0!==b,`Unexpected bounds cache miss for index ${e}`),d.set(f,{scrollOffset:b.scrollOffset+b.size,size:a})}}let f=d.get(e);return i(void 0!==f,`Unexpected bounds cache miss for index ${e}`),f},set(a,b){d.set(a,b)},get size(){return d.size}}})({itemCount:a,itemProps:b,itemSize:d}),[a,b,d])}({itemCount:n,itemProps:o,itemSize:E}),G=(0,c.useCallback)(a=>F.get(a),[F]),H=(0,c.useCallback)(()=>k({cachedBounds:F,itemCount:n,itemSize:E}),[F,n,E]),I=(0,c.useCallback)(b=>l({cachedBounds:F,containerScrollOffset:h({containerElement:a,direction:g,isRtl:m,scrollOffset:b}),containerSize:D,itemCount:n,overscanCount:r}),[F,a,D,g,m,n,r]);return e(()=>{v(I(("vertical"===g?a?.scrollTop:a?.scrollLeft)??0))},[a,g,I]),e(()=>{if(!a)return;let b=()=>{v(b=>{let{scrollLeft:c,scrollTop:d}=a,e=l({cachedBounds:F,containerScrollOffset:h({containerElement:a,direction:g,isRtl:m,scrollOffset:"vertical"===g?d:c}),containerSize:D,itemCount:n,overscanCount:r});return j(e,b)?b:e})};return a.addEventListener("scroll",b),()=>{a.removeEventListener("scroll",b)}},[F,a,D,g,n,r]),{getCellBounds:G,getEstimatedSize:H,scrollToIndex:(s=({align:b="auto",containerScrollOffset:c,index:d})=>{let e=function({align:a,cachedBounds:b,index:c,itemCount:d,itemSize:e,containerScrollOffset:f,containerSize:g}){if(c<0||c>=d)throw RangeError(`Invalid index specified: ${c}`,{cause:`Index ${c} is not within the range of 0 - ${d-1}`});let h=k({cachedBounds:b,itemCount:d,itemSize:e}),i=b.get(c),j=Math.max(0,Math.min(h-g,i.scrollOffset)),l=Math.max(0,i.scrollOffset-g+i.size);switch("smart"===a&&(a=f>=l&&f<=j?"auto":"center"),a){case"start":return j;case"end":return l;case"center":return i.scrollOffset<=g/2?0:i.scrollOffset+i.size/2>=h-g/2?h-g:i.scrollOffset+i.size/2-g/2;default:return f>=l&&f<=j?f:f<l?l:j}}({align:b,cachedBounds:F,containerScrollOffset:c,containerSize:D,index:d,itemCount:n,itemSize:E});if(a){if(e=h({containerElement:a,direction:g,isRtl:m,scrollOffset:e}),"function"!=typeof a.scrollTo){let a=I(e);j(u,a)||v(a)}return e}},t=(0,c.useRef)(()=>{throw Error("Cannot call during render.")}),e(()=>{t.current=s},[s]),(0,c.useCallback)(a=>t.current?.(a),[t])),startIndexOverscan:x,startIndexVisible:w,stopIndexOverscan:z,stopIndexVisible:y}}({containerElement:A,containerStyle:w,defaultContainerSize:g,direction:"vertical",itemCount:s,itemProps:y,itemSize:(0,c.useMemo)(()=>C?a=>t.getRowHeight(a)??t.getAverageRowHeight():t,[C,t]),onResize:o,overscanCount:q});(0,c.useImperativeHandle)(n,()=>({get element(){return A},scrollToRow({align:a="auto",behavior:b="auto",index:c}){let d=F({align:a,containerScrollOffset:A?.scrollTop??0,index:c});"function"==typeof A?.scrollTo&&A.scrollTo({behavior:b,top:d})}}),[A,F]),e(()=>{if(!A)return;let a=Array.from(A.children).filter((a,b)=>{if(a.hasAttribute("aria-hidden"))return!1;let c=`${G+b}`;return a.setAttribute("data-react-window-index",c),!0});if(C)return t.observeRowElements(a)},[A,C,t,G,I]),(0,c.useEffect)(()=>{G>=0&&I>=0&&p&&p({startIndex:H,stopIndex:J},{startIndex:G,stopIndex:I})},[p,G,H,I,J]);let K=(0,c.useMemo)(()=>{let a=[];if(s>0)for(let b=G;b<=I;b++){let d=D(b);a.push((0,c.createElement)(z,{...y,ariaAttributes:{"aria-posinset":b+1,"aria-setsize":s,role:"listitem"},key:b,index:b,style:{position:"absolute",left:0,transform:`translateY(${d.scrollOffset}px)`,height:C?void 0:d.size,width:"100%"}}))}return a},[z,D,C,s,y,G,I]),L=(0,b.jsx)("div",{"aria-hidden":!0,style:{height:E(),width:"100%",zIndex:-1}});return(0,c.createElement)(v,{role:"list",...x,className:d,ref:B,style:{position:"relative",maxHeight:"100%",flexGrow:1,overflowY:"auto",...w}},K,a,L)}c.useState,c.useRef,c.useState,c.useRef;var o=a.i(793090),p=a.i(629620),q=a.i(141270),r=a.i(914174);let s=(0,a.i(863535).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 t=a.i(406334),u=a.i(227725),v=a.i(882479),w=a.i(96151),x=a.i(915929),y=a.i(687052),z=a.i(322570),A=a.i(890075);let B={specs:[],signature:null,scrollTop:0,activeSpecId:null},C=[],D=new Set,E=new Set,F=new Set;function G(){for(let a of D)a()}function H(a){return D.add(a),()=>{D.delete(a)}}function I(){return B}function J(){return(0,c.useSyncExternalStore)(H,I,()=>B)}function K(){let a=c.useCallback(a=>(E.add(a),()=>{E.delete(a)}),[]);return(0,c.useSyncExternalStore)(a,()=>I().specs,()=>C)}function L(){let a=c.useCallback(a=>(F.add(a),()=>{F.delete(a)}),[]);return(0,c.useSyncExternalStore)(a,()=>I().activeSpecId,()=>null)}function M(a){if(0===a.length)return;let b=a.map(a=>[a.id,a.specNumber??"",a.title??"",a.status??"",a.priority??"",a.updatedAt?new Date(a.updatedAt).getTime():0].join(":")).join("|");if(b!==B.signature)for(let c of(B={...B,specs:a,signature:b},G(),E))c()}function N(a){if(B.activeSpecId!==a)for(let b of(B={...B,activeSpecId:a},G(),F))b()}a.s(["primeSpecsSidebar",()=>M,"setActiveSidebarSpec",()=>N,"useSpecsSidebarActiveSpec",()=>L,"useSpecsSidebarSpecs",()=>K,"useSpecsSidebarState",()=>J],90555);var O=a.i(72245);let P=c.useEffect;function Q({initialSpecs:a=[],currentSpecId:e,currentSubSpec:f,onSpecHover:g,className:h}){let[i,j]=c.useState(""),[k,l]=c.useState("all"),[m,B]=c.useState("all"),[C,D]=c.useState("all"),[E,F]=c.useState(!1),[G,H]=c.useState(()=>!1),[I,J]=c.useState(!1),[M,N]=c.useState(!1),Q=c.useRef(null);c.useRef(null),c.useRef(!1);let R=c.useRef(null);c.useRef(0),c.useRef(!1),c.useRef(!0);let S=K(),T=L(),U=c.useMemo(()=>S.length>0?S:a,[S,a]),V=e||T||"";c.useEffect(()=>{N(!0)},[]),c.useEffect(()=>{document.documentElement.style.setProperty("--specs-nav-sidebar-width",G?"0px":"280px"),localStorage.setItem("specs-nav-sidebar-collapsed",String(G))},[G]),c.useEffect(()=>{J(!1)},[V,f]);let W=c.useMemo(()=>{let a=U;if(i){let b=i.toLowerCase();a=a.filter(a=>a.title?.toLowerCase().includes(b)||a.specName.toLowerCase().includes(b)||a.specNumber?.toString().includes(b))}return"all"!==k&&(a=a.filter(a=>a.status===k)),"all"!==m&&(a=a.filter(a=>a.priority===m)),"all"!==C&&(a=a.filter(a=>a.tags?.includes(C))),console.debug(a),a},[U,i,k,m,C]),X=c.useMemo(()=>{let a=new Set;return U.forEach(b=>{b.tags?.forEach(b=>a.add(b))}),Array.from(a).sort()},[U]),Y="all"!==k||"all"!==m||"all"!==C,Z=c.useMemo(()=>[...W].sort((a,b)=>(b.specNumber||0)-(a.specNumber||0)),[W]);P(()=>{},[]),P(()=>{},[Z,V]),c.useEffect(()=>{},[]);let{getSpecUrl:$}=(0,O.useProjectUrl)(),_=c.useCallback(a=>{let{index:c,style:e}=a,h=Z[c],i=h.id===V,j=h.title||h.specName,k=$(h.specNumber||h.id);return(0,b.jsx)("div",{style:e,className:"px-1",children:(0,b.jsx)("div",{className:"mb-0.5",children:(0,b.jsx)("div",{className:"flex items-center gap-0.5",children:(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)(d.default,{ref:i&&!f?Q:null,href:k,onMouseEnter:()=>g?.(h.specNumber?.toString()||h.id),className:(0,y.cn)("w-full flex flex-col gap-1 p-1.5 rounded-md text-sm transition-colors",i?"bg-accent text-accent-foreground font-medium":"hover:bg-accent/50"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[h.specNumber&&(0,b.jsxs)("span",{className:"text-xs font-mono text-muted-foreground shrink-0",children:["#",h.specNumber.toString().padStart(3,"0")]}),(0,b.jsx)("span",{className:"truncate text-xs leading-relaxed",children:j})]}),(0,b.jsxs)("div",{className:"flex items-center gap-1.5 flex-wrap",children:[h.status&&(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(v.StatusBadge,{status:h.status,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,b.jsx)(w.TooltipContent,{side:"right",children:(0,v.getStatusLabel)(h.status)})]}),h.priority&&(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(z.PriorityBadge,{priority:h.priority,iconOnly:!0,className:"text-[10px] scale-90"})})}),(0,b.jsx)(w.TooltipContent,{side:"right",children:(0,z.getPriorityLabel)(h.priority)})]}),"number"==typeof h.subSpecsCount&&h.subSpecsCount>0&&(0,b.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["+",h.subSpecsCount," files"]}),h.updatedAt&&(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:(0,A.formatRelativeTime)(h.updatedAt)})]})]})}),(0,b.jsx)(w.TooltipContent,{side:"right",className:"max-w-[300px]",children:(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("div",{className:"font-semibold",children:j}),(0,b.jsx)("div",{className:"text-xs text-muted-foreground",children:h.specName})]})})]})})})})},[Z,V,f,g,$]),aa=c.useMemo(()=>600,[]),ab=c.useMemo(()=>c.memo(n),[]);return(0,b.jsxs)(w.TooltipProvider,{delayDuration:700,children:[I&&(0,b.jsx)("div",{className:"fixed inset-0 bg-black/50 z-40 lg:hidden",onClick:()=>J(!1)}),(0,b.jsxs)("div",{className:(0,y.cn)("relative flex-shrink-0",h),children:[(0,b.jsxs)("aside",{className:(0,y.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)]",M&&G?"lg:w-0 lg:border-r-0":"lg:w-[280px]",I&&"fixed inset-y-0 left-0 z-[60] flex w-[280px]"),children:[(0,b.jsxs)("div",{className:"p-4 border-b border-border",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,b.jsx)("h2",{className:"font-semibold text-sm",children:"Specifications"}),(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsxs)(w.Tooltip,{children:[(0,b.jsx)(w.TooltipTrigger,{asChild:!0,children:(0,b.jsx)(u.Button,{variant:E||Y?"default":"ghost",size:"sm",onClick:()=>F(!E),className:"h-6 w-6 p-0",children:(0,b.jsx)(s,{className:"h-4 w-4"})})}),(0,b.jsx)(w.TooltipContent,{side:"bottom",children:E?"Hide filters":"Show filters"})]}),(0,b.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>J(!1),className:"h-6 w-6 p-0 lg:hidden",children:(0,b.jsx)(r.X,{className:"h-4 w-4"})}),(0,b.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>H(!0),className:"h-6 w-6 p-0 hidden lg:flex lg:items-center lg:justify-center",children:(0,b.jsx)(p.ChevronLeft,{className:"h-4 w-4"})})]})]}),E&&(0,b.jsxs)("div",{className:"space-y-2 mb-3 pb-3 border-b border-border",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:"Filters"}),Y&&(0,b.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>{l("all"),B("all"),D("all")},className:"h-5 text-xs px-2 py-0",children:"Clear"})]}),(0,b.jsxs)(x.Select,{value:k,onValueChange:l,children:[(0,b.jsx)(x.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(x.SelectValue,{placeholder:"Status"})}),(0,b.jsxs)(x.SelectContent,{children:[(0,b.jsx)(x.SelectItem,{value:"all",children:"All Status"}),(0,b.jsx)(x.SelectItem,{value:"planned",children:"Planned"}),(0,b.jsx)(x.SelectItem,{value:"in-progress",children:"In Progress"}),(0,b.jsx)(x.SelectItem,{value:"complete",children:"Complete"}),(0,b.jsx)(x.SelectItem,{value:"archived",children:"Archived"})]})]}),(0,b.jsxs)(x.Select,{value:m,onValueChange:B,children:[(0,b.jsx)(x.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(x.SelectValue,{placeholder:"Priority"})}),(0,b.jsxs)(x.SelectContent,{children:[(0,b.jsx)(x.SelectItem,{value:"all",children:"All Priority"}),(0,b.jsx)(x.SelectItem,{value:"low",children:"Low"}),(0,b.jsx)(x.SelectItem,{value:"medium",children:"Medium"}),(0,b.jsx)(x.SelectItem,{value:"high",children:"High"}),(0,b.jsx)(x.SelectItem,{value:"critical",children:"Critical"})]})]}),X.length>0&&(0,b.jsxs)(x.Select,{value:C,onValueChange:D,children:[(0,b.jsx)(x.SelectTrigger,{className:"h-8 text-xs",children:(0,b.jsx)(x.SelectValue,{placeholder:"Tag"})}),(0,b.jsxs)(x.SelectContent,{children:[(0,b.jsx)(x.SelectItem,{value:"all",children:"All Tags"}),X.map(a=>(0,b.jsx)(x.SelectItem,{value:a,children:a},a))]})]})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)(o.Search,{className:"absolute left-2 top-2.5 h-4 w-4 text-muted-foreground"}),(0,b.jsx)(t.Input,{placeholder:"Search specs...",value:i,onChange:a=>j(a.target.value),className:"pl-8 h-9 border-border"})]})]}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:0===Z.length?(0,b.jsx)("div",{className:"text-center py-8 text-sm text-muted-foreground",children:"No specs found"}):(0,b.jsx)(ab,{listRef:R,defaultHeight:aa,rowCount:Z.length,rowHeight:72,overscanCount:5,rowComponent:_,rowProps:{}})})]}),M&&G&&(0,b.jsx)(u.Button,{variant:"ghost",size:"sm",onClick:()=>H(!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,b.jsx)(q.ChevronRight,{className:"h-4 w-4"})})]})]})}a.s(["SpecsNavSidebar",()=>Q],558285)}];
2
2
 
3
3
  //# sourceMappingURL=packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js.map
@@ -8,12 +8,12 @@ globalThis.__BUILD_MANIFEST = {
8
8
  ],
9
9
  "lowPriorityFiles": [],
10
10
  "rootMainFiles": [
11
- "static/chunks/b8353eb8c6fb895e.js",
11
+ "static/chunks/c92660d8d0c4763d.js",
12
12
  "static/chunks/f0376ba3b56dbf10.js",
13
13
  "static/chunks/1f052e076ca9a3ff.js",
14
14
  "static/chunks/0f108f65249f8820.js",
15
15
  "static/chunks/2a33b9246ea4be03.js",
16
- "static/chunks/turbopack-5fa55215af0efb15.js"
16
+ "static/chunks/turbopack-261c5dcdd873f310.js"
17
17
  ]
18
18
  };
19
19
  globalThis.__BUILD_MANIFEST.lowPriorityFiles = [