vibedoc 1.3.0 → 1.4.1

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 (567) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/build-manifest.json +5 -5
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.json +1 -1
  6. package/.next/routes-manifest.json +6 -0
  7. package/.next/server/app/(app)/activity/page/build-manifest.json +3 -3
  8. package/.next/server/app/(app)/activity/page.js +7 -6
  9. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  10. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/(app)/board/page/build-manifest.json +3 -3
  12. package/.next/server/app/(app)/board/page.js +7 -6
  13. package/.next/server/app/(app)/board/page.js.nft.json +1 -1
  14. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/(app)/docs/page/build-manifest.json +3 -3
  16. package/.next/server/app/(app)/docs/page.js +7 -6
  17. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  18. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  19. package/.next/server/app/(app)/explorer/page/build-manifest.json +3 -3
  20. package/.next/server/app/(app)/explorer/page.js +7 -6
  21. package/.next/server/app/(app)/explorer/page.js.nft.json +1 -1
  22. package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +1 -1
  23. package/.next/server/app/(app)/memory/page/build-manifest.json +3 -3
  24. package/.next/server/app/(app)/memory/page.js +7 -6
  25. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  26. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(app)/settings/page/build-manifest.json +3 -3
  28. package/.next/server/app/(app)/settings/page.js +7 -6
  29. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(app)/setup/page/build-manifest.json +3 -3
  32. package/.next/server/app/(app)/setup/page.js +7 -6
  33. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  34. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/_global-error/page/build-manifest.json +3 -3
  36. package/.next/server/app/_global-error/page.js +3 -3
  37. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  38. package/.next/server/app/_global-error.html +2 -2
  39. package/.next/server/app/_global-error.rsc +1 -1
  40. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  41. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  42. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  43. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  44. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  45. package/.next/server/app/_not-found/page/build-manifest.json +3 -3
  46. package/.next/server/app/_not-found/page.js +6 -5
  47. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  48. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/.next/server/app/_not-found.html +1 -1
  50. package/.next/server/app/_not-found.rsc +8 -8
  51. package/.next/server/app/_not-found.segments/_full.segment.rsc +8 -8
  52. package/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  53. package/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  54. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  55. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  56. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  57. package/.next/server/app/activity.html +1 -1
  58. package/.next/server/app/activity.rsc +20 -19
  59. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +4 -4
  60. package/.next/server/app/activity.segments/!KGFwcCk/activity.segment.rsc +3 -3
  61. package/.next/server/app/activity.segments/!KGFwcCk.segment.rsc +7 -6
  62. package/.next/server/app/activity.segments/_full.segment.rsc +20 -19
  63. package/.next/server/app/activity.segments/_head.segment.rsc +3 -3
  64. package/.next/server/app/activity.segments/_index.segment.rsc +4 -4
  65. package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
  66. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  67. package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  68. package/.next/server/app/api/context/route.js.nft.json +1 -1
  69. package/.next/server/app/api/decisions/route.js +1 -1
  70. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  71. package/.next/server/app/api/docs/route.js +1 -1
  72. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  73. package/.next/server/app/api/explorer/route.js +1 -1
  74. package/.next/server/app/api/explorer/route.js.nft.json +1 -1
  75. package/.next/server/app/api/mcp/route.js +1 -1
  76. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  77. package/.next/server/app/api/memory/route.js +1 -1
  78. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  79. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  80. package/.next/server/app/api/registry/route.js +1 -1
  81. package/.next/server/app/api/registry/route.js.nft.json +1 -1
  82. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  83. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  84. package/.next/server/app/api/setup/write/route.js +1 -1
  85. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  86. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  87. package/.next/server/app/api/tasks/create/route/app-paths-manifest.json +3 -0
  88. package/.next/server/app/api/tasks/create/route/build-manifest.json +11 -0
  89. package/.next/server/app/api/tasks/create/route/server-reference-manifest.json +4 -0
  90. package/.next/server/app/api/tasks/create/route.js +7 -0
  91. package/.next/server/app/api/tasks/create/route.js.map +5 -0
  92. package/.next/server/app/api/tasks/create/route.js.nft.json +1 -0
  93. package/.next/server/app/api/tasks/create/route_client-reference-manifest.js +2 -0
  94. package/.next/server/app/api/tasks/route.js +1 -1
  95. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  96. package/.next/server/app/board.html +1 -1
  97. package/.next/server/app/board.rsc +20 -19
  98. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +4 -4
  99. package/.next/server/app/board.segments/!KGFwcCk/board.segment.rsc +3 -3
  100. package/.next/server/app/board.segments/!KGFwcCk.segment.rsc +7 -6
  101. package/.next/server/app/board.segments/_full.segment.rsc +20 -19
  102. package/.next/server/app/board.segments/_head.segment.rsc +3 -3
  103. package/.next/server/app/board.segments/_index.segment.rsc +4 -4
  104. package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  105. package/.next/server/app/docs.html +1 -1
  106. package/.next/server/app/docs.rsc +20 -19
  107. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +4 -4
  108. package/.next/server/app/docs.segments/!KGFwcCk/docs.segment.rsc +3 -3
  109. package/.next/server/app/docs.segments/!KGFwcCk.segment.rsc +7 -6
  110. package/.next/server/app/docs.segments/_full.segment.rsc +20 -19
  111. package/.next/server/app/docs.segments/_head.segment.rsc +3 -3
  112. package/.next/server/app/docs.segments/_index.segment.rsc +4 -4
  113. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  114. package/.next/server/app/explorer.html +1 -1
  115. package/.next/server/app/explorer.rsc +20 -19
  116. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +4 -4
  117. package/.next/server/app/explorer.segments/!KGFwcCk/explorer.segment.rsc +3 -3
  118. package/.next/server/app/explorer.segments/!KGFwcCk.segment.rsc +7 -6
  119. package/.next/server/app/explorer.segments/_full.segment.rsc +20 -19
  120. package/.next/server/app/explorer.segments/_head.segment.rsc +3 -3
  121. package/.next/server/app/explorer.segments/_index.segment.rsc +4 -4
  122. package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -2
  123. package/.next/server/app/index.html +1 -1
  124. package/.next/server/app/index.rsc +8 -8
  125. package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  126. package/.next/server/app/index.segments/_full.segment.rsc +8 -8
  127. package/.next/server/app/index.segments/_head.segment.rsc +3 -3
  128. package/.next/server/app/index.segments/_index.segment.rsc +4 -4
  129. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  130. package/.next/server/app/memory.html +1 -1
  131. package/.next/server/app/memory.rsc +20 -19
  132. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +4 -4
  133. package/.next/server/app/memory.segments/!KGFwcCk/memory.segment.rsc +3 -3
  134. package/.next/server/app/memory.segments/!KGFwcCk.segment.rsc +7 -6
  135. package/.next/server/app/memory.segments/_full.segment.rsc +20 -19
  136. package/.next/server/app/memory.segments/_head.segment.rsc +3 -3
  137. package/.next/server/app/memory.segments/_index.segment.rsc +4 -4
  138. package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
  139. package/.next/server/app/page/build-manifest.json +3 -3
  140. package/.next/server/app/page.js +7 -7
  141. package/.next/server/app/page.js.nft.json +1 -1
  142. package/.next/server/app/page_client-reference-manifest.js +1 -1
  143. package/.next/server/app/settings.html +1 -1
  144. package/.next/server/app/settings.rsc +20 -19
  145. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +4 -4
  146. package/.next/server/app/settings.segments/!KGFwcCk/settings.segment.rsc +3 -3
  147. package/.next/server/app/settings.segments/!KGFwcCk.segment.rsc +7 -6
  148. package/.next/server/app/settings.segments/_full.segment.rsc +20 -19
  149. package/.next/server/app/settings.segments/_head.segment.rsc +3 -3
  150. package/.next/server/app/settings.segments/_index.segment.rsc +4 -4
  151. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  152. package/.next/server/app/setup.html +1 -1
  153. package/.next/server/app/setup.rsc +20 -19
  154. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +4 -4
  155. package/.next/server/app/setup.segments/!KGFwcCk/setup.segment.rsc +3 -3
  156. package/.next/server/app/setup.segments/!KGFwcCk.segment.rsc +7 -6
  157. package/.next/server/app/setup.segments/_full.segment.rsc +20 -19
  158. package/.next/server/app/setup.segments/_head.segment.rsc +3 -3
  159. package/.next/server/app/setup.segments/_index.segment.rsc +4 -4
  160. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  161. package/.next/server/app-paths-manifest.json +1 -0
  162. package/.next/server/chunks/{[root-of-the-server]__54666fd5._.js → [root-of-the-server]__03edd537._.js} +2 -2
  163. package/.next/server/chunks/{[root-of-the-server]__e27393ea._.js → [root-of-the-server]__1329130b._.js} +2 -2
  164. package/.next/server/chunks/[root-of-the-server]__222d0fad._.js +3 -0
  165. package/.next/server/chunks/{[root-of-the-server]__b4da5bcd._.js → [root-of-the-server]__50974822._.js} +2 -2
  166. package/.next/server/chunks/[root-of-the-server]__67fc5766._.js +3 -0
  167. package/.next/server/chunks/[root-of-the-server]__67fc5766._.js.map +1 -0
  168. package/.next/server/chunks/[root-of-the-server]__73d016a0._.js +24 -7
  169. package/.next/server/chunks/[root-of-the-server]__73d016a0._.js.map +1 -1
  170. package/.next/server/chunks/{[root-of-the-server]__a0a8fb65._.js → [root-of-the-server]__7da508f8._.js} +2 -2
  171. package/.next/server/chunks/{[root-of-the-server]__2d66d57b._.js → [root-of-the-server]__9057030f._.js} +2 -2
  172. package/.next/server/chunks/{[root-of-the-server]__aa7a40ec._.js → [root-of-the-server]__943256c8._.js} +2 -2
  173. package/.next/server/chunks/{[root-of-the-server]__bacbf09e._.js → [root-of-the-server]__c4a478c1._.js} +2 -2
  174. package/.next/server/chunks/_next-internal_server_app_api_tasks_create_route_actions_8f1c32d2.js +3 -0
  175. package/.next/server/chunks/ssr/{[root-of-the-server]__85b679c6._.js → [root-of-the-server]__1940775f._.js} +2 -2
  176. package/.next/server/chunks/ssr/[root-of-the-server]__194bb43b._.js +3 -0
  177. package/.next/server/chunks/ssr/[root-of-the-server]__194bb43b._.js.map +1 -0
  178. package/.next/server/chunks/ssr/{[root-of-the-server]__575af34a._.js → [root-of-the-server]__22325e4c._.js} +2 -2
  179. package/.next/server/chunks/ssr/{[root-of-the-server]__575af34a._.js.map → [root-of-the-server]__22325e4c._.js.map} +1 -1
  180. package/.next/server/chunks/ssr/{[root-of-the-server]__346c6c2b._.js → [root-of-the-server]__2ea2afb2._.js} +2 -2
  181. package/.next/server/chunks/ssr/{[root-of-the-server]__346c6c2b._.js.map → [root-of-the-server]__2ea2afb2._.js.map} +1 -1
  182. package/.next/server/chunks/ssr/{[root-of-the-server]__0310d64d._.js → [root-of-the-server]__718d62a3._.js} +2 -2
  183. package/.next/server/chunks/ssr/{[root-of-the-server]__8bc686d2._.js → [root-of-the-server]__83981bf9._.js} +2 -2
  184. package/.next/server/chunks/ssr/[root-of-the-server]__8f3ac062._.js +3 -0
  185. package/.next/server/chunks/ssr/{[root-of-the-server]__4cd0cfe5._.js.map → [root-of-the-server]__8f3ac062._.js.map} +1 -1
  186. package/.next/server/chunks/ssr/[root-of-the-server]__a34f1253._.js +3 -0
  187. package/.next/server/chunks/ssr/[root-of-the-server]__a34f1253._.js.map +1 -0
  188. package/.next/server/chunks/ssr/{[root-of-the-server]__e44bed76._.js → [root-of-the-server]__a3f52a6e._.js} +2 -2
  189. package/.next/server/chunks/ssr/[root-of-the-server]__add7ce25._.js +3 -0
  190. package/.next/server/chunks/ssr/{[root-of-the-server]__7ccd69b2._.js.map → [root-of-the-server]__add7ce25._.js.map} +1 -1
  191. package/.next/server/chunks/ssr/{[root-of-the-server]__cf263b75._.js → [root-of-the-server]__c7aaf19e._.js} +2 -2
  192. package/.next/server/chunks/ssr/[root-of-the-server]__c9c67a6a._.js +3 -0
  193. package/.next/server/chunks/ssr/{[root-of-the-server]__38711845._.js.map → [root-of-the-server]__c9c67a6a._.js.map} +1 -1
  194. package/.next/server/chunks/ssr/[root-of-the-server]__ccbe4f15._.js +3 -0
  195. package/.next/server/chunks/ssr/{[root-of-the-server]__bdae2a0a._.js.map → [root-of-the-server]__ccbe4f15._.js.map} +1 -1
  196. package/.next/server/chunks/ssr/[root-of-the-server]__d9936fe0._.js +3 -0
  197. package/.next/server/chunks/ssr/{[root-of-the-server]__d23d6dd8._.js.map → [root-of-the-server]__d9936fe0._.js.map} +1 -1
  198. package/.next/server/chunks/ssr/[root-of-the-server]__ddf636f0._.js +3 -0
  199. package/.next/server/chunks/ssr/{[root-of-the-server]__c754fc94._.js.map → [root-of-the-server]__ddf636f0._.js.map} +1 -1
  200. package/.next/server/chunks/ssr/[root-of-the-server]__dfd81d0e._.js +3 -0
  201. package/.next/server/chunks/ssr/{[root-of-the-server]__ad4ab234._.js.map → [root-of-the-server]__dfd81d0e._.js.map} +1 -1
  202. package/.next/server/chunks/ssr/{[root-of-the-server]__59ae98dc._.js → [root-of-the-server]__e1cd2abc._.js} +2 -2
  203. package/.next/server/chunks/ssr/{[root-of-the-server]__59ae98dc._.js.map → [root-of-the-server]__e1cd2abc._.js.map} +1 -1
  204. package/.next/server/chunks/ssr/[root-of-the-server]__f322b1c8._.js +3 -0
  205. package/.next/server/chunks/ssr/{_04bd0614._.js → _02804d59._.js} +3 -3
  206. package/.next/server/chunks/ssr/_02804d59._.js.map +1 -0
  207. package/.next/server/chunks/ssr/_0ee1f47f._.js +1 -1
  208. package/.next/server/chunks/ssr/_0ee1f47f._.js.map +1 -1
  209. package/.next/server/chunks/ssr/{_07ff42fd._.js → _10c46cea._.js} +3 -3
  210. package/.next/server/chunks/ssr/_10c46cea._.js.map +1 -0
  211. package/.next/server/chunks/ssr/_15efe9a8._.js +3 -0
  212. package/.next/server/chunks/ssr/_15efe9a8._.js.map +1 -0
  213. package/.next/server/chunks/ssr/_46c690bf._.js +3 -0
  214. package/.next/server/chunks/ssr/_46c690bf._.js.map +1 -0
  215. package/.next/server/chunks/ssr/_50579c31._.js +3 -0
  216. package/.next/server/chunks/ssr/_50579c31._.js.map +1 -0
  217. package/.next/server/chunks/ssr/_5f998080._.js +4 -0
  218. package/.next/server/chunks/ssr/_5f998080._.js.map +1 -0
  219. package/.next/server/chunks/ssr/_692c5bbf._.js +1 -1
  220. package/.next/server/chunks/ssr/_692c5bbf._.js.map +1 -1
  221. package/.next/server/chunks/ssr/_acb63a7d._.js +1 -1
  222. package/.next/server/chunks/ssr/_acb63a7d._.js.map +1 -1
  223. package/.next/server/chunks/ssr/{_102fd465._.js → _af7c883c._.js} +2 -2
  224. package/.next/server/chunks/ssr/{_85e5ab03._.js → _afc4ce33._.js} +3 -3
  225. package/.next/server/chunks/ssr/_afc4ce33._.js.map +1 -0
  226. package/.next/server/chunks/ssr/{a5dda_next_dist_c6de1535._.js → _b1542c0f._.js} +3 -3
  227. package/.next/server/chunks/ssr/_b1542c0f._.js.map +1 -0
  228. package/.next/server/chunks/ssr/_b226a79a._.js +4 -0
  229. package/.next/server/chunks/ssr/_b226a79a._.js.map +1 -0
  230. package/.next/server/chunks/ssr/_c2cff164._.js +3 -0
  231. package/.next/server/chunks/ssr/_c2cff164._.js.map +1 -0
  232. package/.next/server/chunks/ssr/_d411515a._.js +1 -1
  233. package/.next/server/chunks/ssr/_d411515a._.js.map +1 -1
  234. package/.next/server/chunks/ssr/{_83c6a2ff._.js → _d7643298._.js} +3 -3
  235. package/.next/server/chunks/ssr/_d7643298._.js.map +1 -0
  236. package/.next/server/chunks/ssr/{_c4b742c5._.js → _f0a06393._.js} +3 -3
  237. package/.next/server/chunks/ssr/_f0a06393._.js.map +1 -0
  238. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_2139b88a._.js +3 -0
  239. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_2139b88a._.js.map +1 -0
  240. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_fd324e06._.js +3 -0
  241. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_fd324e06._.js.map +1 -0
  242. package/.next/server/chunks/ssr/a5dda_next_dist_63172c0f._.js +4 -0
  243. package/.next/server/chunks/ssr/{a5dda_next_dist_c6de1535._.js.map → a5dda_next_dist_63172c0f._.js.map} +1 -1
  244. package/.next/server/chunks/ssr/{a5dda_next_dist_esm_build_templates_app-page_d9140d2d.js → a5dda_next_dist_esm_build_templates_app-page_20fe1d07.js} +3 -3
  245. package/.next/server/chunks/ssr/a5dda_next_dist_esm_build_templates_app-page_20fe1d07.js.map +1 -0
  246. package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_e93914b8._.js → ec1cc_katex_dist_katex_mjs_1924e0db._.js} +1 -1
  247. package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_9f7bcf4a._.js → ec1cc_katex_dist_katex_mjs_1e92da96._.js} +1 -1
  248. package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_a9aca746._.js → ec1cc_katex_dist_katex_mjs_872ed7f8._.js} +1 -1
  249. package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_e7b66387._.js → ec1cc_katex_dist_katex_mjs_c6b5470c._.js} +1 -1
  250. package/.next/server/chunks/ssr/ec1cc_katex_dist_katex_mjs_c6b5470c._.js.map +1 -0
  251. package/.next/server/chunks/ssr/{node_modules__pnpm_9cdea683._.js → node_modules__pnpm_00fba959._.js} +1 -1
  252. package/.next/server/chunks/ssr/node_modules__pnpm_01f5d9da._.js +3 -0
  253. package/.next/server/chunks/ssr/{node_modules__pnpm_44b70609._.js.map → node_modules__pnpm_01f5d9da._.js.map} +1 -1
  254. package/.next/server/chunks/ssr/{node_modules__pnpm_8b3ed63a._.js → node_modules__pnpm_0ae7984c._.js} +2 -2
  255. package/.next/server/chunks/ssr/{node_modules__pnpm_60fef38e._.js → node_modules__pnpm_0b2a59a5._.js} +2 -2
  256. package/.next/server/chunks/ssr/{node_modules__pnpm_70a08cdf._.js → node_modules__pnpm_0b403dbf._.js} +1 -1
  257. package/.next/server/chunks/ssr/{node_modules__pnpm_8c13bdb7._.js → node_modules__pnpm_0dc85bd5._.js} +1 -1
  258. package/.next/server/chunks/ssr/{node_modules__pnpm_ba838a36._.js → node_modules__pnpm_0f315216._.js} +1 -1
  259. package/.next/server/chunks/ssr/{node_modules__pnpm_0322e068._.js → node_modules__pnpm_0fcc2ade._.js} +1 -1
  260. package/.next/server/chunks/ssr/{node_modules__pnpm_df7dcb26._.js → node_modules__pnpm_11602273._.js} +1 -1
  261. package/.next/server/chunks/ssr/{node_modules__pnpm_5c59b1ad._.js → node_modules__pnpm_166528e5._.js} +1 -1
  262. package/.next/server/chunks/ssr/{node_modules__pnpm_b6b9de46._.js → node_modules__pnpm_1b6418c7._.js} +1 -1
  263. package/.next/server/chunks/ssr/node_modules__pnpm_20308a0b._.js +7 -0
  264. package/.next/server/chunks/ssr/node_modules__pnpm_20308a0b._.js.map +1 -0
  265. package/.next/server/chunks/ssr/{node_modules__pnpm_39f460e8._.js → node_modules__pnpm_203e2ae6._.js} +1 -1
  266. package/.next/server/chunks/ssr/{node_modules__pnpm_d75e5d41._.js → node_modules__pnpm_20667837._.js} +2 -2
  267. package/.next/server/chunks/ssr/{node_modules__pnpm_3f2cce74._.js → node_modules__pnpm_22b45ca3._.js} +1 -1
  268. package/.next/server/chunks/ssr/{node_modules__pnpm_8ba721df._.js → node_modules__pnpm_233a9948._.js} +2 -2
  269. package/.next/server/chunks/ssr/{node_modules__pnpm_2871fff4._.js → node_modules__pnpm_26c302ad._.js} +1 -1
  270. package/.next/server/chunks/ssr/{node_modules__pnpm_08cf1858._.js → node_modules__pnpm_28f5917a._.js} +1 -1
  271. package/.next/server/chunks/ssr/{node_modules__pnpm_790c3b2e._.js → node_modules__pnpm_29ef1122._.js} +1 -1
  272. package/.next/server/chunks/ssr/{node_modules__pnpm_7e98d14b._.js → node_modules__pnpm_2b433d26._.js} +1 -1
  273. package/.next/server/chunks/ssr/{node_modules__pnpm_72235a6a._.js → node_modules__pnpm_32dea2df._.js} +1 -1
  274. package/.next/server/chunks/ssr/{node_modules__pnpm_337eaf96._.js → node_modules__pnpm_36314152._.js} +1 -1
  275. package/.next/server/chunks/ssr/{node_modules__pnpm_9ce450a4._.js → node_modules__pnpm_383aee7b._.js} +1 -1
  276. package/.next/server/chunks/ssr/{node_modules__pnpm_8f8943af._.js → node_modules__pnpm_3f2da5a6._.js} +2 -2
  277. package/.next/server/chunks/ssr/{node_modules__pnpm_c402a901._.js → node_modules__pnpm_49f81544._.js} +1 -1
  278. package/.next/server/chunks/ssr/{node_modules__pnpm_b50ae8f6._.js → node_modules__pnpm_4d2bd21b._.js} +1 -1
  279. package/.next/server/chunks/ssr/{node_modules__pnpm_63a4a328._.js → node_modules__pnpm_4d5ddaac._.js} +1 -1
  280. package/.next/server/chunks/ssr/{node_modules__pnpm_42d2c2d2._.js → node_modules__pnpm_4f088d93._.js} +2 -2
  281. package/.next/server/chunks/ssr/{node_modules__pnpm_f77bb209._.js → node_modules__pnpm_5075b2c5._.js} +1 -1
  282. package/.next/server/chunks/ssr/{node_modules__pnpm_6a7ed592._.js → node_modules__pnpm_53135aed._.js} +1 -1
  283. package/.next/server/chunks/ssr/{node_modules__pnpm_1790069e._.js → node_modules__pnpm_55940107._.js} +1 -1
  284. package/.next/server/chunks/ssr/{node_modules__pnpm_423baddc._.js → node_modules__pnpm_5a66db81._.js} +1 -1
  285. package/.next/server/chunks/ssr/{node_modules__pnpm_3d378674._.js → node_modules__pnpm_660f6b48._.js} +2 -2
  286. package/.next/server/chunks/ssr/{node_modules__pnpm_36b5c2af._.js → node_modules__pnpm_678a023d._.js} +1 -1
  287. package/.next/server/chunks/ssr/{node_modules__pnpm_c39c9496._.js → node_modules__pnpm_69340952._.js} +1 -1
  288. package/.next/server/chunks/ssr/{node_modules__pnpm_1dce0d3b._.js → node_modules__pnpm_6a505c32._.js} +1 -1
  289. package/.next/server/chunks/ssr/node_modules__pnpm_6fee60be._.js +3 -0
  290. package/.next/server/chunks/ssr/node_modules__pnpm_6fee60be._.js.map +1 -0
  291. package/.next/server/chunks/ssr/{node_modules__pnpm_3dd8e608._.js → node_modules__pnpm_73f60ed3._.js} +1 -1
  292. package/.next/server/chunks/ssr/{node_modules__pnpm_87d282d9._.js → node_modules__pnpm_73fa56d9._.js} +2 -2
  293. package/.next/server/chunks/ssr/{node_modules__pnpm_45bf67c8._.js → node_modules__pnpm_7417f8a3._.js} +2 -2
  294. package/.next/server/chunks/ssr/{node_modules__pnpm_05da39c7._.js → node_modules__pnpm_74702239._.js} +2 -2
  295. package/.next/server/chunks/ssr/{node_modules__pnpm_928932b1._.js → node_modules__pnpm_76595790._.js} +1 -1
  296. package/.next/server/chunks/ssr/{node_modules__pnpm_8036c25f._.js → node_modules__pnpm_7688cd8b._.js} +1 -1
  297. package/.next/server/chunks/ssr/{node_modules__pnpm_06db4ba2._.js → node_modules__pnpm_77bef6b3._.js} +1 -1
  298. package/.next/server/chunks/ssr/{node_modules__pnpm_08922392._.js → node_modules__pnpm_7b9f7ded._.js} +2 -2
  299. package/.next/server/chunks/ssr/{node_modules__pnpm_c7ca55c9._.js → node_modules__pnpm_7bc6fb3f._.js} +1 -1
  300. package/.next/server/chunks/ssr/{node_modules__pnpm_e70a06f1._.js → node_modules__pnpm_7bebd190._.js} +1 -1
  301. package/.next/server/chunks/ssr/{node_modules__pnpm_b2c6ca72._.js → node_modules__pnpm_7cacc1cc._.js} +1 -1
  302. package/.next/server/chunks/ssr/{node_modules__pnpm_76204895._.js → node_modules__pnpm_7d6096d0._.js} +1 -1
  303. package/.next/server/chunks/ssr/{node_modules__pnpm_75846ac9._.js → node_modules__pnpm_810c12a3._.js} +1 -1
  304. package/.next/server/chunks/ssr/{node_modules__pnpm_3601c997._.js → node_modules__pnpm_917236c4._.js} +1 -1
  305. package/.next/server/chunks/ssr/{node_modules__pnpm_135db8bc._.js → node_modules__pnpm_958d62cb._.js} +2 -2
  306. package/.next/server/chunks/ssr/{node_modules__pnpm_5768848c._.js → node_modules__pnpm_97367937._.js} +2 -2
  307. package/.next/server/chunks/ssr/{node_modules__pnpm_d1c050d4._.js → node_modules__pnpm_993eff2d._.js} +1 -1
  308. package/.next/server/chunks/ssr/{node_modules__pnpm_016e62a5._.js → node_modules__pnpm_9bab8aaa._.js} +2 -2
  309. package/.next/server/chunks/ssr/{node_modules__pnpm_0c377643._.js → node_modules__pnpm_9d36940a._.js} +1 -1
  310. package/.next/server/chunks/ssr/{node_modules__pnpm_0d80282c._.js → node_modules__pnpm_9ddf8ec8._.js} +2 -2
  311. package/.next/server/chunks/ssr/{node_modules__pnpm_a23a1417._.js → node_modules__pnpm_9de6944e._.js} +1 -1
  312. package/.next/server/chunks/ssr/{node_modules__pnpm_227802dc._.js → node_modules__pnpm_9ed86539._.js} +1 -1
  313. package/.next/server/chunks/ssr/{node_modules__pnpm_c278eaac._.js → node_modules__pnpm_a216f966._.js} +2 -2
  314. package/.next/server/chunks/ssr/{node_modules__pnpm_754137d0._.js → node_modules__pnpm_a23053e0._.js} +1 -1
  315. package/.next/server/chunks/ssr/{node_modules__pnpm_7ca85e0d._.js → node_modules__pnpm_a2c4f3d7._.js} +1 -1
  316. package/.next/server/chunks/ssr/{node_modules__pnpm_b18e7d84._.js → node_modules__pnpm_a3c866a4._.js} +1 -1
  317. package/.next/server/chunks/ssr/{node_modules__pnpm_2e011da0._.js → node_modules__pnpm_aa25e76f._.js} +1 -1
  318. package/.next/server/chunks/ssr/{node_modules__pnpm_91a9fe44._.js → node_modules__pnpm_aa53a759._.js} +2 -2
  319. package/.next/server/chunks/ssr/{node_modules__pnpm_1c623592._.js → node_modules__pnpm_ae8e01c6._.js} +1 -1
  320. package/.next/server/chunks/ssr/{node_modules__pnpm_3394b2c5._.js → node_modules__pnpm_aebdd762._.js} +1 -1
  321. package/.next/server/chunks/ssr/{node_modules__pnpm_4d03e476._.js → node_modules__pnpm_af29ab68._.js} +2 -2
  322. package/.next/server/chunks/ssr/{node_modules__pnpm_d6cd0cb1._.js → node_modules__pnpm_b28ba463._.js} +2 -2
  323. package/.next/server/chunks/ssr/{node_modules__pnpm_f505d304._.js → node_modules__pnpm_b4adc2e7._.js} +1 -1
  324. package/.next/server/chunks/ssr/{node_modules__pnpm_75690281._.js → node_modules__pnpm_b4bf1729._.js} +2 -2
  325. package/.next/server/chunks/ssr/{node_modules__pnpm_a4a74805._.js → node_modules__pnpm_b75e6868._.js} +2 -2
  326. package/.next/server/chunks/ssr/{node_modules__pnpm_4cc41a2c._.js → node_modules__pnpm_bc76cc53._.js} +1 -1
  327. package/.next/server/chunks/ssr/{node_modules__pnpm_140ed2b5._.js → node_modules__pnpm_bcd2eb3a._.js} +1 -1
  328. package/.next/server/chunks/ssr/{node_modules__pnpm_85de6da6._.js → node_modules__pnpm_c1b02576._.js} +1 -1
  329. package/.next/server/chunks/ssr/{node_modules__pnpm_8a0f76d5._.js → node_modules__pnpm_c1b70c63._.js} +1 -1
  330. package/.next/server/chunks/ssr/{node_modules__pnpm_7de47ba7._.js → node_modules__pnpm_c320dcf5._.js} +1 -1
  331. package/.next/server/chunks/ssr/{node_modules__pnpm_67f40799._.js → node_modules__pnpm_c4d0e703._.js} +1 -1
  332. package/.next/server/chunks/ssr/{node_modules__pnpm_f6f51e7a._.js → node_modules__pnpm_c57f91df._.js} +1 -1
  333. package/.next/server/chunks/ssr/{node_modules__pnpm_55b7a1cf._.js → node_modules__pnpm_c598b48c._.js} +2 -2
  334. package/.next/server/chunks/ssr/{node_modules__pnpm_0631ec86._.js → node_modules__pnpm_c683995e._.js} +2 -2
  335. package/.next/server/chunks/ssr/{node_modules__pnpm_db2dceff._.js → node_modules__pnpm_c6a3a5ee._.js} +1 -1
  336. package/.next/server/chunks/ssr/{node_modules__pnpm_240c58bb._.js → node_modules__pnpm_c8929f6f._.js} +2 -2
  337. package/.next/server/chunks/ssr/{node_modules__pnpm_aec9b3d2._.js → node_modules__pnpm_c98f0170._.js} +2 -2
  338. package/.next/server/chunks/ssr/{node_modules__pnpm_96c7344a._.js → node_modules__pnpm_cf36446c._.js} +2 -2
  339. package/.next/server/chunks/ssr/{node_modules__pnpm_93144bce._.js → node_modules__pnpm_cf44f5d7._.js} +1 -1
  340. package/.next/server/chunks/ssr/{node_modules__pnpm_7a101d07._.js → node_modules__pnpm_d10d6e8f._.js} +1 -1
  341. package/.next/server/chunks/ssr/{node_modules__pnpm_076b3258._.js → node_modules__pnpm_d237d54b._.js} +2 -2
  342. package/.next/server/chunks/ssr/{node_modules__pnpm_688ab9b4._.js → node_modules__pnpm_d2ff1199._.js} +1 -1
  343. package/.next/server/chunks/ssr/{node_modules__pnpm_4edcc2cf._.js → node_modules__pnpm_d58c5c9c._.js} +1 -1
  344. package/.next/server/chunks/ssr/{node_modules__pnpm_6c9a5a96._.js → node_modules__pnpm_d65a8ec6._.js} +2 -2
  345. package/.next/server/chunks/ssr/{node_modules__pnpm_33344533._.js → node_modules__pnpm_db9521f3._.js} +2 -2
  346. package/.next/server/chunks/ssr/{node_modules__pnpm_ebfee6f4._.js → node_modules__pnpm_e07e25a1._.js} +1 -1
  347. package/.next/server/chunks/ssr/{node_modules__pnpm_07f377f7._.js → node_modules__pnpm_e084e8b5._.js} +2 -2
  348. package/.next/server/chunks/ssr/{node_modules__pnpm_6947736b._.js → node_modules__pnpm_e7e16c44._.js} +1 -1
  349. package/.next/server/chunks/ssr/{node_modules__pnpm_00962046._.js → node_modules__pnpm_e87f4c8f._.js} +1 -1
  350. package/.next/server/chunks/ssr/{node_modules__pnpm_cd59b8c6._.js → node_modules__pnpm_ee9378af._.js} +2 -2
  351. package/.next/server/chunks/ssr/{node_modules__pnpm_19e8c8a7._.js → node_modules__pnpm_ef18e708._.js} +1 -1
  352. package/.next/server/chunks/ssr/{node_modules__pnpm_a714825b._.js → node_modules__pnpm_ef613ec1._.js} +1 -1
  353. package/.next/server/chunks/ssr/{node_modules__pnpm_2b6ac74b._.js → node_modules__pnpm_f3d5816a._.js} +1 -1
  354. package/.next/server/chunks/ssr/{node_modules__pnpm_9927b752._.js → node_modules__pnpm_f75286f3._.js} +1 -1
  355. package/.next/server/chunks/ssr/{node_modules__pnpm_474a3a70._.js → node_modules__pnpm_f952589a._.js} +2 -2
  356. package/.next/server/chunks/ssr/{node_modules__pnpm_fa1f464c._.js → node_modules__pnpm_fb5a6095._.js} +1 -1
  357. package/.next/server/chunks/ssr/src_app_(app)_error_tsx_8b5c3e3b._.js +3 -0
  358. package/.next/server/chunks/ssr/src_app_(app)_error_tsx_8b5c3e3b._.js.map +1 -0
  359. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_752c26e2._.js +1 -1
  360. package/.next/server/chunks/ssr/src_app_(app)_settings_page_tsx_752c26e2._.js.map +1 -1
  361. package/.next/server/chunks/ssr/src_app_(app)_setup_page_tsx_effb3116._.js +1 -1
  362. package/.next/server/chunks/ssr/src_app_(app)_setup_page_tsx_effb3116._.js.map +1 -1
  363. package/.next/server/chunks/ssr/src_app_global-error_tsx_aa661ba4._.js +3 -0
  364. package/.next/server/chunks/ssr/src_app_global-error_tsx_aa661ba4._.js.map +1 -0
  365. package/.next/server/chunks/ssr/src_components_docs_MarkdownRenderer_tsx_c2823695._.js +2 -2
  366. package/.next/server/chunks/ssr/src_components_docs_MarkdownRenderer_tsx_c2823695._.js.map +1 -1
  367. package/.next/server/chunks/ssr/src_components_ui_scroll-area_tsx_3edfbcee._.js +3 -0
  368. package/.next/server/chunks/ssr/src_components_ui_scroll-area_tsx_3edfbcee._.js.map +1 -0
  369. package/.next/server/middleware-build-manifest.js +3 -3
  370. package/.next/server/pages/404.html +1 -1
  371. package/.next/server/pages/500.html +2 -2
  372. package/.next/server/server-reference-manifest.js +1 -1
  373. package/.next/server/server-reference-manifest.json +1 -1
  374. package/.next/static/chunks/0a23222890789fc7.js +1 -0
  375. package/.next/static/chunks/{fcc2b1530d73e61e.js → 13bb47148aab2650.js} +3 -3
  376. package/.next/static/chunks/260957bb921413ce.js +4 -0
  377. package/.next/static/chunks/26c0edacf913d566.js +1 -0
  378. package/.next/static/chunks/37e7fffb0c3f808a.js +1 -0
  379. package/.next/static/chunks/{a8d5f5dc2688fe30.js → 4b85895b71381fe3.js} +1 -1
  380. package/.next/static/chunks/4c61fab7712ab14c.js +1 -0
  381. package/.next/static/chunks/58191ebe3f737b95.js +10 -0
  382. package/.next/static/chunks/{db20ec18c9fde107.js → 61aeba246e853119.js} +1 -1
  383. package/.next/static/chunks/622d4f9dd738a19e.js +5 -0
  384. package/.next/static/chunks/656421e1c8420066.js +1 -0
  385. package/.next/static/chunks/{452e1bb12e7f0b85.js → 76dd41a0a6e00541.js} +3 -3
  386. package/.next/static/chunks/88a9c5878c58c4c7.js +1 -0
  387. package/.next/static/chunks/918b80a98b47faa7.js +1 -0
  388. package/.next/static/chunks/937e067c90728448.js +21 -0
  389. package/.next/static/chunks/9ec5cc6e82dc4c95.js +1 -0
  390. package/.next/static/chunks/ab91a04173b72e7f.css +1 -0
  391. package/.next/static/chunks/{25d2e746e06b38ba.js → c5cf10f92eba82e6.js} +2 -2
  392. package/.next/static/chunks/e9233bff3572a5ae.js +1 -0
  393. package/.next/static/chunks/{turbopack-2835ad6e71df73d8.js → turbopack-d9f1831e5abe8b4e.js} +1 -1
  394. package/LICENSE +21 -0
  395. package/README.md +260 -167
  396. package/package.json +6 -2
  397. package/.next/server/chunks/[root-of-the-server]__dfd36dc0._.js +0 -3
  398. package/.next/server/chunks/ssr/[root-of-the-server]__38711845._.js +0 -3
  399. package/.next/server/chunks/ssr/[root-of-the-server]__4cd0cfe5._.js +0 -3
  400. package/.next/server/chunks/ssr/[root-of-the-server]__7ccd69b2._.js +0 -3
  401. package/.next/server/chunks/ssr/[root-of-the-server]__8edfd41f._.js +0 -3
  402. package/.next/server/chunks/ssr/[root-of-the-server]__93c50d95._.js +0 -3
  403. package/.next/server/chunks/ssr/[root-of-the-server]__93c50d95._.js.map +0 -1
  404. package/.next/server/chunks/ssr/[root-of-the-server]__ad4ab234._.js +0 -3
  405. package/.next/server/chunks/ssr/[root-of-the-server]__bdae2a0a._.js +0 -3
  406. package/.next/server/chunks/ssr/[root-of-the-server]__c754fc94._.js +0 -3
  407. package/.next/server/chunks/ssr/[root-of-the-server]__d23d6dd8._.js +0 -3
  408. package/.next/server/chunks/ssr/_0324be5b._.js +0 -4
  409. package/.next/server/chunks/ssr/_0324be5b._.js.map +0 -1
  410. package/.next/server/chunks/ssr/_04bd0614._.js.map +0 -1
  411. package/.next/server/chunks/ssr/_07ff42fd._.js.map +0 -1
  412. package/.next/server/chunks/ssr/_189227ea._.js +0 -3
  413. package/.next/server/chunks/ssr/_189227ea._.js.map +0 -1
  414. package/.next/server/chunks/ssr/_39d9968d._.js +0 -4
  415. package/.next/server/chunks/ssr/_39d9968d._.js.map +0 -1
  416. package/.next/server/chunks/ssr/_7b129868._.js +0 -4
  417. package/.next/server/chunks/ssr/_7b129868._.js.map +0 -1
  418. package/.next/server/chunks/ssr/_83c6a2ff._.js.map +0 -1
  419. package/.next/server/chunks/ssr/_85e5ab03._.js.map +0 -1
  420. package/.next/server/chunks/ssr/_9f1b4c51._.js +0 -3
  421. package/.next/server/chunks/ssr/_9f1b4c51._.js.map +0 -1
  422. package/.next/server/chunks/ssr/_b4c946f7._.js +0 -7
  423. package/.next/server/chunks/ssr/_b4c946f7._.js.map +0 -1
  424. package/.next/server/chunks/ssr/_c4b742c5._.js.map +0 -1
  425. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_b0ef93f6._.js +0 -3
  426. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_b0ef93f6._.js.map +0 -1
  427. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_folder_de463b3c.js +0 -3
  428. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_folder_de463b3c.js.map +0 -1
  429. package/.next/server/chunks/ssr/a5dda_next_dist_client_components_builtin_global-error_88955b9a.js +0 -3
  430. package/.next/server/chunks/ssr/a5dda_next_dist_client_components_builtin_global-error_88955b9a.js.map +0 -1
  431. package/.next/server/chunks/ssr/a5dda_next_dist_esm_build_templates_app-page_d9140d2d.js.map +0 -1
  432. package/.next/server/chunks/ssr/node_modules__pnpm_44b70609._.js +0 -3
  433. package/.next/server/chunks/ssr/node_modules__pnpm_9e807a6c._.js +0 -3
  434. package/.next/server/chunks/ssr/node_modules__pnpm_9e807a6c._.js.map +0 -1
  435. package/.next/static/chunks/13bdd4e22dd90816.js +0 -1
  436. package/.next/static/chunks/31fae4c58073753b.js +0 -1
  437. package/.next/static/chunks/429961c8e82cfbcb.css +0 -1
  438. package/.next/static/chunks/5066c1dec89e3cb6.js +0 -1
  439. package/.next/static/chunks/519aa8080f20453e.js +0 -10
  440. package/.next/static/chunks/6f01f5fee0eb2f66.js +0 -1
  441. package/.next/static/chunks/825ae09010d35407.js +0 -5
  442. package/.next/static/chunks/aad224af68aad5fb.js +0 -4
  443. package/.next/static/chunks/d0d8f8e7eb4550b4.js +0 -1
  444. package/.next/static/chunks/dc6d4ccd3cd8471c.js +0 -21
  445. package/.next/static/chunks/e6164bb2a2fa9b00.js +0 -1
  446. /package/.next/server/chunks/{[root-of-the-server]__54666fd5._.js.map → [root-of-the-server]__03edd537._.js.map} +0 -0
  447. /package/.next/server/chunks/{[root-of-the-server]__e27393ea._.js.map → [root-of-the-server]__1329130b._.js.map} +0 -0
  448. /package/.next/server/chunks/{[root-of-the-server]__dfd36dc0._.js.map → [root-of-the-server]__222d0fad._.js.map} +0 -0
  449. /package/.next/server/chunks/{[root-of-the-server]__b4da5bcd._.js.map → [root-of-the-server]__50974822._.js.map} +0 -0
  450. /package/.next/server/chunks/{[root-of-the-server]__a0a8fb65._.js.map → [root-of-the-server]__7da508f8._.js.map} +0 -0
  451. /package/.next/server/chunks/{[root-of-the-server]__2d66d57b._.js.map → [root-of-the-server]__9057030f._.js.map} +0 -0
  452. /package/.next/server/chunks/{[root-of-the-server]__aa7a40ec._.js.map → [root-of-the-server]__943256c8._.js.map} +0 -0
  453. /package/.next/server/chunks/{[root-of-the-server]__bacbf09e._.js.map → [root-of-the-server]__c4a478c1._.js.map} +0 -0
  454. /package/.next/server/chunks/{ssr/[root-of-the-server]__8edfd41f._.js.map → _next-internal_server_app_api_tasks_create_route_actions_8f1c32d2.js.map} +0 -0
  455. /package/.next/server/chunks/ssr/{[root-of-the-server]__0310d64d._.js.map → [root-of-the-server]__1940775f._.js.map} +0 -0
  456. /package/.next/server/chunks/ssr/{[root-of-the-server]__85b679c6._.js.map → [root-of-the-server]__718d62a3._.js.map} +0 -0
  457. /package/.next/server/chunks/ssr/{[root-of-the-server]__8bc686d2._.js.map → [root-of-the-server]__83981bf9._.js.map} +0 -0
  458. /package/.next/server/chunks/ssr/{[root-of-the-server]__e44bed76._.js.map → [root-of-the-server]__a3f52a6e._.js.map} +0 -0
  459. /package/.next/server/chunks/ssr/{[root-of-the-server]__cf263b75._.js.map → [root-of-the-server]__c7aaf19e._.js.map} +0 -0
  460. /package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_9f7bcf4a._.js.map → [root-of-the-server]__f322b1c8._.js.map} +0 -0
  461. /package/.next/server/chunks/ssr/{_102fd465._.js.map → _af7c883c._.js.map} +0 -0
  462. /package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_a9aca746._.js.map → ec1cc_katex_dist_katex_mjs_1924e0db._.js.map} +0 -0
  463. /package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_e7b66387._.js.map → ec1cc_katex_dist_katex_mjs_1e92da96._.js.map} +0 -0
  464. /package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_e93914b8._.js.map → ec1cc_katex_dist_katex_mjs_872ed7f8._.js.map} +0 -0
  465. /package/.next/server/chunks/ssr/{node_modules__pnpm_0322e068._.js.map → node_modules__pnpm_00fba959._.js.map} +0 -0
  466. /package/.next/server/chunks/ssr/{node_modules__pnpm_55b7a1cf._.js.map → node_modules__pnpm_0ae7984c._.js.map} +0 -0
  467. /package/.next/server/chunks/ssr/{node_modules__pnpm_0631ec86._.js.map → node_modules__pnpm_0b2a59a5._.js.map} +0 -0
  468. /package/.next/server/chunks/ssr/{node_modules__pnpm_63a4a328._.js.map → node_modules__pnpm_0b403dbf._.js.map} +0 -0
  469. /package/.next/server/chunks/ssr/{node_modules__pnpm_2b6ac74b._.js.map → node_modules__pnpm_0dc85bd5._.js.map} +0 -0
  470. /package/.next/server/chunks/ssr/{node_modules__pnpm_19e8c8a7._.js.map → node_modules__pnpm_0f315216._.js.map} +0 -0
  471. /package/.next/server/chunks/ssr/{node_modules__pnpm_39f460e8._.js.map → node_modules__pnpm_0fcc2ade._.js.map} +0 -0
  472. /package/.next/server/chunks/ssr/{node_modules__pnpm_3601c997._.js.map → node_modules__pnpm_11602273._.js.map} +0 -0
  473. /package/.next/server/chunks/ssr/{node_modules__pnpm_1c623592._.js.map → node_modules__pnpm_166528e5._.js.map} +0 -0
  474. /package/.next/server/chunks/ssr/{node_modules__pnpm_8c13bdb7._.js.map → node_modules__pnpm_1b6418c7._.js.map} +0 -0
  475. /package/.next/server/chunks/ssr/{node_modules__pnpm_3dd8e608._.js.map → node_modules__pnpm_203e2ae6._.js.map} +0 -0
  476. /package/.next/server/chunks/ssr/{node_modules__pnpm_05da39c7._.js.map → node_modules__pnpm_20667837._.js.map} +0 -0
  477. /package/.next/server/chunks/ssr/{node_modules__pnpm_1dce0d3b._.js.map → node_modules__pnpm_22b45ca3._.js.map} +0 -0
  478. /package/.next/server/chunks/ssr/{node_modules__pnpm_42d2c2d2._.js.map → node_modules__pnpm_233a9948._.js.map} +0 -0
  479. /package/.next/server/chunks/ssr/{node_modules__pnpm_2871fff4._.js.map → node_modules__pnpm_26c302ad._.js.map} +0 -0
  480. /package/.next/server/chunks/ssr/{node_modules__pnpm_08cf1858._.js.map → node_modules__pnpm_28f5917a._.js.map} +0 -0
  481. /package/.next/server/chunks/ssr/{node_modules__pnpm_0c377643._.js.map → node_modules__pnpm_29ef1122._.js.map} +0 -0
  482. /package/.next/server/chunks/ssr/{node_modules__pnpm_227802dc._.js.map → node_modules__pnpm_2b433d26._.js.map} +0 -0
  483. /package/.next/server/chunks/ssr/{node_modules__pnpm_5c59b1ad._.js.map → node_modules__pnpm_32dea2df._.js.map} +0 -0
  484. /package/.next/server/chunks/ssr/{node_modules__pnpm_00962046._.js.map → node_modules__pnpm_36314152._.js.map} +0 -0
  485. /package/.next/server/chunks/ssr/{node_modules__pnpm_790c3b2e._.js.map → node_modules__pnpm_383aee7b._.js.map} +0 -0
  486. /package/.next/server/chunks/ssr/{node_modules__pnpm_87d282d9._.js.map → node_modules__pnpm_3f2da5a6._.js.map} +0 -0
  487. /package/.next/server/chunks/ssr/{node_modules__pnpm_3f2cce74._.js.map → node_modules__pnpm_49f81544._.js.map} +0 -0
  488. /package/.next/server/chunks/ssr/{node_modules__pnpm_7a101d07._.js.map → node_modules__pnpm_4d2bd21b._.js.map} +0 -0
  489. /package/.next/server/chunks/ssr/{node_modules__pnpm_6a7ed592._.js.map → node_modules__pnpm_4d5ddaac._.js.map} +0 -0
  490. /package/.next/server/chunks/ssr/{node_modules__pnpm_45bf67c8._.js.map → node_modules__pnpm_4f088d93._.js.map} +0 -0
  491. /package/.next/server/chunks/ssr/{node_modules__pnpm_b50ae8f6._.js.map → node_modules__pnpm_5075b2c5._.js.map} +0 -0
  492. /package/.next/server/chunks/ssr/{node_modules__pnpm_70a08cdf._.js.map → node_modules__pnpm_53135aed._.js.map} +0 -0
  493. /package/.next/server/chunks/ssr/{node_modules__pnpm_1790069e._.js.map → node_modules__pnpm_55940107._.js.map} +0 -0
  494. /package/.next/server/chunks/ssr/{node_modules__pnpm_423baddc._.js.map → node_modules__pnpm_5a66db81._.js.map} +0 -0
  495. /package/.next/server/chunks/ssr/{node_modules__pnpm_07f377f7._.js.map → node_modules__pnpm_660f6b48._.js.map} +0 -0
  496. /package/.next/server/chunks/ssr/{node_modules__pnpm_36b5c2af._.js.map → node_modules__pnpm_678a023d._.js.map} +0 -0
  497. /package/.next/server/chunks/ssr/{node_modules__pnpm_140ed2b5._.js.map → node_modules__pnpm_69340952._.js.map} +0 -0
  498. /package/.next/server/chunks/ssr/{node_modules__pnpm_c402a901._.js.map → node_modules__pnpm_6a505c32._.js.map} +0 -0
  499. /package/.next/server/chunks/ssr/{node_modules__pnpm_9cdea683._.js.map → node_modules__pnpm_73f60ed3._.js.map} +0 -0
  500. /package/.next/server/chunks/ssr/{node_modules__pnpm_8b3ed63a._.js.map → node_modules__pnpm_73fa56d9._.js.map} +0 -0
  501. /package/.next/server/chunks/ssr/{node_modules__pnpm_8ba721df._.js.map → node_modules__pnpm_7417f8a3._.js.map} +0 -0
  502. /package/.next/server/chunks/ssr/{node_modules__pnpm_240c58bb._.js.map → node_modules__pnpm_74702239._.js.map} +0 -0
  503. /package/.next/server/chunks/ssr/{node_modules__pnpm_337eaf96._.js.map → node_modules__pnpm_76595790._.js.map} +0 -0
  504. /package/.next/server/chunks/ssr/{node_modules__pnpm_8036c25f._.js.map → node_modules__pnpm_7688cd8b._.js.map} +0 -0
  505. /package/.next/server/chunks/ssr/{node_modules__pnpm_06db4ba2._.js.map → node_modules__pnpm_77bef6b3._.js.map} +0 -0
  506. /package/.next/server/chunks/ssr/{node_modules__pnpm_08922392._.js.map → node_modules__pnpm_7b9f7ded._.js.map} +0 -0
  507. /package/.next/server/chunks/ssr/{node_modules__pnpm_c7ca55c9._.js.map → node_modules__pnpm_7bc6fb3f._.js.map} +0 -0
  508. /package/.next/server/chunks/ssr/{node_modules__pnpm_7de47ba7._.js.map → node_modules__pnpm_7bebd190._.js.map} +0 -0
  509. /package/.next/server/chunks/ssr/{node_modules__pnpm_72235a6a._.js.map → node_modules__pnpm_7cacc1cc._.js.map} +0 -0
  510. /package/.next/server/chunks/ssr/{node_modules__pnpm_4edcc2cf._.js.map → node_modules__pnpm_7d6096d0._.js.map} +0 -0
  511. /package/.next/server/chunks/ssr/{node_modules__pnpm_75846ac9._.js.map → node_modules__pnpm_810c12a3._.js.map} +0 -0
  512. /package/.next/server/chunks/ssr/{node_modules__pnpm_df7dcb26._.js.map → node_modules__pnpm_917236c4._.js.map} +0 -0
  513. /package/.next/server/chunks/ssr/{node_modules__pnpm_135db8bc._.js.map → node_modules__pnpm_958d62cb._.js.map} +0 -0
  514. /package/.next/server/chunks/ssr/{node_modules__pnpm_5768848c._.js.map → node_modules__pnpm_97367937._.js.map} +0 -0
  515. /package/.next/server/chunks/ssr/{node_modules__pnpm_b6b9de46._.js.map → node_modules__pnpm_993eff2d._.js.map} +0 -0
  516. /package/.next/server/chunks/ssr/{node_modules__pnpm_016e62a5._.js.map → node_modules__pnpm_9bab8aaa._.js.map} +0 -0
  517. /package/.next/server/chunks/ssr/{node_modules__pnpm_9ce450a4._.js.map → node_modules__pnpm_9d36940a._.js.map} +0 -0
  518. /package/.next/server/chunks/ssr/{node_modules__pnpm_076b3258._.js.map → node_modules__pnpm_9ddf8ec8._.js.map} +0 -0
  519. /package/.next/server/chunks/ssr/{node_modules__pnpm_a23a1417._.js.map → node_modules__pnpm_9de6944e._.js.map} +0 -0
  520. /package/.next/server/chunks/ssr/{node_modules__pnpm_7e98d14b._.js.map → node_modules__pnpm_9ed86539._.js.map} +0 -0
  521. /package/.next/server/chunks/ssr/{node_modules__pnpm_474a3a70._.js.map → node_modules__pnpm_a216f966._.js.map} +0 -0
  522. /package/.next/server/chunks/ssr/{node_modules__pnpm_754137d0._.js.map → node_modules__pnpm_a23053e0._.js.map} +0 -0
  523. /package/.next/server/chunks/ssr/{node_modules__pnpm_7ca85e0d._.js.map → node_modules__pnpm_a2c4f3d7._.js.map} +0 -0
  524. /package/.next/server/chunks/ssr/{node_modules__pnpm_b18e7d84._.js.map → node_modules__pnpm_a3c866a4._.js.map} +0 -0
  525. /package/.next/server/chunks/ssr/{node_modules__pnpm_2e011da0._.js.map → node_modules__pnpm_aa25e76f._.js.map} +0 -0
  526. /package/.next/server/chunks/ssr/{node_modules__pnpm_91a9fe44._.js.map → node_modules__pnpm_aa53a759._.js.map} +0 -0
  527. /package/.next/server/chunks/ssr/{node_modules__pnpm_b2c6ca72._.js.map → node_modules__pnpm_ae8e01c6._.js.map} +0 -0
  528. /package/.next/server/chunks/ssr/{node_modules__pnpm_3394b2c5._.js.map → node_modules__pnpm_aebdd762._.js.map} +0 -0
  529. /package/.next/server/chunks/ssr/{node_modules__pnpm_0d80282c._.js.map → node_modules__pnpm_af29ab68._.js.map} +0 -0
  530. /package/.next/server/chunks/ssr/{node_modules__pnpm_c278eaac._.js.map → node_modules__pnpm_b28ba463._.js.map} +0 -0
  531. /package/.next/server/chunks/ssr/{node_modules__pnpm_f505d304._.js.map → node_modules__pnpm_b4adc2e7._.js.map} +0 -0
  532. /package/.next/server/chunks/ssr/{node_modules__pnpm_4d03e476._.js.map → node_modules__pnpm_b4bf1729._.js.map} +0 -0
  533. /package/.next/server/chunks/ssr/{node_modules__pnpm_a4a74805._.js.map → node_modules__pnpm_b75e6868._.js.map} +0 -0
  534. /package/.next/server/chunks/ssr/{node_modules__pnpm_4cc41a2c._.js.map → node_modules__pnpm_bc76cc53._.js.map} +0 -0
  535. /package/.next/server/chunks/ssr/{node_modules__pnpm_c39c9496._.js.map → node_modules__pnpm_bcd2eb3a._.js.map} +0 -0
  536. /package/.next/server/chunks/ssr/{node_modules__pnpm_76204895._.js.map → node_modules__pnpm_c1b02576._.js.map} +0 -0
  537. /package/.next/server/chunks/ssr/{node_modules__pnpm_8a0f76d5._.js.map → node_modules__pnpm_c1b70c63._.js.map} +0 -0
  538. /package/.next/server/chunks/ssr/{node_modules__pnpm_e70a06f1._.js.map → node_modules__pnpm_c320dcf5._.js.map} +0 -0
  539. /package/.next/server/chunks/ssr/{node_modules__pnpm_67f40799._.js.map → node_modules__pnpm_c4d0e703._.js.map} +0 -0
  540. /package/.next/server/chunks/ssr/{node_modules__pnpm_f6f51e7a._.js.map → node_modules__pnpm_c57f91df._.js.map} +0 -0
  541. /package/.next/server/chunks/ssr/{node_modules__pnpm_8f8943af._.js.map → node_modules__pnpm_c598b48c._.js.map} +0 -0
  542. /package/.next/server/chunks/ssr/{node_modules__pnpm_60fef38e._.js.map → node_modules__pnpm_c683995e._.js.map} +0 -0
  543. /package/.next/server/chunks/ssr/{node_modules__pnpm_db2dceff._.js.map → node_modules__pnpm_c6a3a5ee._.js.map} +0 -0
  544. /package/.next/server/chunks/ssr/{node_modules__pnpm_33344533._.js.map → node_modules__pnpm_c8929f6f._.js.map} +0 -0
  545. /package/.next/server/chunks/ssr/{node_modules__pnpm_aec9b3d2._.js.map → node_modules__pnpm_c98f0170._.js.map} +0 -0
  546. /package/.next/server/chunks/ssr/{node_modules__pnpm_96c7344a._.js.map → node_modules__pnpm_cf36446c._.js.map} +0 -0
  547. /package/.next/server/chunks/ssr/{node_modules__pnpm_93144bce._.js.map → node_modules__pnpm_cf44f5d7._.js.map} +0 -0
  548. /package/.next/server/chunks/ssr/{node_modules__pnpm_f77bb209._.js.map → node_modules__pnpm_d10d6e8f._.js.map} +0 -0
  549. /package/.next/server/chunks/ssr/{node_modules__pnpm_75690281._.js.map → node_modules__pnpm_d237d54b._.js.map} +0 -0
  550. /package/.next/server/chunks/ssr/{node_modules__pnpm_688ab9b4._.js.map → node_modules__pnpm_d2ff1199._.js.map} +0 -0
  551. /package/.next/server/chunks/ssr/{node_modules__pnpm_85de6da6._.js.map → node_modules__pnpm_d58c5c9c._.js.map} +0 -0
  552. /package/.next/server/chunks/ssr/{node_modules__pnpm_3d378674._.js.map → node_modules__pnpm_d65a8ec6._.js.map} +0 -0
  553. /package/.next/server/chunks/ssr/{node_modules__pnpm_d75e5d41._.js.map → node_modules__pnpm_db9521f3._.js.map} +0 -0
  554. /package/.next/server/chunks/ssr/{node_modules__pnpm_ebfee6f4._.js.map → node_modules__pnpm_e07e25a1._.js.map} +0 -0
  555. /package/.next/server/chunks/ssr/{node_modules__pnpm_6c9a5a96._.js.map → node_modules__pnpm_e084e8b5._.js.map} +0 -0
  556. /package/.next/server/chunks/ssr/{node_modules__pnpm_6947736b._.js.map → node_modules__pnpm_e7e16c44._.js.map} +0 -0
  557. /package/.next/server/chunks/ssr/{node_modules__pnpm_928932b1._.js.map → node_modules__pnpm_e87f4c8f._.js.map} +0 -0
  558. /package/.next/server/chunks/ssr/{node_modules__pnpm_cd59b8c6._.js.map → node_modules__pnpm_ee9378af._.js.map} +0 -0
  559. /package/.next/server/chunks/ssr/{node_modules__pnpm_ba838a36._.js.map → node_modules__pnpm_ef18e708._.js.map} +0 -0
  560. /package/.next/server/chunks/ssr/{node_modules__pnpm_a714825b._.js.map → node_modules__pnpm_ef613ec1._.js.map} +0 -0
  561. /package/.next/server/chunks/ssr/{node_modules__pnpm_d1c050d4._.js.map → node_modules__pnpm_f3d5816a._.js.map} +0 -0
  562. /package/.next/server/chunks/ssr/{node_modules__pnpm_9927b752._.js.map → node_modules__pnpm_f75286f3._.js.map} +0 -0
  563. /package/.next/server/chunks/ssr/{node_modules__pnpm_d6cd0cb1._.js.map → node_modules__pnpm_f952589a._.js.map} +0 -0
  564. /package/.next/server/chunks/ssr/{node_modules__pnpm_fa1f464c._.js.map → node_modules__pnpm_fb5a6095._.js.map} +0 -0
  565. /package/.next/static/{0O_zNn9bF-68gq5ePCg2r → 5YfD8cBCzJoKPTXc-Q0s5}/_buildManifest.js +0 -0
  566. /package/.next/static/{0O_zNn9bF-68gq5ePCg2r → 5YfD8cBCzJoKPTXc-Q0s5}/_clientMiddlewareManifest.json +0 -0
  567. /package/.next/static/{0O_zNn9bF-68gq5ePCg2r → 5YfD8cBCzJoKPTXc-Q0s5}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/setup/TemplateSelector.tsx","../../../../src/components/setup/BasicInfo.tsx","../../../../src/components/setup/TechStackInput.tsx","../../../../src/components/setup/TeamConventions.tsx","../../../../src/components/setup/GenerationPreview.tsx","../../../../src/components/setup/SetupWizard.tsx","../../../../src/app/%28app%29/setup/page.tsx","../../../../src/lib/tech-stacks.ts","../../../../src/lib/presets.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-left.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-down.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle-alert.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/database.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/server.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/workflow.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/building-2.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/calendar.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/git-branch.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/shield.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/sparkles.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/triangle-alert.ts"],"sourcesContent":["\"use client\";\n\nimport { useState } from \"react\";\nimport {\n Bot,\n FileText,\n Building2,\n Server,\n BookOpen,\n AlertTriangle,\n Calendar,\n Users,\n Check,\n GitBranch,\n Shield,\n Database,\n Code2,\n Workflow,\n List,\n type LucideIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport {\n TEMPLATES,\n type Template,\n type TemplateCategory,\n} from \"@/lib/templates\";\nimport { PRESETS } from \"@/lib/presets\";\n\nexport interface TemplateSelection {\n id: string;\n name: string;\n path: string;\n}\n\ninterface TemplateSelectorProps {\n selected: TemplateSelection[];\n onChange: (selected: TemplateSelection[]) => void;\n projectType?: string;\n}\n\nconst CATEGORY_DISPLAY_NAMES: Record<TemplateCategory, string> = {\n \"ai-agent\": \"AI Agent Config\",\n github: \"GitHub\",\n process: \"Process Docs\",\n technical: \"Technical Docs\",\n infrastructure: \"Infrastructure\",\n \"github-actions\": \"GitHub Actions\",\n \"code-quality\": \"Code Quality\",\n monitoring: \"Monitoring\",\n};\n\nconst CATEGORY_ICONS: Record<TemplateCategory, LucideIcon> = {\n \"ai-agent\": Bot,\n github: GitBranch,\n process: Workflow,\n technical: FileText,\n infrastructure: Server,\n \"github-actions\": Workflow,\n \"code-quality\": Check,\n monitoring: AlertTriangle,\n};\n\nconst TEMPLATE_ICONS: Partial<Record<string, LucideIcon>> = {\n \"claude-md\": Bot,\n \"agents-md\": Bot,\n \"gemini-md\": Bot,\n cursorrules: Code2,\n windsurfrules: Code2,\n \"copilot-instructions\": Bot,\n contributing: GitBranch,\n security: Shield,\n \"pr-template\": GitBranch,\n \"bug-report\": AlertTriangle,\n \"feature-request\": FileText,\n changelog: List,\n deployment: Workflow,\n testing: Check,\n glossary: BookOpen,\n prd: FileText,\n \"architecture-overview\": Building2,\n \"api-reference\": Server,\n runbook: BookOpen,\n adr: AlertTriangle,\n onboarding: Users,\n database: Database,\n openapi: Server,\n \"meeting-notes\": Calendar,\n blank: FileText,\n};\n\n// Group templates by category, preserving order of first appearance\nfunction groupByCategory(\n templates: Template[],\n): { category: TemplateCategory; displayName: string; items: Template[] }[] {\n const order: TemplateCategory[] = [];\n const map = new Map<TemplateCategory, Template[]>();\n\n for (const t of templates) {\n if (!map.has(t.category)) {\n order.push(t.category);\n map.set(t.category, []);\n }\n map.get(t.category)!.push(t);\n }\n\n return order.map((cat) => ({\n category: cat,\n displayName: CATEGORY_DISPLAY_NAMES[cat] ?? cat,\n items: map.get(cat)!,\n }));\n}\n\nconst GROUPED_TEMPLATES = groupByCategory(TEMPLATES);\n\ntype Tab = \"recommended\" | TemplateCategory;\n\nexport function TemplateSelector({\n selected,\n onChange,\n projectType,\n}: TemplateSelectorProps) {\n const [activeTab, setActiveTab] = useState<Tab>(\"recommended\");\n\n const isSelected = (id: string) => selected.some((s) => s.id === id);\n\n const toggle = (item: Template) => {\n if (isSelected(item.id)) {\n onChange(selected.filter((s) => s.id !== item.id));\n } else {\n onChange([\n ...selected,\n { id: item.id, name: item.name, path: item.defaultPath },\n ]);\n }\n };\n\n const selectAll = (category: TemplateCategory) => {\n const group = GROUPED_TEMPLATES.find((g) => g.category === category);\n if (!group) return;\n const allSelected = group.items.every((i) => isSelected(i.id));\n if (allSelected) {\n onChange(selected.filter((s) => !group.items.some((i) => i.id === s.id)));\n } else {\n const newSelected = [...selected];\n group.items.forEach((item) => {\n if (!isSelected(item.id)) {\n newSelected.push({\n id: item.id,\n name: item.name,\n path: item.defaultPath,\n });\n }\n });\n onChange(newSelected);\n }\n };\n\n const matchingPresets = PRESETS.filter(\n (p) =>\n p.projectTypes.length === 0 || p.projectTypes.includes(projectType ?? \"\"),\n );\n\n return (\n <div className=\"space-y-6\">\n <div>\n <h2 className=\"text-xl font-semibold text-txt mb-2\">\n Select Templates\n </h2>\n <p className=\"text-muted\">\n Choose which documentation files to generate for your project.\n </p>\n </div>\n\n {/* Tab bar */}\n <div className=\"flex gap-1 overflow-x-auto pb-2 border-b border-border\">\n <button\n onClick={() => setActiveTab(\"recommended\")}\n className={cn(\n \"px-3 py-1.5 text-sm rounded-md whitespace-nowrap transition-colors\",\n activeTab === \"recommended\"\n ? \"bg-accent text-white\"\n : \"text-muted hover:text-txt\",\n )}\n >\n ⭐ Recommended\n </button>\n {GROUPED_TEMPLATES.map((group) => (\n <button\n key={group.category}\n onClick={() => setActiveTab(group.category)}\n className={cn(\n \"px-3 py-1.5 text-sm rounded-md whitespace-nowrap transition-colors\",\n activeTab === group.category\n ? \"bg-accent text-white\"\n : \"text-muted hover:text-txt\",\n )}\n >\n {group.displayName}\n </button>\n ))}\n </div>\n\n {/* Recommended tab content */}\n {activeTab === \"recommended\" && (\n <div className=\"space-y-4\">\n {matchingPresets.length === 0 && (\n <p className=\"text-muted text-sm\">\n No presets match your project type. Select templates manually from\n the tabs above.\n </p>\n )}\n {matchingPresets.map((preset) => {\n const presetSelected = preset.templateIds.every((id) =>\n isSelected(id),\n );\n return (\n <div\n key={preset.id}\n className=\"p-4 rounded-lg border border-border hover:border-accent/50 transition-colors\"\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <div className=\"font-medium text-txt\">{preset.name}</div>\n <div className=\"text-sm text-muted mt-1\">\n {preset.description}\n </div>\n <div className=\"text-xs text-accent/70 mt-1\">\n {preset.templateIds.length} templates\n </div>\n </div>\n <button\n onClick={() => {\n const selections = preset.templateIds\n .map((id) => TEMPLATES.find((t) => t.id === id))\n .filter((t): t is Template => t !== undefined)\n .map((t) => ({\n id: t.id,\n name: t.name,\n path: t.defaultPath,\n }));\n onChange(selections);\n }}\n className={cn(\n \"shrink-0 px-3 py-1.5 text-sm rounded-lg border transition-colors\",\n presetSelected\n ? \"border-accent bg-accent/10 text-accent\"\n : \"border-border hover:border-accent text-txt\",\n )}\n >\n {presetSelected ? \"✓ Selected\" : \"Select bundle\"}\n </button>\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {/* Category tab content */}\n {activeTab !== \"recommended\" &&\n (() => {\n const group = GROUPED_TEMPLATES.find((g) => g.category === activeTab);\n if (!group) return null;\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-muted uppercase tracking-wider\">\n {group.displayName}\n </h3>\n <button\n onClick={() => selectAll(group.category)}\n className=\"text-xs text-accent hover:text-accent/80 transition-colors\"\n >\n {group.items.every((i) => isSelected(i.id))\n ? \"Deselect all\"\n : \"Select all\"}\n </button>\n </div>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-3\">\n {group.items.map((item) => {\n const Icon =\n TEMPLATE_ICONS[item.id] ?? CATEGORY_ICONS[item.category];\n const checked = isSelected(item.id);\n return (\n <button\n key={item.id}\n onClick={() => toggle(item)}\n className={cn(\n \"p-3 rounded-lg border text-left transition-all\",\n checked\n ? \"border-accent bg-accent/10\"\n : \"border-border hover:border-accent/50\",\n )}\n >\n <div className=\"flex items-start gap-2\">\n <div\n className={cn(\n \"w-8 h-8 rounded-lg flex items-center justify-center shrink-0\",\n checked ? \"bg-accent/20\" : \"bg-surface2\",\n )}\n >\n <Icon\n className={cn(\n \"w-4 h-4\",\n checked ? \"text-accent\" : \"text-muted\",\n )}\n />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-medium text-sm text-txt truncate\">\n {item.name}\n </div>\n <div className=\"text-xs text-muted truncate\">\n {item.description}\n </div>\n </div>\n {checked && (\n <Check className=\"w-4 h-4 text-accent shrink-0\" />\n )}\n </div>\n </button>\n );\n })}\n </div>\n </div>\n );\n })()}\n\n <div className=\"text-sm text-muted\">\n {selected.length} template{selected.length !== 1 ? \"s\" : \"\"} selected\n </div>\n </div>\n );\n}\n","\"use client\"\r\n\r\nimport { Input } from \"@/components/ui/input\"\r\nimport type { ProjectAnswers } from \"./ProjectQuestionnaire\"\r\n\r\ninterface BasicInfoProps {\r\n answers: ProjectAnswers\r\n onChange: (answers: ProjectAnswers) => void\r\n}\r\n\r\nconst PROJECT_TYPES = [\r\n { value: \"web-app\", label: \"Web Application\" },\r\n { value: \"api-backend\", label: \"API / Backend\" },\r\n { value: \"cli-tool\", label: \"CLI Tool\" },\r\n { value: \"library\", label: \"Library / SDK\" },\r\n { value: \"mobile-app\", label: \"Mobile App\" },\r\n { value: \"monorepo\", label: \"Monorepo\" },\r\n]\r\n\r\nexport function BasicInfo({ answers, onChange }: BasicInfoProps) {\r\n const update = (key: keyof ProjectAnswers, value: string) => {\r\n onChange({ ...answers, [key]: value })\r\n }\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n <div>\r\n <h2 className=\"text-xl font-semibold text-txt mb-2\">Basic Information</h2>\r\n <p className=\"text-muted\">Tell us about your project to customize the documentation.</p>\r\n </div>\r\n\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Project Name <span className=\"text-red-400\">*</span>\r\n </label>\r\n <Input\r\n value={answers.projectName}\r\n onChange={(e) => update(\"projectName\", e.target.value)}\r\n placeholder=\"My Awesome Project\"\r\n className=\"bg-surface2\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Project Type\r\n </label>\r\n <select\r\n value={answers.projectType}\r\n onChange={(e) => update(\"projectType\", e.target.value)}\r\n className=\"w-full h-10 px-3 rounded-md border border-border bg-surface2 text-txt text-sm focus:outline-none focus:ring-2 focus:ring-accent/50\"\r\n >\r\n {PROJECT_TYPES.map(type => (\r\n <option key={type.value} value={type.value}>{type.label}</option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Repository URL <span className=\"text-muted\">(optional)</span>\r\n </label>\r\n <Input\r\n value={answers.repoUrl}\r\n onChange={(e) => update(\"repoUrl\", e.target.value)}\r\n placeholder=\"https://github.com/org/repo\"\r\n className=\"bg-surface2\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Description\r\n </label>\r\n <textarea\r\n value={answers.description}\r\n onChange={(e) => update(\"description\", e.target.value)}\r\n placeholder=\"A brief description of what your project does...\"\r\n rows={3}\r\n className=\"w-full px-3 py-2 rounded-md border border-border bg-surface2 text-txt text-sm resize-none focus:outline-none focus:ring-2 focus:ring-accent/50\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Key Features <span className=\"text-muted\">(optional)</span>\r\n </label>\r\n <Input\r\n value={answers.keyFeatures}\r\n onChange={(e) => update(\"keyFeatures\", e.target.value)}\r\n placeholder=\"Auth, payments, real-time sync, etc.\"\r\n className=\"bg-surface2\"\r\n />\r\n <p className=\"text-xs text-muted mt-1\">Comma-separated list of main features</p>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","\"use client\"\r\n\r\nimport { useState, KeyboardEvent } from \"react\"\r\nimport { Search, X } from \"lucide-react\"\r\nimport { TECH_CATEGORIES, TECH_PRESETS } from \"@/lib/tech-stacks\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\ninterface TechStackInputProps {\r\n value: string[]\r\n onChange: (tags: string[]) => void\r\n}\r\n\r\nexport function TechStackInput({ value, onChange }: TechStackInputProps) {\r\n const [search, setSearch] = useState(\"\")\r\n const [activeCategory, setActiveCategory] = useState(\"language\")\r\n\r\n const isSearching = search.trim().length > 0\r\n\r\n const applyPreset = (techs: string[]) => {\r\n const toAdd = techs.filter(t => !value.includes(t))\r\n if (toAdd.length > 0) onChange([...value, ...toAdd])\r\n }\r\n\r\n const toggleTech = (tech: string) => {\r\n if (value.includes(tech)) {\r\n onChange(value.filter(t => t !== tech))\r\n } else {\r\n onChange([...value, tech])\r\n }\r\n }\r\n\r\n const addCustom = (text: string) => {\r\n const t = text.trim()\r\n if (t && !value.includes(t)) onChange([...value, t])\r\n setSearch(\"\")\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault()\r\n const exactMatch = TECH_CATEGORIES.flatMap(c => c.techs).some(\r\n t => t.toLowerCase() === search.toLowerCase()\r\n )\r\n if (!exactMatch && search.trim()) {\r\n addCustom(search)\r\n }\r\n } else if (e.key === \"Escape\") {\r\n setSearch(\"\")\r\n }\r\n }\r\n\r\n // Search results: filter all categories\r\n const searchResults = isSearching\r\n ? TECH_CATEGORIES.map(cat => ({\r\n ...cat,\r\n items: cat.techs.filter(t => t.toLowerCase().includes(search.toLowerCase())),\r\n })).filter(cat => cat.items.length > 0)\r\n : []\r\n\r\n // Active category pills\r\n const activeCategoryTechs = TECH_CATEGORIES.find(c => c.id === activeCategory)?.techs ?? []\r\n\r\n // Show \"add custom\" hint when search has text but no exact match\r\n const hasExactMatch = TECH_CATEGORIES.flatMap(c => c.techs).some(\r\n t => t.toLowerCase() === search.toLowerCase()\r\n )\r\n const showCustomHint = isSearching && !hasExactMatch && search.trim().length > 0\r\n\r\n return (\r\n <div className=\"space-y-3\">\r\n {/* Quick Presets */}\r\n <div>\r\n <p className=\"text-xs font-medium text-muted mb-2 uppercase tracking-wider\">Quick Presets</p>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {TECH_PRESETS.map(preset => (\r\n <button\r\n key={preset.id}\r\n type=\"button\"\r\n onClick={() => applyPreset(preset.techs)}\r\n className=\"px-3 py-1 rounded-md border border-border text-xs text-txt hover:border-accent hover:text-accent transition-colors\"\r\n >\r\n {preset.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Search bar */}\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted pointer-events-none\" />\r\n <input\r\n value={search}\r\n onChange={e => setSearch(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n placeholder=\"Search technologies...\"\r\n className=\"w-full pl-9 pr-3 py-2 rounded-md border border-border bg-surface2 text-txt text-sm outline-none placeholder:text-muted focus:border-accent transition-colors\"\r\n />\r\n {isSearching && (\r\n <button\r\n type=\"button\"\r\n onClick={() => setSearch(\"\")}\r\n className=\"absolute right-2 top-1/2 -translate-y-1/2 text-muted hover:text-txt transition-colors\"\r\n >\r\n <X className=\"w-4 h-4\" />\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Category tabs — hidden while searching */}\r\n {!isSearching && (\r\n <div className=\"flex gap-1 overflow-x-auto pb-1 scrollbar-hide\">\r\n {TECH_CATEGORIES.map(cat => (\r\n <button\r\n key={cat.id}\r\n type=\"button\"\r\n onClick={() => setActiveCategory(cat.id)}\r\n className={cn(\r\n \"px-3 py-1 rounded-md text-xs font-medium whitespace-nowrap transition-colors flex-shrink-0\",\r\n activeCategory === cat.id\r\n ? \"bg-accent text-white\"\r\n : \"bg-surface2 text-muted hover:text-txt hover:bg-surface\"\r\n )}\r\n >\r\n {cat.label}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Pill grid */}\r\n {!isSearching ? (\r\n <div className=\"flex flex-wrap gap-2\">\r\n {activeCategoryTechs.map(tech => (\r\n <button\r\n key={tech}\r\n type=\"button\"\r\n onClick={() => toggleTech(tech)}\r\n className={cn(\r\n \"px-3 py-1 rounded-full text-sm border transition-colors\",\r\n value.includes(tech)\r\n ? \"bg-accent/15 border-accent text-accent\"\r\n : \"bg-surface2 border-border text-txt hover:border-accent/50 hover:text-accent/80\"\r\n )}\r\n >\r\n {tech}\r\n </button>\r\n ))}\r\n </div>\r\n ) : (\r\n <div className=\"space-y-3\">\r\n {searchResults.map(cat => (\r\n <div key={cat.id}>\r\n <p className=\"text-xs font-medium text-muted uppercase tracking-wider mb-1.5\">{cat.label}</p>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {cat.items.map(tech => (\r\n <button\r\n key={tech}\r\n type=\"button\"\r\n onClick={() => toggleTech(tech)}\r\n className={cn(\r\n \"px-3 py-1 rounded-full text-sm border transition-colors\",\r\n value.includes(tech)\r\n ? \"bg-accent/15 border-accent text-accent\"\r\n : \"bg-surface2 border-border text-txt hover:border-accent/50 hover:text-accent/80\"\r\n )}\r\n >\r\n {tech}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n ))}\r\n {showCustomHint && (\r\n <p className=\"text-xs text-muted\">\r\n Press <kbd className=\"px-1 py-0.5 rounded bg-surface border border-border text-xs\">Enter</kbd> to add &quot;{search}&quot;\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Selected chips */}\r\n {value.length > 0 && (\r\n <div className=\"pt-2 border-t border-border\">\r\n <p className=\"text-xs font-medium text-muted mb-2\">Selected ({value.length})</p>\r\n <div className=\"flex flex-wrap gap-1.5\">\r\n {value.map(tag => (\r\n <span\r\n key={tag}\r\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-accent/15 text-accent text-sm font-medium\"\r\n >\r\n {tag}\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange(value.filter(t => t !== tag))}\r\n className=\"hover:text-accent/70 transition-colors\"\r\n >\r\n <X className=\"w-3 h-3\" />\r\n </button>\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n","\"use client\"\r\n\r\nimport { Input } from \"@/components/ui/input\"\r\nimport { TechStackInput } from \"./TechStackInput\"\r\nimport type { ProjectAnswers } from \"./ProjectQuestionnaire\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\ninterface TeamConventionsProps {\r\n answers: ProjectAnswers\r\n onChange: (answers: ProjectAnswers) => void\r\n}\r\n\r\nconst TEAM_SIZES = [\r\n { value: \"solo\", label: \"Solo\" },\r\n { value: \"2-5\", label: \"2–5\" },\r\n { value: \"6-15\", label: \"6–15\" },\r\n { value: \"15+\", label: \"15+\" },\r\n]\r\n\r\nconst TEST_FRAMEWORKS = [\r\n { value: \"\", label: \"Not sure / other\" },\r\n { value: \"Jest\", label: \"Jest\" },\r\n { value: \"Vitest\", label: \"Vitest\" },\r\n { value: \"pytest\", label: \"pytest\" },\r\n { value: \"RSpec\", label: \"RSpec\" },\r\n { value: \"Mocha\", label: \"Mocha\" },\r\n]\r\n\r\nconst BRANCH_STRATEGIES = [\r\n { value: \"\", label: \"Not specified\" },\r\n { value: \"trunk-based\", label: \"Trunk-based\" },\r\n { value: \"gitflow\", label: \"Gitflow\" },\r\n { value: \"feature-branch\", label: \"Feature branches\" },\r\n]\r\n\r\nconst CI_CD_OPTIONS = [\"GitHub Actions\", \"GitLab CI\", \"CircleCI\", \"Jenkins\", \"Buildkite\", \"Travis CI\"]\r\nconst LINTING_OPTIONS = [\"ESLint\", \"Prettier\", \"Biome\", \"Stylelint\", \"oxc\", \"Rome\"]\r\nconst DEPLOYMENT_OPTIONS = [\"Vercel\", \"AWS\", \"GCP\", \"Azure\", \"Fly.io\", \"Railway\", \"Render\", \"Docker\", \"Kubernetes\", \"Heroku\"]\r\n\r\nexport function TeamConventions({ answers, onChange }: TeamConventionsProps) {\r\n const update = <K extends keyof ProjectAnswers>(key: K, value: ProjectAnswers[K]) => {\r\n onChange({ ...answers, [key]: value })\r\n }\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n <div>\r\n <h2 className=\"text-xl font-semibold text-txt mb-2\">Team & Conventions</h2>\r\n <p className=\"text-muted\">Help us tailor documentation to your team. All fields are optional.</p>\r\n </div>\r\n\r\n <div className=\"space-y-5\">\r\n {/* Team size */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-2\">Team Size</label>\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {TEAM_SIZES.map(size => (\r\n <button\r\n key={size.value}\r\n type=\"button\"\r\n onClick={() => update(\"teamSize\", answers.teamSize === size.value ? \"\" : size.value)}\r\n className={cn(\r\n \"px-4 py-2 rounded-lg border text-sm font-medium transition-all\",\r\n answers.teamSize === size.value\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {size.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Linting */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">Linting & Formatting</label>\r\n <div className=\"flex gap-2 flex-wrap mb-2\">\r\n {LINTING_OPTIONS.map(opt => (\r\n <button\r\n key={opt}\r\n type=\"button\"\r\n onClick={() => {\r\n const next = answers.linting.includes(opt)\r\n ? answers.linting.filter(l => l !== opt)\r\n : [...answers.linting, opt]\r\n update(\"linting\", next)\r\n }}\r\n className={cn(\r\n \"px-3 py-1.5 rounded-md border text-sm transition-all\",\r\n answers.linting.includes(opt)\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {opt}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Test framework */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">Test Framework</label>\r\n <select\r\n value={answers.testFramework}\r\n onChange={(e) => update(\"testFramework\", e.target.value)}\r\n className=\"w-full h-10 px-3 rounded-md border border-border bg-surface2 text-txt text-sm focus:outline-none focus:ring-2 focus:ring-accent/50\"\r\n >\r\n {TEST_FRAMEWORKS.map(f => (\r\n <option key={f.value} value={f.value}>{f.label}</option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n {/* CI/CD */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">CI/CD</label>\r\n <div className=\"flex gap-2 flex-wrap mb-2\">\r\n {CI_CD_OPTIONS.map(opt => (\r\n <button\r\n key={opt}\r\n type=\"button\"\r\n onClick={() => {\r\n const next = answers.ciCd.includes(opt)\r\n ? answers.ciCd.filter(c => c !== opt)\r\n : [...answers.ciCd, opt]\r\n update(\"ciCd\", next)\r\n }}\r\n className={cn(\r\n \"px-3 py-1.5 rounded-md border text-sm transition-all\",\r\n answers.ciCd.includes(opt)\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {opt}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Branch strategy */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-2\">Branch Strategy</label>\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {BRANCH_STRATEGIES.filter(b => b.value).map(b => (\r\n <button\r\n key={b.value}\r\n type=\"button\"\r\n onClick={() => update(\"branchStrategy\", answers.branchStrategy === b.value ? \"\" : b.value)}\r\n className={cn(\r\n \"px-4 py-2 rounded-lg border text-sm font-medium transition-all\",\r\n answers.branchStrategy === b.value\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {b.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Deployment target */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">Deployment Target</label>\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {DEPLOYMENT_OPTIONS.map(opt => (\r\n <button\r\n key={opt}\r\n type=\"button\"\r\n onClick={() => {\r\n const next = answers.deploymentTarget.includes(opt)\r\n ? answers.deploymentTarget.filter(d => d !== opt)\r\n : [...answers.deploymentTarget, opt]\r\n update(\"deploymentTarget\", next)\r\n }}\r\n className={cn(\r\n \"px-3 py-1.5 rounded-md border text-sm transition-all\",\r\n answers.deploymentTarget.includes(opt)\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {opt}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Additional conventions */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Additional Conventions <span className=\"text-muted\">(optional)</span>\r\n </label>\r\n <Input\r\n value={answers.conventions}\r\n onChange={(e) => update(\"conventions\", e.target.value)}\r\n placeholder=\"Conventional Commits, semantic versioning, etc.\"\r\n className=\"bg-surface2\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { FileText, ChevronDown, ChevronRight, AlertCircle } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { MarkdownRenderer } from \"@/components/docs/MarkdownRenderer\";\n\nexport interface GeneratedFile {\n path: string;\n content: string;\n skipped?: boolean;\n reason?: string;\n}\n\ninterface GenerationPreviewProps {\n files: GeneratedFile[];\n onWrite: () => void;\n isWriting: boolean;\n mode: \"quick\" | \"ai\";\n onModeChange: (mode: \"quick\" | \"ai\") => void;\n}\n\nexport function GenerationPreview({\n files,\n onWrite,\n isWriting,\n mode,\n onModeChange,\n}: GenerationPreviewProps) {\n const [expanded, setExpanded] = useState<Set<string>>(new Set());\n\n const toggleExpand = (path: string) => {\n setExpanded((prev) => {\n const next = new Set(prev);\n if (next.has(path)) next.delete(path);\n else next.add(path);\n return next;\n });\n };\n\n const toWrite = files.filter((f) => !f.skipped);\n const skipped = files.filter((f) => f.skipped);\n\n if (files.length === 0) {\n return (\n <div className=\"text-center py-12\">\n <AlertCircle className=\"w-12 h-12 text-muted mx-auto mb-4\" />\n <h3 className=\"text-lg font-medium text-txt mb-2\">\n No files generated\n </h3>\n <p className=\"text-muted\">\n Something went wrong. Please go back and try again.\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-semibold text-txt mb-2\">Preview</h2>\n <p className=\"text-muted\">Review the files that will be created.</p>\n </div>\n <div className=\"flex items-center gap-1 bg-surface2 rounded-lg p-1\">\n <button\n onClick={() => onModeChange(\"quick\")}\n className={cn(\n \"px-3 py-1 text-sm rounded-md transition-colors\",\n mode === \"quick\"\n ? \"bg-surface text-txt shadow-sm\"\n : \"text-muted hover:text-txt\",\n )}\n >\n Quick\n </button>\n <button\n onClick={() => onModeChange(\"ai\")}\n className={cn(\n \"px-3 py-1 text-sm rounded-md transition-colors\",\n mode === \"ai\"\n ? \"bg-surface text-txt shadow-sm\"\n : \"text-muted hover:text-txt\",\n )}\n >\n AI\n </button>\n </div>\n </div>\n\n {/* Files to write */}\n <div className=\"space-y-2\">\n <h3 className=\"text-sm font-medium text-muted uppercase tracking-wider\">\n Files to create ({toWrite.length})\n </h3>\n <div className=\"border border-border rounded-lg divide-y divide-border overflow-hidden\">\n {toWrite.map((file) => {\n const isExpanded = expanded.has(file.path);\n const isMd = file.path.endsWith(\".md\");\n return (\n <div key={file.path}>\n <button\n onClick={() => toggleExpand(file.path)}\n className=\"w-full flex items-center gap-3 p-3 hover:bg-surface2 transition-colors\"\n >\n {isExpanded ? (\n <ChevronDown className=\"w-4 h-4 text-muted shrink-0\" />\n ) : (\n <ChevronRight className=\"w-4 h-4 text-muted shrink-0\" />\n )}\n <FileText className=\"w-4 h-4 text-accent shrink-0\" />\n <span className=\"text-sm font-mono text-txt\">\n {file.path}\n </span>\n </button>\n {isExpanded && (\n <div className=\"px-3 pb-3\">\n {isMd ? (\n <div className=\"prose prose-invert max-w-none p-3 bg-surface2 rounded-lg max-h-64 overflow-y-auto text-sm\">\n <MarkdownRenderer\n content={file.content.slice(0, 3000)}\n />\n </div>\n ) : (\n <pre className=\"p-3 bg-surface2 rounded-lg text-xs text-muted overflow-x-auto max-h-64 overflow-y-auto\">\n {file.content.slice(0, 2000)}\n {file.content.length > 2000 && \"\\n\\n...(truncated)\"}\n </pre>\n )}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n\n {/* Skipped files */}\n {skipped.length > 0 && (\n <div className=\"space-y-2\">\n <h3 className=\"text-sm font-medium text-muted uppercase tracking-wider\">\n Skipped ({skipped.length})\n </h3>\n <div className=\"bg-amber-500/10 border border-amber-500/30 rounded-lg p-3 space-y-1\">\n {skipped.map((file) => (\n <div key={file.path} className=\"flex items-center gap-2 text-sm\">\n <AlertCircle className=\"w-4 h-4 text-amber-400 shrink-0\" />\n <span className=\"font-mono text-amber-400\">{file.path}</span>\n <span className=\"text-amber-400/70\">\n — {file.reason || \"already exists\"}\n </span>\n </div>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"text-sm text-muted\">\n {toWrite.length} file{toWrite.length !== 1 ? \"s\" : \"\"} will be created\n {skipped.length > 0 && `, ${skipped.length} skipped`}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { useApp } from \"@/context/AppContext\";\nimport {\n ChevronLeft,\n ChevronRight,\n Sparkles,\n Check,\n Loader2,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { TemplateSelector, type TemplateSelection } from \"./TemplateSelector\";\nimport { type ProjectAnswers } from \"./ProjectQuestionnaire\";\nimport { BasicInfo } from \"./BasicInfo\";\nimport { TechStackInput } from \"./TechStackInput\";\nimport { TeamConventions } from \"./TeamConventions\";\nimport { GenerationPreview, type GeneratedFile } from \"./GenerationPreview\";\nimport { PRESETS, type TemplatePreset } from \"@/lib/presets\";\nimport { TEMPLATES, type Template } from \"@/lib/templates\";\n\nconst STEPS = [\n { id: \"welcome\", title: \"Welcome\" },\n { id: \"basic-info\", title: \"Basic Info\" },\n { id: \"templates\", title: \"Templates\" },\n { id: \"tech-stack\", title: \"Tech Stack\" },\n { id: \"team\", title: \"Team\" },\n { id: \"preview\", title: \"Preview\" },\n { id: \"complete\", title: \"Complete\" },\n];\n\nconst LAST_STEP = STEPS.length - 1;\nconst GENERATE_STEP = 4; // \"team\" step — clicking Next on team triggers generation\nconst PREVIEW_STEP = 5;\nconst WRITE_STEP = 6;\n\nexport function SetupWizard() {\n const { activeProject, rootParam, projects } = useApp();\n const currentProject = projects.find((p) => p.root === activeProject);\n const [step, setStep] = useState(0);\n const [selectedTemplates, setSelectedTemplates] = useState<\n TemplateSelection[]\n >([]);\n const [answers, setAnswers] = useState<ProjectAnswers>({\n projectName: \"\",\n projectType: \"web-app\",\n description: \"\",\n repoUrl: \"\",\n techStackTags: [],\n keyFeatures: \"\",\n teamSize: \"\",\n linting: [],\n testFramework: \"\",\n ciCd: [],\n branchStrategy: \"\",\n deploymentTarget: [],\n conventions: \"\",\n });\n const [mode, setMode] = useState<\"quick\" | \"ai\">(\"quick\");\n const [generatedFiles, setGeneratedFiles] = useState<GeneratedFile[]>([]);\n const [isGenerating, setIsGenerating] = useState(false);\n const [existingFiles, setExistingFiles] = useState<string[]>([]);\n\n useEffect(() => {\n async function checkExisting() {\n try {\n const res = await fetch(`/api/docs${rootParam}`);\n const docs = await res.json();\n const existing = docs\n .filter(\n (d: { path: string }) =>\n d.path === \"CLAUDE.md\" || d.path === \"AGENTS.md\",\n )\n .map((d: { path: string }) => d.path);\n setExistingFiles(existing);\n } catch {}\n }\n checkExisting();\n }, [rootParam]);\n\n const canProceed = () => {\n switch (step) {\n case 0:\n return true;\n case 1:\n return answers.projectName.trim() !== \"\";\n case 2:\n return selectedTemplates.length > 0;\n default:\n return true;\n }\n };\n\n const applyPreset = (preset: TemplatePreset) => {\n const selections = preset.templateIds\n .map((id) => TEMPLATES.find((t) => t.id === id))\n .filter((t): t is Template => t !== undefined)\n .map((t) => ({ id: t.id, name: t.name, path: t.defaultPath }));\n setSelectedTemplates(selections);\n setStep(1); // Always go to BasicInfo after preset selection\n };\n\n const handleNext = async () => {\n if (step === GENERATE_STEP) {\n setIsGenerating(true);\n try {\n const res = await fetch(`/api/setup/generate${rootParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ templates: selectedTemplates, answers, mode }),\n });\n const data = await res.json();\n setGeneratedFiles(data.files || []);\n } catch {\n setGeneratedFiles([]);\n }\n setIsGenerating(false);\n }\n setStep((s) => Math.min(s + 1, LAST_STEP));\n };\n\n const handleBack = () => {\n setStep((s) => Math.max(s - 1, 0));\n };\n\n const handleWrite = async () => {\n setIsGenerating(true);\n try {\n await fetch(`/api/setup/write${rootParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ files: generatedFiles }),\n });\n setStep(WRITE_STEP);\n } catch {}\n setIsGenerating(false);\n };\n\n return (\n <div className=\"min-h-screen bg-bg flex flex-col\">\n {/* Progress bar */}\n <div className=\"border-b border-border bg-surface\">\n <div className=\"max-w-3xl mx-auto px-6 py-4\">\n <div className=\"flex items-center justify-between mb-2\">\n <h1 className=\"text-lg font-semibold text-txt\">Setup Wizard</h1>\n <span className=\"text-sm text-muted\">\n Step {step + 1} of {STEPS.length}\n </span>\n </div>\n <div className=\"flex gap-1\">\n {STEPS.map((s, i) => (\n <div\n key={s.id}\n className={cn(\n \"h-1 flex-1 rounded-full transition-colors\",\n i <= step ? \"bg-accent\" : \"bg-border\",\n )}\n />\n ))}\n </div>\n <div className=\"flex gap-1 mt-1\">\n {STEPS.map((s, i) => (\n <div key={s.id} className=\"flex-1 text-center\">\n {i === step && (\n <span className=\"text-xs text-accent\">{s.title}</span>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className=\"max-w-3xl mx-auto px-6 py-8\">\n {/* Step 0: Welcome */}\n {step === 0 && (\n <div className=\"space-y-6\">\n <div className=\"text-center space-y-4\">\n <div className=\"w-16 h-16 rounded-2xl bg-accent/10 flex items-center justify-center mx-auto\">\n <Sparkles className=\"w-8 h-8 text-accent\" />\n </div>\n <h2 className=\"text-2xl font-bold text-txt\">\n Welcome to VibeDoc\n </h2>\n <p className=\"text-muted max-w-md mx-auto\">\n Let&apos;s set up your project documentation. You can generate\n AI-optimized docs like CLAUDE.md, architecture overviews, and\n more.\n </p>\n </div>\n\n {currentProject && (\n <div className=\"bg-surface border border-border rounded-lg p-4\">\n <div className=\"text-sm text-muted mb-1\">Current Project</div>\n <div className=\"font-medium text-txt\">\n {currentProject.name}\n </div>\n <div className=\"text-xs text-muted mt-1 font-mono\">\n {currentProject.root}\n </div>\n </div>\n )}\n\n {existingFiles.length > 0 && (\n <div className=\"bg-amber-500/10 border border-amber-500/30 rounded-lg p-4\">\n <div className=\"text-sm font-medium text-amber-400 mb-1\">\n Existing files detected\n </div>\n <div className=\"text-sm text-amber-400/80\">\n {existingFiles.join(\", \")} already exist. They will be\n skipped during generation.\n </div>\n </div>\n )}\n\n <div>\n <div className=\"text-sm font-medium text-txt mb-3\">\n Quick Start with a Preset\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n {[\n \"nextjs-production\",\n \"api-backend\",\n \"minimal\",\n \"ai-first\",\n ].map((presetId) => {\n const preset = PRESETS.find((p) => p.id === presetId);\n if (!preset) return null;\n return (\n <button\n key={presetId}\n onClick={() => applyPreset(preset)}\n className=\"p-3 rounded-lg border border-border hover:border-accent/50 text-left transition-all\"\n >\n <div className=\"font-medium text-sm text-txt\">\n {preset.name}\n </div>\n <div className=\"text-xs text-muted mt-1\">\n {preset.description}\n </div>\n </button>\n );\n })}\n </div>\n </div>\n </div>\n )}\n\n {/* Step 1: Basic Info */}\n {step === 1 && <BasicInfo answers={answers} onChange={setAnswers} />}\n\n {/* Step 2: Template Selection */}\n {step === 2 && (\n <TemplateSelector\n selected={selectedTemplates}\n onChange={setSelectedTemplates}\n projectType={answers.projectType}\n />\n )}\n\n {/* Step 3: Tech Stack */}\n {step === 3 && (\n <div className=\"space-y-6\">\n <div>\n <h2 className=\"text-xl font-semibold text-txt mb-2\">\n Tech Stack\n </h2>\n <p className=\"text-muted\">\n Add the technologies your project uses. Search or type custom\n ones.\n </p>\n </div>\n <TechStackInput\n value={answers.techStackTags}\n onChange={(tags) =>\n setAnswers((a) => ({ ...a, techStackTags: tags }))\n }\n />\n {answers.techStackTags.length > 0 && (\n <p className=\"text-sm text-muted\">\n {answers.techStackTags.length} technolog\n {answers.techStackTags.length !== 1 ? \"ies\" : \"y\"} added\n </p>\n )}\n </div>\n )}\n\n {/* Step 4: Team & Conventions */}\n {step === 4 && (\n <TeamConventions answers={answers} onChange={setAnswers} />\n )}\n\n {/* Step 5: Preview */}\n {step === 5 && (\n <GenerationPreview\n files={generatedFiles}\n onWrite={handleWrite}\n isWriting={isGenerating}\n mode={mode}\n onModeChange={setMode}\n />\n )}\n\n {/* Step 6: Complete */}\n {step === 6 && (\n <div className=\"text-center space-y-6\">\n <div className=\"w-16 h-16 rounded-full bg-green-500/10 flex items-center justify-center mx-auto\">\n <Check className=\"w-8 h-8 text-green-500\" />\n </div>\n <h2 className=\"text-2xl font-bold text-txt\">Setup Complete!</h2>\n <p className=\"text-muted max-w-md mx-auto\">\n Your documentation files have been created. You can now view and\n edit them in the Docs tab.\n </p>\n\n <div className=\"bg-surface border border-border rounded-lg p-4 text-left max-w-md mx-auto\">\n <div className=\"text-sm font-medium text-txt mb-2\">\n Next steps:\n </div>\n <ul className=\"text-sm text-muted space-y-2\">\n <li>• Review generated files in the Docs tab</li>\n <li>• Edit content to match your project specifics</li>\n <li>• Connect your coding agent via MCP for AI assistance</li>\n </ul>\n </div>\n\n <a\n href=\"/docs\"\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors\"\n >\n Go to Docs\n <ChevronRight className=\"w-4 h-4\" />\n </a>\n </div>\n )}\n </div>\n </div>\n\n {/* Footer navigation */}\n {step < LAST_STEP && (\n <div className=\"border-t border-border bg-surface\">\n <div className=\"max-w-3xl mx-auto px-6 py-4 flex items-center justify-between\">\n <button\n onClick={handleBack}\n disabled={step === 0}\n className={cn(\n \"flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-colors\",\n step === 0\n ? \"text-muted cursor-not-allowed\"\n : \"text-txt hover:bg-surface2\",\n )}\n >\n <ChevronLeft className=\"w-4 h-4\" />\n Back\n </button>\n\n {step === PREVIEW_STEP ? (\n <button\n onClick={handleWrite}\n disabled={isGenerating || generatedFiles.length === 0}\n className=\"flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors disabled:opacity-50\"\n >\n {isGenerating ? (\n <>\n <Loader2 className=\"w-4 h-4 animate-spin\" />\n Writing...\n </>\n ) : (\n <>\n Write Files\n <Check className=\"w-4 h-4\" />\n </>\n )}\n </button>\n ) : (\n <button\n onClick={handleNext}\n disabled={!canProceed() || isGenerating}\n className=\"flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors disabled:opacity-50\"\n >\n {isGenerating ? (\n <>\n <Loader2 className=\"w-4 h-4 animate-spin\" />\n Generating...\n </>\n ) : (\n <>\n {step === GENERATE_STEP ? \"Generate\" : \"Next\"}\n <ChevronRight className=\"w-4 h-4\" />\n </>\n )}\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n","\"use client\"\r\n\r\nimport { SetupWizard } from \"@/components/setup/SetupWizard\"\r\n\r\nexport default function SetupPage() {\r\n return <SetupWizard />\r\n}\r\n","export interface TechCategory {\r\n id: string\r\n label: string\r\n techs: string[]\r\n}\r\n\r\nexport const TECH_CATEGORIES: TechCategory[] = [\r\n {\r\n id: \"language\",\r\n label: \"Language\",\r\n techs: [\"TypeScript\", \"JavaScript\", \"Python\", \"Go\", \"Rust\", \"Java\", \"C#\", \"Ruby\", \"Kotlin\", \"Swift\", \"PHP\", \"Elixir\"],\r\n },\r\n {\r\n id: \"frontend\",\r\n label: \"Frontend\",\r\n techs: [\"React\", \"Vue\", \"Angular\", \"Next.js\", \"Nuxt\", \"SvelteKit\", \"Remix\", \"Astro\", \"Vite\", \"Tailwind CSS\", \"React Native\", \"Expo\"],\r\n },\r\n {\r\n id: \"backend\",\r\n label: \"Backend\",\r\n techs: [\"Node.js\", \"Express\", \"Fastify\", \"NestJS\", \"FastAPI\", \"Django\", \"Flask\", \"Rails\", \"Spring Boot\", \"Go/Fiber\", \"Rust/Actix\", \"Hono\", \"Bun\"],\r\n },\r\n {\r\n id: \"database\",\r\n label: \"Database\",\r\n techs: [\"PostgreSQL\", \"MySQL\", \"MongoDB\", \"Redis\", \"SQLite\", \"Supabase\", \"PlanetScale\", \"DynamoDB\", \"Cassandra\", \"Prisma\", \"Drizzle\", \"TypeORM\"],\r\n },\r\n {\r\n id: \"devops\",\r\n label: \"DevOps\",\r\n techs: [\"Docker\", \"Kubernetes\", \"GitHub Actions\", \"GitLab CI\", \"CircleCI\", \"Jenkins\", \"Terraform\", \"Pulumi\", \"AWS\", \"GCP\", \"Azure\", \"Vercel\", \"Railway\", \"Fly.io\", \"Render\"],\r\n },\r\n {\r\n id: \"testing\",\r\n label: \"Testing\",\r\n techs: [\"Jest\", \"Vitest\", \"Playwright\", \"Cypress\", \"Testing Library\", \"pytest\", \"RSpec\", \"Mocha\", \"k6\"],\r\n },\r\n {\r\n id: \"tools\",\r\n label: \"Tools\",\r\n techs: [\"ESLint\", \"Prettier\", \"Husky\", \"lint-staged\", \"Storybook\", \"Turborepo\", \"pnpm\", \"Nx\", \"GraphQL\", \"tRPC\", \"Zod\", \"Stripe\"],\r\n },\r\n]\r\n\r\nexport const ALL_TECHS: string[] = TECH_CATEGORIES.flatMap(c => c.techs)\r\n\r\nexport interface TechPreset {\r\n id: string\r\n label: string\r\n techs: string[]\r\n}\r\n\r\nexport const TECH_PRESETS: TechPreset[] = [\r\n { id: \"nextjs\", label: \"Next.js Full-Stack\", techs: [\"TypeScript\", \"Next.js\", \"React\", \"Tailwind CSS\", \"PostgreSQL\", \"Prisma\"] },\r\n { id: \"python-api\", label: \"Python API\", techs: [\"Python\", \"FastAPI\", \"PostgreSQL\", \"Redis\", \"Docker\"] },\r\n { id: \"react-native\", label: \"React Native\", techs: [\"TypeScript\", \"React Native\", \"Expo\"] },\r\n { id: \"go-service\", label: \"Go Microservice\", techs: [\"Go\", \"Go/Fiber\", \"PostgreSQL\", \"Docker\", \"Kubernetes\"] },\r\n { id: \"sveltekit\", label: \"SvelteKit\", techs: [\"TypeScript\", \"SvelteKit\", \"Tailwind CSS\", \"SQLite\"] },\r\n]\r\n","export interface TemplatePreset {\r\n id: string\r\n name: string\r\n description: string\r\n projectTypes: string[] // matches BasicInfo PROJECT_TYPES; empty means all types\r\n templateIds: string[]\r\n}\r\n\r\nexport const PRESETS: TemplatePreset[] = [\r\n {\r\n id: 'nextjs-production',\r\n name: 'Next.js Production',\r\n description:\r\n 'Complete setup for a production Next.js application with CI/CD, Docker, and code quality tools',\r\n projectTypes: ['web-app'],\r\n templateIds: [\r\n 'claude-md',\r\n 'architecture-overview',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'onboarding',\r\n 'dockerfile',\r\n 'docker-compose',\r\n 'dockerignore',\r\n 'env-example',\r\n 'ci-workflow',\r\n 'cd-workflow',\r\n 'dependabot-config',\r\n 'eslintrc',\r\n 'prettierrc',\r\n 'tsconfig-strict',\r\n 'vscode-settings',\r\n 'vscode-extensions',\r\n ],\r\n },\r\n {\r\n id: 'api-backend',\r\n name: 'API Backend',\r\n description: 'Production API service with OpenAPI spec, Docker, monitoring, and runbook',\r\n projectTypes: ['api-backend'],\r\n templateIds: [\r\n 'claude-md',\r\n 'architecture-overview',\r\n 'api-reference',\r\n 'openapi',\r\n 'runbook',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'dockerfile',\r\n 'docker-compose',\r\n 'dockerignore',\r\n 'env-example',\r\n 'ci-workflow',\r\n 'cd-workflow',\r\n 'health-check-doc',\r\n 'slo-doc',\r\n ],\r\n },\r\n {\r\n id: 'library-sdk',\r\n name: 'Library / SDK',\r\n description: 'Open-source library with strict TypeScript, changelog, and release automation',\r\n projectTypes: ['library'],\r\n templateIds: [\r\n 'claude-md',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'tsconfig-strict',\r\n 'eslintrc',\r\n 'prettierrc',\r\n 'editorconfig',\r\n 'commitlint',\r\n 'dependabot-config',\r\n 'release-workflow',\r\n 'codeowners',\r\n ],\r\n },\r\n {\r\n id: 'cli-tool',\r\n name: 'CLI Tool',\r\n description: 'Command-line tool with Makefile automation and release workflow',\r\n projectTypes: ['cli-tool'],\r\n templateIds: [\r\n 'claude-md',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'makefile',\r\n 'env-example',\r\n 'ci-workflow',\r\n 'release-workflow',\r\n 'commitlint',\r\n 'editorconfig',\r\n 'eslintrc',\r\n ],\r\n },\r\n {\r\n id: 'monorepo',\r\n name: 'Monorepo',\r\n description:\r\n 'Multi-package monorepo with code ownership, commit conventions, and architecture docs',\r\n projectTypes: ['monorepo'],\r\n templateIds: [\r\n 'claude-md',\r\n 'architecture-overview',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'onboarding',\r\n 'codeowners',\r\n 'commitlint',\r\n 'ci-workflow',\r\n 'cd-workflow',\r\n 'dockerfile',\r\n 'env-example',\r\n 'eslintrc',\r\n 'lint-staged',\r\n ],\r\n },\r\n {\r\n id: 'ai-first',\r\n name: 'AI-First',\r\n description: 'Cross-cutting preset for projects that heavily use AI coding agents',\r\n projectTypes: [], // empty means applies to all project types\r\n templateIds: [\r\n 'claude-md',\r\n 'agents-md',\r\n 'gemini-md',\r\n 'cursorrules',\r\n 'copilot-instructions',\r\n 'contributing',\r\n 'pr-template',\r\n 'changelog',\r\n ],\r\n },\r\n {\r\n id: 'minimal',\r\n name: 'Minimal',\r\n description: 'Just the essentials — get started fast with 5 key files',\r\n projectTypes: [], // applies to all types\r\n templateIds: ['claude-md', 'contributing', 'pr-template', 'changelog', 'env-example'],\r\n },\r\n]\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12', key: '1pkeuh' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16', key: '4dfq90' }],\n];\n\n/**\n * @component @name CircleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMiIgeTE9IjgiIHkyPSIxMiIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMi4wMSIgeTE9IjE2IiB5Mj0iMTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleAlert = createLucideIcon('circle-alert', __iconNode);\n\nexport default CircleAlert;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['ellipse', { cx: '12', cy: '5', rx: '9', ry: '3', key: 'msslwz' }],\n ['path', { d: 'M3 5V19A9 3 0 0 0 21 19V5', key: '1wlel7' }],\n ['path', { d: 'M3 12A9 3 0 0 0 21 12', key: 'mv7ke4' }],\n];\n\n/**\n * @component @name Database\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8ZWxsaXBzZSBjeD0iMTIiIGN5PSI1IiByeD0iOSIgcnk9IjMiIC8+CiAgPHBhdGggZD0iTTMgNVYxOUE5IDMgMCAwIDAgMjEgMTlWNSIgLz4KICA8cGF0aCBkPSJNMyAxMkE5IDMgMCAwIDAgMjEgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/database\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Database = createLucideIcon('database', __iconNode);\n\nexport default Database;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '20', height: '8', x: '2', y: '2', rx: '2', ry: '2', key: 'ngkwjq' }],\n ['rect', { width: '20', height: '8', x: '2', y: '14', rx: '2', ry: '2', key: 'iecqi9' }],\n ['line', { x1: '6', x2: '6.01', y1: '6', y2: '6', key: '16zg32' }],\n ['line', { x1: '6', x2: '6.01', y1: '18', y2: '18', key: 'nzw8ys' }],\n];\n\n/**\n * @component @name Server\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMjAiIGhlaWdodD0iOCIgeD0iMiIgeT0iMiIgcng9IjIiIHJ5PSIyIiAvPgogIDxyZWN0IHdpZHRoPSIyMCIgaGVpZ2h0PSI4IiB4PSIyIiB5PSIxNCIgcng9IjIiIHJ5PSIyIiAvPgogIDxsaW5lIHgxPSI2IiB4Mj0iNi4wMSIgeTE9IjYiIHkyPSI2IiAvPgogIDxsaW5lIHgxPSI2IiB4Mj0iNi4wMSIgeTE9IjE4IiB5Mj0iMTgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/server\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Server = createLucideIcon('server', __iconNode);\n\nexport default Server;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '8', x: '3', y: '3', rx: '2', key: 'by2w9f' }],\n ['path', { d: 'M7 11v4a2 2 0 0 0 2 2h4', key: 'xkn7yn' }],\n ['rect', { width: '8', height: '8', x: '13', y: '13', rx: '2', key: '1cgmvn' }],\n];\n\n/**\n * @component @name Workflow\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4PSIzIiB5PSIzIiByeD0iMiIgLz4KICA8cGF0aCBkPSJNNyAxMXY0YTIgMiAwIDAgMCAyIDJoNCIgLz4KICA8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4PSIxMyIgeT0iMTMiIHJ4PSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/workflow\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Workflow = createLucideIcon('workflow', __iconNode);\n\nexport default Workflow;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 12h4', key: 'a56b0p' }],\n ['path', { d: 'M10 8h4', key: '1sr2af' }],\n ['path', { d: 'M14 21v-3a2 2 0 0 0-4 0v3', key: '1rgiei' }],\n [\n 'path',\n {\n d: 'M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2',\n key: 'secmi2',\n },\n ],\n ['path', { d: 'M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16', key: '16ra0t' }],\n];\n\n/**\n * @component @name Building2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgMTJoNCIgLz4KICA8cGF0aCBkPSJNMTAgOGg0IiAvPgogIDxwYXRoIGQ9Ik0xNCAyMXYtM2EyIDIgMCAwIDAtNCAwdjMiIC8+CiAgPHBhdGggZD0iTTYgMTBINGEyIDIgMCAwIDAtMiAydjdhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0yVjlhMiAyIDAgMCAwLTItMmgtMiIgLz4KICA8cGF0aCBkPSJNNiAyMVY1YTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjE2IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/building-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Building2 = createLucideIcon('building-2', __iconNode);\n\nexport default Building2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M8 2v4', key: '1cmpym' }],\n ['path', { d: 'M16 2v4', key: '4m81vk' }],\n ['rect', { width: '18', height: '18', x: '3', y: '4', rx: '2', key: '1hopcy' }],\n ['path', { d: 'M3 10h18', key: '8toen8' }],\n];\n\n/**\n * @component @name Calendar\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCAydjQiIC8+CiAgPHBhdGggZD0iTTE2IDJ2NCIgLz4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjQiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik0zIDEwaDE4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/calendar\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Calendar = createLucideIcon('calendar', __iconNode);\n\nexport default Calendar;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 6a9 9 0 0 0-9 9V3', key: '1cii5b' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n];\n\n/**\n * @component @name GitBranch\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgNmE5IDkgMCAwIDAtOSA5VjMiIC8+CiAgPGNpcmNsZSBjeD0iMTgiIGN5PSI2IiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjYiIGN5PSIxOCIgcj0iMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/git-branch\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitBranch = createLucideIcon('git-branch', __iconNode);\n\nexport default GitBranch;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3',\n key: 'wmoenq',\n },\n ],\n ['path', { d: 'M12 9v4', key: 'juzpu7' }],\n ['path', { d: 'M12 17h.01', key: 'p32p05' }],\n];\n\n/**\n * @component @name TriangleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEuNzMgMTgtOC0xNGEyIDIgMCAwIDAtMy40OCAwbC04IDE0QTIgMiAwIDAgMCA0IDIxaDE2YTIgMiAwIDAgMCAxLjczLTMiIC8+CiAgPHBhdGggZD0iTTEyIDl2NCIgLz4KICA8cGF0aCBkPSJNMTIgMTdoLjAxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/triangle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst TriangleAlert = createLucideIcon('triangle-alert', __iconNode);\n\nexport default TriangleAlert;\n"],"names":[],"mappings":"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","ignoreList":[9,10,11,12,13,14,15,16,17,18,19,20]}
1
+ {"version":3,"sources":["../../../../src/app/%28app%29/setup/page.tsx","../../../../src/components/setup/TemplateSelector.tsx","../../../../src/components/setup/BasicInfo.tsx","../../../../src/components/setup/TechStackInput.tsx","../../../../src/components/setup/TeamConventions.tsx","../../../../src/components/setup/GenerationPreview.tsx","../../../../src/components/setup/SetupWizard.tsx","../../../../src/lib/tech-stacks.ts","../../../../src/lib/presets.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle-alert.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-down.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-left.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/workflow.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/git-branch.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/server.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/database.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/calendar.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/building-2.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/shield.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/sparkles.ts"],"sourcesContent":["\"use client\"\r\n\r\nimport { SetupWizard } from \"@/components/setup/SetupWizard\"\r\n\r\nexport default function SetupPage() {\r\n return <SetupWizard />\r\n}\r\n","\"use client\";\n\nimport { useState } from \"react\";\nimport {\n Bot,\n FileText,\n Building2,\n Server,\n BookOpen,\n AlertTriangle,\n Calendar,\n Users,\n Check,\n GitBranch,\n Shield,\n Database,\n Code2,\n Workflow,\n List,\n type LucideIcon,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport {\n TEMPLATES,\n type Template,\n type TemplateCategory,\n} from \"@/lib/templates\";\nimport { PRESETS } from \"@/lib/presets\";\n\nexport interface TemplateSelection {\n id: string;\n name: string;\n path: string;\n}\n\ninterface TemplateSelectorProps {\n selected: TemplateSelection[];\n onChange: (selected: TemplateSelection[]) => void;\n projectType?: string;\n}\n\nconst CATEGORY_DISPLAY_NAMES: Record<TemplateCategory, string> = {\n \"ai-agent\": \"AI Agent Config\",\n github: \"GitHub\",\n process: \"Process Docs\",\n technical: \"Technical Docs\",\n infrastructure: \"Infrastructure\",\n \"github-actions\": \"GitHub Actions\",\n \"code-quality\": \"Code Quality\",\n monitoring: \"Monitoring\",\n};\n\nconst CATEGORY_ICONS: Record<TemplateCategory, LucideIcon> = {\n \"ai-agent\": Bot,\n github: GitBranch,\n process: Workflow,\n technical: FileText,\n infrastructure: Server,\n \"github-actions\": Workflow,\n \"code-quality\": Check,\n monitoring: AlertTriangle,\n};\n\nconst TEMPLATE_ICONS: Partial<Record<string, LucideIcon>> = {\n \"claude-md\": Bot,\n \"agents-md\": Bot,\n \"gemini-md\": Bot,\n cursorrules: Code2,\n windsurfrules: Code2,\n \"copilot-instructions\": Bot,\n contributing: GitBranch,\n security: Shield,\n \"pr-template\": GitBranch,\n \"bug-report\": AlertTriangle,\n \"feature-request\": FileText,\n changelog: List,\n deployment: Workflow,\n testing: Check,\n glossary: BookOpen,\n prd: FileText,\n \"architecture-overview\": Building2,\n \"api-reference\": Server,\n runbook: BookOpen,\n adr: AlertTriangle,\n onboarding: Users,\n database: Database,\n openapi: Server,\n \"meeting-notes\": Calendar,\n blank: FileText,\n};\n\n// Group templates by category, preserving order of first appearance\nfunction groupByCategory(\n templates: Template[],\n): { category: TemplateCategory; displayName: string; items: Template[] }[] {\n const order: TemplateCategory[] = [];\n const map = new Map<TemplateCategory, Template[]>();\n\n for (const t of templates) {\n if (!map.has(t.category)) {\n order.push(t.category);\n map.set(t.category, []);\n }\n map.get(t.category)!.push(t);\n }\n\n return order.map((cat) => ({\n category: cat,\n displayName: CATEGORY_DISPLAY_NAMES[cat] ?? cat,\n items: map.get(cat)!,\n }));\n}\n\nconst GROUPED_TEMPLATES = groupByCategory(TEMPLATES);\n\ntype Tab = \"recommended\" | TemplateCategory;\n\nexport function TemplateSelector({\n selected,\n onChange,\n projectType,\n}: TemplateSelectorProps) {\n const [activeTab, setActiveTab] = useState<Tab>(\"recommended\");\n\n const isSelected = (id: string) => selected.some((s) => s.id === id);\n\n const toggle = (item: Template) => {\n if (isSelected(item.id)) {\n onChange(selected.filter((s) => s.id !== item.id));\n } else {\n onChange([\n ...selected,\n { id: item.id, name: item.name, path: item.defaultPath },\n ]);\n }\n };\n\n const selectAll = (category: TemplateCategory) => {\n const group = GROUPED_TEMPLATES.find((g) => g.category === category);\n if (!group) return;\n const allSelected = group.items.every((i) => isSelected(i.id));\n if (allSelected) {\n onChange(selected.filter((s) => !group.items.some((i) => i.id === s.id)));\n } else {\n const newSelected = [...selected];\n group.items.forEach((item) => {\n if (!isSelected(item.id)) {\n newSelected.push({\n id: item.id,\n name: item.name,\n path: item.defaultPath,\n });\n }\n });\n onChange(newSelected);\n }\n };\n\n const matchingPresets = PRESETS.filter(\n (p) =>\n p.projectTypes.length === 0 || p.projectTypes.includes(projectType ?? \"\"),\n );\n\n return (\n <div className=\"space-y-6\">\n <div>\n <h2 className=\"text-xl font-semibold text-txt mb-2\">\n Select Templates\n </h2>\n <p className=\"text-muted\">\n Choose which documentation files to generate for your project.\n </p>\n </div>\n\n {/* Tab bar */}\n <div className=\"flex gap-1 overflow-x-auto pb-2 border-b border-border\">\n <button\n onClick={() => setActiveTab(\"recommended\")}\n className={cn(\n \"px-3 py-1.5 text-sm rounded-md whitespace-nowrap transition-colors\",\n activeTab === \"recommended\"\n ? \"bg-accent text-white\"\n : \"text-muted hover:text-txt\",\n )}\n >\n ⭐ Recommended\n </button>\n {GROUPED_TEMPLATES.map((group) => (\n <button\n key={group.category}\n onClick={() => setActiveTab(group.category)}\n className={cn(\n \"px-3 py-1.5 text-sm rounded-md whitespace-nowrap transition-colors\",\n activeTab === group.category\n ? \"bg-accent text-white\"\n : \"text-muted hover:text-txt\",\n )}\n >\n {group.displayName}\n </button>\n ))}\n </div>\n\n {/* Recommended tab content */}\n {activeTab === \"recommended\" && (\n <div className=\"space-y-4\">\n {matchingPresets.length === 0 && (\n <p className=\"text-muted text-sm\">\n No presets match your project type. Select templates manually from\n the tabs above.\n </p>\n )}\n {matchingPresets.map((preset) => {\n const presetSelected = preset.templateIds.every((id) =>\n isSelected(id),\n );\n return (\n <div\n key={preset.id}\n className=\"p-4 rounded-lg border border-border hover:border-accent/50 transition-colors\"\n >\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <div className=\"font-medium text-txt\">{preset.name}</div>\n <div className=\"text-sm text-muted mt-1\">\n {preset.description}\n </div>\n <div className=\"text-xs text-accent/70 mt-1\">\n {preset.templateIds.length} templates\n </div>\n </div>\n <button\n onClick={() => {\n const selections = preset.templateIds\n .map((id) => TEMPLATES.find((t) => t.id === id))\n .filter((t): t is Template => t !== undefined)\n .map((t) => ({\n id: t.id,\n name: t.name,\n path: t.defaultPath,\n }));\n onChange(selections);\n }}\n className={cn(\n \"shrink-0 px-3 py-1.5 text-sm rounded-lg border transition-colors\",\n presetSelected\n ? \"border-accent bg-accent/10 text-accent\"\n : \"border-border hover:border-accent text-txt\",\n )}\n >\n {presetSelected ? \"✓ Selected\" : \"Select bundle\"}\n </button>\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {/* Category tab content */}\n {activeTab !== \"recommended\" &&\n (() => {\n const group = GROUPED_TEMPLATES.find((g) => g.category === activeTab);\n if (!group) return null;\n return (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-sm font-medium text-muted uppercase tracking-wider\">\n {group.displayName}\n </h3>\n <button\n onClick={() => selectAll(group.category)}\n className=\"text-xs text-accent hover:text-accent/80 transition-colors\"\n >\n {group.items.every((i) => isSelected(i.id))\n ? \"Deselect all\"\n : \"Select all\"}\n </button>\n </div>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 gap-3\">\n {group.items.map((item) => {\n const Icon =\n TEMPLATE_ICONS[item.id] ?? CATEGORY_ICONS[item.category];\n const checked = isSelected(item.id);\n return (\n <button\n key={item.id}\n onClick={() => toggle(item)}\n className={cn(\n \"p-3 rounded-lg border text-left transition-all\",\n checked\n ? \"border-accent bg-accent/10\"\n : \"border-border hover:border-accent/50\",\n )}\n >\n <div className=\"flex items-start gap-2\">\n <div\n className={cn(\n \"w-8 h-8 rounded-lg flex items-center justify-center shrink-0\",\n checked ? \"bg-accent/20\" : \"bg-surface2\",\n )}\n >\n <Icon\n className={cn(\n \"w-4 h-4\",\n checked ? \"text-accent\" : \"text-muted\",\n )}\n />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-medium text-sm text-txt truncate\">\n {item.name}\n </div>\n <div className=\"text-xs text-muted truncate\">\n {item.description}\n </div>\n </div>\n {checked && (\n <Check className=\"w-4 h-4 text-accent shrink-0\" />\n )}\n </div>\n </button>\n );\n })}\n </div>\n </div>\n );\n })()}\n\n <div className=\"text-sm text-muted\">\n {selected.length} template{selected.length !== 1 ? \"s\" : \"\"} selected\n </div>\n </div>\n );\n}\n","\"use client\"\r\n\r\nimport { Input } from \"@/components/ui/input\"\r\nimport type { ProjectAnswers } from \"./ProjectQuestionnaire\"\r\n\r\ninterface BasicInfoProps {\r\n answers: ProjectAnswers\r\n onChange: (answers: ProjectAnswers) => void\r\n}\r\n\r\nconst PROJECT_TYPES = [\r\n { value: \"web-app\", label: \"Web Application\" },\r\n { value: \"api-backend\", label: \"API / Backend\" },\r\n { value: \"cli-tool\", label: \"CLI Tool\" },\r\n { value: \"library\", label: \"Library / SDK\" },\r\n { value: \"mobile-app\", label: \"Mobile App\" },\r\n { value: \"monorepo\", label: \"Monorepo\" },\r\n]\r\n\r\nexport function BasicInfo({ answers, onChange }: BasicInfoProps) {\r\n const update = (key: keyof ProjectAnswers, value: string) => {\r\n onChange({ ...answers, [key]: value })\r\n }\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n <div>\r\n <h2 className=\"text-xl font-semibold text-txt mb-2\">Basic Information</h2>\r\n <p className=\"text-muted\">Tell us about your project to customize the documentation.</p>\r\n </div>\r\n\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Project Name <span className=\"text-red-400\">*</span>\r\n </label>\r\n <Input\r\n value={answers.projectName}\r\n onChange={(e) => update(\"projectName\", e.target.value)}\r\n placeholder=\"My Awesome Project\"\r\n className=\"bg-surface2\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Project Type\r\n </label>\r\n <select\r\n value={answers.projectType}\r\n onChange={(e) => update(\"projectType\", e.target.value)}\r\n className=\"w-full h-10 px-3 rounded-md border border-border bg-surface2 text-txt text-sm focus:outline-none focus:ring-2 focus:ring-accent/50\"\r\n >\r\n {PROJECT_TYPES.map(type => (\r\n <option key={type.value} value={type.value}>{type.label}</option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Repository URL <span className=\"text-muted\">(optional)</span>\r\n </label>\r\n <Input\r\n value={answers.repoUrl}\r\n onChange={(e) => update(\"repoUrl\", e.target.value)}\r\n placeholder=\"https://github.com/org/repo\"\r\n className=\"bg-surface2\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Description\r\n </label>\r\n <textarea\r\n value={answers.description}\r\n onChange={(e) => update(\"description\", e.target.value)}\r\n placeholder=\"A brief description of what your project does...\"\r\n rows={3}\r\n className=\"w-full px-3 py-2 rounded-md border border-border bg-surface2 text-txt text-sm resize-none focus:outline-none focus:ring-2 focus:ring-accent/50\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Key Features <span className=\"text-muted\">(optional)</span>\r\n </label>\r\n <Input\r\n value={answers.keyFeatures}\r\n onChange={(e) => update(\"keyFeatures\", e.target.value)}\r\n placeholder=\"Auth, payments, real-time sync, etc.\"\r\n className=\"bg-surface2\"\r\n />\r\n <p className=\"text-xs text-muted mt-1\">Comma-separated list of main features</p>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","\"use client\"\r\n\r\nimport { useState, KeyboardEvent } from \"react\"\r\nimport { Search, X } from \"lucide-react\"\r\nimport { TECH_CATEGORIES, TECH_PRESETS } from \"@/lib/tech-stacks\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\ninterface TechStackInputProps {\r\n value: string[]\r\n onChange: (tags: string[]) => void\r\n}\r\n\r\nexport function TechStackInput({ value, onChange }: TechStackInputProps) {\r\n const [search, setSearch] = useState(\"\")\r\n const [activeCategory, setActiveCategory] = useState(\"language\")\r\n\r\n const isSearching = search.trim().length > 0\r\n\r\n const applyPreset = (techs: string[]) => {\r\n const toAdd = techs.filter(t => !value.includes(t))\r\n if (toAdd.length > 0) onChange([...value, ...toAdd])\r\n }\r\n\r\n const toggleTech = (tech: string) => {\r\n if (value.includes(tech)) {\r\n onChange(value.filter(t => t !== tech))\r\n } else {\r\n onChange([...value, tech])\r\n }\r\n }\r\n\r\n const addCustom = (text: string) => {\r\n const t = text.trim()\r\n if (t && !value.includes(t)) onChange([...value, t])\r\n setSearch(\"\")\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault()\r\n const exactMatch = TECH_CATEGORIES.flatMap(c => c.techs).some(\r\n t => t.toLowerCase() === search.toLowerCase()\r\n )\r\n if (!exactMatch && search.trim()) {\r\n addCustom(search)\r\n }\r\n } else if (e.key === \"Escape\") {\r\n setSearch(\"\")\r\n }\r\n }\r\n\r\n // Search results: filter all categories\r\n const searchResults = isSearching\r\n ? TECH_CATEGORIES.map(cat => ({\r\n ...cat,\r\n items: cat.techs.filter(t => t.toLowerCase().includes(search.toLowerCase())),\r\n })).filter(cat => cat.items.length > 0)\r\n : []\r\n\r\n // Active category pills\r\n const activeCategoryTechs = TECH_CATEGORIES.find(c => c.id === activeCategory)?.techs ?? []\r\n\r\n // Show \"add custom\" hint when search has text but no exact match\r\n const hasExactMatch = TECH_CATEGORIES.flatMap(c => c.techs).some(\r\n t => t.toLowerCase() === search.toLowerCase()\r\n )\r\n const showCustomHint = isSearching && !hasExactMatch && search.trim().length > 0\r\n\r\n return (\r\n <div className=\"space-y-3\">\r\n {/* Quick Presets */}\r\n <div>\r\n <p className=\"text-xs font-medium text-muted mb-2 uppercase tracking-wider\">Quick Presets</p>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {TECH_PRESETS.map(preset => (\r\n <button\r\n key={preset.id}\r\n type=\"button\"\r\n onClick={() => applyPreset(preset.techs)}\r\n className=\"px-3 py-1 rounded-md border border-border text-xs text-txt hover:border-accent hover:text-accent transition-colors\"\r\n >\r\n {preset.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Search bar */}\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted pointer-events-none\" />\r\n <input\r\n value={search}\r\n onChange={e => setSearch(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n placeholder=\"Search technologies...\"\r\n className=\"w-full pl-9 pr-3 py-2 rounded-md border border-border bg-surface2 text-txt text-sm outline-none placeholder:text-muted focus:border-accent transition-colors\"\r\n />\r\n {isSearching && (\r\n <button\r\n type=\"button\"\r\n onClick={() => setSearch(\"\")}\r\n className=\"absolute right-2 top-1/2 -translate-y-1/2 text-muted hover:text-txt transition-colors\"\r\n >\r\n <X className=\"w-4 h-4\" />\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Category tabs — hidden while searching */}\r\n {!isSearching && (\r\n <div className=\"flex gap-1 overflow-x-auto pb-1 scrollbar-hide\">\r\n {TECH_CATEGORIES.map(cat => (\r\n <button\r\n key={cat.id}\r\n type=\"button\"\r\n onClick={() => setActiveCategory(cat.id)}\r\n className={cn(\r\n \"px-3 py-1 rounded-md text-xs font-medium whitespace-nowrap transition-colors flex-shrink-0\",\r\n activeCategory === cat.id\r\n ? \"bg-accent text-white\"\r\n : \"bg-surface2 text-muted hover:text-txt hover:bg-surface\"\r\n )}\r\n >\r\n {cat.label}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Pill grid */}\r\n {!isSearching ? (\r\n <div className=\"flex flex-wrap gap-2\">\r\n {activeCategoryTechs.map(tech => (\r\n <button\r\n key={tech}\r\n type=\"button\"\r\n onClick={() => toggleTech(tech)}\r\n className={cn(\r\n \"px-3 py-1 rounded-full text-sm border transition-colors\",\r\n value.includes(tech)\r\n ? \"bg-accent/15 border-accent text-accent\"\r\n : \"bg-surface2 border-border text-txt hover:border-accent/50 hover:text-accent/80\"\r\n )}\r\n >\r\n {tech}\r\n </button>\r\n ))}\r\n </div>\r\n ) : (\r\n <div className=\"space-y-3\">\r\n {searchResults.map(cat => (\r\n <div key={cat.id}>\r\n <p className=\"text-xs font-medium text-muted uppercase tracking-wider mb-1.5\">{cat.label}</p>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {cat.items.map(tech => (\r\n <button\r\n key={tech}\r\n type=\"button\"\r\n onClick={() => toggleTech(tech)}\r\n className={cn(\r\n \"px-3 py-1 rounded-full text-sm border transition-colors\",\r\n value.includes(tech)\r\n ? \"bg-accent/15 border-accent text-accent\"\r\n : \"bg-surface2 border-border text-txt hover:border-accent/50 hover:text-accent/80\"\r\n )}\r\n >\r\n {tech}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n ))}\r\n {showCustomHint && (\r\n <p className=\"text-xs text-muted\">\r\n Press <kbd className=\"px-1 py-0.5 rounded bg-surface border border-border text-xs\">Enter</kbd> to add &quot;{search}&quot;\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Selected chips */}\r\n {value.length > 0 && (\r\n <div className=\"pt-2 border-t border-border\">\r\n <p className=\"text-xs font-medium text-muted mb-2\">Selected ({value.length})</p>\r\n <div className=\"flex flex-wrap gap-1.5\">\r\n {value.map(tag => (\r\n <span\r\n key={tag}\r\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-md bg-accent/15 text-accent text-sm font-medium\"\r\n >\r\n {tag}\r\n <button\r\n type=\"button\"\r\n onClick={() => onChange(value.filter(t => t !== tag))}\r\n className=\"hover:text-accent/70 transition-colors\"\r\n >\r\n <X className=\"w-3 h-3\" />\r\n </button>\r\n </span>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n","\"use client\"\r\n\r\nimport { Input } from \"@/components/ui/input\"\r\nimport { TechStackInput } from \"./TechStackInput\"\r\nimport type { ProjectAnswers } from \"./ProjectQuestionnaire\"\r\nimport { cn } from \"@/lib/utils\"\r\n\r\ninterface TeamConventionsProps {\r\n answers: ProjectAnswers\r\n onChange: (answers: ProjectAnswers) => void\r\n}\r\n\r\nconst TEAM_SIZES = [\r\n { value: \"solo\", label: \"Solo\" },\r\n { value: \"2-5\", label: \"2–5\" },\r\n { value: \"6-15\", label: \"6–15\" },\r\n { value: \"15+\", label: \"15+\" },\r\n]\r\n\r\nconst TEST_FRAMEWORKS = [\r\n { value: \"\", label: \"Not sure / other\" },\r\n { value: \"Jest\", label: \"Jest\" },\r\n { value: \"Vitest\", label: \"Vitest\" },\r\n { value: \"pytest\", label: \"pytest\" },\r\n { value: \"RSpec\", label: \"RSpec\" },\r\n { value: \"Mocha\", label: \"Mocha\" },\r\n]\r\n\r\nconst BRANCH_STRATEGIES = [\r\n { value: \"\", label: \"Not specified\" },\r\n { value: \"trunk-based\", label: \"Trunk-based\" },\r\n { value: \"gitflow\", label: \"Gitflow\" },\r\n { value: \"feature-branch\", label: \"Feature branches\" },\r\n]\r\n\r\nconst CI_CD_OPTIONS = [\"GitHub Actions\", \"GitLab CI\", \"CircleCI\", \"Jenkins\", \"Buildkite\", \"Travis CI\"]\r\nconst LINTING_OPTIONS = [\"ESLint\", \"Prettier\", \"Biome\", \"Stylelint\", \"oxc\", \"Rome\"]\r\nconst DEPLOYMENT_OPTIONS = [\"Vercel\", \"AWS\", \"GCP\", \"Azure\", \"Fly.io\", \"Railway\", \"Render\", \"Docker\", \"Kubernetes\", \"Heroku\"]\r\n\r\nexport function TeamConventions({ answers, onChange }: TeamConventionsProps) {\r\n const update = <K extends keyof ProjectAnswers>(key: K, value: ProjectAnswers[K]) => {\r\n onChange({ ...answers, [key]: value })\r\n }\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n <div>\r\n <h2 className=\"text-xl font-semibold text-txt mb-2\">Team & Conventions</h2>\r\n <p className=\"text-muted\">Help us tailor documentation to your team. All fields are optional.</p>\r\n </div>\r\n\r\n <div className=\"space-y-5\">\r\n {/* Team size */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-2\">Team Size</label>\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {TEAM_SIZES.map(size => (\r\n <button\r\n key={size.value}\r\n type=\"button\"\r\n onClick={() => update(\"teamSize\", answers.teamSize === size.value ? \"\" : size.value)}\r\n className={cn(\r\n \"px-4 py-2 rounded-lg border text-sm font-medium transition-all\",\r\n answers.teamSize === size.value\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {size.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Linting */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">Linting & Formatting</label>\r\n <div className=\"flex gap-2 flex-wrap mb-2\">\r\n {LINTING_OPTIONS.map(opt => (\r\n <button\r\n key={opt}\r\n type=\"button\"\r\n onClick={() => {\r\n const next = answers.linting.includes(opt)\r\n ? answers.linting.filter(l => l !== opt)\r\n : [...answers.linting, opt]\r\n update(\"linting\", next)\r\n }}\r\n className={cn(\r\n \"px-3 py-1.5 rounded-md border text-sm transition-all\",\r\n answers.linting.includes(opt)\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {opt}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Test framework */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">Test Framework</label>\r\n <select\r\n value={answers.testFramework}\r\n onChange={(e) => update(\"testFramework\", e.target.value)}\r\n className=\"w-full h-10 px-3 rounded-md border border-border bg-surface2 text-txt text-sm focus:outline-none focus:ring-2 focus:ring-accent/50\"\r\n >\r\n {TEST_FRAMEWORKS.map(f => (\r\n <option key={f.value} value={f.value}>{f.label}</option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n {/* CI/CD */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">CI/CD</label>\r\n <div className=\"flex gap-2 flex-wrap mb-2\">\r\n {CI_CD_OPTIONS.map(opt => (\r\n <button\r\n key={opt}\r\n type=\"button\"\r\n onClick={() => {\r\n const next = answers.ciCd.includes(opt)\r\n ? answers.ciCd.filter(c => c !== opt)\r\n : [...answers.ciCd, opt]\r\n update(\"ciCd\", next)\r\n }}\r\n className={cn(\r\n \"px-3 py-1.5 rounded-md border text-sm transition-all\",\r\n answers.ciCd.includes(opt)\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {opt}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Branch strategy */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-2\">Branch Strategy</label>\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {BRANCH_STRATEGIES.filter(b => b.value).map(b => (\r\n <button\r\n key={b.value}\r\n type=\"button\"\r\n onClick={() => update(\"branchStrategy\", answers.branchStrategy === b.value ? \"\" : b.value)}\r\n className={cn(\r\n \"px-4 py-2 rounded-lg border text-sm font-medium transition-all\",\r\n answers.branchStrategy === b.value\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {b.label}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Deployment target */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">Deployment Target</label>\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {DEPLOYMENT_OPTIONS.map(opt => (\r\n <button\r\n key={opt}\r\n type=\"button\"\r\n onClick={() => {\r\n const next = answers.deploymentTarget.includes(opt)\r\n ? answers.deploymentTarget.filter(d => d !== opt)\r\n : [...answers.deploymentTarget, opt]\r\n update(\"deploymentTarget\", next)\r\n }}\r\n className={cn(\r\n \"px-3 py-1.5 rounded-md border text-sm transition-all\",\r\n answers.deploymentTarget.includes(opt)\r\n ? \"border-accent bg-accent/10 text-accent\"\r\n : \"border-border text-txt hover:border-accent/50\"\r\n )}\r\n >\r\n {opt}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Additional conventions */}\r\n <div>\r\n <label className=\"block text-sm font-medium text-txt mb-1.5\">\r\n Additional Conventions <span className=\"text-muted\">(optional)</span>\r\n </label>\r\n <Input\r\n value={answers.conventions}\r\n onChange={(e) => update(\"conventions\", e.target.value)}\r\n placeholder=\"Conventional Commits, semantic versioning, etc.\"\r\n className=\"bg-surface2\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { FileText, ChevronDown, ChevronRight, AlertCircle } from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { MarkdownRenderer } from \"@/components/docs/MarkdownRenderer\";\n\nexport interface GeneratedFile {\n path: string;\n content: string;\n skipped?: boolean;\n reason?: string;\n}\n\ninterface GenerationPreviewProps {\n files: GeneratedFile[];\n onWrite: () => void;\n isWriting: boolean;\n mode: \"quick\" | \"ai\";\n onModeChange: (mode: \"quick\" | \"ai\") => void;\n}\n\nexport function GenerationPreview({\n files,\n onWrite,\n isWriting,\n mode,\n onModeChange,\n}: GenerationPreviewProps) {\n const [expanded, setExpanded] = useState<Set<string>>(new Set());\n\n const toggleExpand = (path: string) => {\n setExpanded((prev) => {\n const next = new Set(prev);\n if (next.has(path)) next.delete(path);\n else next.add(path);\n return next;\n });\n };\n\n const toWrite = files.filter((f) => !f.skipped);\n const skipped = files.filter((f) => f.skipped);\n\n if (files.length === 0) {\n return (\n <div className=\"text-center py-12\">\n <AlertCircle className=\"w-12 h-12 text-muted mx-auto mb-4\" />\n <h3 className=\"text-lg font-medium text-txt mb-2\">\n No files generated\n </h3>\n <p className=\"text-muted\">\n Something went wrong. Please go back and try again.\n </p>\n </div>\n );\n }\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-xl font-semibold text-txt mb-2\">Preview</h2>\n <p className=\"text-muted\">Review the files that will be created.</p>\n </div>\n <div className=\"flex items-center gap-1 bg-surface2 rounded-lg p-1\">\n <button\n onClick={() => onModeChange(\"quick\")}\n className={cn(\n \"px-3 py-1 text-sm rounded-md transition-colors\",\n mode === \"quick\"\n ? \"bg-surface text-txt shadow-sm\"\n : \"text-muted hover:text-txt\",\n )}\n >\n Quick\n </button>\n <button\n onClick={() => onModeChange(\"ai\")}\n className={cn(\n \"px-3 py-1 text-sm rounded-md transition-colors\",\n mode === \"ai\"\n ? \"bg-surface text-txt shadow-sm\"\n : \"text-muted hover:text-txt\",\n )}\n >\n AI\n </button>\n </div>\n </div>\n\n {/* Files to write */}\n <div className=\"space-y-2\">\n <h3 className=\"text-sm font-medium text-muted uppercase tracking-wider\">\n Files to create ({toWrite.length})\n </h3>\n <div className=\"border border-border rounded-lg divide-y divide-border overflow-hidden\">\n {toWrite.map((file) => {\n const isExpanded = expanded.has(file.path);\n const isMd = file.path.endsWith(\".md\");\n return (\n <div key={file.path}>\n <button\n onClick={() => toggleExpand(file.path)}\n className=\"w-full flex items-center gap-3 p-3 hover:bg-surface2 transition-colors\"\n >\n {isExpanded ? (\n <ChevronDown className=\"w-4 h-4 text-muted shrink-0\" />\n ) : (\n <ChevronRight className=\"w-4 h-4 text-muted shrink-0\" />\n )}\n <FileText className=\"w-4 h-4 text-accent shrink-0\" />\n <span className=\"text-sm font-mono text-txt\">\n {file.path}\n </span>\n </button>\n {isExpanded && (\n <div className=\"px-3 pb-3\">\n {isMd ? (\n <div className=\"prose prose-invert max-w-none p-3 bg-surface2 rounded-lg max-h-64 overflow-y-auto text-sm\">\n <MarkdownRenderer\n content={file.content.slice(0, 3000)}\n />\n </div>\n ) : (\n <pre className=\"p-3 bg-surface2 rounded-lg text-xs text-muted overflow-x-auto max-h-64 overflow-y-auto\">\n {file.content.slice(0, 2000)}\n {file.content.length > 2000 && \"\\n\\n...(truncated)\"}\n </pre>\n )}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n\n {/* Skipped files */}\n {skipped.length > 0 && (\n <div className=\"space-y-2\">\n <h3 className=\"text-sm font-medium text-muted uppercase tracking-wider\">\n Skipped ({skipped.length})\n </h3>\n <div className=\"bg-amber-500/10 border border-amber-500/30 rounded-lg p-3 space-y-1\">\n {skipped.map((file) => (\n <div key={file.path} className=\"flex items-center gap-2 text-sm\">\n <AlertCircle className=\"w-4 h-4 text-amber-400 shrink-0\" />\n <span className=\"font-mono text-amber-400\">{file.path}</span>\n <span className=\"text-amber-400/70\">\n — {file.reason || \"already exists\"}\n </span>\n </div>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"text-sm text-muted\">\n {toWrite.length} file{toWrite.length !== 1 ? \"s\" : \"\"} will be created\n {skipped.length > 0 && `, ${skipped.length} skipped`}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect } from \"react\";\nimport { useApp } from \"@/context/AppContext\";\nimport {\n ChevronLeft,\n ChevronRight,\n Sparkles,\n Check,\n Loader2,\n} from \"lucide-react\";\nimport { cn } from \"@/lib/utils\";\nimport { TemplateSelector, type TemplateSelection } from \"./TemplateSelector\";\nimport { type ProjectAnswers } from \"./ProjectQuestionnaire\";\nimport { BasicInfo } from \"./BasicInfo\";\nimport { TechStackInput } from \"./TechStackInput\";\nimport { TeamConventions } from \"./TeamConventions\";\nimport { GenerationPreview, type GeneratedFile } from \"./GenerationPreview\";\nimport { PRESETS, type TemplatePreset } from \"@/lib/presets\";\nimport { TEMPLATES, type Template } from \"@/lib/templates\";\n\nconst STEPS = [\n { id: \"welcome\", title: \"Welcome\" },\n { id: \"basic-info\", title: \"Basic Info\" },\n { id: \"templates\", title: \"Templates\" },\n { id: \"tech-stack\", title: \"Tech Stack\" },\n { id: \"team\", title: \"Team\" },\n { id: \"preview\", title: \"Preview\" },\n { id: \"complete\", title: \"Complete\" },\n];\n\nconst LAST_STEP = STEPS.length - 1;\nconst GENERATE_STEP = 4; // \"team\" step — clicking Next on team triggers generation\nconst PREVIEW_STEP = 5;\nconst WRITE_STEP = 6;\n\nexport function SetupWizard() {\n const { activeProject, rootParam, projects } = useApp();\n const currentProject = projects.find((p) => p.root === activeProject);\n const [step, setStep] = useState(0);\n const [selectedTemplates, setSelectedTemplates] = useState<\n TemplateSelection[]\n >([]);\n const [answers, setAnswers] = useState<ProjectAnswers>({\n projectName: \"\",\n projectType: \"web-app\",\n description: \"\",\n repoUrl: \"\",\n techStackTags: [],\n keyFeatures: \"\",\n teamSize: \"\",\n linting: [],\n testFramework: \"\",\n ciCd: [],\n branchStrategy: \"\",\n deploymentTarget: [],\n conventions: \"\",\n });\n const [mode, setMode] = useState<\"quick\" | \"ai\">(\"quick\");\n const [generatedFiles, setGeneratedFiles] = useState<GeneratedFile[]>([]);\n const [isGenerating, setIsGenerating] = useState(false);\n const [existingFiles, setExistingFiles] = useState<string[]>([]);\n\n useEffect(() => {\n async function checkExisting() {\n try {\n const res = await fetch(`/api/docs${rootParam}`);\n const docs = await res.json();\n if (!Array.isArray(docs)) return;\n const existing = docs\n .filter(\n (d: { path: string }) =>\n d.path === \"CLAUDE.md\" || d.path === \"AGENTS.md\",\n )\n .map((d: { path: string }) => d.path);\n setExistingFiles(existing);\n } catch {}\n }\n checkExisting();\n }, [rootParam]);\n\n const canProceed = () => {\n switch (step) {\n case 0:\n return true;\n case 1:\n return answers.projectName.trim() !== \"\";\n case 2:\n return selectedTemplates.length > 0;\n default:\n return true;\n }\n };\n\n const applyPreset = (preset: TemplatePreset) => {\n const selections = preset.templateIds\n .map((id) => TEMPLATES.find((t) => t.id === id))\n .filter((t): t is Template => t !== undefined)\n .map((t) => ({ id: t.id, name: t.name, path: t.defaultPath }));\n setSelectedTemplates(selections);\n setStep(1); // Always go to BasicInfo after preset selection\n };\n\n const handleNext = async () => {\n if (step === GENERATE_STEP) {\n setIsGenerating(true);\n try {\n const res = await fetch(`/api/setup/generate${rootParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ templates: selectedTemplates, answers, mode }),\n });\n const data = await res.json();\n setGeneratedFiles(data.files || []);\n } catch {\n setGeneratedFiles([]);\n }\n setIsGenerating(false);\n }\n setStep((s) => Math.min(s + 1, LAST_STEP));\n };\n\n const handleBack = () => {\n setStep((s) => Math.max(s - 1, 0));\n };\n\n const handleWrite = async () => {\n setIsGenerating(true);\n try {\n await fetch(`/api/setup/write${rootParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ files: generatedFiles }),\n });\n setStep(WRITE_STEP);\n } catch {}\n setIsGenerating(false);\n };\n\n return (\n <div className=\"min-h-screen bg-bg flex flex-col\">\n {/* Progress bar */}\n <div className=\"border-b border-border bg-surface\">\n <div className=\"max-w-3xl mx-auto px-6 py-4\">\n <div className=\"flex items-center justify-between mb-2\">\n <h1 className=\"text-lg font-semibold text-txt\">Setup Wizard</h1>\n <span className=\"text-sm text-muted\">\n Step {step + 1} of {STEPS.length}\n </span>\n </div>\n <div className=\"flex gap-1\">\n {STEPS.map((s, i) => (\n <div\n key={s.id}\n className={cn(\n \"h-1 flex-1 rounded-full transition-colors\",\n i <= step ? \"bg-accent\" : \"bg-border\",\n )}\n />\n ))}\n </div>\n <div className=\"flex gap-1 mt-1\">\n {STEPS.map((s, i) => (\n <div key={s.id} className=\"flex-1 text-center\">\n {i === step && (\n <span className=\"text-xs text-accent\">{s.title}</span>\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto\">\n <div className=\"max-w-3xl mx-auto px-6 py-8\">\n {/* Step 0: Welcome */}\n {step === 0 && (\n <div className=\"space-y-6\">\n <div className=\"text-center space-y-4\">\n <div className=\"w-16 h-16 rounded-2xl bg-accent/10 flex items-center justify-center mx-auto\">\n <Sparkles className=\"w-8 h-8 text-accent\" />\n </div>\n <h2 className=\"text-2xl font-bold text-txt\">\n Welcome to VibeDoc\n </h2>\n <p className=\"text-muted max-w-md mx-auto\">\n Let&apos;s set up your project documentation. You can generate\n AI-optimized docs like CLAUDE.md, architecture overviews, and\n more.\n </p>\n </div>\n\n {currentProject && (\n <div className=\"bg-surface border border-border rounded-lg p-4\">\n <div className=\"text-sm text-muted mb-1\">Current Project</div>\n <div className=\"font-medium text-txt\">\n {currentProject.name}\n </div>\n <div className=\"text-xs text-muted mt-1 font-mono\">\n {currentProject.root}\n </div>\n </div>\n )}\n\n {existingFiles.length > 0 && (\n <div className=\"bg-amber-500/10 border border-amber-500/30 rounded-lg p-4\">\n <div className=\"text-sm font-medium text-amber-400 mb-1\">\n Existing files detected\n </div>\n <div className=\"text-sm text-amber-400/80\">\n {existingFiles.join(\", \")} already exist. They will be\n skipped during generation.\n </div>\n </div>\n )}\n\n <div>\n <div className=\"text-sm font-medium text-txt mb-3\">\n Quick Start with a Preset\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n {[\n \"nextjs-production\",\n \"api-backend\",\n \"minimal\",\n \"ai-first\",\n ].map((presetId) => {\n const preset = PRESETS.find((p) => p.id === presetId);\n if (!preset) return null;\n return (\n <button\n key={presetId}\n onClick={() => applyPreset(preset)}\n className=\"p-3 rounded-lg border border-border hover:border-accent/50 text-left transition-all\"\n >\n <div className=\"font-medium text-sm text-txt\">\n {preset.name}\n </div>\n <div className=\"text-xs text-muted mt-1\">\n {preset.description}\n </div>\n </button>\n );\n })}\n </div>\n </div>\n </div>\n )}\n\n {/* Step 1: Basic Info */}\n {step === 1 && <BasicInfo answers={answers} onChange={setAnswers} />}\n\n {/* Step 2: Template Selection */}\n {step === 2 && (\n <TemplateSelector\n selected={selectedTemplates}\n onChange={setSelectedTemplates}\n projectType={answers.projectType}\n />\n )}\n\n {/* Step 3: Tech Stack */}\n {step === 3 && (\n <div className=\"space-y-6\">\n <div>\n <h2 className=\"text-xl font-semibold text-txt mb-2\">\n Tech Stack\n </h2>\n <p className=\"text-muted\">\n Add the technologies your project uses. Search or type custom\n ones.\n </p>\n </div>\n <TechStackInput\n value={answers.techStackTags}\n onChange={(tags) =>\n setAnswers((a) => ({ ...a, techStackTags: tags }))\n }\n />\n {answers.techStackTags.length > 0 && (\n <p className=\"text-sm text-muted\">\n {answers.techStackTags.length} technolog\n {answers.techStackTags.length !== 1 ? \"ies\" : \"y\"} added\n </p>\n )}\n </div>\n )}\n\n {/* Step 4: Team & Conventions */}\n {step === 4 && (\n <TeamConventions answers={answers} onChange={setAnswers} />\n )}\n\n {/* Step 5: Preview */}\n {step === 5 && (\n <GenerationPreview\n files={generatedFiles}\n onWrite={handleWrite}\n isWriting={isGenerating}\n mode={mode}\n onModeChange={setMode}\n />\n )}\n\n {/* Step 6: Complete */}\n {step === 6 && (\n <div className=\"text-center space-y-6\">\n <div className=\"w-16 h-16 rounded-full bg-green-500/10 flex items-center justify-center mx-auto\">\n <Check className=\"w-8 h-8 text-green-500\" />\n </div>\n <h2 className=\"text-2xl font-bold text-txt\">Setup Complete!</h2>\n <p className=\"text-muted max-w-md mx-auto\">\n Your documentation files have been created. You can now view and\n edit them in the Docs tab.\n </p>\n\n <div className=\"bg-surface border border-border rounded-lg p-4 text-left max-w-md mx-auto\">\n <div className=\"text-sm font-medium text-txt mb-2\">\n Next steps:\n </div>\n <ul className=\"text-sm text-muted space-y-2\">\n <li>• Review generated files in the Docs tab</li>\n <li>• Edit content to match your project specifics</li>\n <li>• Connect your coding agent via MCP for AI assistance</li>\n </ul>\n </div>\n\n <a\n href=\"/docs\"\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors\"\n >\n Go to Docs\n <ChevronRight className=\"w-4 h-4\" />\n </a>\n </div>\n )}\n </div>\n </div>\n\n {/* Footer navigation */}\n {step < LAST_STEP && (\n <div className=\"border-t border-border bg-surface\">\n <div className=\"max-w-3xl mx-auto px-6 py-4 flex items-center justify-between\">\n <button\n onClick={handleBack}\n disabled={step === 0}\n className={cn(\n \"flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-colors\",\n step === 0\n ? \"text-muted cursor-not-allowed\"\n : \"text-txt hover:bg-surface2\",\n )}\n >\n <ChevronLeft className=\"w-4 h-4\" />\n Back\n </button>\n\n {step === PREVIEW_STEP ? (\n <button\n onClick={handleWrite}\n disabled={isGenerating || generatedFiles.length === 0}\n className=\"flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors disabled:opacity-50\"\n >\n {isGenerating ? (\n <>\n <Loader2 className=\"w-4 h-4 animate-spin\" />\n Writing...\n </>\n ) : (\n <>\n Write Files\n <Check className=\"w-4 h-4\" />\n </>\n )}\n </button>\n ) : (\n <button\n onClick={handleNext}\n disabled={!canProceed() || isGenerating}\n className=\"flex items-center gap-2 px-4 py-2 bg-accent text-white rounded-lg font-medium hover:bg-accent/90 transition-colors disabled:opacity-50\"\n >\n {isGenerating ? (\n <>\n <Loader2 className=\"w-4 h-4 animate-spin\" />\n Generating...\n </>\n ) : (\n <>\n {step === GENERATE_STEP ? \"Generate\" : \"Next\"}\n <ChevronRight className=\"w-4 h-4\" />\n </>\n )}\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n","export interface TechCategory {\r\n id: string\r\n label: string\r\n techs: string[]\r\n}\r\n\r\nexport const TECH_CATEGORIES: TechCategory[] = [\r\n {\r\n id: \"language\",\r\n label: \"Language\",\r\n techs: [\"TypeScript\", \"JavaScript\", \"Python\", \"Go\", \"Rust\", \"Java\", \"C#\", \"Ruby\", \"Kotlin\", \"Swift\", \"PHP\", \"Elixir\"],\r\n },\r\n {\r\n id: \"frontend\",\r\n label: \"Frontend\",\r\n techs: [\"React\", \"Vue\", \"Angular\", \"Next.js\", \"Nuxt\", \"SvelteKit\", \"Remix\", \"Astro\", \"Vite\", \"Tailwind CSS\", \"React Native\", \"Expo\"],\r\n },\r\n {\r\n id: \"backend\",\r\n label: \"Backend\",\r\n techs: [\"Node.js\", \"Express\", \"Fastify\", \"NestJS\", \"FastAPI\", \"Django\", \"Flask\", \"Rails\", \"Spring Boot\", \"Go/Fiber\", \"Rust/Actix\", \"Hono\", \"Bun\"],\r\n },\r\n {\r\n id: \"database\",\r\n label: \"Database\",\r\n techs: [\"PostgreSQL\", \"MySQL\", \"MongoDB\", \"Redis\", \"SQLite\", \"Supabase\", \"PlanetScale\", \"DynamoDB\", \"Cassandra\", \"Prisma\", \"Drizzle\", \"TypeORM\"],\r\n },\r\n {\r\n id: \"devops\",\r\n label: \"DevOps\",\r\n techs: [\"Docker\", \"Kubernetes\", \"GitHub Actions\", \"GitLab CI\", \"CircleCI\", \"Jenkins\", \"Terraform\", \"Pulumi\", \"AWS\", \"GCP\", \"Azure\", \"Vercel\", \"Railway\", \"Fly.io\", \"Render\"],\r\n },\r\n {\r\n id: \"testing\",\r\n label: \"Testing\",\r\n techs: [\"Jest\", \"Vitest\", \"Playwright\", \"Cypress\", \"Testing Library\", \"pytest\", \"RSpec\", \"Mocha\", \"k6\"],\r\n },\r\n {\r\n id: \"tools\",\r\n label: \"Tools\",\r\n techs: [\"ESLint\", \"Prettier\", \"Husky\", \"lint-staged\", \"Storybook\", \"Turborepo\", \"pnpm\", \"Nx\", \"GraphQL\", \"tRPC\", \"Zod\", \"Stripe\"],\r\n },\r\n]\r\n\r\nexport const ALL_TECHS: string[] = TECH_CATEGORIES.flatMap(c => c.techs)\r\n\r\nexport interface TechPreset {\r\n id: string\r\n label: string\r\n techs: string[]\r\n}\r\n\r\nexport const TECH_PRESETS: TechPreset[] = [\r\n { id: \"nextjs\", label: \"Next.js Full-Stack\", techs: [\"TypeScript\", \"Next.js\", \"React\", \"Tailwind CSS\", \"PostgreSQL\", \"Prisma\"] },\r\n { id: \"python-api\", label: \"Python API\", techs: [\"Python\", \"FastAPI\", \"PostgreSQL\", \"Redis\", \"Docker\"] },\r\n { id: \"react-native\", label: \"React Native\", techs: [\"TypeScript\", \"React Native\", \"Expo\"] },\r\n { id: \"go-service\", label: \"Go Microservice\", techs: [\"Go\", \"Go/Fiber\", \"PostgreSQL\", \"Docker\", \"Kubernetes\"] },\r\n { id: \"sveltekit\", label: \"SvelteKit\", techs: [\"TypeScript\", \"SvelteKit\", \"Tailwind CSS\", \"SQLite\"] },\r\n]\r\n","export interface TemplatePreset {\r\n id: string\r\n name: string\r\n description: string\r\n projectTypes: string[] // matches BasicInfo PROJECT_TYPES; empty means all types\r\n templateIds: string[]\r\n}\r\n\r\nexport const PRESETS: TemplatePreset[] = [\r\n {\r\n id: 'nextjs-production',\r\n name: 'Next.js Production',\r\n description:\r\n 'Complete setup for a production Next.js application with CI/CD, Docker, and code quality tools',\r\n projectTypes: ['web-app'],\r\n templateIds: [\r\n 'claude-md',\r\n 'architecture-overview',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'onboarding',\r\n 'dockerfile',\r\n 'docker-compose',\r\n 'dockerignore',\r\n 'env-example',\r\n 'ci-workflow',\r\n 'cd-workflow',\r\n 'dependabot-config',\r\n 'eslintrc',\r\n 'prettierrc',\r\n 'tsconfig-strict',\r\n 'vscode-settings',\r\n 'vscode-extensions',\r\n ],\r\n },\r\n {\r\n id: 'api-backend',\r\n name: 'API Backend',\r\n description: 'Production API service with OpenAPI spec, Docker, monitoring, and runbook',\r\n projectTypes: ['api-backend'],\r\n templateIds: [\r\n 'claude-md',\r\n 'architecture-overview',\r\n 'api-reference',\r\n 'openapi',\r\n 'runbook',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'dockerfile',\r\n 'docker-compose',\r\n 'dockerignore',\r\n 'env-example',\r\n 'ci-workflow',\r\n 'cd-workflow',\r\n 'health-check-doc',\r\n 'slo-doc',\r\n ],\r\n },\r\n {\r\n id: 'library-sdk',\r\n name: 'Library / SDK',\r\n description: 'Open-source library with strict TypeScript, changelog, and release automation',\r\n projectTypes: ['library'],\r\n templateIds: [\r\n 'claude-md',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'tsconfig-strict',\r\n 'eslintrc',\r\n 'prettierrc',\r\n 'editorconfig',\r\n 'commitlint',\r\n 'dependabot-config',\r\n 'release-workflow',\r\n 'codeowners',\r\n ],\r\n },\r\n {\r\n id: 'cli-tool',\r\n name: 'CLI Tool',\r\n description: 'Command-line tool with Makefile automation and release workflow',\r\n projectTypes: ['cli-tool'],\r\n templateIds: [\r\n 'claude-md',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'makefile',\r\n 'env-example',\r\n 'ci-workflow',\r\n 'release-workflow',\r\n 'commitlint',\r\n 'editorconfig',\r\n 'eslintrc',\r\n ],\r\n },\r\n {\r\n id: 'monorepo',\r\n name: 'Monorepo',\r\n description:\r\n 'Multi-package monorepo with code ownership, commit conventions, and architecture docs',\r\n projectTypes: ['monorepo'],\r\n templateIds: [\r\n 'claude-md',\r\n 'architecture-overview',\r\n 'contributing',\r\n 'security',\r\n 'pr-template',\r\n 'changelog',\r\n 'testing',\r\n 'onboarding',\r\n 'codeowners',\r\n 'commitlint',\r\n 'ci-workflow',\r\n 'cd-workflow',\r\n 'dockerfile',\r\n 'env-example',\r\n 'eslintrc',\r\n 'lint-staged',\r\n ],\r\n },\r\n {\r\n id: 'ai-first',\r\n name: 'AI-First',\r\n description: 'Cross-cutting preset for projects that heavily use AI coding agents',\r\n projectTypes: [], // empty means applies to all project types\r\n templateIds: [\r\n 'claude-md',\r\n 'agents-md',\r\n 'gemini-md',\r\n 'cursorrules',\r\n 'copilot-instructions',\r\n 'contributing',\r\n 'pr-template',\r\n 'changelog',\r\n ],\r\n },\r\n {\r\n id: 'minimal',\r\n name: 'Minimal',\r\n description: 'Just the essentials — get started fast with 5 key files',\r\n projectTypes: [], // applies to all types\r\n templateIds: ['claude-md', 'contributing', 'pr-template', 'changelog', 'env-example'],\r\n },\r\n]\r\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12', key: '1pkeuh' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16', key: '4dfq90' }],\n];\n\n/**\n * @component @name CircleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMiIgeTE9IjgiIHkyPSIxMiIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMi4wMSIgeTE9IjE2IiB5Mj0iMTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleAlert = createLucideIcon('circle-alert', __iconNode);\n\nexport default CircleAlert;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm6 9 6 6 6-6', key: 'qrunsl' }]];\n\n/**\n * @component @name ChevronDown\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNiA5IDYgNiA2LTYiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/chevron-down\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronDown = createLucideIcon('chevron-down', __iconNode);\n\nexport default ChevronDown;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm15 18-6-6 6-6', key: '1wnfg3' }]];\n\n/**\n * @component @name ChevronLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTUgMTgtNi02IDYtNiIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/chevron-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronLeft = createLucideIcon('chevron-left', __iconNode);\n\nexport default ChevronLeft;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '8', height: '8', x: '3', y: '3', rx: '2', key: 'by2w9f' }],\n ['path', { d: 'M7 11v4a2 2 0 0 0 2 2h4', key: 'xkn7yn' }],\n ['rect', { width: '8', height: '8', x: '13', y: '13', rx: '2', key: '1cgmvn' }],\n];\n\n/**\n * @component @name Workflow\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4PSIzIiB5PSIzIiByeD0iMiIgLz4KICA8cGF0aCBkPSJNNyAxMXY0YTIgMiAwIDAgMCAyIDJoNCIgLz4KICA8cmVjdCB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB4PSIxMyIgeT0iMTMiIHJ4PSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/workflow\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Workflow = createLucideIcon('workflow', __iconNode);\n\nexport default Workflow;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M15 6a9 9 0 0 0-9 9V3', key: '1cii5b' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n];\n\n/**\n * @component @name GitBranch\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTUgNmE5IDkgMCAwIDAtOSA5VjMiIC8+CiAgPGNpcmNsZSBjeD0iMTgiIGN5PSI2IiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjYiIGN5PSIxOCIgcj0iMyIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/git-branch\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitBranch = createLucideIcon('git-branch', __iconNode);\n\nexport default GitBranch;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '20', height: '8', x: '2', y: '2', rx: '2', ry: '2', key: 'ngkwjq' }],\n ['rect', { width: '20', height: '8', x: '2', y: '14', rx: '2', ry: '2', key: 'iecqi9' }],\n ['line', { x1: '6', x2: '6.01', y1: '6', y2: '6', key: '16zg32' }],\n ['line', { x1: '6', x2: '6.01', y1: '18', y2: '18', key: 'nzw8ys' }],\n];\n\n/**\n * @component @name Server\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMjAiIGhlaWdodD0iOCIgeD0iMiIgeT0iMiIgcng9IjIiIHJ5PSIyIiAvPgogIDxyZWN0IHdpZHRoPSIyMCIgaGVpZ2h0PSI4IiB4PSIyIiB5PSIxNCIgcng9IjIiIHJ5PSIyIiAvPgogIDxsaW5lIHgxPSI2IiB4Mj0iNi4wMSIgeTE9IjYiIHkyPSI2IiAvPgogIDxsaW5lIHgxPSI2IiB4Mj0iNi4wMSIgeTE9IjE4IiB5Mj0iMTgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/server\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Server = createLucideIcon('server', __iconNode);\n\nexport default Server;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['ellipse', { cx: '12', cy: '5', rx: '9', ry: '3', key: 'msslwz' }],\n ['path', { d: 'M3 5V19A9 3 0 0 0 21 19V5', key: '1wlel7' }],\n ['path', { d: 'M3 12A9 3 0 0 0 21 12', key: 'mv7ke4' }],\n];\n\n/**\n * @component @name Database\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8ZWxsaXBzZSBjeD0iMTIiIGN5PSI1IiByeD0iOSIgcnk9IjMiIC8+CiAgPHBhdGggZD0iTTMgNVYxOUE5IDMgMCAwIDAgMjEgMTlWNSIgLz4KICA8cGF0aCBkPSJNMyAxMkE5IDMgMCAwIDAgMjEgMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/database\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Database = createLucideIcon('database', __iconNode);\n\nexport default Database;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M8 2v4', key: '1cmpym' }],\n ['path', { d: 'M16 2v4', key: '4m81vk' }],\n ['rect', { width: '18', height: '18', x: '3', y: '4', rx: '2', key: '1hopcy' }],\n ['path', { d: 'M3 10h18', key: '8toen8' }],\n];\n\n/**\n * @component @name Calendar\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOCAydjQiIC8+CiAgPHBhdGggZD0iTTE2IDJ2NCIgLz4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjQiIHJ4PSIyIiAvPgogIDxwYXRoIGQ9Ik0zIDEwaDE4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/calendar\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Calendar = createLucideIcon('calendar', __iconNode);\n\nexport default Calendar;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M10 12h4', key: 'a56b0p' }],\n ['path', { d: 'M10 8h4', key: '1sr2af' }],\n ['path', { d: 'M14 21v-3a2 2 0 0 0-4 0v3', key: '1rgiei' }],\n [\n 'path',\n {\n d: 'M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2',\n key: 'secmi2',\n },\n ],\n ['path', { d: 'M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16', key: '16ra0t' }],\n];\n\n/**\n * @component @name Building2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTAgMTJoNCIgLz4KICA8cGF0aCBkPSJNMTAgOGg0IiAvPgogIDxwYXRoIGQ9Ik0xNCAyMXYtM2EyIDIgMCAwIDAtNCAwdjMiIC8+CiAgPHBhdGggZD0iTTYgMTBINGEyIDIgMCAwIDAtMiAydjdhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0yVjlhMiAyIDAgMCAwLTItMmgtMiIgLz4KICA8cGF0aCBkPSJNNiAyMVY1YTIgMiAwIDAgMSAyLTJoOGEyIDIgMCAwIDEgMiAydjE2IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/building-2\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Building2 = createLucideIcon('building-2', __iconNode);\n\nexport default Building2;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z',\n key: 'oel41y',\n },\n ],\n];\n\n/**\n * @component @name Shield\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjAgMTNjMCA1LTMuNSA3LjUtNy42NiA4Ljk1YTEgMSAwIDAgMS0uNjctLjAxQzcuNSAyMC41IDQgMTggNCAxM1Y2YTEgMSAwIDAgMSAxLTFjMiAwIDQuNS0xLjIgNi4yNC0yLjcyYTEuMTcgMS4xNyAwIDAgMSAxLjUyIDBDMTQuNTEgMy44MSAxNyA1IDE5IDVhMSAxIDAgMCAxIDEgMXoiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/shield\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Shield = createLucideIcon('shield', __iconNode);\n\nexport default Shield;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z',\n key: '1s2grr',\n },\n ],\n ['path', { d: 'M20 2v4', key: '1rf3ol' }],\n ['path', { d: 'M22 4h-4', key: 'gwowj6' }],\n ['circle', { cx: '4', cy: '20', r: '2', key: '6kqj1y' }],\n];\n\n/**\n * @component @name Sparkles\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTEuMDE3IDIuODE0YTEgMSAwIDAgMSAxLjk2NiAwbDEuMDUxIDUuNTU4YTIgMiAwIDAgMCAxLjU5NCAxLjU5NGw1LjU1OCAxLjA1MWExIDEgMCAwIDEgMCAxLjk2NmwtNS41NTggMS4wNTFhMiAyIDAgMCAwLTEuNTk0IDEuNTk0bC0xLjA1MSA1LjU1OGExIDEgMCAwIDEtMS45NjYgMGwtMS4wNTEtNS41NThhMiAyIDAgMCAwLTEuNTk0LTEuNTk0bC01LjU1OC0xLjA1MWExIDEgMCAwIDEgMC0xLjk2Nmw1LjU1OC0xLjA1MWEyIDIgMCAwIDAgMS41OTQtMS41OTR6IiAvPgogIDxwYXRoIGQ9Ik0yMCAydjQiIC8+CiAgPHBhdGggZD0iTTIyIDRoLTQiIC8+CiAgPGNpcmNsZSBjeD0iNCIgY3k9IjIwIiByPSIyIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/sparkles\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Sparkles = createLucideIcon('sparkles', __iconNode);\n\nexport default Sparkles;\n"],"names":[],"mappings":"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","ignoreList":[9,10,11,12,13,14,15,16,17,18,19]}
@@ -0,0 +1,3 @@
1
+ module.exports=[30728,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(15098).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/app/global-error.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/global-error.tsx <module evaluation>","default")},30269,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(15098).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/app/global-error.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/app/global-error.tsx","default")},54832,a=>{"use strict";a.i(30728);var b=a.i(30269);a.n(b)}];
2
+
3
+ //# sourceMappingURL=src_app_global-error_tsx_aa661ba4._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/app/global-error.tsx/__nextjs-internal-proxy.mjs"],"sourcesContent":["// This file is generated by next-core EcmascriptClientReferenceModule.\nimport { registerClientReference } from \"react-server-dom-turbopack/server\";\nexport default registerClientReference(\n function() { throw new Error(\"Attempted to call the default export of [project]/src/app/global-error.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n \"[project]/src/app/global-error.tsx\",\n \"default\",\n);\n"],"names":[],"mappings":"oEAEe,CAAA,EAAA,AADf,EAAA,CAAA,CAAA,OACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,0RAA4R,EACzT,yDACA,gEAHW,CAAA,EADf,AACe,EADf,CAAA,CAAA,OACe,uBAAA,AAAuB,EAClC,WAAa,MAAM,AAAI,MAAM,sQAAwQ,EACrS,qCACA","ignoreList":[0]}