@leanspec/ui 0.2.7 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/README.md +2 -2
  2. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/lib/glib-2.0/include/glibconfig.h +9 -8
  3. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3} +0 -0
  4. package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/package.json +11 -5
  5. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +46 -0
  6. 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 +221 -0
  7. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
  8. 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
  9. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
  10. package/.next/standalone/node_modules/.pnpm/@img+sharp-libvips-linuxmusl-x64@1.2.4/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
  11. 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
  12. package/.next/standalone/node_modules/.pnpm/{@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64 → @img+sharp-linux-x64@0.34.5/node_modules/@img/sharp-linux-x64}/package.json +13 -7
  13. 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
  14. package/.next/standalone/node_modules/.pnpm/@img+sharp-linuxmusl-x64@0.34.5/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
  15. package/.next/standalone/node_modules/.pnpm/better-sqlite3@11.10.0/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  16. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  17. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +2 -0
  18. package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
  19. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  20. package/.next/standalone/packages/ui/.next/required-server-files.json +4 -4
  21. package/.next/standalone/packages/ui/.next/routes-manifest.json +12 -0
  22. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  23. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  24. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  25. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  26. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  27. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  28. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +1 -1
  29. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  30. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  32. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +18 -18
  33. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +18 -18
  34. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +11 -11
  35. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  36. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  37. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +6 -6
  38. package/.next/standalone/packages/ui/.next/server/app/api/context/route/app-paths-manifest.json +3 -0
  39. package/.next/standalone/packages/ui/.next/server/app/api/context/route/build-manifest.json +11 -0
  40. package/.next/standalone/packages/ui/.next/server/app/api/context/route/server-reference-manifest.json +4 -0
  41. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js +8 -0
  42. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.map +5 -0
  43. package/.next/standalone/packages/ui/.next/server/app/api/context/route.js.nft.json +1 -0
  44. package/.next/standalone/packages/ui/.next/server/app/api/context/route_client-reference-manifest.js +2 -0
  45. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  46. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  47. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -1
  48. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  49. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -1
  50. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -1
  51. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -1
  52. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  53. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -1
  54. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  55. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  56. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  57. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  58. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  59. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  60. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  61. package/.next/standalone/packages/ui/.next/server/app/context/page/app-paths-manifest.json +3 -0
  62. package/.next/standalone/packages/ui/.next/server/app/context/page/build-manifest.json +18 -0
  63. package/.next/standalone/packages/ui/.next/server/app/context/page/next-font-manifest.json +6 -0
  64. package/.next/standalone/packages/ui/.next/server/app/context/page/react-loadable-manifest.json +1 -0
  65. package/.next/standalone/packages/ui/.next/server/app/context/page/server-reference-manifest.json +4 -0
  66. package/.next/standalone/packages/ui/.next/server/app/context/page.js +19 -0
  67. package/.next/standalone/packages/ui/.next/server/app/context/page.js.map +5 -0
  68. package/.next/standalone/packages/ui/.next/server/app/context/page.js.nft.json +1 -0
  69. package/.next/standalone/packages/ui/.next/server/app/context/page_client-reference-manifest.js +2 -0
  70. package/.next/standalone/packages/ui/.next/server/app/page.js +1 -1
  71. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  72. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +1 -1
  74. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -1
  75. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +1 -1
  77. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -1
  78. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +1 -1
  79. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +1 -1
  80. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -1
  81. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +1 -1
  82. package/.next/standalone/packages/ui/.next/server/app/projects/page.js +1 -1
  83. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -1
  84. package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  85. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -2
  86. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +12 -12
  87. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +12 -12
  88. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +9 -9
  89. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +3 -3
  90. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +2 -2
  91. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +1 -1
  92. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +1 -1
  93. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  94. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  95. package/.next/standalone/packages/ui/.next/server/app/specs/page.js +1 -1
  96. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  97. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/packages/ui/.next/server/app/stats/page.js +1 -1
  99. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  100. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  101. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +2 -0
  102. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3559376c._.js +2 -2
  103. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__65667b70._.js +1 -1
  104. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__803d07f0._.js +1 -1
  105. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +1 -1
  106. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8a9ab1a3._.js +3 -0
  107. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bdc3963a._.js +1 -1
  108. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__f5c6d6b8._.js +1 -1
  109. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_context_route_actions_dead6daa.js +3 -0
  110. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__12b4eb41._.js +3 -0
  111. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__69a0d63a._.js +3 -0
  112. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__6e739186._.js +7 -0
  113. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a4c56419._.js +7 -0
  114. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b6632d78._.js +3 -0
  115. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__daee3355._.js +1 -1
  116. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__5382b397._.js → [root-of-the-server]__ead1539c._.js} +2 -2
  117. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
  118. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_0f9ffe32._.js +1 -1
  119. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_28fe1532._.js +5 -0
  120. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_315f3b3a._.js +3 -0
  121. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_959ad3d8._.js +4 -0
  122. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_9dcf102b._.js +3 -0
  123. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_497c8b73._.js → _b397e94a._.js} +2 -2
  124. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_8272a49c._.js +3 -0
  125. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_context_page_actions_1a062d48.js +3 -0
  126. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_context_context-client_tsx_4ba99a62._.js +12 -0
  127. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
  128. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +1 -1
  129. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  130. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  131. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  132. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  133. package/.next/standalone/packages/ui/.next/static/chunks/1eb8283995f370c6.js +1 -0
  134. package/.next/standalone/packages/ui/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
  135. package/.next/standalone/packages/ui/.next/static/chunks/37a1236ed50645a6.js +1 -0
  136. package/.next/standalone/packages/ui/.next/static/chunks/9d84ba08a41145ec.js +5 -0
  137. package/.next/standalone/packages/ui/.next/static/chunks/c4b1faff3361a749.js +1 -0
  138. package/.next/standalone/packages/ui/.next/static/chunks/{294dea6dbec43ca6.js → d7420d2a867e57b5.js} +1 -1
  139. package/.next/{static/chunks/cca4441cde342ae3.js → standalone/packages/ui/.next/static/chunks/dae403679aae65f4.js} +1 -1
  140. package/.next/standalone/packages/ui/.next/static/chunks/efded9da04c960d8.js +1 -0
  141. package/.next/standalone/packages/ui/.next/static/chunks/f382932f1a5d6359.js +10 -0
  142. package/.next/standalone/packages/ui/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
  143. package/.next/standalone/packages/ui/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
  144. package/.next/standalone/packages/ui/dist/BUILD_ID +1 -0
  145. package/.next/standalone/packages/ui/dist/standalone/packages/web/package.json +1 -9
  146. package/.next/standalone/packages/ui/dist/standalone/packages/web/server.js +1 -1
  147. package/.next/standalone/packages/ui/dist/standalone/specs/035-live-specs-showcase/README.md +3 -7
  148. package/.next/standalone/packages/ui/dist/standalone/specs/072-ai-agent-first-use-workflow/README.md +3 -5
  149. package/.next/standalone/packages/ui/dist/standalone/specs/081-web-app-ux-redesign/README.md +1 -2
  150. package/.next/standalone/packages/ui/dist/standalone/specs/082-web-realtime-sync-architecture/README.md +3 -8
  151. package/.next/standalone/packages/ui/dist/standalone/specs/087-cli-ui-command/README.md +259 -73
  152. package/.next/standalone/packages/ui/dist/standalone/specs/088-core-concepts-terminology-only/README.md +3 -5
  153. package/.next/standalone/packages/ui/dist/standalone/specs/089-sdd-practical-tutorials/README.md +3 -5
  154. package/.next/standalone/packages/ui/dist/standalone/specs/090-leanspec-sdd-case-studies/README.md +3 -5
  155. package/.next/standalone/packages/ui/dist/standalone/specs/091-chinese-localization-strategy/README.md +23 -33
  156. package/.next/standalone/packages/ui/dist/standalone/specs/092-docs-site-submodule-migration/README.md +3 -7
  157. package/.next/standalone/packages/ui/dist/standalone/specs/093-spec-detail-ui-improvements/README.md +14 -25
  158. package/.next/standalone/packages/ui/dist/static/chunks/0c19c69aa7625475.js +1 -0
  159. package/.next/standalone/packages/ui/dist/static/chunks/116800b03245a1e5.js +1 -0
  160. package/.next/standalone/packages/ui/dist/static/chunks/15843a3d7584e314.js +1 -0
  161. package/.next/standalone/packages/ui/dist/static/chunks/19e80edf527aef5c.js +1 -0
  162. package/.next/standalone/packages/ui/dist/static/chunks/465954d5af3284a9.js +1 -0
  163. package/.next/standalone/packages/ui/dist/static/chunks/5abeeb89f1412a80.js +3 -0
  164. package/.next/standalone/packages/ui/dist/static/chunks/5c2072ad938de8ed.js +1 -0
  165. package/.next/standalone/packages/ui/dist/static/chunks/6a05a93ec8fa7b83.js +1 -0
  166. package/.next/standalone/packages/ui/dist/static/chunks/778e42188e450b39.css +1 -0
  167. package/.next/standalone/packages/ui/dist/static/chunks/a02c1f50ff00204f.js +1 -0
  168. package/.next/standalone/packages/ui/dist/static/chunks/a45464b9776dd88e.js +1 -0
  169. package/.next/standalone/packages/ui/dist/static/chunks/a6dad97d9634a72d.js +1 -0
  170. package/.next/standalone/packages/ui/dist/static/chunks/b0ea0ac61604f843.js +1 -0
  171. package/.next/standalone/packages/ui/dist/static/chunks/c06e85b449720194.js +1 -0
  172. package/.next/standalone/packages/ui/dist/static/chunks/c557ac675be79771.js +1 -0
  173. package/.next/standalone/packages/ui/dist/static/chunks/cad005a57ffbb2d3.js +1 -0
  174. package/.next/standalone/packages/ui/dist/static/chunks/cdf6fe33bc65efbc.js +1 -0
  175. package/.next/standalone/packages/ui/dist/static/chunks/d12ed5dbe44caed7.js +1 -0
  176. package/.next/standalone/packages/ui/dist/static/chunks/d1ebe5c1a344f4ca.js +5 -0
  177. package/.next/standalone/packages/ui/dist/static/chunks/d42cf1682bc46652.js +1 -0
  178. package/.next/standalone/packages/ui/dist/static/chunks/dde5d8bddd7fbfcf.js +1 -0
  179. package/.next/standalone/packages/ui/dist/static/chunks/ebd89051637b9a47.js +4 -0
  180. package/.next/standalone/packages/ui/dist/static/chunks/ec82875d18b29f47.js +2 -0
  181. package/.next/standalone/packages/ui/dist/static/chunks/f0b701df9769bcc5.js +19 -0
  182. package/.next/standalone/packages/ui/dist/static/chunks/turbopack-1c09a99f4c9e28d3.js +3 -0
  183. package/.next/standalone/packages/ui/package.json +3 -1
  184. package/.next/standalone/packages/ui/server.js +1 -1
  185. package/.next/standalone/packages/ui/src/app/api/context/route.ts +22 -0
  186. package/.next/standalone/packages/ui/src/app/context/context-client.tsx +371 -0
  187. package/.next/standalone/packages/ui/src/app/context/page.tsx +17 -0
  188. package/.next/standalone/packages/ui/src/app/globals.css +16 -16
  189. package/.next/standalone/packages/ui/src/app/layout.tsx +4 -7
  190. package/.next/standalone/packages/ui/src/components/context-file-viewer.tsx +291 -0
  191. package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +10 -1
  192. package/.next/standalone/packages/ui/src/components/spec-detail-client.tsx +181 -134
  193. package/.next/standalone/packages/ui/src/components/spec-detail-wrapper.tsx +20 -0
  194. package/.next/standalone/packages/ui/src/components/specs-nav-sidebar.tsx +3 -2
  195. package/.next/standalone/packages/ui/src/components/ui/accordion.tsx +58 -0
  196. package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +172 -3
  197. package/.next/standalone/packages/ui/src/lib/specs/types.ts +44 -0
  198. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  199. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_buildManifest.js +11 -0
  200. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_clientMiddlewareManifest.json +1 -0
  201. package/.next/static/-Mn9iD4O5f_khGd1P3kmB/_ssgManifest.js +1 -0
  202. package/.next/static/chunks/1eb8283995f370c6.js +1 -0
  203. package/.next/static/chunks/336e8e8fc6b0fba8.js +1 -0
  204. package/.next/static/chunks/37a1236ed50645a6.js +1 -0
  205. package/.next/static/chunks/9d84ba08a41145ec.js +5 -0
  206. package/.next/static/chunks/c4b1faff3361a749.js +1 -0
  207. package/.next/static/chunks/{294dea6dbec43ca6.js → d7420d2a867e57b5.js} +1 -1
  208. package/.next/{standalone/packages/ui/.next/static/chunks/cca4441cde342ae3.js → static/chunks/dae403679aae65f4.js} +1 -1
  209. package/.next/static/chunks/efded9da04c960d8.js +1 -0
  210. package/.next/static/chunks/f382932f1a5d6359.js +10 -0
  211. package/.next/static/chunks/f43b6e43b4da1a32.css +1 -0
  212. package/.next/static/chunks/f6dd06e6d22d2d12.js +3 -0
  213. package/package.json +4 -2
  214. 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
  215. package/.next/standalone/node_modules/.pnpm/source-map@0.8.0-beta.0/node_modules/source-map/package.json +0 -95
  216. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +0 -3
  217. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__73f60f12._.js +0 -7
  218. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a7ae8552._.js +0 -7
  219. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_14118969._.js +0 -3
  220. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_4129cc0f._.js +0 -3
  221. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_c2f54661._.js +0 -5
  222. package/.next/standalone/packages/ui/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
  223. package/.next/standalone/packages/ui/.next/static/chunks/2204c0f16b23ec4c.js +0 -3
  224. package/.next/standalone/packages/ui/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
  225. package/.next/standalone/packages/ui/.next/static/chunks/b6976cf6c48996e5.js +0 -1
  226. package/.next/standalone/packages/ui/.next/static/chunks/b845813463167db0.js +0 -5
  227. package/.next/standalone/packages/ui/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
  228. package/.next/standalone/packages/ui/.next/static/chunks/d784d84d5b880e48.js +0 -1
  229. package/.next/standalone/packages/ui/dist/standalone/packages/web/components.json +0 -20
  230. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0000_reflective_thena.sql +0 -59
  231. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/0001_fresh_carmella_unuscione.sql +0 -1
  232. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0000_snapshot.json +0 -427
  233. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/0001_snapshot.json +0 -436
  234. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle/meta/_journal.json +0 -20
  235. package/.next/standalone/packages/ui/dist/standalone/packages/web/drizzle.config.ts +0 -10
  236. package/.next/standalone/packages/ui/dist/standalone/packages/web/eslint.config.mjs +0 -18
  237. package/.next/standalone/packages/ui/dist/standalone/packages/web/next.config.ts +0 -7
  238. package/.next/standalone/packages/ui/dist/standalone/packages/web/postcss.config.mjs +0 -8
  239. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/[id]/specs/route.ts +0 -23
  240. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/projects/route.ts +0 -19
  241. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/revalidate/route.ts +0 -63
  242. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.test.ts +0 -51
  243. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/dependency-graph/route.ts +0 -171
  244. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/route.ts +0 -36
  245. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/specs/[id]/subspecs/[file]/route.ts +0 -46
  246. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/api/stats/route.ts +0 -19
  247. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/board-client.tsx +0 -162
  248. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/loading.tsx +0 -43
  249. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/board/page.tsx +0 -18
  250. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/dashboard-client.tsx +0 -364
  251. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/error.tsx +0 -43
  252. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/globals.css +0 -531
  253. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/home-client.tsx +0 -277
  254. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/layout.tsx +0 -70
  255. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/loading.tsx +0 -87
  256. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/not-found.tsx +0 -27
  257. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/page.tsx +0 -18
  258. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/loading.tsx +0 -5
  259. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/[id]/page.tsx +0 -43
  260. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/page.tsx +0 -18
  261. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/specs/specs-client.tsx +0 -425
  262. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/page.tsx +0 -18
  263. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/app/stats/stats-client.tsx +0 -283
  264. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/back-to-top.tsx +0 -46
  265. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/empty-state.tsx +0 -52
  266. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/main-sidebar.tsx +0 -175
  267. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.test.ts +0 -96
  268. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/markdown-link.tsx +0 -95
  269. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/navigation.tsx +0 -210
  270. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/priority-badge.tsx +0 -53
  271. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/quick-search.tsx +0 -180
  272. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/skeletons.tsx +0 -119
  273. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-dependency-graph.tsx +0 -369
  274. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-client.tsx +0 -372
  275. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-loading-shell.tsx +0 -42
  276. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-detail-wrapper.tsx +0 -70
  277. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-metadata.tsx +0 -136
  278. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-sidebar.tsx +0 -127
  279. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/spec-timeline.tsx +0 -186
  280. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/specs-nav-sidebar.tsx +0 -561
  281. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/status-badge.tsx +0 -53
  282. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/sub-spec-tabs.tsx +0 -143
  283. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/table-of-contents.tsx +0 -130
  284. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-provider.tsx +0 -11
  285. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/theme-toggle.tsx +0 -37
  286. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/avatar.tsx +0 -50
  287. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/badge.tsx +0 -36
  288. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/breadcrumb.tsx +0 -110
  289. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/button.tsx +0 -57
  290. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/card.tsx +0 -76
  291. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/command.tsx +0 -153
  292. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/dialog.tsx +0 -122
  293. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/input.tsx +0 -24
  294. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/select.tsx +0 -159
  295. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/separator.tsx +0 -31
  296. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/skeleton.tsx +0 -15
  297. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tabs.tsx +0 -55
  298. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/toast.tsx +0 -30
  299. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/components/ui/tooltip.tsx +0 -32
  300. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/date-utils.ts +0 -76
  301. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/index.ts +0 -42
  302. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/migrate.ts +0 -18
  303. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/queries.ts +0 -114
  304. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/schema.ts +0 -123
  305. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/seed.ts +0 -156
  306. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/db/service-queries.ts +0 -216
  307. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/dependency-graph.ts +0 -105
  308. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/service.ts +0 -120
  309. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/database-source.ts +0 -94
  310. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/sources/filesystem-source.ts +0 -249
  311. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/specs/types.ts +0 -55
  312. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/stores/specs-sidebar-store.ts +0 -152
  313. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/sub-specs.ts +0 -171
  314. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/lib/utils.ts +0 -17
  315. package/.next/standalone/packages/ui/dist/standalone/packages/web/src/types/specs.ts +0 -18
  316. package/.next/standalone/packages/ui/dist/standalone/packages/web/tailwind.config.ts +0 -58
  317. package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.json +0 -34
  318. package/.next/standalone/packages/ui/dist/standalone/packages/web/tsconfig.tsbuildinfo +0 -1
  319. package/.next/standalone/packages/ui/dist/standalone/packages/web/vitest.config.ts +0 -14
  320. package/.next/standalone/packages/ui/dist/standalone/specs/094-ai-chatbot-web-integration/README.md +0 -332
  321. package/.next/standalone/packages/ui/dist/standalone/specs/095-pr-migration-verification/README.md +0 -339
  322. package/.next/standalone/packages/ui/dist/standalone/specs/096-docs-beginner-first-reorg/README.md +0 -399
  323. package/.next/standalone/packages/ui/dist/standalone/specs/097-dag-visualization-library/README.md +0 -525
  324. package/.next/standalone/packages/ui/dist/standalone/specs/098-github-multi-project-integration/README.md +0 -387
  325. package/.next/standalone/packages/ui/dist/standalone/specs/099-enhanced-dependency-commands-cli-mcp/README.md +0 -613
  326. package/.next/standalone/packages/ui/dist/standalone/specs/100-release-process-typecheck-failure/README.md +0 -266
  327. package/.next/standalone/packages/ui/dist/standalone/specs/101-sidebar-scroll-position-drift/README.md +0 -100
  328. package/.next/standalone/packages/ui/dist/standalone/specs/102-mcp-wrapper-package/README.md +0 -172
  329. package/.next/static/chunks/16ff9833ae1bb3ae.js +0 -1
  330. package/.next/static/chunks/2204c0f16b23ec4c.js +0 -3
  331. package/.next/static/chunks/7590e65bcaa41e8b.js +0 -1
  332. package/.next/static/chunks/b6976cf6c48996e5.js +0 -1
  333. package/.next/static/chunks/b845813463167db0.js +0 -5
  334. package/.next/static/chunks/bd9893e28f8f6a9a.css +0 -1
  335. package/.next/static/chunks/d784d84d5b880e48.js +0 -1
  336. /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/lib/index.js +0 -0
  337. /package/.next/standalone/node_modules/.pnpm/{@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64 → @img+sharp-libvips-linux-x64@1.2.4/node_modules/@img/sharp-libvips-linux-x64}/versions.json +0 -0
  338. /package/.next/standalone/packages/ui/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → -Mn9iD4O5f_khGd1P3kmB}/_buildManifest.js +0 -0
  339. /package/.next/standalone/packages/ui/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → -Mn9iD4O5f_khGd1P3kmB}/_clientMiddlewareManifest.json +0 -0
  340. /package/.next/standalone/packages/ui/.next/static/{6nq7WNafPv5Bf_7mWgRQ- → -Mn9iD4O5f_khGd1P3kmB}/_ssgManifest.js +0 -0
  341. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/f864aa7e7061c0600e35cf3d879b27cf.txt +0 -0
  342. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/favicon.ico +0 -0
  343. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/file.svg +0 -0
  344. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/github-mark-white.svg +0 -0
  345. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/github-mark.svg +0 -0
  346. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/globe.svg +0 -0
  347. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/icon.svg +0 -0
  348. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo-dark-bg.svg +0 -0
  349. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo-with-bg.svg +0 -0
  350. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/logo.svg +0 -0
  351. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/next.svg +0 -0
  352. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/vercel.svg +0 -0
  353. /package/.next/standalone/packages/ui/dist/{standalone/packages/web/public → public}/window.svg +0 -0
  354. /package/.next/{static/6nq7WNafPv5Bf_7mWgRQ- → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_buildManifest.js +0 -0
  355. /package/.next/{static/6nq7WNafPv5Bf_7mWgRQ- → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_clientMiddlewareManifest.json +0 -0
  356. /package/.next/{static/6nq7WNafPv5Bf_7mWgRQ- → standalone/packages/ui/dist/static/4ZnYN1WbN4LGJQOwP6FkT}/_ssgManifest.js +0 -0
@@ -1,127 +0,0 @@
1
- "use client"
2
-
3
- import * as React from "react"
4
- import Link from "next/link"
5
- import { FileText, Search, ChevronLeft, ChevronRight } from "lucide-react"
6
- import { Input } from "@/components/ui/input"
7
- import { Button } from "@/components/ui/button"
8
- import { StatusBadge } from "@/components/status-badge"
9
- import { cn } from "@/lib/utils"
10
-
11
- interface Spec {
12
- id: string
13
- specNumber: number | null
14
- title: string | null
15
- specName: string
16
- status: string | null
17
- priority: string | null
18
- }
19
-
20
- interface SpecSidebarProps {
21
- specs: Spec[]
22
- currentSpecId: string
23
- }
24
-
25
- export function SpecSidebar({ specs, currentSpecId }: SpecSidebarProps) {
26
- const [collapsed, setCollapsed] = React.useState(false)
27
- const [searchQuery, setSearchQuery] = React.useState("")
28
-
29
- const filteredSpecs = React.useMemo(() => {
30
- if (!searchQuery) return specs
31
- const query = searchQuery.toLowerCase()
32
- return specs.filter(
33
- (spec) =>
34
- spec.title?.toLowerCase().includes(query) ||
35
- spec.specName.toLowerCase().includes(query) ||
36
- spec.specNumber?.toString().includes(query)
37
- )
38
- }, [specs, searchQuery])
39
-
40
- if (collapsed) {
41
- return (
42
- <div className="sticky top-14 h-[calc(100vh-3.5rem)] w-12 border-r bg-background flex flex-col items-center py-4">
43
- <Button
44
- variant="ghost"
45
- size="sm"
46
- onClick={() => setCollapsed(false)}
47
- className="h-8 w-8 p-0"
48
- >
49
- <ChevronRight className="h-4 w-4" />
50
- <span className="sr-only">Expand sidebar</span>
51
- </Button>
52
- </div>
53
- )
54
- }
55
-
56
- return (
57
- <aside className="sticky top-14 h-[calc(100vh-3.5rem)] w-64 border-r bg-background flex flex-col">
58
- <div className="p-4 border-b flex items-center justify-between">
59
- <h2 className="font-semibold text-sm">All Specs</h2>
60
- <Button
61
- variant="ghost"
62
- size="sm"
63
- onClick={() => setCollapsed(true)}
64
- className="h-8 w-8 p-0"
65
- >
66
- <ChevronLeft className="h-4 w-4" />
67
- <span className="sr-only">Collapse sidebar</span>
68
- </Button>
69
- </div>
70
-
71
- <div className="p-4 border-b">
72
- <div className="relative">
73
- <Search className="absolute left-2 top-2.5 h-4 w-4 text-muted-foreground" />
74
- <Input
75
- placeholder="Search specs..."
76
- value={searchQuery}
77
- onChange={(e) => setSearchQuery(e.target.value)}
78
- className="pl-8 h-9"
79
- />
80
- </div>
81
- </div>
82
-
83
- <div className="flex-1 overflow-y-auto">
84
- <div className="p-2">
85
- {filteredSpecs.length === 0 ? (
86
- <div className="text-center py-8 text-sm text-muted-foreground">
87
- No specs found
88
- </div>
89
- ) : (
90
- filteredSpecs.map((spec) => {
91
- const isActive = spec.id === currentSpecId
92
- const displayTitle = spec.title || spec.specName
93
-
94
- return (
95
- <Link
96
- key={spec.id}
97
- href={`/specs/${spec.id}`}
98
- className={cn(
99
- "block p-2 rounded-md text-sm transition-colors mb-1",
100
- isActive
101
- ? "bg-accent text-accent-foreground font-medium"
102
- : "hover:bg-accent/50"
103
- )}
104
- >
105
- <div className="flex items-start gap-2">
106
- <FileText className="h-4 w-4 mt-0.5 shrink-0" />
107
- <div className="flex-1 min-w-0">
108
- <div className="font-medium truncate">
109
- {spec.specNumber && `#${spec.specNumber} `}
110
- {displayTitle}
111
- </div>
112
- {spec.status && (
113
- <div className="mt-1">
114
- <StatusBadge status={spec.status} />
115
- </div>
116
- )}
117
- </div>
118
- </div>
119
- </Link>
120
- )
121
- })
122
- )}
123
- </div>
124
- </div>
125
- </aside>
126
- )
127
- }
@@ -1,186 +0,0 @@
1
- /**
2
- * Timeline component to visualize spec evolution (vertical layout)
3
- */
4
-
5
- import { Clock, PlayCircle, CheckCircle2, Archive, Circle } from 'lucide-react';
6
- import { formatRelativeTime, formatDuration } from '@/lib/date-utils';
7
- import { cn } from '@/lib/utils';
8
-
9
- interface TimelineEvent {
10
- label: string;
11
- date: Date | string | number | null | undefined;
12
- isActive?: boolean;
13
- isFuture?: boolean;
14
- icon?: typeof Clock | typeof PlayCircle | typeof CheckCircle2 | typeof Archive | typeof Circle;
15
- color?: string;
16
- }
17
-
18
- interface SpecTimelineProps {
19
- createdAt: Date | string | number | null | undefined;
20
- updatedAt: Date | string | number | null | undefined;
21
- completedAt?: Date | string | number | null | undefined;
22
- status: string;
23
- className?: string;
24
- }
25
-
26
- export function SpecTimeline({
27
- createdAt,
28
- updatedAt,
29
- completedAt,
30
- status,
31
- className
32
- }: SpecTimelineProps) {
33
- const events: TimelineEvent[] = [];
34
-
35
- // Always include created
36
- if (createdAt) {
37
- events.push({
38
- label: 'Created',
39
- date: createdAt,
40
- isActive: true,
41
- isFuture: false,
42
- icon: Clock,
43
- color: 'text-blue-600',
44
- });
45
- }
46
-
47
- // Add in-progress
48
- if (status === 'in-progress' || status === 'complete' || status === 'archived') {
49
- events.push({
50
- label: 'In Progress',
51
- date: updatedAt || createdAt,
52
- isActive: true,
53
- isFuture: false,
54
- icon: PlayCircle,
55
- color: 'text-orange-600',
56
- });
57
- } else {
58
- events.push({
59
- label: 'In Progress',
60
- date: null,
61
- isActive: false,
62
- isFuture: true,
63
- icon: Circle,
64
- color: 'text-muted-foreground',
65
- });
66
- }
67
-
68
- // Add completed
69
- if (status === 'complete' || status === 'archived') {
70
- events.push({
71
- label: 'Complete',
72
- date: completedAt || updatedAt,
73
- isActive: true,
74
- isFuture: false,
75
- icon: CheckCircle2,
76
- color: 'text-green-600',
77
- });
78
- } else {
79
- events.push({
80
- label: 'Complete',
81
- date: null,
82
- isActive: false,
83
- isFuture: true,
84
- icon: Circle,
85
- color: 'text-muted-foreground',
86
- });
87
- }
88
-
89
- // Add archived if status is archived
90
- if (status === 'archived') {
91
- events.push({
92
- label: 'Archived',
93
- date: updatedAt,
94
- isActive: true,
95
- isFuture: false,
96
- icon: Archive,
97
- color: 'text-gray-600',
98
- });
99
- }
100
-
101
- if (events.length === 0) return null;
102
-
103
- return (
104
- <div className={cn('flex items-start gap-2', className)}>
105
- {events.map((event, i) => {
106
- const Icon = event.icon;
107
- const isLast = i === events.length - 1;
108
- const nextEvent = !isLast ? events[i + 1] : null;
109
- const duration = event.date && nextEvent?.date && !nextEvent.isFuture
110
- ? formatDuration(event.date, nextEvent.date)
111
- : '';
112
-
113
- return (
114
- <div key={i} className="flex items-center gap-2 flex-1">
115
- {/* Event content */}
116
- <div className="flex flex-col items-center gap-1 min-w-0">
117
- {/* Icon */}
118
- <div
119
- className={cn(
120
- "w-8 h-8 rounded-full border-2 bg-background flex items-center justify-center shrink-0",
121
- event.isActive && !event.isFuture
122
- ? "border-primary"
123
- : "border-muted-foreground/40"
124
- )}
125
- >
126
- {Icon && (
127
- <Icon
128
- className={cn(
129
- "h-4 w-4",
130
- event.isActive && !event.isFuture ? "text-primary" : "text-muted-foreground/60"
131
- )}
132
- />
133
- )}
134
- </div>
135
-
136
- {/* Label */}
137
- <div
138
- className={cn(
139
- "text-xs font-medium text-center whitespace-nowrap",
140
- event.isActive && !event.isFuture ? "text-foreground" : "text-muted-foreground"
141
- )}
142
- >
143
- {event.label}
144
- </div>
145
-
146
- {/* Date row - reserve space even when pending */}
147
- <div className="text-[10px] text-center min-h-[14px]">
148
- {event.date && !event.isFuture && (
149
- <span className="text-muted-foreground">{formatRelativeTime(event.date)}</span>
150
- )}
151
- {!event.date && event.isFuture && (
152
- <span className="text-muted-foreground/70">Awaiting start</span>
153
- )}
154
- {event.date && event.isFuture && (
155
- <span className="text-muted-foreground/70">Queued</span>
156
- )}
157
- {!event.date && !event.isFuture && (
158
- <span className="text-muted-foreground/60">Pending update</span>
159
- )}
160
- </div>
161
- </div>
162
-
163
- {/* Connecting line with duration */}
164
- {!isLast && (
165
- <div className="flex flex-col items-center flex-1 min-w-4 gap-0.5">
166
- <div
167
- className={cn(
168
- "h-0.5 w-full",
169
- event.isActive && !event.isFuture
170
- ? "bg-primary"
171
- : "bg-muted-foreground/40"
172
- )}
173
- />
174
- {duration && (
175
- <div className="text-[10px] text-muted-foreground font-medium whitespace-nowrap">
176
- {duration}
177
- </div>
178
- )}
179
- </div>
180
- )}
181
- </div>
182
- );
183
- })}
184
- </div>
185
- );
186
- }