@leanspec/ui 0.2.8 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/.next/standalone/node_modules/.pnpm/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  2. package/.next/standalone/node_modules/.pnpm/{@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64 → @img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64}/package.json +7 -13
  3. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/README.md +2 -2
  4. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/glib-2.0/include/glibconfig.h +8 -9
  5. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib} +0 -0
  6. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/package.json +5 -11
  7. package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  8. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  9. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +2 -0
  10. package/.next/standalone/packages/ui/.next/build-manifest.json +4 -4
  11. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  12. package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
  13. package/.next/standalone/packages/ui/.next/routes-manifest.json +12 -0
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error/page/build-manifest.json +2 -2
  15. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  16. package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  18. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  19. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  20. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  21. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  22. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found/page/build-manifest.json +2 -2
  24. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  25. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  27. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -18
  28. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
  29. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  30. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  31. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  32. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
  33. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -1
  34. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/app-paths-manifest.json +3 -0
  35. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/build-manifest.json +11 -0
  36. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route/server-reference-manifest.json +4 -0
  37. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js +8 -0
  38. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.map +5 -0
  39. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route.js.nft.json +1 -0
  40. package/.next/standalone/packages/ui/.next/server/app/api/dependencies/route_client-reference-manifest.js +2 -0
  41. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  42. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  43. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
  44. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  45. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  46. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
  47. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
  48. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  49. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
  50. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  51. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  52. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  53. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  54. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  55. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  56. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  57. package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +2 -2
  58. package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -1
  59. package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +1 -1
  60. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/app-paths-manifest.json +3 -0
  61. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/build-manifest.json +18 -0
  62. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/next-font-manifest.json +6 -0
  63. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/react-loadable-manifest.json +1 -0
  64. package/.next/standalone/packages/ui/.next/server/app/dependencies/page/server-reference-manifest.json +4 -0
  65. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js +19 -0
  66. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.map +5 -0
  67. package/.next/standalone/packages/ui/.next/server/app/dependencies/page.js.nft.json +1 -0
  68. package/.next/standalone/packages/ui/.next/server/app/dependencies/page_client-reference-manifest.js +2 -0
  69. package/.next/standalone/packages/ui/.next/server/app/page/build-manifest.json +2 -2
  70. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  71. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/build-manifest.json +2 -2
  73. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
  74. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
  75. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/build-manifest.json +2 -2
  76. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
  77. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
  78. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/build-manifest.json +2 -2
  79. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
  80. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
  81. package/.next/standalone/packages/ui/.next/server/app/projects/page/build-manifest.json +2 -2
  82. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
  83. package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  84. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
  85. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +24 -23
  86. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +24 -23
  87. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
  88. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +2 -2
  89. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  90. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  91. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page/build-manifest.json +2 -2
  92. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  93. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  94. package/.next/standalone/packages/ui/.next/server/app/specs/page/build-manifest.json +2 -2
  95. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  96. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  97. package/.next/standalone/packages/ui/.next/server/app/stats/page/build-manifest.json +2 -2
  98. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  99. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  100. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +2 -0
  101. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +1 -1
  102. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
  103. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
  104. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +1 -1
  105. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__b0969111._.js +3 -0
  106. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
  107. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
  108. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_dependencies_route_actions_cf6b14c3.js +3 -0
  109. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +1 -1
  110. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__3c77d95b._.js +3 -0
  111. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__44b603f9._.js +3 -0
  112. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__daee3355._.js → [root-of-the-server]__8608a6fa._.js} +2 -2
  113. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__fd80e4dd._.js → [root-of-the-server]__a965a67b._.js} +2 -2
  114. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daedd80e._.js +3 -0
  115. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__dc176c61._.js +3 -0
  116. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_03aa8d19._.js +7 -0
  117. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +1 -1
  118. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_8cec504f._.js +3 -0
  119. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_22274047._.js → _adb9d7cb._.js} +2 -2
  120. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_da18b655._.js +3 -0
  121. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ea899b87._.js +3 -0
  122. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f38e75b7._.js +4 -0
  123. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_fe120f8a._.js +3 -0
  124. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_015f83ca._.js +3 -0
  125. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1120b57c._.js +3 -0
  126. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_151891de._.js +3 -0
  127. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_1c916fe3._.js +3 -0
  128. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_80605a06._.js +3 -0
  129. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_bb80de48._.js +3 -0
  130. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_e8075f9b._.js +3 -0
  131. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_f919ef4a._.js +3 -0
  132. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_dependencies_page_actions_57387d47.js +3 -0
  133. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +2 -2
  134. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_dependencies_dependencies-client_tsx_0e82443a._.js +4 -0
  135. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_spec-detail-wrapper_tsx_fd35401c._.js +3 -0
  136. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
  137. package/.next/standalone/packages/ui/.next/server/middleware-build-manifest.js +2 -2
  138. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  139. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  140. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  141. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  142. package/.next/standalone/packages/ui/.next/static/chunks/094cf9f4e3553261.js +1 -0
  143. package/.next/standalone/packages/ui/.next/static/chunks/1c015eb9eaaf9f9c.js +1 -0
  144. package/.next/standalone/packages/ui/.next/static/chunks/{f6dd06e6d22d2d12.js → 1d36660b2877d213.js} +3 -3
  145. package/.next/standalone/packages/ui/.next/static/chunks/46275d9d67603bf5.js +1 -0
  146. package/.next/standalone/packages/ui/.next/static/chunks/4d29ca0fa6843070.js +2 -0
  147. package/.next/standalone/packages/ui/.next/static/chunks/59854b15bf046467.js +1 -0
  148. package/.next/{static/chunks/dae403679aae65f4.js → standalone/packages/ui/.next/static/chunks/5fd8101e32b076b1.js} +1 -1
  149. package/.next/standalone/packages/ui/.next/static/chunks/6d938a49daa10208.js +2 -0
  150. package/.next/standalone/packages/ui/.next/static/chunks/979625373d5474b6.js +1 -0
  151. package/.next/standalone/packages/ui/.next/static/chunks/a33f10af6abef4df.js +10 -0
  152. package/.next/{static/chunks/794f3931f1ca12d2.js → standalone/packages/ui/.next/static/chunks/a3d7e1be47de010b.js} +1 -1
  153. package/.next/standalone/packages/ui/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
  154. package/.next/standalone/packages/ui/.next/static/chunks/b53250480fde6816.js +1 -0
  155. package/.next/standalone/packages/ui/.next/static/chunks/b7f19087afe1d2c9.css +1 -0
  156. package/.next/standalone/packages/ui/.next/static/chunks/c658e22a605e0ed1.js +1 -0
  157. package/.next/standalone/packages/ui/.next/static/chunks/c92660d8d0c4763d.js +1 -0
  158. package/.next/standalone/packages/ui/.next/static/chunks/ddd87cd0d26bc2f5.js +1 -0
  159. package/.next/standalone/packages/ui/.next/static/chunks/eeec245955b3b600.js +5 -0
  160. package/.next/standalone/packages/ui/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
  161. package/.next/{static/chunks/turbopack-5fa55215af0efb15.js → standalone/packages/ui/.next/static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
  162. package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +20 -0
  163. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +59 -0
  164. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +1 -0
  165. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +427 -0
  166. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +436 -0
  167. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +20 -0
  168. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +10 -0
  169. package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +18 -0
  170. package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +7 -0
  171. package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +9 -1
  172. package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +8 -0
  173. package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +1 -1
  174. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +23 -0
  175. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +19 -0
  176. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +63 -0
  177. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +51 -0
  178. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +171 -0
  179. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +36 -0
  180. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +46 -0
  181. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +19 -0
  182. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +162 -0
  183. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +43 -0
  184. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +18 -0
  185. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +364 -0
  186. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +43 -0
  187. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +531 -0
  188. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +277 -0
  189. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +70 -0
  190. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +87 -0
  191. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +27 -0
  192. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +18 -0
  193. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +5 -0
  194. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +43 -0
  195. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +18 -0
  196. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +425 -0
  197. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +18 -0
  198. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +283 -0
  199. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +46 -0
  200. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +52 -0
  201. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +175 -0
  202. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +96 -0
  203. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +95 -0
  204. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +210 -0
  205. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +53 -0
  206. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +180 -0
  207. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +119 -0
  208. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +369 -0
  209. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +372 -0
  210. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +42 -0
  211. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +70 -0
  212. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-metadata.tsx +136 -0
  213. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +127 -0
  214. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +186 -0
  215. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +561 -0
  216. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +53 -0
  217. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +143 -0
  218. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +130 -0
  219. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +11 -0
  220. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +37 -0
  221. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +50 -0
  222. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +36 -0
  223. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +110 -0
  224. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +57 -0
  225. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +76 -0
  226. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +153 -0
  227. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +122 -0
  228. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +24 -0
  229. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +159 -0
  230. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +31 -0
  231. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +15 -0
  232. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +55 -0
  233. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +30 -0
  234. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +32 -0
  235. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +76 -0
  236. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +42 -0
  237. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +18 -0
  238. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +114 -0
  239. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +123 -0
  240. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +156 -0
  241. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +216 -0
  242. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +105 -0
  243. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +120 -0
  244. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +94 -0
  245. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +249 -0
  246. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +55 -0
  247. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +152 -0
  248. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +171 -0
  249. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +17 -0
  250. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +18 -0
  251. package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +58 -0
  252. package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +34 -0
  253. package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +1 -0
  254. package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +14 -0
  255. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +7 -3
  256. package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +5 -3
  257. package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +2 -1
  258. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +8 -3
  259. package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +73 -259
  260. package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +5 -3
  261. package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +5 -3
  262. package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +5 -3
  263. package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +33 -23
  264. package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +7 -3
  265. package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +25 -14
  266. package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +332 -0
  267. package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +339 -0
  268. package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +399 -0
  269. package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +525 -0
  270. package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +387 -0
  271. package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +613 -0
  272. package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +266 -0
  273. package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +100 -0
  274. package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +172 -0
  275. package/.next/standalone/packages/ui/package.json +3 -1
  276. package/.next/standalone/packages/ui/server.js +1 -1
  277. package/.next/standalone/packages/ui/src/app/api/dependencies/route.ts +81 -0
  278. package/.next/standalone/packages/ui/src/app/context/context-client.tsx +23 -1
  279. package/.next/standalone/packages/ui/src/app/dependencies/constants.ts +24 -0
  280. package/.next/standalone/packages/ui/src/app/dependencies/dependencies-client.tsx +625 -0
  281. package/.next/standalone/packages/ui/src/app/dependencies/index.ts +19 -0
  282. package/.next/standalone/packages/ui/src/app/dependencies/page.tsx +38 -0
  283. package/.next/standalone/packages/ui/src/app/dependencies/spec-node.tsx +80 -0
  284. package/.next/standalone/packages/ui/src/app/dependencies/spec-sidebar.tsx +198 -0
  285. package/.next/standalone/packages/ui/src/app/dependencies/types.ts +37 -0
  286. package/.next/standalone/packages/ui/src/app/dependencies/utils.ts +194 -0
  287. package/.next/standalone/packages/ui/src/components/context-file-detail.tsx +308 -0
  288. package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +96 -2
  289. package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
  290. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  291. package/.next/static/chunks/094cf9f4e3553261.js +1 -0
  292. package/.next/static/chunks/1c015eb9eaaf9f9c.js +1 -0
  293. package/.next/static/chunks/{f6dd06e6d22d2d12.js → 1d36660b2877d213.js} +3 -3
  294. package/.next/static/chunks/46275d9d67603bf5.js +1 -0
  295. package/.next/static/chunks/4d29ca0fa6843070.js +2 -0
  296. package/.next/static/chunks/59854b15bf046467.js +1 -0
  297. package/.next/{standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js → static/chunks/5fd8101e32b076b1.js} +1 -1
  298. package/.next/static/chunks/6d938a49daa10208.js +2 -0
  299. package/.next/static/chunks/979625373d5474b6.js +1 -0
  300. package/.next/static/chunks/a33f10af6abef4df.js +10 -0
  301. package/.next/{standalone/packages/ui/.next/static/chunks/794f3931f1ca12d2.js → static/chunks/a3d7e1be47de010b.js} +1 -1
  302. package/.next/static/chunks/a5e25b9fa6b88eee.js +1 -0
  303. package/.next/static/chunks/b53250480fde6816.js +1 -0
  304. package/.next/static/chunks/b7f19087afe1d2c9.css +1 -0
  305. package/.next/static/chunks/c658e22a605e0ed1.js +1 -0
  306. package/.next/static/chunks/c92660d8d0c4763d.js +1 -0
  307. package/.next/static/chunks/ddd87cd0d26bc2f5.js +1 -0
  308. package/.next/static/chunks/eeec245955b3b600.js +5 -0
  309. package/.next/static/chunks/ff11efb770d5a0bc.js +1 -0
  310. package/.next/{standalone/packages/ui/.next/static/chunks/turbopack-5fa55215af0efb15.js → static/chunks/turbopack-261c5dcdd873f310.js} +1 -1
  311. package/package.json +4 -2
  312. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +0 -46
  313. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +0 -221
  314. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +0 -1
  315. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  316. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +0 -42
  317. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +0 -30
  318. package/.next/standalone/node_modules/.pnpm/@img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  319. package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  320. package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/package.json +0 -46
  321. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +0 -7
  322. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +0 -7
  323. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +0 -3
  324. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +0 -3
  325. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +0 -3
  326. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +0 -3
  327. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ac867463._.js +0 -3
  328. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b397e94a._.js +0 -3
  329. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +0 -3
  330. package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +0 -1
  331. package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
  332. package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +0 -1
  333. package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +0 -5
  334. package/.next/standalone/packages/ui/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
  335. package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +0 -1
  336. package/.next/standalone/packages/ui/.next/static/chunks/d7420d2a867e57b5.js +0 -1
  337. package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +0 -1
  338. package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +0 -10
  339. package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
  340. package/.next/standalone/packages/ui/dist/BUILD_ID +0 -1
  341. package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +0 -1
  342. package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +0 -1
  343. package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +0 -1
  344. package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +0 -1
  345. package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +0 -1
  346. package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +0 -3
  347. package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +0 -1
  348. package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +0 -1
  349. package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +0 -1
  350. package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +0 -1
  351. package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +0 -1
  352. package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +0 -1
  353. package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +0 -1
  354. package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +0 -1
  355. package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +0 -1
  356. package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +0 -1
  357. package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +0 -1
  358. package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +0 -1
  359. package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +0 -5
  360. package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +0 -1
  361. package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +0 -1
  362. package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +0 -4
  363. package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +0 -2
  364. package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +0 -19
  365. package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +0 -3
  366. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +0 -11
  367. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +0 -1
  368. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +0 -1
  369. package/.next/static/chunks/1eb8283995f370c6.js +0 -1
  370. package/.next/static/chunks/336e8e8fc6b0fba8.js +0 -1
  371. package/.next/static/chunks/37a1236ed50645a6.js +0 -1
  372. package/.next/static/chunks/9d84ba08a41145ec.js +0 -5
  373. package/.next/static/chunks/b8353eb8c6fb895e.js +0 -1
  374. package/.next/static/chunks/c4b1faff3361a749.js +0 -1
  375. package/.next/static/chunks/d7420d2a867e57b5.js +0 -1
  376. package/.next/static/chunks/efded9da04c960d8.js +0 -1
  377. package/.next/static/chunks/f382932f1a5d6359.js +0 -10
  378. package/.next/static/chunks/f43b6e43b4da1a32.css +0 -1
  379. /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/lib/index.js +0 -0
  380. /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64 → @img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64}/versions.json +0 -0
  381. /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → 8PwFWS-09QjFSbDbfp15t}/_buildManifest.js +0 -0
  382. /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → 8PwFWS-09QjFSbDbfp15t}/_clientMiddlewareManifest.json +0 -0
  383. /package/.next/standalone/packages/ui/.next/static/{-Mn9iD4O5f_khGd1P3kmB → 8PwFWS-09QjFSbDbfp15t}/_ssgManifest.js +0 -0
  384. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -0
  385. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/favicon.ico +0 -0
  386. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/file.svg +0 -0
  387. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/github-mark-white.svg +0 -0
  388. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/github-mark.svg +0 -0
  389. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/globe.svg +0 -0
  390. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/icon.svg +0 -0
  391. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/logo-dark-bg.svg +0 -0
  392. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/logo-with-bg.svg +0 -0
  393. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/logo.svg +0 -0
  394. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/next.svg +0 -0
  395. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/vercel.svg +0 -0
  396. /package/.next/standalone/packages/ui/dist/{public → standalone/packages/web/public}/window.svg +0 -0
  397. /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/8PwFWS-09QjFSbDbfp15t}/_buildManifest.js +0 -0
  398. /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/8PwFWS-09QjFSbDbfp15t}/_clientMiddlewareManifest.json +0 -0
  399. /package/.next/{standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT → static/8PwFWS-09QjFSbDbfp15t}/_ssgManifest.js +0 -0
@@ -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,...e}){if(!a)return(0,c.jsx)("a",{...e,children:b});let f=function(a,b){if(a.startsWith("#")||a.startsWith("http://")||a.startsWith("https://"))return a;let c=a.match(/^\.\/([^/]+\.md)$/);if(c&&b){let a=c[1];return"README.md"!==a?`/specs/${b}?subspec=${a}`:`/specs/${b}`}let d=a.match(/^\.\.\/(\d+)-[^/]+\/?([^/]+\.md)?$/);if(d){let a=parseInt(d[1],10),b=d[2];return b&&"README.md"!==b?`/specs/${a}?subspec=${b}`:`/specs/${a}`}return a}(a,d),g=f.startsWith("http://")||f.startsWith("https://"),h=f.startsWith("#");return g||h?(0,c.jsx)("a",{href:f,...e,target:g?"_blank":void 0,rel:g?"noopener noreferrer":void 0,children:b}):(0,c.jsx)(an.default,{href:f,...e,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="#38bdf8",ay="#ef4444",az={current:"border-primary/70 bg-primary/5 text-foreground",precedence:"border-amber-400/70 bg-amber-400/10 text-amber-900 dark:text-amber-200",related:"border-sky-400/70 bg-sky-400/10 text-sky-900 dark:text-sky-200","required-by":"border-red-400/70 bg-red-400/10 text-red-900 dark:text-red-200"},aA={rankdir:"LR",align:"UL",nodesep:60,ranksep:120,marginx:40,marginy:40},aB=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",az[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"})]})});aB.displayName="SpecNode";let aC={specNode:aB};function aD(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 aE(a){let b=a.trim(),c=b.match(/^(\d+)/);return c?`/specs/${parseInt(c[1],10)}`:`/specs/${b}`}function aF(a,b,c){return`${a}-${c}-${b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||c}`}function aG({relationships:a,specNumber:b,specTitle:e}){let g=(0,f.useRouter)(),[h,i]=d.useState(null),j=d.useMemo(()=>{let c,d,f,g;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=aF("precedence",a,b);c.push({id:e,type:"specNode",data:{label:aD(a),badge:"Depends On",subtitle:"Must complete first",tone:"precedence",href:aE(a),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=aF("required-by",a,b);c.push({id:e,type:"specNode",data:{label:aD(a),badge:"Required By",subtitle:"Blocked by this spec",tone:"required-by",href:aE(a),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:ay,width:28,height:28},style:{stroke:ay,strokeWidth:3}})}),a.related?.forEach((a,b)=>{let e=aF("related",a,b);c.push({id:e,type:"specNode",data:{label:aD(a),badge:"Related",subtitle:"Connected work",tone:"related",href:aE(a),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:24,height:24},style:{stroke:ax,strokeWidth:3,strokeDasharray:"10 8"}})}),(g=new ar.default.graphlib.Graph).setGraph(aA),g.setDefaultEdgeLabel(()=>({})),c.forEach(a=>{g.setNode(a.id,{width:280,height:110})}),d.forEach(a=>{g.setEdge(a.source,a.target)}),ar.default.layout(g),{nodes:c.map(a=>{let{x:b,y:c}=g.node(a.id);return{...a,position:{x:b-140,y:c-55}}}),edges:d}},[a,b,e]),k=d.useCallback(a=>{i(a),requestAnimationFrame(()=>{a.fitView({padding:.4,duration:350})})},[]);d.useEffect(()=>{h&&h.fitView({padding:.4,duration:350})},[h,j.nodes]);let l=d.useCallback((a,b)=>{!b?.data||b.data.href&&g.push(b.data.href)},[g]);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:j.nodes,edges:j.edges,nodeTypes:aC,onInit:k,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:l,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 aH=a.i(228e3),aI=a.i(186945),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(386868);let aY=()=>a=>{(0,aX.visit)(a,"html",a=>{"string"==typeof a.value&&a.value.trim().startsWith("<!--")&&(a.value="")})},aZ={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 a_({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),{data:n,error:o,isLoading:p}=Y(`/api/specs/${a.specNumber||a.id}`,a$,{fallbackData:{spec:a},revalidateOnFocus:!1,dedupingInterval:5e3}),{data:q}=Y(l?`/api/specs/${a.specNumber||a.id}/dependency-graph`:null,a$,{revalidateOnFocus:!1,dedupingInterval:6e4}),r=n?.spec||a,s=d.useMemo(()=>r.tags||[],[r.tags]),t=r.updatedAt?(0,ai.formatRelativeTime)(r.updatedAt):"N/A",u=r.relationships,v=q?{dependsOn:q.dependsOn.map(a=>a.specName),requiredBy:q.requiredBy.map(a=>a.specName),related:q.related.map(a=>a.specName)}:u,w=!!(u&&((u.dependsOn?.length??0)>0||(u.related?.length??0)>0));d.useEffect(()=>{w||m(!1)},[w]);let x=(0,aj.extractH1Title)(r.contentMd)||r.title||r.specName,y=r.contentMd;if(i&&r.subSpecs){let a=r.subSpecs.find(a=>a.file===i);a&&(y=a.content)}let z=a=>a?new Date(a).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"}):"N/A",A=a=>{let b=a?`/specs/${r.specNumber||r.id}?subspec=${a}`:`/specs/${r.specNumber||r.id}`;h.push(b,{scroll:!1})},B=d.useRef(null);return d.useEffect(()=>{let a=()=>{let a=56;window.innerWidth>=1024&&B.current&&(a+=B.current.offsetHeight-56),document.documentElement.style.scrollPaddingTop=`${a}px`};a(),window.addEventListener("resize",a);let b=new ResizeObserver(a);return B.current&&b.observe(B.current),()=>{window.removeEventListener("resize",a),b.disconnect(),document.documentElement.style.scrollPaddingTop=""}},[r,s]),(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("header",{ref:B,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:[r.specNumber&&(0,c.jsxs)("span",{className:"text-muted-foreground",children:["#",r.specNumber.toString().padStart(3,"0")," "]}),x]}),(0,c.jsx)(al.StatusBadge,{status:r.status||"planned"}),(0,c.jsx)(am.PriorityBadge,{priority:r.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:[r.specNumber&&(0,c.jsxs)("span",{className:"text-muted-foreground",children:["#",r.specNumber.toString().padStart(3,"0")," "]}),x]}),(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:r.status||"planned"}),(0,c.jsx)(am.PriorityBadge,{priority:r.priority||"medium"}),s.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:[s.slice(0,5).map(a=>(0,c.jsx)(ab.Badge,{variant:"secondary",className:"text-xs",children:a},a)),s.length>5&&(0,c.jsxs)(ab.Badge,{variant:"secondary",className:"text-xs",children:["+",s.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: ",z(r.createdAt)]}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{children:["Updated: ",z(r.updatedAt),r.updatedAt&&(0,c.jsxs)("span",{className:"ml-1 text-[11px] text-muted-foreground/80",children:["(",t,")"]})]}),(0,c.jsx)("span",{className:"hidden sm:inline",children:"•"}),(0,c.jsxs)("span",{className:"hidden md:inline",children:["Name: ",r.specName]}),r.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: ",r.assignee]})]})]}),(0,c.jsxs)("div",{className:"flex flex-wrap items-center gap-2 mt-2",children:[(0,c.jsxs)(aI.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)(aI.DialogContent,{className:"w-[min(900px,90vw)] max-w-3xl max-h-[90vh] overflow-y-auto",children:[(0,c.jsxs)(aI.DialogHeader,{children:[(0,c.jsx)(aI.DialogTitle,{children:"Spec Timeline"}),(0,c.jsx)(aI.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:r.createdAt,updatedAt:r.updatedAt,completedAt:r.completedAt,status:r.status||"planned"})})]})]}),(0,c.jsxs)(aI.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:!w,className:(0,aj.cn)("h-8 rounded-full border px-3 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground",!w&&"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)(aI.DialogContent,{className:"flex h-[85vh] w-[min(1200px,95vw)] max-w-6xl flex-col gap-4 overflow-hidden",children:[(0,c.jsxs)(aI.DialogHeader,{children:[(0,c.jsx)(aI.DialogTitle,{children:"Dependency Graph"}),(0,c.jsx)(aI.DialogDescription,{children:"Precedence requirements and connected specs rendered with automatic layout."})]}),(0,c.jsx)("div",{className:"min-h-0 flex-1",children:v&&(0,c.jsx)(aG,{relationships:v,specNumber:r.specNumber,specTitle:x})})]})]}),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"]})]})]})}),r.subSpecs&&r.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:()=>A(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"})]}),r.subSpecs.map(a=>{let b=aZ[a.iconName]||aJ.FileText;return(0,c.jsxs)("button",{onClick:()=>A(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:[p&&(0,c.jsx)("div",{className:"text-sm text-muted-foreground",children:"Loading..."}),o&&(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,aY],rehypePlugins:[_.default,aa.default],components:{a:a=>(0,c.jsx)(ao,{...a,currentSpecNumber:r.specNumber||void 0}),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)(aH.MermaidDiagram,{code:b})}return(0,c.jsx)("pre",{...b,children:a})}},children:y})})]})}),(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:y})})]}),(0,c.jsx)("div",{className:"xl:hidden",children:(0,c.jsx)(ap.TableOfContents,{content:y})}),(0,c.jsx)(aq.BackToTop,{})]})}var a0=a.i(90555);function a1({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,contentMd:a.contentMd,updatedAt:a.updatedAt,subSpecsCount:"subSpecsCount"in a?a.subSpecsCount:void 0})),[b]);d.useEffect(()=>{(0,a0.primeSpecsSidebar)(j)},[j]),d.useEffect(()=>{(0,a0.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)(a_,{initialSpec:a,initialSubSpec:f,isFocusMode:g,onToggleFocusMode:i})})]})}a.s(["SpecDetailWrapper",()=>a1],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);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"})})]})]})}a.s(["SpecsNavSidebar",()=>P],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 = [