vibedoc 1.0.5 → 1.2.0

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 (558) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -0
  3. package/.next/build-manifest.json +6 -6
  4. package/.next/prerender-manifest.json +27 -3
  5. package/.next/routes-manifest.json +12 -0
  6. package/.next/server/app/(app)/activity/page/build-manifest.json +4 -4
  7. package/.next/server/app/(app)/activity/page.js +1 -1
  8. package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
  9. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
  10. package/.next/server/app/(app)/board/page/build-manifest.json +4 -4
  11. package/.next/server/app/(app)/board/page.js +1 -1
  12. package/.next/server/app/(app)/board/page.js.nft.json +1 -1
  13. package/.next/server/app/(app)/board/page_client-reference-manifest.js +1 -1
  14. package/.next/server/app/(app)/docs/page/build-manifest.json +4 -4
  15. package/.next/server/app/(app)/docs/page.js +1 -1
  16. package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
  17. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/(app)/explorer/page/app-paths-manifest.json +3 -0
  19. package/.next/server/app/(app)/explorer/page/build-manifest.json +17 -0
  20. package/.next/server/app/(app)/explorer/page/next-font-manifest.json +6 -0
  21. package/.next/server/app/(app)/explorer/page/react-loadable-manifest.json +9 -0
  22. package/.next/server/app/(app)/explorer/page/server-reference-manifest.json +4 -0
  23. package/.next/server/app/(app)/explorer/page.js +16 -0
  24. package/.next/server/app/(app)/explorer/page.js.map +5 -0
  25. package/.next/server/app/(app)/explorer/page.js.nft.json +1 -0
  26. package/.next/server/app/(app)/explorer/page_client-reference-manifest.js +2 -0
  27. package/.next/server/app/(app)/memory/page/build-manifest.json +4 -4
  28. package/.next/server/app/(app)/memory/page.js +1 -1
  29. package/.next/server/app/(app)/memory/page.js.nft.json +1 -1
  30. package/.next/server/app/(app)/memory/page_client-reference-manifest.js +1 -1
  31. package/.next/server/app/(app)/settings/page/build-manifest.json +4 -4
  32. package/.next/server/app/(app)/settings/page.js +1 -1
  33. package/.next/server/app/(app)/settings/page.js.nft.json +1 -1
  34. package/.next/server/app/(app)/settings/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/(app)/setup/page/build-manifest.json +4 -4
  36. package/.next/server/app/(app)/setup/page.js +1 -1
  37. package/.next/server/app/(app)/setup/page.js.nft.json +1 -1
  38. package/.next/server/app/(app)/setup/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/_global-error/page/build-manifest.json +4 -4
  40. package/.next/server/app/_global-error/page.js +1 -1
  41. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  42. package/.next/server/app/_global-error.html +2 -2
  43. package/.next/server/app/_global-error.rsc +1 -1
  44. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  45. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  46. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  47. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  48. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  49. package/.next/server/app/_not-found/page/build-manifest.json +4 -4
  50. package/.next/server/app/_not-found/page.js +1 -1
  51. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  52. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  53. package/.next/server/app/_not-found.html +1 -1
  54. package/.next/server/app/_not-found.rsc +2 -2
  55. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  56. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  57. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  58. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  59. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  60. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  61. package/.next/server/app/activity.html +1 -1
  62. package/.next/server/app/activity.rsc +4 -4
  63. package/.next/server/app/activity.segments/!KGFwcCk/activity/__PAGE__.segment.rsc +2 -2
  64. package/.next/server/app/activity.segments/!KGFwcCk/activity.segment.rsc +1 -1
  65. package/.next/server/app/activity.segments/!KGFwcCk.segment.rsc +2 -2
  66. package/.next/server/app/activity.segments/_full.segment.rsc +4 -4
  67. package/.next/server/app/activity.segments/_head.segment.rsc +1 -1
  68. package/.next/server/app/activity.segments/_index.segment.rsc +2 -2
  69. package/.next/server/app/activity.segments/_tree.segment.rsc +2 -2
  70. package/.next/server/app/api/activity/route.js +1 -1
  71. package/.next/server/app/api/activity/route.js.nft.json +1 -1
  72. package/.next/server/app/api/backlinks/route.js +1 -1
  73. package/.next/server/app/api/backlinks/route.js.nft.json +1 -1
  74. package/.next/server/app/api/context/route.js +1 -1
  75. package/.next/server/app/api/context/route.js.nft.json +1 -1
  76. package/.next/server/app/api/decisions/route.js +1 -1
  77. package/.next/server/app/api/decisions/route.js.nft.json +1 -1
  78. package/.next/server/app/api/docs/route.js +1 -1
  79. package/.next/server/app/api/docs/route.js.nft.json +1 -1
  80. package/.next/server/app/api/explorer/route/app-paths-manifest.json +3 -0
  81. package/.next/server/app/api/explorer/route/build-manifest.json +11 -0
  82. package/.next/server/app/api/explorer/route/server-reference-manifest.json +4 -0
  83. package/.next/server/app/api/explorer/route.js +7 -0
  84. package/.next/server/app/api/explorer/route.js.map +5 -0
  85. package/.next/server/app/api/explorer/route.js.nft.json +1 -0
  86. package/.next/server/app/api/explorer/route_client-reference-manifest.js +2 -0
  87. package/.next/server/app/api/mcp/route.js +1 -1
  88. package/.next/server/app/api/mcp/route.js.nft.json +1 -1
  89. package/.next/server/app/api/memory/route.js +1 -1
  90. package/.next/server/app/api/memory/route.js.nft.json +1 -1
  91. package/.next/server/app/api/projects/route.js +1 -1
  92. package/.next/server/app/api/projects/route.js.nft.json +1 -1
  93. package/.next/server/app/api/settings/route.js +1 -1
  94. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  95. package/.next/server/app/api/setup/generate/route.js +1 -1
  96. package/.next/server/app/api/setup/generate/route.js.nft.json +1 -1
  97. package/.next/server/app/api/setup/write/route.js +1 -1
  98. package/.next/server/app/api/setup/write/route.js.nft.json +1 -1
  99. package/.next/server/app/api/summary/route.js +1 -1
  100. package/.next/server/app/api/summary/route.js.nft.json +1 -1
  101. package/.next/server/app/api/tasks/route.js +1 -1
  102. package/.next/server/app/api/tasks/route.js.nft.json +1 -1
  103. package/.next/server/app/board.html +1 -1
  104. package/.next/server/app/board.rsc +4 -4
  105. package/.next/server/app/board.segments/!KGFwcCk/board/__PAGE__.segment.rsc +2 -2
  106. package/.next/server/app/board.segments/!KGFwcCk/board.segment.rsc +1 -1
  107. package/.next/server/app/board.segments/!KGFwcCk.segment.rsc +2 -2
  108. package/.next/server/app/board.segments/_full.segment.rsc +4 -4
  109. package/.next/server/app/board.segments/_head.segment.rsc +1 -1
  110. package/.next/server/app/board.segments/_index.segment.rsc +2 -2
  111. package/.next/server/app/board.segments/_tree.segment.rsc +2 -2
  112. package/.next/server/app/docs.html +1 -1
  113. package/.next/server/app/docs.rsc +4 -4
  114. package/.next/server/app/docs.segments/!KGFwcCk/docs/__PAGE__.segment.rsc +2 -2
  115. package/.next/server/app/docs.segments/!KGFwcCk/docs.segment.rsc +1 -1
  116. package/.next/server/app/docs.segments/!KGFwcCk.segment.rsc +2 -2
  117. package/.next/server/app/docs.segments/_full.segment.rsc +4 -4
  118. package/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  119. package/.next/server/app/docs.segments/_index.segment.rsc +2 -2
  120. package/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  121. package/.next/server/app/explorer.html +1 -0
  122. package/.next/server/app/explorer.meta +16 -0
  123. package/.next/server/app/explorer.rsc +20 -0
  124. package/.next/server/app/explorer.segments/!KGFwcCk/explorer/__PAGE__.segment.rsc +9 -0
  125. package/.next/server/app/explorer.segments/!KGFwcCk/explorer.segment.rsc +4 -0
  126. package/.next/server/app/explorer.segments/!KGFwcCk.segment.rsc +7 -0
  127. package/.next/server/app/explorer.segments/_full.segment.rsc +20 -0
  128. package/.next/server/app/explorer.segments/_head.segment.rsc +5 -0
  129. package/.next/server/app/explorer.segments/_index.segment.rsc +5 -0
  130. package/.next/server/app/explorer.segments/_tree.segment.rsc +2 -0
  131. package/.next/server/app/index.html +1 -1
  132. package/.next/server/app/index.rsc +2 -2
  133. package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  134. package/.next/server/app/index.segments/_full.segment.rsc +2 -2
  135. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  136. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  137. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  138. package/.next/server/app/memory.html +1 -1
  139. package/.next/server/app/memory.rsc +4 -4
  140. package/.next/server/app/memory.segments/!KGFwcCk/memory/__PAGE__.segment.rsc +2 -2
  141. package/.next/server/app/memory.segments/!KGFwcCk/memory.segment.rsc +1 -1
  142. package/.next/server/app/memory.segments/!KGFwcCk.segment.rsc +2 -2
  143. package/.next/server/app/memory.segments/_full.segment.rsc +4 -4
  144. package/.next/server/app/memory.segments/_head.segment.rsc +1 -1
  145. package/.next/server/app/memory.segments/_index.segment.rsc +2 -2
  146. package/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
  147. package/.next/server/app/page/build-manifest.json +4 -4
  148. package/.next/server/app/page.js +1 -1
  149. package/.next/server/app/page.js.nft.json +1 -1
  150. package/.next/server/app/page_client-reference-manifest.js +1 -1
  151. package/.next/server/app/settings.html +1 -1
  152. package/.next/server/app/settings.rsc +4 -4
  153. package/.next/server/app/settings.segments/!KGFwcCk/settings/__PAGE__.segment.rsc +2 -2
  154. package/.next/server/app/settings.segments/!KGFwcCk/settings.segment.rsc +1 -1
  155. package/.next/server/app/settings.segments/!KGFwcCk.segment.rsc +2 -2
  156. package/.next/server/app/settings.segments/_full.segment.rsc +4 -4
  157. package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  158. package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  159. package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  160. package/.next/server/app/setup.html +1 -1
  161. package/.next/server/app/setup.rsc +4 -4
  162. package/.next/server/app/setup.segments/!KGFwcCk/setup/__PAGE__.segment.rsc +2 -2
  163. package/.next/server/app/setup.segments/!KGFwcCk/setup.segment.rsc +1 -1
  164. package/.next/server/app/setup.segments/!KGFwcCk.segment.rsc +2 -2
  165. package/.next/server/app/setup.segments/_full.segment.rsc +4 -4
  166. package/.next/server/app/setup.segments/_head.segment.rsc +1 -1
  167. package/.next/server/app/setup.segments/_index.segment.rsc +2 -2
  168. package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  169. package/.next/server/app-paths-manifest.json +2 -0
  170. package/.next/server/chunks/39977_@anthropic-ai_sdk_index_mjs_b0ee562f._.js +30 -0
  171. package/.next/server/chunks/39977_@anthropic-ai_sdk_index_mjs_b0ee562f._.js.map +1 -0
  172. package/.next/server/chunks/[root-of-the-server]__0e51ee32._.js +2 -2
  173. package/.next/server/chunks/{[root-of-the-server]__4c3dfb3f._.js → [root-of-the-server]__1453b4c1._.js} +2 -2
  174. package/.next/server/chunks/{[root-of-the-server]__4c3dfb3f._.js.map → [root-of-the-server]__1453b4c1._.js.map} +1 -1
  175. package/.next/server/chunks/[root-of-the-server]__2bbe3bdc._.js +1 -1
  176. package/.next/server/chunks/[root-of-the-server]__2d66d57b._.js +3 -0
  177. package/.next/server/chunks/[root-of-the-server]__2d66d57b._.js.map +1 -0
  178. package/.next/server/chunks/{[root-of-the-server]__6e3e5106._.js → [root-of-the-server]__54666fd5._.js} +2 -2
  179. package/.next/server/chunks/{[root-of-the-server]__6e3e5106._.js.map → [root-of-the-server]__54666fd5._.js.map} +1 -1
  180. package/.next/server/chunks/[root-of-the-server]__73d016a0._.js +10 -8
  181. package/.next/server/chunks/[root-of-the-server]__73d016a0._.js.map +1 -1
  182. package/.next/server/chunks/{[root-of-the-server]__e613d0e1._.js → [root-of-the-server]__7a7e1eb1._.js} +2 -2
  183. package/.next/server/chunks/{[root-of-the-server]__e613d0e1._.js.map → [root-of-the-server]__7a7e1eb1._.js.map} +1 -1
  184. package/.next/server/chunks/{[root-of-the-server]__8bc3c77f._.js → [root-of-the-server]__8e790c7b._.js} +2 -2
  185. package/.next/server/chunks/{[root-of-the-server]__8bc3c77f._.js.map → [root-of-the-server]__8e790c7b._.js.map} +1 -1
  186. package/.next/server/chunks/{[root-of-the-server]__87ac3243._.js → [root-of-the-server]__9d1f6722._.js} +2 -2
  187. package/.next/server/chunks/{[root-of-the-server]__87ac3243._.js.map → [root-of-the-server]__9d1f6722._.js.map} +1 -1
  188. package/.next/server/chunks/{[root-of-the-server]__4a7ee700._.js → [root-of-the-server]__a0a8fb65._.js} +2 -2
  189. package/.next/server/chunks/{[root-of-the-server]__4a7ee700._.js.map → [root-of-the-server]__a0a8fb65._.js.map} +1 -1
  190. package/.next/server/chunks/{[root-of-the-server]__296062eb._.js → [root-of-the-server]__a7d932af._.js} +2 -2
  191. package/.next/server/chunks/{[root-of-the-server]__296062eb._.js.map → [root-of-the-server]__a7d932af._.js.map} +1 -1
  192. package/.next/server/chunks/{[root-of-the-server]__0e70f066._.js → [root-of-the-server]__a9dbcc03._.js} +2 -2
  193. package/.next/server/chunks/{[root-of-the-server]__0e70f066._.js.map → [root-of-the-server]__a9dbcc03._.js.map} +1 -1
  194. package/.next/server/chunks/[root-of-the-server]__aa7a40ec._.js +3 -0
  195. package/.next/server/chunks/[root-of-the-server]__aa7a40ec._.js.map +1 -0
  196. package/.next/server/chunks/{[root-of-the-server]__50ed178b._.js → [root-of-the-server]__bacbf09e._.js} +2 -2
  197. package/.next/server/chunks/{[root-of-the-server]__50ed178b._.js.map → [root-of-the-server]__bacbf09e._.js.map} +1 -1
  198. package/.next/server/chunks/{[root-of-the-server]__1bb30fa4._.js → [root-of-the-server]__bd44b8e4._.js} +2 -2
  199. package/.next/server/chunks/{[root-of-the-server]__1bb30fa4._.js.map → [root-of-the-server]__bd44b8e4._.js.map} +1 -1
  200. package/.next/server/chunks/{[root-of-the-server]__2127a831._.js → [root-of-the-server]__dfd36dc0._.js} +2 -2
  201. package/.next/server/chunks/{[root-of-the-server]__d35c92a2._.js → [root-of-the-server]__e27393ea._.js} +2 -2
  202. package/.next/server/chunks/{[root-of-the-server]__d35c92a2._.js.map → [root-of-the-server]__e27393ea._.js.map} +1 -1
  203. package/.next/server/chunks/_75927d0c._.js +2 -2
  204. package/.next/server/chunks/_75927d0c._.js.map +1 -1
  205. package/.next/server/chunks/_next-internal_server_app_api_explorer_route_actions_bca0ca55.js +3 -0
  206. package/.next/server/chunks/ssr/1ce3b_dagre-d3-es_src_dagre_index_f9cad90b.js +1 -1
  207. package/.next/server/chunks/ssr/4bd2e_mermaid_dist_chunks_mermaid_core_chunk-S3R3BYOJ_mjs_dfc77fcf._.js +1 -1
  208. package/.next/server/chunks/ssr/78921_y-codemirror_next_src_index_7664c743.js +1 -1
  209. package/.next/server/chunks/ssr/{[root-of-the-server]__eccfba1b._.js → [root-of-the-server]__0310d64d._.js} +2 -2
  210. package/.next/server/chunks/ssr/{[root-of-the-server]__992608ee._.js → [root-of-the-server]__599128b8._.js} +2 -2
  211. package/.next/server/chunks/ssr/[root-of-the-server]__7ccd69b2._.js +3 -0
  212. package/.next/server/chunks/ssr/[root-of-the-server]__7ccd69b2._.js.map +1 -0
  213. package/.next/server/chunks/ssr/[root-of-the-server]__7de63c62._.js +3 -0
  214. package/.next/server/chunks/ssr/{[root-of-the-server]__68227521._.js → [root-of-the-server]__85b679c6._.js} +2 -2
  215. package/.next/server/chunks/ssr/{[root-of-the-server]__76f6d4b1._.js → [root-of-the-server]__8bc686d2._.js} +2 -2
  216. package/.next/server/chunks/ssr/[root-of-the-server]__93c50d95._.js +3 -0
  217. package/.next/server/chunks/ssr/[root-of-the-server]__93c50d95._.js.map +1 -0
  218. package/.next/server/chunks/ssr/[root-of-the-server]__93f88b5d._.js +1 -1
  219. package/.next/server/chunks/ssr/[root-of-the-server]__c441b191._.js +1 -1
  220. package/.next/server/chunks/ssr/[root-of-the-server]__cb200ebe._.js +1 -1
  221. package/.next/server/chunks/ssr/{[root-of-the-server]__95e9adf4._.js → [root-of-the-server]__e44bed76._.js} +2 -2
  222. package/.next/server/chunks/ssr/_0324be5b._.js +1 -1
  223. package/.next/server/chunks/ssr/_04bd0614._.js +1 -1
  224. package/.next/server/chunks/ssr/_07ff42fd._.js +1 -1
  225. package/.next/server/chunks/ssr/_0ee1f47f._.js +3 -0
  226. package/.next/server/chunks/ssr/_0ee1f47f._.js.map +1 -0
  227. package/.next/server/chunks/ssr/{_bd5a319c._.js → _102fd465._.js} +2 -2
  228. package/.next/server/chunks/ssr/_189227ea._.js +3 -0
  229. package/.next/server/chunks/ssr/_189227ea._.js.map +1 -0
  230. package/.next/server/chunks/ssr/_39d9968d._.js +1 -1
  231. package/.next/server/chunks/ssr/{_ae7d00da._.js → _42809286._.js} +2 -2
  232. package/.next/server/chunks/ssr/_42809286._.js.map +1 -0
  233. package/.next/server/chunks/ssr/_692c5bbf._.js +3 -0
  234. package/.next/server/chunks/ssr/_692c5bbf._.js.map +1 -0
  235. package/.next/server/chunks/ssr/_7b129868._.js +4 -0
  236. package/.next/server/chunks/ssr/_7b129868._.js.map +1 -0
  237. package/.next/server/chunks/ssr/_83c6a2ff._.js +1 -1
  238. package/.next/server/chunks/ssr/_85e5ab03._.js +1 -1
  239. package/.next/server/chunks/ssr/{_76a7817e._.js → _9f1b4c51._.js} +2 -2
  240. package/.next/server/chunks/ssr/_b4c946f7._.js +7 -0
  241. package/.next/server/chunks/ssr/_b4c946f7._.js.map +1 -0
  242. package/.next/server/chunks/ssr/_c4b742c5._.js +1 -1
  243. package/.next/server/chunks/ssr/_d411515a._.js +1 -1
  244. package/.next/server/chunks/ssr/_d411515a._.js.map +1 -1
  245. package/.next/server/chunks/ssr/_next-internal_server_app_(app)_explorer_page_actions_ab677b48.js +3 -0
  246. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_folder_de463b3c.js +3 -0
  247. package/.next/server/chunks/ssr/a41dc_lucide-react_dist_esm_icons_folder_de463b3c.js.map +1 -0
  248. package/.next/server/chunks/ssr/a5dda_next_dist_bc8c0e5f._.js +1 -1
  249. package/.next/server/chunks/ssr/a5dda_next_dist_c6de1535._.js +1 -1
  250. package/.next/server/chunks/ssr/a5dda_next_dist_esm_build_templates_app-page_d9140d2d.js +1 -1
  251. package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_3288b441._.js → ec1cc_katex_dist_katex_mjs_9f7bcf4a._.js} +1 -1
  252. package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_425a6061._.js → ec1cc_katex_dist_katex_mjs_a9aca746._.js} +1 -1
  253. package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_4ad1d407._.js → ec1cc_katex_dist_katex_mjs_e7b66387._.js} +1 -1
  254. package/.next/server/chunks/ssr/ec1cc_katex_dist_katex_mjs_e7b66387._.js.map +1 -0
  255. package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_a5decdbd._.js → ec1cc_katex_dist_katex_mjs_e93914b8._.js} +1 -1
  256. package/.next/server/chunks/ssr/ec1cc_katex_dist_katex_mjs_e93914b8._.js.map +1 -0
  257. package/.next/server/chunks/ssr/fe4dd_lodash-es_092245b0._.js +1 -1
  258. package/.next/server/chunks/ssr/fe4dd_lodash-es_1a0ea541._.js +1 -1
  259. package/.next/server/chunks/ssr/fe4dd_lodash-es_2f02253e._.js +1 -1
  260. package/.next/server/chunks/ssr/fe4dd_lodash-es_59ba66ec._.js +1 -1
  261. package/.next/server/chunks/ssr/fe4dd_lodash-es_6dfac36d._.js +1 -1
  262. package/.next/server/chunks/ssr/fe4dd_lodash-es_dba464ad._.js +1 -1
  263. package/.next/server/chunks/ssr/fe4dd_lodash-es_fe91028b._.js +1 -1
  264. package/.next/server/chunks/ssr/{node_modules__pnpm_36589973._.js → node_modules__pnpm_00962046._.js} +2 -2
  265. package/.next/server/chunks/ssr/{node_modules__pnpm_18a6956f._.js → node_modules__pnpm_016e62a5._.js} +2 -2
  266. package/.next/server/chunks/ssr/{node_modules__pnpm_1f5ea152._.js → node_modules__pnpm_0322e068._.js} +1 -1
  267. package/.next/server/chunks/ssr/{node_modules__pnpm_64d93795._.js → node_modules__pnpm_05da39c7._.js} +2 -2
  268. package/.next/server/chunks/ssr/{node_modules__pnpm_0824d495._.js → node_modules__pnpm_0631ec86._.js} +2 -2
  269. package/.next/server/chunks/ssr/{node_modules__pnpm_53deb29a._.js → node_modules__pnpm_06db4ba2._.js} +1 -1
  270. package/.next/server/chunks/ssr/{node_modules__pnpm_ed02d5fd._.js → node_modules__pnpm_076b3258._.js} +2 -2
  271. package/.next/server/chunks/ssr/{node_modules__pnpm_26ef6e45._.js → node_modules__pnpm_07f377f7._.js} +2 -2
  272. package/.next/server/chunks/ssr/{node_modules__pnpm_35bad3db._.js → node_modules__pnpm_08922392._.js} +2 -2
  273. package/.next/server/chunks/ssr/{node_modules__pnpm_92e09662._.js → node_modules__pnpm_08cf1858._.js} +1 -1
  274. package/.next/server/chunks/ssr/{node_modules__pnpm_91229d13._.js → node_modules__pnpm_0c377643._.js} +1 -1
  275. package/.next/server/chunks/ssr/{node_modules__pnpm_7236b70e._.js → node_modules__pnpm_0d80282c._.js} +2 -2
  276. package/.next/server/chunks/ssr/{node_modules__pnpm_8f54a47b._.js → node_modules__pnpm_135db8bc._.js} +2 -2
  277. package/.next/server/chunks/ssr/{node_modules__pnpm_6401925d._.js → node_modules__pnpm_140ed2b5._.js} +1 -1
  278. package/.next/server/chunks/ssr/{node_modules__pnpm_654e9f55._.js → node_modules__pnpm_1790069e._.js} +1 -1
  279. package/.next/server/chunks/ssr/{node_modules__pnpm_7776e75c._.js → node_modules__pnpm_19e8c8a7._.js} +1 -1
  280. package/.next/server/chunks/ssr/{node_modules__pnpm_00d5d273._.js → node_modules__pnpm_1c623592._.js} +1 -1
  281. package/.next/server/chunks/ssr/{node_modules__pnpm_65f639a6._.js → node_modules__pnpm_1dce0d3b._.js} +1 -1
  282. package/.next/server/chunks/ssr/{node_modules__pnpm_9fc73610._.js → node_modules__pnpm_227802dc._.js} +1 -1
  283. package/.next/server/chunks/ssr/{node_modules__pnpm_69ce79eb._.js → node_modules__pnpm_240c58bb._.js} +2 -2
  284. package/.next/server/chunks/ssr/{node_modules__pnpm_56f72f59._.js → node_modules__pnpm_2871fff4._.js} +1 -1
  285. package/.next/server/chunks/ssr/{node_modules__pnpm_49266b7a._.js → node_modules__pnpm_2b6ac74b._.js} +1 -1
  286. package/.next/server/chunks/ssr/{node_modules__pnpm_b3313177._.js → node_modules__pnpm_2e011da0._.js} +1 -1
  287. package/.next/server/chunks/ssr/{node_modules__pnpm_f51396ca._.js → node_modules__pnpm_33344533._.js} +2 -2
  288. package/.next/server/chunks/ssr/{node_modules__pnpm_2cb73c16._.js → node_modules__pnpm_337eaf96._.js} +2 -2
  289. package/.next/server/chunks/ssr/{node_modules__pnpm_ce246e92._.js → node_modules__pnpm_3394b2c5._.js} +1 -1
  290. package/.next/server/chunks/ssr/{node_modules__pnpm_5d0fe991._.js → node_modules__pnpm_3601c997._.js} +2 -2
  291. package/.next/server/chunks/ssr/{node_modules__pnpm_2843ef27._.js → node_modules__pnpm_36b5c2af._.js} +1 -1
  292. package/.next/server/chunks/ssr/{node_modules__pnpm_74b18e05._.js → node_modules__pnpm_39f460e8._.js} +1 -1
  293. package/.next/server/chunks/ssr/{node_modules__pnpm_e3ff2006._.js → node_modules__pnpm_3d378674._.js} +2 -2
  294. package/.next/server/chunks/ssr/{node_modules__pnpm_ddf26095._.js → node_modules__pnpm_3dd8e608._.js} +1 -1
  295. package/.next/server/chunks/ssr/{node_modules__pnpm_9a0807cb._.js → node_modules__pnpm_3f2cce74._.js} +1 -1
  296. package/.next/server/chunks/ssr/node_modules__pnpm_3f505455._.js +1 -1
  297. package/.next/server/chunks/ssr/{node_modules__pnpm_f07d4655._.js → node_modules__pnpm_423baddc._.js} +1 -1
  298. package/.next/server/chunks/ssr/{node_modules__pnpm_783da796._.js → node_modules__pnpm_42d2c2d2._.js} +2 -2
  299. package/.next/server/chunks/ssr/node_modules__pnpm_44b70609._.js +3 -0
  300. package/.next/server/chunks/ssr/node_modules__pnpm_44b70609._.js.map +1 -0
  301. package/.next/server/chunks/ssr/{node_modules__pnpm_a1c07e23._.js → node_modules__pnpm_45bf67c8._.js} +2 -2
  302. package/.next/server/chunks/ssr/{node_modules__pnpm_9475a5cd._.js → node_modules__pnpm_474a3a70._.js} +2 -2
  303. package/.next/server/chunks/ssr/{node_modules__pnpm_fe5653a5._.js → node_modules__pnpm_4cc41a2c._.js} +1 -1
  304. package/.next/server/chunks/ssr/{node_modules__pnpm_46929561._.js → node_modules__pnpm_4d03e476._.js} +2 -2
  305. package/.next/server/chunks/ssr/{node_modules__pnpm_8a892ffe._.js → node_modules__pnpm_4edcc2cf._.js} +1 -1
  306. package/.next/server/chunks/ssr/{node_modules__pnpm_1ee22148._.js → node_modules__pnpm_55b7a1cf._.js} +2 -2
  307. package/.next/server/chunks/ssr/{node_modules__pnpm_80943308._.js → node_modules__pnpm_5768848c._.js} +2 -2
  308. package/.next/server/chunks/ssr/{node_modules__pnpm_e935c4b3._.js → node_modules__pnpm_5c59b1ad._.js} +1 -1
  309. package/.next/server/chunks/ssr/{node_modules__pnpm_9809673a._.js → node_modules__pnpm_60fef38e._.js} +2 -2
  310. package/.next/server/chunks/ssr/{node_modules__pnpm_63673d29._.js → node_modules__pnpm_63a4a328._.js} +1 -1
  311. package/.next/server/chunks/ssr/{node_modules__pnpm_73162680._.js → node_modules__pnpm_67f40799._.js} +1 -1
  312. package/.next/server/chunks/ssr/{node_modules__pnpm_04663715._.js → node_modules__pnpm_688ab9b4._.js} +1 -1
  313. package/.next/server/chunks/ssr/{node_modules__pnpm_f3ce4f57._.js → node_modules__pnpm_6947736b._.js} +1 -1
  314. package/.next/server/chunks/ssr/{node_modules__pnpm_ba4c8074._.js → node_modules__pnpm_6a7ed592._.js} +1 -1
  315. package/.next/server/chunks/ssr/{node_modules__pnpm_fc5a6422._.js → node_modules__pnpm_6c9a5a96._.js} +2 -2
  316. package/.next/server/chunks/ssr/{node_modules__pnpm_fb007933._.js → node_modules__pnpm_70a08cdf._.js} +1 -1
  317. package/.next/server/chunks/ssr/{node_modules__pnpm_f443637f._.js → node_modules__pnpm_72235a6a._.js} +1 -1
  318. package/.next/server/chunks/ssr/{node_modules__pnpm_3bca6321._.js → node_modules__pnpm_754137d0._.js} +1 -1
  319. package/.next/server/chunks/ssr/{node_modules__pnpm_590ecf69._.js → node_modules__pnpm_75690281._.js} +2 -2
  320. package/.next/server/chunks/ssr/{node_modules__pnpm_b91727a9._.js → node_modules__pnpm_75846ac9._.js} +1 -1
  321. package/.next/server/chunks/ssr/{node_modules__pnpm_178f3e64._.js → node_modules__pnpm_76204895._.js} +1 -1
  322. package/.next/server/chunks/ssr/{node_modules__pnpm_36cec4c0._.js → node_modules__pnpm_790c3b2e._.js} +1 -1
  323. package/.next/server/chunks/ssr/{node_modules__pnpm_c7820c3e._.js → node_modules__pnpm_7a101d07._.js} +1 -1
  324. package/.next/server/chunks/ssr/{node_modules__pnpm_e7e5a8a1._.js → node_modules__pnpm_7ca85e0d._.js} +1 -1
  325. package/.next/server/chunks/ssr/{node_modules__pnpm_80210e53._.js → node_modules__pnpm_7de47ba7._.js} +2 -2
  326. package/.next/server/chunks/ssr/{node_modules__pnpm_1d5914b6._.js → node_modules__pnpm_7e98d14b._.js} +1 -1
  327. package/.next/server/chunks/ssr/{node_modules__pnpm_e174e2e8._.js → node_modules__pnpm_8036c25f._.js} +1 -1
  328. package/.next/server/chunks/ssr/{node_modules__pnpm_4ca42aad._.js → node_modules__pnpm_85de6da6._.js} +1 -1
  329. package/.next/server/chunks/ssr/{node_modules__pnpm_91da4efe._.js → node_modules__pnpm_87d282d9._.js} +2 -2
  330. package/.next/server/chunks/ssr/{node_modules__pnpm_f36ad4ee._.js → node_modules__pnpm_8a0f76d5._.js} +1 -1
  331. package/.next/server/chunks/ssr/{node_modules__pnpm_acf470f2._.js → node_modules__pnpm_8b3ed63a._.js} +2 -2
  332. package/.next/server/chunks/ssr/{node_modules__pnpm_1ee08ad7._.js → node_modules__pnpm_8ba721df._.js} +2 -2
  333. package/.next/server/chunks/ssr/{node_modules__pnpm_2997113c._.js → node_modules__pnpm_8c13bdb7._.js} +1 -1
  334. package/.next/server/chunks/ssr/{node_modules__pnpm_f9f710c6._.js → node_modules__pnpm_8f8943af._.js} +2 -2
  335. package/.next/server/chunks/ssr/{node_modules__pnpm_293bea2a._.js → node_modules__pnpm_91a9fe44._.js} +2 -2
  336. package/.next/server/chunks/ssr/{node_modules__pnpm_6f25e5fd._.js → node_modules__pnpm_928932b1._.js} +2 -2
  337. package/.next/server/chunks/ssr/{node_modules__pnpm_12d18ed0._.js → node_modules__pnpm_93144bce._.js} +1 -1
  338. package/.next/server/chunks/ssr/{node_modules__pnpm_c6c36138._.js → node_modules__pnpm_96c7344a._.js} +2 -2
  339. package/.next/server/chunks/ssr/{node_modules__pnpm_aeaaa130._.js → node_modules__pnpm_9927b752._.js} +1 -1
  340. package/.next/server/chunks/ssr/{node_modules__pnpm_2003b884._.js → node_modules__pnpm_9cdea683._.js} +1 -1
  341. package/.next/server/chunks/ssr/{node_modules__pnpm_d0000990._.js → node_modules__pnpm_9ce450a4._.js} +1 -1
  342. package/.next/server/chunks/ssr/{node_modules__pnpm_83e28ce4._.js → node_modules__pnpm_9e807a6c._.js} +2 -2
  343. package/.next/server/chunks/ssr/{node_modules__pnpm_8ab73142._.js → node_modules__pnpm_a23a1417._.js} +1 -1
  344. package/.next/server/chunks/ssr/{node_modules__pnpm_ab058528._.js → node_modules__pnpm_a4a74805._.js} +2 -2
  345. package/.next/server/chunks/ssr/{node_modules__pnpm_9a0d7b74._.js → node_modules__pnpm_a714825b._.js} +1 -1
  346. package/.next/server/chunks/ssr/{node_modules__pnpm_845c2200._.js → node_modules__pnpm_aec9b3d2._.js} +2 -2
  347. package/.next/server/chunks/ssr/{node_modules__pnpm_060aaf47._.js → node_modules__pnpm_b18e7d84._.js} +1 -1
  348. package/.next/server/chunks/ssr/{node_modules__pnpm_3e3b1d5c._.js → node_modules__pnpm_b2c6ca72._.js} +1 -1
  349. package/.next/server/chunks/ssr/{node_modules__pnpm_e1568f72._.js → node_modules__pnpm_b50ae8f6._.js} +1 -1
  350. package/.next/server/chunks/ssr/{node_modules__pnpm_daf0ef2f._.js → node_modules__pnpm_b6b9de46._.js} +1 -1
  351. package/.next/server/chunks/ssr/{node_modules__pnpm_f67832c7._.js → node_modules__pnpm_ba838a36._.js} +1 -1
  352. package/.next/server/chunks/ssr/{node_modules__pnpm_6ee95c66._.js → node_modules__pnpm_c278eaac._.js} +2 -2
  353. package/.next/server/chunks/ssr/{node_modules__pnpm_c82324ae._.js → node_modules__pnpm_c39c9496._.js} +1 -1
  354. package/.next/server/chunks/ssr/{node_modules__pnpm_cce8cd76._.js → node_modules__pnpm_c402a901._.js} +1 -1
  355. package/.next/server/chunks/ssr/{node_modules__pnpm_37e82b68._.js → node_modules__pnpm_c7ca55c9._.js} +1 -1
  356. package/.next/server/chunks/ssr/{node_modules__pnpm_e8b810b3._.js → node_modules__pnpm_cd59b8c6._.js} +2 -2
  357. package/.next/server/chunks/ssr/{node_modules__pnpm_37c400e7._.js → node_modules__pnpm_d1c050d4._.js} +1 -1
  358. package/.next/server/chunks/ssr/{node_modules__pnpm_390f259c._.js → node_modules__pnpm_d6cd0cb1._.js} +2 -2
  359. package/.next/server/chunks/ssr/{node_modules__pnpm_3c2d8fca._.js → node_modules__pnpm_d75e5d41._.js} +2 -2
  360. package/.next/server/chunks/ssr/{node_modules__pnpm_3f847f2e._.js → node_modules__pnpm_db2dceff._.js} +1 -1
  361. package/.next/server/chunks/ssr/{node_modules__pnpm_546559ff._.js → node_modules__pnpm_df7dcb26._.js} +2 -2
  362. package/.next/server/chunks/ssr/{node_modules__pnpm_f3196af3._.js → node_modules__pnpm_e70a06f1._.js} +2 -2
  363. package/.next/server/chunks/ssr/{node_modules__pnpm_dc31ca88._.js → node_modules__pnpm_ebfee6f4._.js} +1 -1
  364. package/.next/server/chunks/ssr/{node_modules__pnpm_1cc7c453._.js → node_modules__pnpm_f505d304._.js} +1 -1
  365. package/.next/server/chunks/ssr/{node_modules__pnpm_589ffaf2._.js → node_modules__pnpm_f6f51e7a._.js} +1 -1
  366. package/.next/server/chunks/ssr/{node_modules__pnpm_7774ae26._.js → node_modules__pnpm_f77bb209._.js} +1 -1
  367. package/.next/server/chunks/ssr/{node_modules__pnpm_2a8998cb._.js → node_modules__pnpm_fa1f464c._.js} +2 -2
  368. package/.next/server/middleware-build-manifest.js +4 -4
  369. package/.next/server/pages/404.html +1 -1
  370. package/.next/server/pages/500.html +2 -2
  371. package/.next/server/server-reference-manifest.js +1 -1
  372. package/.next/server/server-reference-manifest.json +1 -1
  373. package/.next/static/chunks/0b640fa39aac2219.js +1 -0
  374. package/.next/static/chunks/0ef3e14dc942367c.js +1 -0
  375. package/.next/static/chunks/13bdd4e22dd90816.js +1 -0
  376. package/.next/static/chunks/{1ed5d145167d8eb4.js → 1ef8bf79adc2568f.js} +5 -5
  377. package/.next/static/chunks/{12a5f59c97d227db.js → 25d2e746e06b38ba.js} +1 -1
  378. package/.next/static/chunks/{811bb9b4cd1b0f6c.js → 316cd4755f253783.js} +1 -1
  379. package/.next/static/chunks/31fae4c58073753b.js +1 -0
  380. package/.next/static/chunks/351fac2d373f6f38.js +1 -0
  381. package/.next/static/chunks/429961c8e82cfbcb.css +1 -0
  382. package/.next/static/chunks/{f4c865657080088e.js → 452e1bb12e7f0b85.js} +3 -3
  383. package/.next/static/chunks/4a40b1a0e0d1d36e.js +29 -0
  384. package/.next/static/chunks/{b0aaf0c52bbe6d4b.js → 5066c1dec89e3cb6.js} +1 -1
  385. package/.next/static/chunks/{70d2c49686d63e40.js → 519aa8080f20453e.js} +1 -1
  386. package/.next/static/chunks/{02e429858f990849.js → 55ab99ffa8724197.js} +1 -1
  387. package/.next/static/chunks/55fe2639abb9cd1a.js +2 -0
  388. package/.next/static/chunks/63e6313e09a72507.js +43 -0
  389. package/.next/static/chunks/6f01f5fee0eb2f66.js +1 -0
  390. package/.next/static/chunks/6fc607e12ff4f9cc.js +215 -0
  391. package/.next/static/chunks/752c6435ac86719d.js +2 -0
  392. package/.next/static/chunks/8034834601bf13d7.js +1 -0
  393. package/.next/static/chunks/825ae09010d35407.js +5 -0
  394. package/.next/static/chunks/8b98ae3ee4dbcfd1.js +2 -0
  395. package/.next/static/chunks/a8d5f5dc2688fe30.js +1 -0
  396. package/.next/static/chunks/aad224af68aad5fb.js +4 -0
  397. package/.next/static/chunks/b32c8cafb0f99121.js +24 -0
  398. package/.next/static/chunks/c224fce458bb43f9.js +1 -0
  399. package/.next/static/chunks/c6c6b3aa4797a144.js +1 -0
  400. package/.next/static/chunks/c7596c95b8f7f059.js +1 -0
  401. package/.next/static/chunks/cf9345359d04d2e9.js +63 -0
  402. package/.next/static/chunks/{ceda9387e8da4ba3.js → db20ec18c9fde107.js} +4 -4
  403. package/.next/static/chunks/e6164bb2a2fa9b00.js +1 -0
  404. package/.next/static/chunks/e7aa622fd3384345.js +2 -0
  405. package/.next/static/chunks/ed565e62e468fa30.js +24 -0
  406. package/.next/static/chunks/{0bbe3dc32a2a7822.js → fcc2b1530d73e61e.js} +1 -1
  407. package/.next/static/chunks/{turbopack-525ea573490deca2.js → turbopack-2835ad6e71df73d8.js} +1 -1
  408. package/package.json +4 -1
  409. package/.next/server/chunks/[root-of-the-server]__bab47fec._.js +0 -3
  410. package/.next/server/chunks/[root-of-the-server]__bab47fec._.js.map +0 -1
  411. package/.next/server/chunks/ssr/[root-of-the-server]__868f1e91._.js +0 -3
  412. package/.next/server/chunks/ssr/[root-of-the-server]__868f1e91._.js.map +0 -1
  413. package/.next/server/chunks/ssr/[root-of-the-server]__ac9646b5._.js +0 -3
  414. package/.next/server/chunks/ssr/_ae7d00da._.js.map +0 -1
  415. package/.next/server/chunks/ssr/_c022dd84._.js +0 -7
  416. package/.next/server/chunks/ssr/_c022dd84._.js.map +0 -1
  417. package/.next/server/chunks/ssr/_e18b7893._.js +0 -3
  418. package/.next/server/chunks/ssr/_e18b7893._.js.map +0 -1
  419. package/.next/server/chunks/ssr/node_modules__pnpm_b1ee847f._.js +0 -3
  420. package/.next/server/chunks/ssr/node_modules__pnpm_b1ee847f._.js.map +0 -1
  421. package/.next/static/chunks/06f9a2970e917f08.css +0 -1
  422. package/.next/static/chunks/0bf088d94c6c3d7f.js +0 -1
  423. package/.next/static/chunks/12cf98019a766d56.js +0 -2
  424. package/.next/static/chunks/37bedd3bd7f576a5.js +0 -1
  425. package/.next/static/chunks/5051111686a30794.js +0 -24
  426. package/.next/static/chunks/575ff595808bef08.js +0 -29
  427. package/.next/static/chunks/57eb6d643a88d201.js +0 -1
  428. package/.next/static/chunks/70a4b574c7f36373.js +0 -1
  429. package/.next/static/chunks/733b3612e3f34157.js +0 -5
  430. package/.next/static/chunks/73ecac2771f5a28f.js +0 -2
  431. package/.next/static/chunks/7cdf6785100b30b4.js +0 -1
  432. package/.next/static/chunks/962586ff4bc6af4f.js +0 -1
  433. package/.next/static/chunks/aaa492e282370bc6.js +0 -43
  434. package/.next/static/chunks/b07c7aa5dcbca335.js +0 -2
  435. package/.next/static/chunks/b43b33637f3f9958.js +0 -215
  436. package/.next/static/chunks/c1ea939eac9e0ef7.js +0 -2
  437. package/.next/static/chunks/c855ae74bfce8619.js +0 -63
  438. package/.next/static/chunks/d449b90c60422759.js +0 -1
  439. package/.next/static/chunks/d4eb6ab4605bef88.js +0 -4
  440. package/.next/static/chunks/d6bceca87929c840.js +0 -24
  441. package/.next/static/chunks/eeb1ca1094488ae7.js +0 -1
  442. /package/.next/server/chunks/{[root-of-the-server]__2127a831._.js.map → [root-of-the-server]__dfd36dc0._.js.map} +0 -0
  443. /package/.next/server/chunks/{ssr/ec1cc_katex_dist_katex_mjs_3288b441._.js.map → _next-internal_server_app_api_explorer_route_actions_bca0ca55.js.map} +0 -0
  444. /package/.next/server/chunks/ssr/{[root-of-the-server]__68227521._.js.map → [root-of-the-server]__0310d64d._.js.map} +0 -0
  445. /package/.next/server/chunks/ssr/{[root-of-the-server]__992608ee._.js.map → [root-of-the-server]__599128b8._.js.map} +0 -0
  446. /package/.next/server/chunks/ssr/{[root-of-the-server]__ac9646b5._.js.map → [root-of-the-server]__7de63c62._.js.map} +0 -0
  447. /package/.next/server/chunks/ssr/{[root-of-the-server]__76f6d4b1._.js.map → [root-of-the-server]__85b679c6._.js.map} +0 -0
  448. /package/.next/server/chunks/ssr/{[root-of-the-server]__95e9adf4._.js.map → [root-of-the-server]__8bc686d2._.js.map} +0 -0
  449. /package/.next/server/chunks/ssr/{[root-of-the-server]__eccfba1b._.js.map → [root-of-the-server]__e44bed76._.js.map} +0 -0
  450. /package/.next/server/chunks/ssr/{_bd5a319c._.js.map → _102fd465._.js.map} +0 -0
  451. /package/.next/server/chunks/ssr/{_76a7817e._.js.map → _9f1b4c51._.js.map} +0 -0
  452. /package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_425a6061._.js.map → _next-internal_server_app_(app)_explorer_page_actions_ab677b48.js.map} +0 -0
  453. /package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_4ad1d407._.js.map → ec1cc_katex_dist_katex_mjs_9f7bcf4a._.js.map} +0 -0
  454. /package/.next/server/chunks/ssr/{ec1cc_katex_dist_katex_mjs_a5decdbd._.js.map → ec1cc_katex_dist_katex_mjs_a9aca746._.js.map} +0 -0
  455. /package/.next/server/chunks/ssr/{node_modules__pnpm_2a8998cb._.js.map → node_modules__pnpm_00962046._.js.map} +0 -0
  456. /package/.next/server/chunks/ssr/{node_modules__pnpm_18a6956f._.js.map → node_modules__pnpm_016e62a5._.js.map} +0 -0
  457. /package/.next/server/chunks/ssr/{node_modules__pnpm_1f5ea152._.js.map → node_modules__pnpm_0322e068._.js.map} +0 -0
  458. /package/.next/server/chunks/ssr/{node_modules__pnpm_3c2d8fca._.js.map → node_modules__pnpm_05da39c7._.js.map} +0 -0
  459. /package/.next/server/chunks/ssr/{node_modules__pnpm_0824d495._.js.map → node_modules__pnpm_0631ec86._.js.map} +0 -0
  460. /package/.next/server/chunks/ssr/{node_modules__pnpm_53deb29a._.js.map → node_modules__pnpm_06db4ba2._.js.map} +0 -0
  461. /package/.next/server/chunks/ssr/{node_modules__pnpm_46929561._.js.map → node_modules__pnpm_076b3258._.js.map} +0 -0
  462. /package/.next/server/chunks/ssr/{node_modules__pnpm_26ef6e45._.js.map → node_modules__pnpm_07f377f7._.js.map} +0 -0
  463. /package/.next/server/chunks/ssr/{node_modules__pnpm_35bad3db._.js.map → node_modules__pnpm_08922392._.js.map} +0 -0
  464. /package/.next/server/chunks/ssr/{node_modules__pnpm_1d5914b6._.js.map → node_modules__pnpm_08cf1858._.js.map} +0 -0
  465. /package/.next/server/chunks/ssr/{node_modules__pnpm_060aaf47._.js.map → node_modules__pnpm_0c377643._.js.map} +0 -0
  466. /package/.next/server/chunks/ssr/{node_modules__pnpm_590ecf69._.js.map → node_modules__pnpm_0d80282c._.js.map} +0 -0
  467. /package/.next/server/chunks/ssr/{node_modules__pnpm_8f54a47b._.js.map → node_modules__pnpm_135db8bc._.js.map} +0 -0
  468. /package/.next/server/chunks/ssr/{node_modules__pnpm_3f847f2e._.js.map → node_modules__pnpm_140ed2b5._.js.map} +0 -0
  469. /package/.next/server/chunks/ssr/{node_modules__pnpm_12d18ed0._.js.map → node_modules__pnpm_1790069e._.js.map} +0 -0
  470. /package/.next/server/chunks/ssr/{node_modules__pnpm_7776e75c._.js.map → node_modules__pnpm_19e8c8a7._.js.map} +0 -0
  471. /package/.next/server/chunks/ssr/{node_modules__pnpm_00d5d273._.js.map → node_modules__pnpm_1c623592._.js.map} +0 -0
  472. /package/.next/server/chunks/ssr/{node_modules__pnpm_1cc7c453._.js.map → node_modules__pnpm_1dce0d3b._.js.map} +0 -0
  473. /package/.next/server/chunks/ssr/{node_modules__pnpm_589ffaf2._.js.map → node_modules__pnpm_227802dc._.js.map} +0 -0
  474. /package/.next/server/chunks/ssr/{node_modules__pnpm_64d93795._.js.map → node_modules__pnpm_240c58bb._.js.map} +0 -0
  475. /package/.next/server/chunks/ssr/{node_modules__pnpm_56f72f59._.js.map → node_modules__pnpm_2871fff4._.js.map} +0 -0
  476. /package/.next/server/chunks/ssr/{node_modules__pnpm_2997113c._.js.map → node_modules__pnpm_2b6ac74b._.js.map} +0 -0
  477. /package/.next/server/chunks/ssr/{node_modules__pnpm_b3313177._.js.map → node_modules__pnpm_2e011da0._.js.map} +0 -0
  478. /package/.next/server/chunks/ssr/{node_modules__pnpm_69ce79eb._.js.map → node_modules__pnpm_33344533._.js.map} +0 -0
  479. /package/.next/server/chunks/ssr/{node_modules__pnpm_2cb73c16._.js.map → node_modules__pnpm_337eaf96._.js.map} +0 -0
  480. /package/.next/server/chunks/ssr/{node_modules__pnpm_ce246e92._.js.map → node_modules__pnpm_3394b2c5._.js.map} +0 -0
  481. /package/.next/server/chunks/ssr/{node_modules__pnpm_546559ff._.js.map → node_modules__pnpm_3601c997._.js.map} +0 -0
  482. /package/.next/server/chunks/ssr/{node_modules__pnpm_04663715._.js.map → node_modules__pnpm_36b5c2af._.js.map} +0 -0
  483. /package/.next/server/chunks/ssr/{node_modules__pnpm_2003b884._.js.map → node_modules__pnpm_39f460e8._.js.map} +0 -0
  484. /package/.next/server/chunks/ssr/{node_modules__pnpm_e3ff2006._.js.map → node_modules__pnpm_3d378674._.js.map} +0 -0
  485. /package/.next/server/chunks/ssr/{node_modules__pnpm_74b18e05._.js.map → node_modules__pnpm_3dd8e608._.js.map} +0 -0
  486. /package/.next/server/chunks/ssr/{node_modules__pnpm_65f639a6._.js.map → node_modules__pnpm_3f2cce74._.js.map} +0 -0
  487. /package/.next/server/chunks/ssr/{node_modules__pnpm_3bca6321._.js.map → node_modules__pnpm_423baddc._.js.map} +0 -0
  488. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ee08ad7._.js.map → node_modules__pnpm_42d2c2d2._.js.map} +0 -0
  489. /package/.next/server/chunks/ssr/{node_modules__pnpm_783da796._.js.map → node_modules__pnpm_45bf67c8._.js.map} +0 -0
  490. /package/.next/server/chunks/ssr/{node_modules__pnpm_390f259c._.js.map → node_modules__pnpm_474a3a70._.js.map} +0 -0
  491. /package/.next/server/chunks/ssr/{node_modules__pnpm_fe5653a5._.js.map → node_modules__pnpm_4cc41a2c._.js.map} +0 -0
  492. /package/.next/server/chunks/ssr/{node_modules__pnpm_7236b70e._.js.map → node_modules__pnpm_4d03e476._.js.map} +0 -0
  493. /package/.next/server/chunks/ssr/{node_modules__pnpm_178f3e64._.js.map → node_modules__pnpm_4edcc2cf._.js.map} +0 -0
  494. /package/.next/server/chunks/ssr/{node_modules__pnpm_1ee22148._.js.map → node_modules__pnpm_55b7a1cf._.js.map} +0 -0
  495. /package/.next/server/chunks/ssr/{node_modules__pnpm_293bea2a._.js.map → node_modules__pnpm_5768848c._.js.map} +0 -0
  496. /package/.next/server/chunks/ssr/{node_modules__pnpm_3e3b1d5c._.js.map → node_modules__pnpm_5c59b1ad._.js.map} +0 -0
  497. /package/.next/server/chunks/ssr/{node_modules__pnpm_9809673a._.js.map → node_modules__pnpm_60fef38e._.js.map} +0 -0
  498. /package/.next/server/chunks/ssr/{node_modules__pnpm_37e82b68._.js.map → node_modules__pnpm_63a4a328._.js.map} +0 -0
  499. /package/.next/server/chunks/ssr/{node_modules__pnpm_2843ef27._.js.map → node_modules__pnpm_67f40799._.js.map} +0 -0
  500. /package/.next/server/chunks/ssr/{node_modules__pnpm_73162680._.js.map → node_modules__pnpm_688ab9b4._.js.map} +0 -0
  501. /package/.next/server/chunks/ssr/{node_modules__pnpm_f3ce4f57._.js.map → node_modules__pnpm_6947736b._.js.map} +0 -0
  502. /package/.next/server/chunks/ssr/{node_modules__pnpm_63673d29._.js.map → node_modules__pnpm_6a7ed592._.js.map} +0 -0
  503. /package/.next/server/chunks/ssr/{node_modules__pnpm_fc5a6422._.js.map → node_modules__pnpm_6c9a5a96._.js.map} +0 -0
  504. /package/.next/server/chunks/ssr/{node_modules__pnpm_ba4c8074._.js.map → node_modules__pnpm_70a08cdf._.js.map} +0 -0
  505. /package/.next/server/chunks/ssr/{node_modules__pnpm_e935c4b3._.js.map → node_modules__pnpm_72235a6a._.js.map} +0 -0
  506. /package/.next/server/chunks/ssr/{node_modules__pnpm_aeaaa130._.js.map → node_modules__pnpm_754137d0._.js.map} +0 -0
  507. /package/.next/server/chunks/ssr/{node_modules__pnpm_ed02d5fd._.js.map → node_modules__pnpm_75690281._.js.map} +0 -0
  508. /package/.next/server/chunks/ssr/{node_modules__pnpm_654e9f55._.js.map → node_modules__pnpm_75846ac9._.js.map} +0 -0
  509. /package/.next/server/chunks/ssr/{node_modules__pnpm_4ca42aad._.js.map → node_modules__pnpm_76204895._.js.map} +0 -0
  510. /package/.next/server/chunks/ssr/{node_modules__pnpm_36cec4c0._.js.map → node_modules__pnpm_790c3b2e._.js.map} +0 -0
  511. /package/.next/server/chunks/ssr/{node_modules__pnpm_7774ae26._.js.map → node_modules__pnpm_7a101d07._.js.map} +0 -0
  512. /package/.next/server/chunks/ssr/{node_modules__pnpm_e7e5a8a1._.js.map → node_modules__pnpm_7ca85e0d._.js.map} +0 -0
  513. /package/.next/server/chunks/ssr/{node_modules__pnpm_5d0fe991._.js.map → node_modules__pnpm_7de47ba7._.js.map} +0 -0
  514. /package/.next/server/chunks/ssr/{node_modules__pnpm_92e09662._.js.map → node_modules__pnpm_7e98d14b._.js.map} +0 -0
  515. /package/.next/server/chunks/ssr/{node_modules__pnpm_8ab73142._.js.map → node_modules__pnpm_8036c25f._.js.map} +0 -0
  516. /package/.next/server/chunks/ssr/{node_modules__pnpm_8a892ffe._.js.map → node_modules__pnpm_85de6da6._.js.map} +0 -0
  517. /package/.next/server/chunks/ssr/{node_modules__pnpm_91da4efe._.js.map → node_modules__pnpm_87d282d9._.js.map} +0 -0
  518. /package/.next/server/chunks/ssr/{node_modules__pnpm_b91727a9._.js.map → node_modules__pnpm_8a0f76d5._.js.map} +0 -0
  519. /package/.next/server/chunks/ssr/{node_modules__pnpm_acf470f2._.js.map → node_modules__pnpm_8b3ed63a._.js.map} +0 -0
  520. /package/.next/server/chunks/ssr/{node_modules__pnpm_a1c07e23._.js.map → node_modules__pnpm_8ba721df._.js.map} +0 -0
  521. /package/.next/server/chunks/ssr/{node_modules__pnpm_37c400e7._.js.map → node_modules__pnpm_8c13bdb7._.js.map} +0 -0
  522. /package/.next/server/chunks/ssr/{node_modules__pnpm_f9f710c6._.js.map → node_modules__pnpm_8f8943af._.js.map} +0 -0
  523. /package/.next/server/chunks/ssr/{node_modules__pnpm_80943308._.js.map → node_modules__pnpm_91a9fe44._.js.map} +0 -0
  524. /package/.next/server/chunks/ssr/{node_modules__pnpm_36589973._.js.map → node_modules__pnpm_928932b1._.js.map} +0 -0
  525. /package/.next/server/chunks/ssr/{node_modules__pnpm_f36ad4ee._.js.map → node_modules__pnpm_93144bce._.js.map} +0 -0
  526. /package/.next/server/chunks/ssr/{node_modules__pnpm_c6c36138._.js.map → node_modules__pnpm_96c7344a._.js.map} +0 -0
  527. /package/.next/server/chunks/ssr/{node_modules__pnpm_f07d4655._.js.map → node_modules__pnpm_9927b752._.js.map} +0 -0
  528. /package/.next/server/chunks/ssr/{node_modules__pnpm_ddf26095._.js.map → node_modules__pnpm_9cdea683._.js.map} +0 -0
  529. /package/.next/server/chunks/ssr/{node_modules__pnpm_91229d13._.js.map → node_modules__pnpm_9ce450a4._.js.map} +0 -0
  530. /package/.next/server/chunks/ssr/{node_modules__pnpm_83e28ce4._.js.map → node_modules__pnpm_9e807a6c._.js.map} +0 -0
  531. /package/.next/server/chunks/ssr/{node_modules__pnpm_e174e2e8._.js.map → node_modules__pnpm_a23a1417._.js.map} +0 -0
  532. /package/.next/server/chunks/ssr/{node_modules__pnpm_ab058528._.js.map → node_modules__pnpm_a4a74805._.js.map} +0 -0
  533. /package/.next/server/chunks/ssr/{node_modules__pnpm_9a0d7b74._.js.map → node_modules__pnpm_a714825b._.js.map} +0 -0
  534. /package/.next/server/chunks/ssr/{node_modules__pnpm_845c2200._.js.map → node_modules__pnpm_aec9b3d2._.js.map} +0 -0
  535. /package/.next/server/chunks/ssr/{node_modules__pnpm_d0000990._.js.map → node_modules__pnpm_b18e7d84._.js.map} +0 -0
  536. /package/.next/server/chunks/ssr/{node_modules__pnpm_f443637f._.js.map → node_modules__pnpm_b2c6ca72._.js.map} +0 -0
  537. /package/.next/server/chunks/ssr/{node_modules__pnpm_c7820c3e._.js.map → node_modules__pnpm_b50ae8f6._.js.map} +0 -0
  538. /package/.next/server/chunks/ssr/{node_modules__pnpm_49266b7a._.js.map → node_modules__pnpm_b6b9de46._.js.map} +0 -0
  539. /package/.next/server/chunks/ssr/{node_modules__pnpm_f67832c7._.js.map → node_modules__pnpm_ba838a36._.js.map} +0 -0
  540. /package/.next/server/chunks/ssr/{node_modules__pnpm_6ee95c66._.js.map → node_modules__pnpm_c278eaac._.js.map} +0 -0
  541. /package/.next/server/chunks/ssr/{node_modules__pnpm_6401925d._.js.map → node_modules__pnpm_c39c9496._.js.map} +0 -0
  542. /package/.next/server/chunks/ssr/{node_modules__pnpm_9a0807cb._.js.map → node_modules__pnpm_c402a901._.js.map} +0 -0
  543. /package/.next/server/chunks/ssr/{node_modules__pnpm_fb007933._.js.map → node_modules__pnpm_c7ca55c9._.js.map} +0 -0
  544. /package/.next/server/chunks/ssr/{node_modules__pnpm_e8b810b3._.js.map → node_modules__pnpm_cd59b8c6._.js.map} +0 -0
  545. /package/.next/server/chunks/ssr/{node_modules__pnpm_daf0ef2f._.js.map → node_modules__pnpm_d1c050d4._.js.map} +0 -0
  546. /package/.next/server/chunks/ssr/{node_modules__pnpm_9475a5cd._.js.map → node_modules__pnpm_d6cd0cb1._.js.map} +0 -0
  547. /package/.next/server/chunks/ssr/{node_modules__pnpm_f51396ca._.js.map → node_modules__pnpm_d75e5d41._.js.map} +0 -0
  548. /package/.next/server/chunks/ssr/{node_modules__pnpm_c82324ae._.js.map → node_modules__pnpm_db2dceff._.js.map} +0 -0
  549. /package/.next/server/chunks/ssr/{node_modules__pnpm_80210e53._.js.map → node_modules__pnpm_df7dcb26._.js.map} +0 -0
  550. /package/.next/server/chunks/ssr/{node_modules__pnpm_f3196af3._.js.map → node_modules__pnpm_e70a06f1._.js.map} +0 -0
  551. /package/.next/server/chunks/ssr/{node_modules__pnpm_dc31ca88._.js.map → node_modules__pnpm_ebfee6f4._.js.map} +0 -0
  552. /package/.next/server/chunks/ssr/{node_modules__pnpm_cce8cd76._.js.map → node_modules__pnpm_f505d304._.js.map} +0 -0
  553. /package/.next/server/chunks/ssr/{node_modules__pnpm_9fc73610._.js.map → node_modules__pnpm_f6f51e7a._.js.map} +0 -0
  554. /package/.next/server/chunks/ssr/{node_modules__pnpm_e1568f72._.js.map → node_modules__pnpm_f77bb209._.js.map} +0 -0
  555. /package/.next/server/chunks/ssr/{node_modules__pnpm_6f25e5fd._.js.map → node_modules__pnpm_fa1f464c._.js.map} +0 -0
  556. /package/.next/static/{byIy1XPPF_OGj4sBayLnJ → T1s0QXbWFmXxNEuUL4myK}/_buildManifest.js +0 -0
  557. /package/.next/static/{byIy1XPPF_OGj4sBayLnJ → T1s0QXbWFmXxNEuUL4myK}/_clientMiddlewareManifest.json +0 -0
  558. /package/.next/static/{byIy1XPPF_OGj4sBayLnJ → T1s0QXbWFmXxNEuUL4myK}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/chevron-right.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/search.ts","../../../../node_modules/.pnpm/lucide-react%400.575.0_react%4019.2.4/node_modules/lucide-react/src/icons/file-text.ts","../../../../src/lib/templates/ai-agent.ts","../../../../src/lib/templates/github.ts","../../../../src/lib/templates/process.ts","../../../../src/lib/templates/technical.ts","../../../../src/lib/templates/infrastructure.ts","../../../../src/lib/templates/github-actions.ts","../../../../src/lib/templates/code-quality.ts","../../../../src/lib/templates/monitoring.ts","../../../../src/lib/templates/index.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOSAxOCA2LTYtNi02IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/chevron-right\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 ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'm21 21-4.34-4.34', key: '14j7rj' }],\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n];\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMjEgMjEtNC4zNC00LjM0IiAvPgogIDxjaXJjbGUgY3g9IjExIiBjeT0iMTEiIHI9IjgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/search\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 Search = createLucideIcon('search', __iconNode);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgOUg4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxM0g4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\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 FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","import type { Template } from './types'\r\n\r\nexport const AI_AGENT_TEMPLATES: Template[] = [\r\n {\r\n id: 'claude-md',\r\n name: 'CLAUDE.md',\r\n description: 'AI agent instructions for Claude Code',\r\n defaultPath: 'CLAUDE.md',\r\n category: 'ai-agent',\r\n content: `# {{PROJECT_NAME}} — Agent Instructions\r\n\r\n## What this is\r\n{{DESCRIPTION}}\r\n\r\n## Stack\r\n{{TECH_STACK}}\r\n\r\n## Project type\r\n{{PROJECT_TYPE}}\r\n\r\n## Commands\r\n\\`\\`\\`bash\r\n# Install dependencies\r\n{{PACKAGE_MANAGER}} install\r\n\r\n# Start development\r\nnpm run dev\r\n\r\n# Build for production\r\nnpm run build\r\n\r\n# Run tests\r\nnpm test\r\n\\`\\`\\`\r\n\r\n## Architecture\r\n- Primary language: {{PRIMARY_LANGUAGE}}\r\n- Deployment: {{DEPLOYMENT_PLATFORM}}\r\n- Key directories: \\`src/\\`, \\`docs/\\`, \\`tests/\\`\r\n- See \\`docs/architecture/overview.md\\` for full details\r\n\r\n## Read before coding\r\n- @docs/architecture/overview.md\r\n- @CONTRIBUTING.md\r\n\r\n## Key conventions\r\n{{CONVENTIONS}}\r\n\r\n## Key features\r\n{{KEY_FEATURES}}\r\n\r\n## Non-negotiables\r\n- Always run \\`npm run build\\` before marking a task done — build must pass\r\n- Never use localStorage — causes SSR/client mismatch\r\n- Never commit secrets or credentials\r\n- Maintain test coverage\r\n- Follow security best practices\r\n\r\n## Code style\r\n- Follow existing patterns before introducing new abstractions\r\n- Keep modules small and focused\r\n- Write tests for business logic\r\n- Prefer explicit over implicit\r\n`,\r\n },\r\n {\r\n id: 'agents-md',\r\n name: 'AGENTS.md',\r\n description: 'AI agent instructions (multi-agent / OpenAI)',\r\n defaultPath: 'AGENTS.md',\r\n category: 'ai-agent',\r\n content: `# {{PROJECT_NAME}} — Agent Instructions\r\n\r\n## Overview\r\n{{DESCRIPTION}}\r\n\r\n## Stack\r\n{{TECH_STACK}}\r\n\r\n## Commands\r\n\\`\\`\\`bash\r\nnpm install\r\nnpm run dev\r\nnpm run build\r\nnpm test\r\n\\`\\`\\`\r\n\r\n## Key conventions\r\n{{CONVENTIONS}}\r\n\r\n## Non-negotiables\r\n- Follow existing code patterns\r\n- Write tests for new features\r\n- Never commit secrets or credentials\r\n`,\r\n },\r\n {\r\n id: 'gemini-md',\r\n name: 'GEMINI.md',\r\n description: 'AI agent instructions for Gemini CLI',\r\n defaultPath: 'GEMINI.md',\r\n category: 'ai-agent',\r\n content: `# {{PROJECT_NAME}} — Gemini Agent Instructions\r\n\r\n## What this is\r\n{{DESCRIPTION}}\r\n\r\n## Stack\r\n{{TECH_STACK}}\r\n\r\n## Commands\r\n\\`\\`\\`bash\r\n# Install dependencies\r\nnpm install\r\n\r\n# Start development\r\nnpm run dev\r\n\r\n# Build for production\r\nnpm run build\r\n\r\n# Run tests\r\nnpm test\r\n\\`\\`\\`\r\n\r\n## Key conventions\r\n{{CONVENTIONS}}\r\n\r\n## Non-negotiables\r\n- Follow existing code patterns\r\n- Write tests for new features\r\n- Never commit secrets or credentials\r\n`,\r\n },\r\n {\r\n id: 'cursorrules',\r\n name: '.cursorrules',\r\n description: 'Cursor IDE rules for AI assistance',\r\n defaultPath: '.cursorrules',\r\n category: 'ai-agent',\r\n content: `# {{PROJECT_NAME}} — Cursor Rules\r\n\r\n## Project overview\r\n{{DESCRIPTION}}\r\n\r\n## Tech stack\r\n{{TECH_STACK}}\r\n\r\n## Code style\r\n- Use {{TECH_STACK}} conventions\r\n- Follow existing patterns in the codebase\r\n- Prefer explicit over implicit\r\n- Keep functions small and focused\r\n\r\n## Conventions\r\n{{CONVENTIONS}}\r\n\r\n## What NOT to do\r\n- Don't introduce new dependencies without discussion\r\n- Don't break existing tests\r\n- Don't commit secrets or credentials\r\n- Don't over-engineer simple solutions\r\n`,\r\n },\r\n {\r\n id: 'windsurfrules',\r\n name: '.windsurfrules',\r\n description: 'Windsurf IDE rules for AI assistance',\r\n defaultPath: '.windsurfrules',\r\n category: 'ai-agent',\r\n content: `# {{PROJECT_NAME}} — Windsurf Rules\r\n\r\n## Project overview\r\n{{DESCRIPTION}}\r\n\r\n## Tech stack\r\n{{TECH_STACK}}\r\n\r\n## Code style\r\n- Follow existing patterns in the codebase\r\n- Prefer explicit over implicit\r\n- Keep functions small and focused\r\n\r\n## Conventions\r\n{{CONVENTIONS}}\r\n\r\n## Non-negotiables\r\n- Don't introduce breaking changes\r\n- Don't commit secrets or credentials\r\n- Maintain test coverage\r\n`,\r\n },\r\n {\r\n id: 'copilot-instructions',\r\n name: 'Copilot Instructions',\r\n description: 'GitHub Copilot custom instructions',\r\n defaultPath: '.github/copilot-instructions.md',\r\n category: 'ai-agent',\r\n content: `# GitHub Copilot Instructions — {{PROJECT_NAME}}\r\n\r\n## Project overview\r\n{{DESCRIPTION}}\r\n\r\n## Tech stack\r\n{{TECH_STACK}}\r\n\r\n## Coding conventions\r\n{{CONVENTIONS}}\r\n\r\n## Key features\r\n{{KEY_FEATURES}}\r\n\r\n## Style guidelines\r\n- Follow existing patterns before creating new abstractions\r\n- Write descriptive variable and function names\r\n- Add comments for non-obvious logic only\r\n- Keep functions focused on a single responsibility\r\n\r\n## Testing\r\n- Write tests for all new functionality\r\n- Maintain existing test coverage\r\n- Use the project's established testing patterns\r\n`,\r\n },\r\n]\r\n","import type { Template } from './types'\r\n\r\nexport const GITHUB_TEMPLATES: Template[] = [\r\n {\r\n id: 'contributing',\r\n name: 'CONTRIBUTING.md',\r\n description: 'Contribution guidelines',\r\n defaultPath: 'CONTRIBUTING.md',\r\n category: 'github',\r\n content: `# Contributing to {{PROJECT_NAME}}\r\n\r\nThank you for your interest in contributing!\r\n\r\n## Getting started\r\n\r\n1. Fork the repository\r\n2. Clone your fork: \\`git clone {{REPO_URL}}\\`\r\n3. Create a feature branch: \\`git checkout -b feat/your-feature\\`\r\n4. Make your changes\r\n5. Submit a pull request\r\n\r\n## Branch naming\r\n\r\n| Type | Pattern | Example |\r\n|------|---------|---------|\r\n| Feature | \\`feat/<description>\\` | \\`feat/user-auth\\` |\r\n| Fix | \\`fix/<description>\\` | \\`fix/login-crash\\` |\r\n| Chore | \\`chore/<description>\\` | \\`chore/update-deps\\` |\r\n| Docs | \\`docs/<description>\\` | \\`docs/api-guide\\` |\r\n| Refactor | \\`refactor/<description>\\` | \\`refactor/auth-module\\` |\r\n| Release | \\`release/<version>\\` | \\`release/v1.2.0\\` |\r\n\r\n## Commit conventions\r\n\r\nWe use [Conventional Commits](https://conventionalcommits.org):\r\n\r\n| Type | When to use |\r\n|------|------------|\r\n| \\`feat\\` | New feature |\r\n| \\`fix\\` | Bug fix |\r\n| \\`docs\\` | Documentation only |\r\n| \\`refactor\\` | Code change that's neither fix nor feature |\r\n| \\`test\\` | Adding or updating tests |\r\n| \\`chore\\` | Build process, dependencies, tooling |\r\n| \\`perf\\` | Performance improvement |\r\n| \\`ci\\` | CI/CD changes |\r\n\r\nExamples:\r\n\\`\\`\\`\r\nfeat: add user authentication\r\nfix: resolve login redirect issue\r\ndocs: update API reference\r\nchore: upgrade dependencies\r\nfeat!: redesign auth API (breaking change — note the !)\r\n\\`\\`\\`\r\n\r\n## PR size guidance\r\n\r\n| Size | Lines changed | Guidance |\r\n|------|--------------|---------|\r\n| Small | < 400 lines | Ideal — fast to review |\r\n| Medium | 400–800 lines | Acceptable — add extra context in description |\r\n| Large | > 800 lines | Needs discussion before opening — split if possible |\r\n\r\nLarge PRs slow down the team and increase the chance of missed issues. When in doubt, split.\r\n\r\n## Pull request process\r\n\r\n1. Fill out the PR template completely\r\n2. Ensure all CI checks pass\r\n3. Request review from at least one maintainer\r\n4. Address all review comments\r\n5. Squash commits before merge\r\n\r\n## Code review checklist\r\n\r\n**Author:**\r\n- [ ] Self-reviewed the diff before requesting review\r\n- [ ] PR description explains the \"why\", not just the \"what\"\r\n- [ ] Tests added/updated and passing\r\n- [ ] No secrets or credentials in code\r\n- [ ] Breaking changes noted in PR description\r\n\r\n**Reviewer:**\r\n- [ ] Code is correct and handles edge cases\r\n- [ ] No obvious performance issues\r\n- [ ] Tests are meaningful (not just coverage padding)\r\n- [ ] Naming is clear and consistent with the codebase\r\n- [ ] Documentation updated if public API changed\r\n\r\n## Code style\r\n{{CONVENTIONS}}\r\n\r\n## Reporting bugs\r\n\r\nOpen an issue with:\r\n- Description of the bug\r\n- Steps to reproduce\r\n- Expected vs actual behavior\r\n- Environment details\r\n`,\r\n },\r\n {\r\n id: 'security',\r\n name: 'SECURITY.md',\r\n description: 'Security policy and vulnerability reporting',\r\n defaultPath: 'SECURITY.md',\r\n category: 'github',\r\n content: `# Security Policy — {{PROJECT_NAME}}\r\n\r\n## Supported versions\r\n\r\n| Version | Supported |\r\n|---------|-----------|\r\n| latest | ✅ |\r\n| < 1.0 | ❌ |\r\n\r\n## Reporting a vulnerability\r\n\r\n**Please do not report security vulnerabilities through public GitHub issues.**\r\n\r\nTo report a security issue, email: **security@example.com**\r\n\r\nYou may optionally encrypt your report using our PGP key (key ID: \\`0x00000000\\`, available on keys.openpgp.org).\r\n\r\nInclude:\r\n- Description of the vulnerability\r\n- Steps to reproduce\r\n- Potential impact\r\n- Any suggested mitigations\r\n\r\nYou will receive a response within **48 hours**. We will:\r\n1. Confirm receipt of your report\r\n2. Investigate and assess the issue\r\n3. Release a fix or mitigation\r\n4. Credit you in the release notes (unless you prefer anonymity)\r\n\r\n## Vulnerability SLAs\r\n\r\n| Severity | Fix SLA |\r\n|----------|---------|\r\n| Critical | 48 hours |\r\n| High | 7 days |\r\n| Medium | 30 days |\r\n| Low | 90 days |\r\n\r\nDependabot alerts for **critical** vulnerabilities must be resolved within 48 hours. Run \\`npm audit\\` in CI on every PR.\r\n\r\n## Secrets rotation schedule\r\n\r\n| Secret | Rotation | Owner |\r\n|--------|----------|-------|\r\n| JWT signing key | Every 90 days | Platform team |\r\n| Database passwords | Every 180 days | Platform team |\r\n| API keys (third-party) | On staff change | Security team |\r\n| Deploy tokens | Every 90 days | DevOps |\r\n\r\n## OWASP Top 10 checklist\r\n\r\n- [ ] **A01 Broken Access Control** — Enforce authorization on every endpoint; deny by default\r\n- [ ] **A02 Cryptographic Failures** — Use TLS everywhere; never store plaintext secrets; use bcrypt/argon2 for passwords\r\n- [ ] **A03 Injection** — Use parameterized queries; validate and sanitize all input\r\n- [ ] **A04 Insecure Design** — Threat model new features; use principle of least privilege\r\n- [ ] **A05 Security Misconfiguration** — Harden defaults; disable unused features; set security headers\r\n- [ ] **A06 Vulnerable Components** — Run \\`npm audit\\` in CI; automate with Dependabot\r\n- [ ] **A07 Auth Failures** — Implement MFA; lock accounts after failed attempts; use secure session management\r\n- [ ] **A08 Software Integrity Failures** — Verify checksums; use lockfiles; pin CI action versions\r\n- [ ] **A09 Logging Failures** — Log auth events, access failures; never log secrets or PII\r\n- [ ] **A10 SSRF** — Validate and allowlist URLs for any server-side requests\r\n\r\n## Security best practices\r\n\r\nWhen contributing to this project:\r\n- Never commit secrets, tokens, or credentials\r\n- Use environment variables for all sensitive configuration\r\n- Validate and sanitize all user input\r\n- Follow the principle of least privilege\r\n- Keep dependencies up to date\r\n`,\r\n },\r\n {\r\n id: 'pr-template',\r\n name: 'PR Template',\r\n description: 'Pull request template',\r\n defaultPath: '.github/pull_request_template.md',\r\n category: 'github',\r\n content: `## Description\r\n\r\n<!-- Briefly describe the changes and why they were made -->\r\n\r\n## Type of change\r\n\r\n- [ ] Bug fix (non-breaking change that fixes an issue)\r\n- [ ] New feature (non-breaking change that adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n- [ ] Documentation update\r\n- [ ] Refactor / code cleanup\r\n- [ ] Dependency update\r\n\r\n## Related issues\r\n\r\nCloses #\r\n\r\n## How to test\r\n\r\n1.\r\n2.\r\n3.\r\n\r\n## Screenshots / recordings\r\n\r\n<!-- If applicable, add screenshots or screen recordings -->\r\n\r\n## Checklist\r\n\r\n- [ ] My code follows the project's style guidelines\r\n- [ ] I have performed a self-review of my changes\r\n- [ ] I have added tests that prove my fix or feature works\r\n- [ ] New and existing unit tests pass locally\r\n- [ ] I have updated documentation if needed\r\n- [ ] No secrets or credentials are included\r\n`,\r\n },\r\n {\r\n id: 'bug-report',\r\n name: 'Bug Report Template',\r\n description: 'GitHub issue template for bugs',\r\n defaultPath: '.github/ISSUE_TEMPLATE/bug_report.md',\r\n category: 'github',\r\n content: `---\r\nname: Bug report\r\nabout: Create a report to help us improve\r\nlabels: bug\r\n---\r\n\r\n## Describe the bug\r\n\r\nA clear and concise description of what the bug is.\r\n\r\n## Steps to reproduce\r\n\r\n1. Go to '...'\r\n2. Click on '...'\r\n3. See error\r\n\r\n## Expected behavior\r\n\r\nA clear and concise description of what you expected to happen.\r\n\r\n## Actual behavior\r\n\r\nWhat actually happened.\r\n\r\n## Screenshots\r\n\r\nIf applicable, add screenshots to help explain your problem.\r\n\r\n## Environment\r\n\r\n- OS: [e.g. macOS 14]\r\n- Browser: [e.g. Chrome 120]\r\n- Version: [e.g. 1.2.3]\r\n- Node.js: [e.g. 20.x]\r\n\r\n## Additional context\r\n\r\nAdd any other context about the problem here.\r\n`,\r\n },\r\n {\r\n id: 'feature-request',\r\n name: 'Feature Request Template',\r\n description: 'GitHub issue template for features',\r\n defaultPath: '.github/ISSUE_TEMPLATE/feature_request.md',\r\n category: 'github',\r\n content: `---\r\nname: Feature request\r\nabout: Suggest an idea for this project\r\nlabels: enhancement\r\n---\r\n\r\n## Problem\r\n\r\nIs your feature request related to a problem? Please describe.\r\nA clear and concise description of what the problem is.\r\n\r\n## Proposed solution\r\n\r\nA clear and concise description of what you want to happen.\r\n\r\n## Alternatives considered\r\n\r\nA clear and concise description of any alternative solutions or features you've considered.\r\n\r\n## Implementation notes\r\n\r\nAny thoughts on how this might be implemented?\r\n\r\n## Additional context\r\n\r\nAdd any other context, mockups, or screenshots about the feature request here.\r\n`,\r\n },\r\n]\r\n","import type { Template } from './types'\r\n\r\nexport const PROCESS_TEMPLATES: Template[] = [\r\n {\r\n id: 'changelog',\r\n name: 'CHANGELOG.md',\r\n description: 'Keep a Changelog format',\r\n defaultPath: 'CHANGELOG.md',\r\n category: 'process',\r\n content: `# Changelog — {{PROJECT_NAME}}\r\n\r\nAll notable changes to this project will be documented in this file.\r\n\r\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\r\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\r\n\r\n## [Unreleased]\r\n\r\n### Added\r\n-\r\n\r\n### Changed\r\n-\r\n\r\n### Fixed\r\n-\r\n\r\n### Removed\r\n-\r\n\r\n## [1.0.0] — {{DATE}}\r\n\r\n### Added\r\n- Initial release\r\n`,\r\n },\r\n {\r\n id: 'deployment',\r\n name: 'DEPLOYMENT.md',\r\n description: 'Deployment guide and procedures',\r\n defaultPath: 'DEPLOYMENT.md',\r\n category: 'process',\r\n content: `# Deployment Guide — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Environments\r\n\r\n| Environment | URL | Branch | Auto-deploy |\r\n|-------------|-----|--------|-------------|\r\n| Production | | \\`main\\` | No |\r\n| Staging | | \\`develop\\` | Yes |\r\n| Preview | | PRs | Yes |\r\n\r\n## Prerequisites\r\n\r\n- Access to deployment platform\r\n- Environment variables configured (see \\`.env.example\\`)\r\n- CI/CD pipeline passing\r\n\r\n## Deploy to production\r\n\r\n\\`\\`\\`bash\r\n# 1. Ensure tests pass\r\nnpm test\r\n\r\n# 2. Build and verify\r\nnpm run build\r\n\r\n# 3. Merge to main\r\ngit checkout main && git merge develop\r\n\r\n# 4. Tag the release\r\ngit tag v1.x.x && git push --tags\r\n\\`\\`\\`\r\n\r\n## Environment variables\r\n\r\n| Variable | Required | Description |\r\n|----------|----------|-------------|\r\n| | Yes | |\r\n\r\n## Rollback procedure\r\n\r\n1. Identify the last stable release tag\r\n2. \\`git checkout <tag>\\`\r\n3. Redeploy the previous version\r\n4. Verify the rollback with smoke tests\r\n\r\n## Smoke tests\r\n\r\nAfter every deploy, verify:\r\n- [ ] App loads at production URL\r\n- [ ] Auth flow works\r\n- [ ] Core features functional\r\n- [ ] No error spikes in monitoring\r\n\r\n## Contacts\r\n\r\n| Role | Contact |\r\n|------|---------|\r\n| On-call | |\r\n| Release manager | |\r\n`,\r\n },\r\n {\r\n id: 'testing',\r\n name: 'TESTING.md',\r\n description: 'Testing strategy and guide',\r\n defaultPath: 'TESTING.md',\r\n category: 'process',\r\n content: `# Testing Guide — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Test pyramid\r\n\r\n\\`\\`\\`\r\n /\\\\\r\n /E2E\\\\ 10% — Critical user flows only\r\n /------\\\\\r\n /Integr. \\\\ 20% — API, DB, service boundaries\r\n /----------\\\\\r\n / Unit \\\\ 70% — Functions, logic, utilities\r\n /______________\\\\\r\n\\`\\`\\`\r\n\r\n## Test strategy\r\n\r\n| Layer | Type | Tool | Coverage target |\r\n|-------|------|------|----------------|\r\n| Unit | Functions/logic | {{TEST_FRAMEWORK}} | 80%+ |\r\n| Integration | API/DB | {{TEST_FRAMEWORK}} | 70%+ |\r\n| E2E | User flows | Playwright | Key paths |\r\n\r\n## Coverage targets by directory\r\n\r\n| Directory | Target | Rationale |\r\n|-----------|--------|-----------|\r\n| \\`src/lib/\\` | 90%+ | Core business logic |\r\n| \\`src/api/\\` | 80%+ | API handlers |\r\n| \\`src/components/\\` | 60%+ | UI — focus on logic, not rendering |\r\n| \\`src/utils/\\` | 90%+ | Pure utility functions |\r\n\r\n## Running tests\r\n\r\n\\`\\`\\`bash\r\n# Run all tests\r\nnpm test\r\n\r\n# Run with coverage\r\nnpm run test:coverage\r\n\r\n# Run E2E tests\r\nnpm run test:e2e\r\n\r\n# Watch mode\r\nnpm run test:watch\r\n\\`\\`\\`\r\n\r\n## Writing tests\r\n\r\n### Unit test example\r\n\r\n\\`\\`\\`typescript\r\ndescribe('MyFunction', () => {\r\n it('should return expected value', () => {\r\n expect(myFunction(input)).toBe(expected)\r\n })\r\n})\r\n\\`\\`\\`\r\n\r\n### Integration test guidelines\r\n- Use a real database (not mocks) for DB tests\r\n- Reset state between tests\r\n- Test happy path and error cases\r\n\r\n### E2E test guidelines\r\n- Cover critical user journeys\r\n- Use stable selectors (\\`data-testid\\`)\r\n- Run against staging environment\r\n\r\n### Playwright config example\r\n\r\n\\`\\`\\`typescript\r\n// playwright.config.ts\r\nimport { defineConfig, devices } from '@playwright/test'\r\n\r\nexport default defineConfig({\r\n testDir: './e2e',\r\n fullyParallel: true,\r\n forbidOnly: !!process.env.CI,\r\n retries: process.env.CI ? 2 : 0,\r\n reporter: 'html',\r\n use: {\r\n baseURL: process.env.PLAYWRIGHT_BASE_URL ?? 'http://localhost:3000',\r\n trace: 'on-first-retry',\r\n },\r\n projects: [\r\n {name: 'chromium', use: {...devices['Desktop Chrome']}},\r\n {name: 'Mobile Safari', use: {...devices['iPhone 13']}},\r\n ],\r\n webServer: {\r\n command: 'npm run dev',\r\n url: 'http://localhost:3000',\r\n reuseExistingServer: !process.env.CI,\r\n },\r\n})\r\n\\`\\`\\`\r\n\r\n## Flaky test policy\r\n\r\n1. **Quarantine immediately** — tag with \\`@flaky\\` and skip in CI (\\`test.skip\\`)\r\n2. **Create a ticket** — track as a P2 bug with a 2-week SLA to fix\r\n3. **Root cause** — common causes: timing issues, shared state, network calls\r\n4. **Fix or delete** — flaky tests are worse than no tests (false confidence)\r\n\r\nQuarantine example:\r\n\\`\\`\\`typescript\r\ntest.skip('flaky: timing issue with animation', async ({ page }) => {\r\n // TODO: fix by waiting for animation end event instead of sleep\r\n})\r\n\\`\\`\\`\r\n\r\n## Test organization\r\n\r\n\\`\\`\\`\r\nsrc/\r\n __tests__/ # Unit tests\r\n __integration__/ # Integration tests\r\ne2e/ # E2E tests\r\n\\`\\`\\`\r\n\r\n## CI/CD\r\n\r\nTests run automatically on every PR. PRs cannot merge with failing tests.\r\n`,\r\n },\r\n {\r\n id: 'glossary',\r\n name: 'Glossary',\r\n description: 'Project terminology reference',\r\n defaultPath: 'docs/glossary.md',\r\n category: 'process',\r\n content: `# Glossary — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\nThis document defines terms used throughout the project documentation and codebase.\r\n\r\n## Terms\r\n\r\n| Term | Definition |\r\n|------|------------|\r\n| | |\r\n\r\n## Acronyms\r\n\r\n| Acronym | Full form | Meaning |\r\n|---------|-----------|---------|\r\n| | | |\r\n\r\n## Domain concepts\r\n\r\n<!-- Add domain-specific concepts here -->\r\n\r\n---\r\n\r\n*Keep this document updated as new terminology is introduced.*\r\n`,\r\n },\r\n]\r\n","import type { Template } from './types'\r\n\r\nconst today = new Date().toISOString().split('T')[0]\r\n\r\nexport const TECHNICAL_TEMPLATES: Template[] = [\r\n {\r\n id: 'prd',\r\n name: 'PRD',\r\n description: 'Product requirements document',\r\n defaultPath: 'docs/prd.md',\r\n category: 'technical',\r\n content: `# Product Requirements — {{PROJECT_NAME}}\r\n\r\n**Status:** Draft\r\n**Last updated:** {{DATE}}\r\n**Author:**\r\n**Stakeholders:**\r\n\r\n## Problem statement\r\n{{DESCRIPTION}}\r\n\r\n## Goals\r\n-\r\n-\r\n\r\n## Non-goals\r\n-\r\n-\r\n\r\n## User stories\r\n| As a... | I want to... | So that... |\r\n|---------|--------------|------------|\r\n| user | | |\r\n\r\n## Requirements\r\n\r\n### Functional\r\n{{KEY_FEATURES}}\r\n\r\n### Non-functional\r\n- Performance:\r\n- Security:\r\n- Reliability:\r\n- Scalability:\r\n\r\n## Success metrics\r\n| Metric | Current | Target |\r\n|--------|---------|--------|\r\n| | | |\r\n\r\n## Timeline\r\n| Milestone | Target date |\r\n|-----------|-------------|\r\n| | |\r\n\r\n## Open questions\r\n-\r\n`,\r\n },\r\n {\r\n id: 'architecture-overview',\r\n name: 'Architecture Overview',\r\n description: 'System architecture doc',\r\n defaultPath: 'docs/architecture/overview.md',\r\n category: 'technical',\r\n content: `# Architecture Overview — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Summary\r\n{{DESCRIPTION}}\r\n\r\n## Tech stack\r\n{{TECH_STACK}}\r\n\r\n## System diagram\r\n\r\n### Context (C4 Level 1)\r\n\r\n\\`\\`\\`mermaid\r\ngraph TB\r\n User[\"User\"] --> System[\"{{PROJECT_NAME}}\"]\r\n System --> ExternalAPI[\"External APIs\"]\r\n System --> DB[\"Database\"]\r\n\\`\\`\\`\r\n\r\n### Container (C4 Level 2)\r\n\r\n\\`\\`\\`mermaid\r\ngraph TB\r\n Client[\"Web Client<br/>(Browser)\"] --> API[\"API Server<br/>(Node.js)\"]\r\n API --> DB[\"Database<br/>(PostgreSQL)\"]\r\n API --> Cache[\"Cache<br/>(Redis)\"]\r\n API --> Queue[\"Job Queue\"]\r\n\\`\\`\\`\r\n\r\n## Components\r\n\r\n| Component | Responsibility | Tech |\r\n|-----------|---------------|------|\r\n| | | |\r\n\r\n## Data flow\r\n\r\n1.\r\n2.\r\n3.\r\n\r\n## Key decisions\r\n\r\n| Decision | Chosen | Alternative | Rationale |\r\n|----------|--------|-------------|-----------|\r\n| | | | |\r\n\r\n## ADR log\r\n\r\n| ADR | Title | Status | Date |\r\n|-----|-------|--------|------|\r\n| 001 | | Accepted | {{DATE}} |\r\n\r\n## Non-goals\r\n\r\n- <!-- What this system explicitly does NOT do -->\r\n\r\n## Security considerations\r\n- Authentication:\r\n- Authorization:\r\n- Data validation:\r\n- Secrets management:\r\n\r\n## Scalability notes\r\n-\r\n`,\r\n },\r\n {\r\n id: 'api-reference',\r\n name: 'API Reference',\r\n description: 'API endpoints reference',\r\n defaultPath: 'docs/api-reference.md',\r\n category: 'technical',\r\n content: `# API Reference — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Base URL\r\n\r\n\\`\\`\\`\r\nhttps://api.example.com/v1\r\n\\`\\`\\`\r\n\r\n## Versioning\r\n\r\nThis API uses URL-based versioning (\\`/v1/\\`, \\`/v2/\\`, etc.).\r\n\r\n- The current stable version is \\`v1\\`.\r\n- Deprecated versions are supported for 12 months after a new version is released.\r\n- Breaking changes always increment the major version.\r\n\r\n## Authentication\r\n\r\nAll requests require a bearer token in the Authorization header:\r\n\r\n\\`\\`\\`\r\nAuthorization: Bearer <token>\r\n\\`\\`\\`\r\n\r\n### Token refresh\r\n\r\nTokens expire after 1 hour. Refresh using:\r\n\r\n\\`\\`\\`\r\nPOST /auth/refresh\r\nContent-Type: application/json\r\n\r\n{\"refreshToken\": \"<refresh_token>\"}\r\n\\`\\`\\`\r\n\r\n**Response:**\r\n\\`\\`\\`json\r\n{\"accessToken\": \"...\", \"refreshToken\": \"...\", \"expiresIn\": 3600}\r\n\\`\\`\\`\r\n\r\n## Rate limiting\r\n\r\n- **Limit:** 1000 requests/hour per API key\r\n- **Headers:** \\`X-RateLimit-Limit\\`, \\`X-RateLimit-Remaining\\`, \\`X-RateLimit-Reset\\`\r\n\r\n## Pagination\r\n\r\nList endpoints support cursor-based pagination:\r\n\r\n\\`\\`\\`\r\nGET /resources?cursor=<cursor>&limit=20\r\n\\`\\`\\`\r\n\r\n## Error format\r\n\r\nAll errors follow a standard envelope:\r\n\r\n\\`\\`\\`json\r\n{\r\n \"code\": \"VALIDATION_ERROR\",\r\n \"message\": \"Human-readable description\",\r\n \"details\": [{\"field\": \"email\", \"issue\": \"invalid format\"}]\r\n}\r\n\\`\\`\\`\r\n\r\n## Error codes\r\n\r\n| Code | Meaning |\r\n|------|---------|\r\n| 400 | Bad request — invalid parameters |\r\n| 401 | Unauthorized — missing or invalid token |\r\n| 403 | Forbidden — insufficient permissions |\r\n| 404 | Not found |\r\n| 422 | Unprocessable entity — validation error |\r\n| 429 | Too many requests |\r\n| 500 | Internal server error |\r\n\r\n## Webhooks\r\n\r\n### Signature verification\r\n\r\nAll webhook payloads are signed with HMAC-SHA256. Verify the signature:\r\n\r\n\\`\\`\\`\r\nX-Webhook-Signature: sha256=<hmac_hex>\r\n\\`\\`\\`\r\n\r\n\\`\\`\\`typescript\r\nimport crypto from 'crypto'\r\n\r\nfunction verifyWebhook(payload: string, signature: string, secret: string): boolean {\r\n const expected = crypto\r\n .createHmac('sha256', secret)\r\n .update(payload)\r\n .digest('hex')\r\n return crypto.timingSafeEqual(\r\n Buffer.from(\\`sha256=\\${expected}\\`),\r\n Buffer.from(signature)\r\n )\r\n}\r\n\\`\\`\\`\r\n\r\n## Endpoints\r\n\r\n### GET /resource\r\n\r\n**Description:** List resources\r\n\r\n**Query parameters:**\r\n- \\`limit\\` (integer, default 20) — items per page\r\n- \\`cursor\\` (string) — pagination cursor\r\n\r\n**Response:**\r\n\\`\\`\\`json\r\n{\r\n \"data\": [],\r\n \"cursor\": null,\r\n \"total\": 0\r\n}\r\n\\`\\`\\`\r\n\r\n### POST /resource\r\n\r\n**Description:** Create a resource\r\n\r\n**Request body:**\r\n\\`\\`\\`json\r\n{}\r\n\\`\\`\\`\r\n\r\n**Response:**\r\n\\`\\`\\`json\r\n{}\r\n\\`\\`\\`\r\n`,\r\n },\r\n {\r\n id: 'runbook',\r\n name: 'Runbook',\r\n description: 'Operational runbook',\r\n defaultPath: 'docs/runbook.md',\r\n category: 'technical',\r\n content: `# Runbook — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Overview\r\n{{DESCRIPTION}}\r\n\r\n## SLOs\r\n\r\n| Metric | Target |\r\n|--------|--------|\r\n| Availability | 99.9% |\r\n| P95 latency | < 500ms |\r\n| Error rate | < 0.1% |\r\n\r\n## Environments\r\n\r\n| Env | URL | Purpose |\r\n|-----|-----|---------|\r\n| Production | | Live traffic |\r\n| Staging | | Pre-release testing |\r\n| Development | | Local dev |\r\n\r\n## Alerting\r\n\r\n| Alert | Threshold | Severity | Action |\r\n|-------|-----------|----------|--------|\r\n| | | | |\r\n\r\n## On-call contacts\r\n\r\n| Role | Name | Contact |\r\n|------|------|---------|\r\n| Primary | | |\r\n| Secondary | | |\r\n\r\n## Escalation matrix\r\n\r\n| Time since incident | Contact | Method |\r\n|--------------------|---------|--------|\r\n| 0–15 min | On-call engineer | PagerDuty / phone |\r\n| 15–30 min | Team lead | Slack + phone |\r\n| 30+ min | Engineering manager | Phone + email |\r\n\r\n## Procedures\r\n\r\n### Deploy\r\n\r\n1.\r\n2.\r\n3.\r\n\r\n### Rollback\r\n\r\n**When to rollback:**\r\n\r\n| Signal | Action |\r\n|--------|--------|\r\n| Error rate > 1% after deploy | Immediate rollback |\r\n| P95 latency doubled | Rollback if no fix in 15 min |\r\n| Health check failing | Immediate rollback |\r\n| Critical bug reported | Rollback within 30 min |\r\n\r\n**Rollback steps:**\r\n\r\n\\`\\`\\`bash\r\n# 1. Identify last stable release\r\ngit log --oneline --tags --simplify-by-decoration | head -5\r\n\r\n# 2. Deploy previous version\r\ngit checkout <previous-tag>\r\nnpm run build && npm run deploy\r\n\r\n# 3. Verify rollback\r\ncurl -f https://your-app.com/health\r\n\\`\\`\\`\r\n\r\n### Troubleshooting\r\n\r\n#### High error rate\r\n\\`\\`\\`bash\r\n# Check recent application logs\r\ntail -f /var/log/app/error.log\r\n\r\n# Check error counts by endpoint\r\ngrep \"ERROR\" /var/log/app/app.log | awk '{print $5}' | sort | uniq -c | sort -rn | head -10\r\n\r\n# Review recent deploys\r\ngit log --oneline -10\r\n\\`\\`\\`\r\n\r\n1. Check application logs for exception traces\r\n2. Check downstream dependencies (database, cache, external APIs)\r\n3. Review recent deploys — consider rollback if deploy-correlated\r\n\r\n#### High latency\r\n\\`\\`\\`bash\r\n# Check database slow query log\r\npsql $DATABASE_URL -c \"SELECT query, calls, mean_exec_time FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 10;\"\r\n\r\n# Check cache hit rate\r\nredis-cli info stats | grep hit_rate\r\n\r\n# Check CPU/memory\r\ntop -b -n 1 | head -20\r\n\\`\\`\\`\r\n\r\n1. Check database query times (slow query log)\r\n2. Check cache hit rates\r\n3. Review resource utilization (CPU, memory, connections)\r\n\r\n#### Service won't start\r\n\\`\\`\\`bash\r\n# Check environment variables\r\nenv | grep -E \"DATABASE|REDIS|PORT\"\r\n\r\n# Test database connectivity\r\npsql $DATABASE_URL -c \"SELECT 1\"\r\n\r\n# Check port availability\r\nlsof -i :3000\r\n\\`\\`\\`\r\n\r\n#### Database connection issues\r\n\\`\\`\\`bash\r\n# Check connection pool status\r\npsql $DATABASE_URL -c \"SELECT count(*), state FROM pg_stat_activity GROUP BY state;\"\r\n\r\n# Check max connections\r\npsql $DATABASE_URL -c \"SHOW max_connections;\"\r\n\\`\\`\\`\r\n\r\n#### Memory leak suspected\r\n\\`\\`\\`bash\r\n# Monitor memory over time\r\nwatch -n 5 'ps aux --sort=-%mem | head -5'\r\n\r\n# Capture heap snapshot (Node.js)\r\nkill -USR2 <pid>\r\n\\`\\`\\`\r\n`,\r\n },\r\n {\r\n id: 'adr',\r\n name: 'Architecture Decision',\r\n description: 'Architecture Decision Record',\r\n defaultPath: 'docs/architecture/decisions/ADR-001.md',\r\n category: 'technical',\r\n content: `# ADR-001: Title\r\n\r\n**Status:** Proposed\r\n**Date:** {{DATE}}\r\n**Deciders:**\r\n\r\n## Context\r\nWhat is the issue that we're seeing that is motivating this decision or change?\r\n\r\n## Decision\r\nWhat is the change that we're proposing and/or doing?\r\n\r\n## Rationale\r\nWhy did we choose this option?\r\n\r\n## Alternatives considered\r\n- **Option A:** Description — pros/cons\r\n- **Option B:** Description — pros/cons\r\n\r\n## Consequences\r\n\r\n### Positive\r\n-\r\n\r\n### Negative\r\n-\r\n\r\n### Neutral\r\n-\r\n`,\r\n },\r\n {\r\n id: 'onboarding',\r\n name: 'Onboarding Guide',\r\n description: 'Developer onboarding guide',\r\n defaultPath: 'docs/onboarding.md',\r\n category: 'technical',\r\n content: `# Developer Onboarding — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Overview\r\n{{DESCRIPTION}}\r\n\r\n## Prerequisites\r\n- [ ] Access to repository ({{REPO_URL}})\r\n- [ ] Access to staging environment\r\n- [ ] Accounts: (list required accounts/services)\r\n\r\n## Day 1: Get running\r\n\r\n- [ ] Clone the repository and set up local environment\r\n- [ ] Run the app locally and verify it works\r\n- [ ] Read the architecture overview (\\`docs/architecture/overview.md\\`)\r\n- [ ] Meet your team lead and get a tour of the codebase\r\n\r\n\\`\\`\\`bash\r\n# Clone\r\ngit clone {{REPO_URL}}\r\ncd {{PROJECT_NAME}}\r\n\r\n# Install dependencies\r\nnpm install\r\n\r\n# Copy environment variables\r\ncp .env.example .env.local\r\n# Edit .env.local with real values (ask your team lead)\r\n\r\n# Start development server\r\nnpm run dev\r\n\\`\\`\\`\r\n\r\n## Week 1: Get productive\r\n\r\n- [ ] Complete the environment setup checklist below\r\n- [ ] Read \\`CONTRIBUTING.md\\` and understand the PR process\r\n- [ ] Submit your first PR (even a small doc fix counts)\r\n- [ ] Attend team standup and sprint planning\r\n- [ ] Review 2–3 recent merged PRs to understand code patterns\r\n- [ ] Shadow a code review\r\n\r\n## Month 1: Get comfortable\r\n\r\n- [ ] Deliver your first feature end-to-end\r\n- [ ] Lead a code review\r\n- [ ] Identify one piece of tech debt and create a ticket\r\n- [ ] Update this onboarding doc with anything that was unclear\r\n\r\n## Environment setup\r\n\r\n\\`\\`\\`bash\r\n# Install dependencies\r\nnpm install\r\n\r\n# Copy environment variables\r\ncp .env.example .env.local\r\n\r\n# Start development server\r\nnpm run dev\r\n\\`\\`\\`\r\n\r\n## Tech stack\r\n{{TECH_STACK}}\r\n\r\n## IDE setup\r\n- Recommended: VS Code or Cursor\r\n- Install recommended extensions (see \\`.vscode/extensions.json\\`)\r\n- Enable format on save\r\n\r\n## Project structure\r\n\r\n\\`\\`\\`\r\n(describe key directories here)\r\n\\`\\`\\`\r\n\r\n## Key concepts\r\n-\r\n\r\n## Common tasks\r\n\r\n### Running tests\r\n\\`\\`\\`bash\r\nnpm test\r\n\\`\\`\\`\r\n\r\n### Building for production\r\n\\`\\`\\`bash\r\nnpm run build\r\n\\`\\`\\`\r\n\r\n## Common pitfalls\r\n\r\n1. **Forgetting to copy .env.local** — the app won't start without required env vars. Copy from \\`.env.example\\` and fill in real values.\r\n2. **Running \\`npm install\\` instead of the project's package manager** — check \\`package.json\\` for the \\`packageManager\\` field or look for a lock file (\\`pnpm-lock.yaml\\`, \\`yarn.lock\\`).\r\n3. **Committing to \\`main\\` directly** — always branch and open a PR. Direct pushes to \\`main\\` are blocked.\r\n4. **Skipping tests** — CI will catch you, but it's faster to run \\`npm test\\` locally before pushing.\r\n5. **Not reading existing patterns** — before adding a new abstraction, search the codebase for how similar problems are solved.\r\n\r\n## Your first PR\r\n\r\n1. Pick a small, well-defined issue labelled \\`good first issue\\`\r\n2. Create a branch: \\`git checkout -b feat/your-name-first-pr\\`\r\n3. Make the change and add a test\r\n4. Open a PR with the PR template filled out\r\n5. Ask for a review in the team Slack channel\r\n\r\n## Key contacts\r\n\r\n| Role | Name | Contact |\r\n|------|------|---------|\r\n| | | |\r\n\r\n## Resources\r\n- Architecture overview: \\`docs/architecture/overview.md\\`\r\n- API reference: \\`docs/api-reference.md\\`\r\n- Runbook: \\`docs/runbook.md\\`\r\n- Contributing guide: \\`CONTRIBUTING.md\\`\r\n`,\r\n },\r\n {\r\n id: 'database',\r\n name: 'Database Docs',\r\n description: 'Database schema and design reference',\r\n defaultPath: 'docs/DATABASE.md',\r\n category: 'technical',\r\n content: `# Database Documentation — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Overview\r\n\r\n<!-- Brief description of the database design -->\r\n\r\n## Entity Relationship Diagram\r\n\r\n\\`\\`\\`mermaid\r\nerDiagram\r\n USERS {\r\n uuid id PK\r\n string email\r\n timestamp created_at\r\n }\r\n\\`\\`\\`\r\n\r\n## Tables\r\n\r\n### users\r\n\r\n| Column | Type | Nullable | Description |\r\n|--------|------|----------|-------------|\r\n| id | uuid | No | Primary key |\r\n| email | varchar | No | Unique email |\r\n| created_at | timestamp | No | Creation time |\r\n\r\n## Indexes\r\n\r\n| Table | Columns | Type | Purpose |\r\n|-------|---------|------|---------|\r\n| | | | |\r\n\r\n## Migrations\r\n\r\nMigrations live in \\`db/migrations/\\`. Run with:\r\n\r\n\\`\\`\\`bash\r\nnpm run db:migrate\r\n\\`\\`\\`\r\n\r\n## Connection\r\n\r\n\\`\\`\\`\r\nDATABASE_URL=postgresql://user:password@host:5432/dbname\r\n\\`\\`\\`\r\n\r\n## Backup & restore\r\n\r\n\\`\\`\\`bash\r\n# Backup\r\npg_dump $DATABASE_URL > backup.sql\r\n\r\n# Restore\r\npsql $DATABASE_URL < backup.sql\r\n\\`\\`\\`\r\n\r\n## Performance notes\r\n\r\n-\r\n`,\r\n },\r\n {\r\n id: 'openapi',\r\n name: 'OpenAPI Spec',\r\n description: 'OpenAPI 3.0 API specification scaffold',\r\n defaultPath: 'docs/api-spec.yaml',\r\n category: 'technical',\r\n content: `openapi: 3.0.3\r\ninfo:\r\n title: {{PROJECT_NAME}} API\r\n description: |\r\n {{DESCRIPTION}}\r\n version: 1.0.0\r\n contact:\r\n email: team@example.com\r\n\r\nservers:\r\n - url: https://api.example.com/v1\r\n description: Production\r\n - url: https://staging-api.example.com/v1\r\n description: Staging\r\n\r\nsecurity:\r\n - bearerAuth: []\r\n\r\npaths:\r\n /health:\r\n get:\r\n summary: Health check\r\n operationId: healthCheck\r\n security: []\r\n responses:\r\n '200':\r\n description: OK\r\n content:\r\n application/json:\r\n schema:\r\n type: object\r\n properties:\r\n status:\r\n type: string\r\n example: ok\r\n\r\n /resources:\r\n get:\r\n summary: List resources\r\n operationId: listResources\r\n parameters:\r\n - name: limit\r\n in: query\r\n schema:\r\n type: integer\r\n default: 20\r\n - name: cursor\r\n in: query\r\n schema:\r\n type: string\r\n responses:\r\n '200':\r\n description: Success\r\n content:\r\n application/json:\r\n schema:\r\n $ref: '#/components/schemas/ResourceList'\r\n '401':\r\n $ref: '#/components/responses/Unauthorized'\r\n\r\ncomponents:\r\n securitySchemes:\r\n bearerAuth:\r\n type: http\r\n scheme: bearer\r\n bearerFormat: JWT\r\n\r\n schemas:\r\n Resource:\r\n type: object\r\n properties:\r\n id:\r\n type: string\r\n format: uuid\r\n createdAt:\r\n type: string\r\n format: date-time\r\n\r\n ResourceList:\r\n type: object\r\n properties:\r\n data:\r\n type: array\r\n items:\r\n $ref: '#/components/schemas/Resource'\r\n cursor:\r\n type: string\r\n nullable: true\r\n total:\r\n type: integer\r\n\r\n Error:\r\n type: object\r\n properties:\r\n error:\r\n type: string\r\n message:\r\n type: string\r\n\r\n responses:\r\n Unauthorized:\r\n description: Unauthorized\r\n content:\r\n application/json:\r\n schema:\r\n $ref: '#/components/schemas/Error'\r\n`,\r\n },\r\n {\r\n id: 'meeting-notes',\r\n name: 'Meeting Notes',\r\n description: 'Meeting notes template',\r\n defaultPath: `docs/meetings/${today}.md`,\r\n category: 'technical',\r\n content: `# Meeting Notes — ${today}\r\n\r\n**Attendees:**\r\n**Facilitator:**\r\n\r\n## Agenda\r\n\r\n1.\r\n2.\r\n\r\n## Notes\r\n\r\n## Decisions\r\n\r\n## Action items\r\n\r\n| Action | Owner | Due |\r\n|--------|-------|-----|\r\n| | | |\r\n\r\n## Next meeting\r\n`,\r\n },\r\n {\r\n id: 'blank',\r\n name: 'Blank Document',\r\n description: 'Empty markdown file',\r\n defaultPath: 'docs/untitled.md',\r\n category: 'technical',\r\n content: '# Untitled\\n\\n',\r\n },\r\n]\r\n","import type { Template } from './types'\r\n\r\nexport const INFRASTRUCTURE_TEMPLATES: Template[] = [\r\n {\r\n id: 'dockerfile',\r\n name: 'Dockerfile',\r\n description: 'Multi-stage Docker build with health check',\r\n defaultPath: 'Dockerfile',\r\n category: 'infrastructure',\r\n content: `# Stage 1: Install dependencies\r\nFROM node:20-alpine AS deps\r\nRUN apk add --no-cache libc6-compat\r\nWORKDIR /app\r\nCOPY package*.json ./\r\nRUN npm ci --only=production\r\n\r\n# Stage 2: Build\r\nFROM node:20-alpine AS builder\r\nWORKDIR /app\r\nCOPY --from=deps /app/node_modules ./node_modules\r\nCOPY . .\r\nRUN npm run build\r\n\r\n# Stage 3: Run\r\nFROM node:20-alpine AS runner\r\nWORKDIR /app\r\nENV NODE_ENV=production\r\nRUN addgroup --system --gid 1001 nodejs\r\nRUN adduser --system --uid 1001 appuser\r\nCOPY --from=builder /app/dist ./dist\r\nCOPY --from=deps /app/node_modules ./node_modules\r\nCOPY package*.json ./\r\nUSER appuser\r\nEXPOSE 3000\r\nHEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \\\\\r\n CMD wget -qO- http://localhost:3000/health || exit 1\r\nCMD [\"node\", \"dist/index.js\"]\r\n`,\r\n },\r\n {\r\n id: 'docker-compose',\r\n name: 'docker-compose.yml',\r\n description: 'Docker Compose with app, Postgres, and Redis',\r\n defaultPath: 'docker-compose.yml',\r\n category: 'infrastructure',\r\n content: `# Docker Compose V2+ (no version key needed)\r\nservices:\r\n app:\r\n build: .\r\n ports:\r\n - \"3000:3000\"\r\n environment:\r\n DATABASE_URL: postgresql://postgres:password@db:5432/{{PROJECT_NAME}}\r\n REDIS_URL: redis://redis:6379\r\n depends_on:\r\n db:\r\n condition: service_healthy\r\n redis:\r\n condition: service_healthy\r\n\r\n db:\r\n image: postgres:16-alpine\r\n environment:\r\n POSTGRES_PASSWORD: password\r\n POSTGRES_DB: {{PROJECT_NAME}}\r\n healthcheck:\r\n test: [\"CMD-SHELL\", \"pg_isready -U postgres\"]\r\n interval: 10s\r\n timeout: 5s\r\n retries: 5\r\n volumes:\r\n - postgres_data:/var/lib/postgresql/data\r\n\r\n redis:\r\n image: redis:7-alpine\r\n healthcheck:\r\n test: [\"CMD\", \"redis-cli\", \"ping\"]\r\n interval: 10s\r\n timeout: 5s\r\n retries: 5\r\n volumes:\r\n - redis_data:/data\r\n\r\nvolumes:\r\n postgres_data:\r\n redis_data:\r\n`,\r\n },\r\n {\r\n id: 'dockerignore',\r\n name: '.dockerignore',\r\n description: 'Docker build context exclusions',\r\n defaultPath: '.dockerignore',\r\n category: 'infrastructure',\r\n content: `node_modules\r\nnpm-debug.log*\r\n.git\r\n.gitignore\r\n.env*\r\n!.env.example\r\ndist\r\nbuild\r\ncoverage\r\n.nyc_output\r\n*.test.*\r\n*.spec.*\r\n__tests__\r\ne2e\r\n.github\r\ndocs\r\nREADME.md\r\nCHANGELOG.md\r\n`,\r\n },\r\n {\r\n id: 'makefile',\r\n name: 'Makefile',\r\n description: 'Makefile with common dev/build/deploy targets',\r\n defaultPath: 'Makefile',\r\n category: 'infrastructure',\r\n content: `.PHONY: help dev build test lint docker-up docker-down migrate clean\r\n\r\nhelp: ## Show this help\r\n\\t@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = \":.*?## \"}; {printf \"\\\\033[36m%-20s\\\\033[0m %s\\\\n\", $$1, $$2}'\r\n\r\ndev: ## Start development server\r\n\\tnpm run dev\r\n\r\nbuild: ## Build for production\r\n\\tnpm run build\r\n\r\ntest: ## Run all tests\r\n\\tnpm test\r\n\r\nlint: ## Run linter\r\n\\tnpm run lint\r\n\r\ndocker-up: ## Start Docker services\r\n\\tdocker compose up -d\r\n\r\ndocker-down: ## Stop Docker services\r\n\\tdocker compose down\r\n\r\nmigrate: ## Run database migrations\r\n\\tnpm run db:migrate\r\n\r\nclean: ## Remove build artifacts\r\n\\trm -rf dist build .next coverage node_modules/.cache\r\n`,\r\n },\r\n {\r\n id: 'env-example',\r\n name: '.env.example',\r\n description: 'Annotated environment variables template',\r\n defaultPath: '.env.example',\r\n category: 'infrastructure',\r\n content: `# App Config\r\nNODE_ENV=development\r\nPORT=3000\r\nAPP_URL=http://localhost:3000\r\nLOG_LEVEL=info\r\n\r\n# Database\r\nDATABASE_URL=postgresql://user:password@localhost:5432/{{PROJECT_NAME}}_dev\r\n\r\n# Auth\r\nJWT_SECRET=your-super-secret-jwt-key-change-in-production\r\nJWT_EXPIRES_IN=7d\r\nSESSION_SECRET=your-session-secret-change-in-production\r\n\r\n# External Services\r\n# STRIPE_SECRET_KEY=sk_test_...\r\n# SENDGRID_API_KEY=SG....\r\n# AWS_ACCESS_KEY_ID=\r\n# AWS_SECRET_ACCESS_KEY=\r\n# AWS_REGION=us-east-1\r\n# AWS_S3_BUCKET=\r\n\r\n# Observability\r\n# SENTRY_DSN=https://...@sentry.io/...\r\n# DATADOG_API_KEY=\r\n# NEW_RELIC_LICENSE_KEY=\r\n`,\r\n },\r\n {\r\n id: 'nginx-conf',\r\n name: 'nginx.conf',\r\n description: 'Nginx reverse proxy with gzip, security headers, rate limiting',\r\n defaultPath: 'nginx/nginx.conf',\r\n category: 'infrastructure',\r\n content: `events {\r\n worker_connections 1024;\r\n}\r\n\r\nhttp {\r\n gzip on;\r\n gzip_types text/plain text/css application/json application/javascript text/xml;\r\n gzip_min_length 1000;\r\n\r\n # Rate limiting\r\n limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;\r\n\r\n server {\r\n listen 80;\r\n server_name _;\r\n\r\n # Security headers\r\n add_header X-Frame-Options \"SAMEORIGIN\" always;\r\n add_header X-Content-Type-Options \"nosniff\" always;\r\n add_header X-XSS-Protection \"1; mode=block\" always;\r\n add_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\r\n add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\r\n\r\n location /api/ {\r\n limit_req zone=api burst=20 nodelay;\r\n proxy_pass http://app:3000;\r\n proxy_http_version 1.1;\r\n proxy_set_header Upgrade $http_upgrade;\r\n proxy_set_header Connection 'upgrade';\r\n proxy_set_header Host $host;\r\n proxy_set_header X-Real-IP $remote_addr;\r\n proxy_cache_bypass $http_upgrade;\r\n }\r\n\r\n location / {\r\n proxy_pass http://app:3000;\r\n proxy_http_version 1.1;\r\n proxy_set_header Host $host;\r\n proxy_set_header X-Real-IP $remote_addr;\r\n }\r\n }\r\n}\r\n`,\r\n },\r\n]\r\n","import type { Template } from './types'\r\n\r\nexport const GITHUB_ACTIONS_TEMPLATES: Template[] = [\r\n {\r\n id: 'ci-workflow',\r\n name: 'CI Workflow',\r\n description: 'GitHub Actions CI: lint, typecheck, test matrix, coverage',\r\n defaultPath: '.github/workflows/ci.yml',\r\n category: 'github-actions',\r\n content: `name: CI\r\non:\r\n push:\r\n branches: [main, develop]\r\n pull_request:\r\n branches: [main, develop]\r\n\r\njobs:\r\n lint:\r\n runs-on: ubuntu-latest\r\n steps:\r\n - uses: actions/checkout@v4\r\n - uses: actions/setup-node@v4\r\n with: {node-version: '20', cache: 'npm'}\r\n - run: npm ci\r\n - run: npm run lint\r\n - run: npm run typecheck\r\n\r\n test:\r\n runs-on: ubuntu-latest\r\n strategy:\r\n matrix:\r\n node-version: ['20', '22']\r\n steps:\r\n - uses: actions/checkout@v4\r\n - uses: actions/setup-node@v4\r\n with: {node-version: '\\${{ matrix.node-version }}', cache: 'npm'}\r\n - run: npm ci\r\n - run: npm run test:coverage\r\n - uses: codecov/codecov-action@v4\r\n if: matrix.node-version == '20'\r\n\r\n build:\r\n runs-on: ubuntu-latest\r\n needs: [lint, test]\r\n steps:\r\n - uses: actions/checkout@v4\r\n - uses: actions/setup-node@v4\r\n with: {node-version: '20', cache: 'npm'}\r\n - run: npm ci\r\n - run: npm run build\r\n`,\r\n },\r\n {\r\n id: 'cd-workflow',\r\n name: 'CD Workflow',\r\n description: 'GitHub Actions CD: deploy to production with health check',\r\n defaultPath: '.github/workflows/cd.yml',\r\n category: 'github-actions',\r\n content: `name: CD\r\non:\r\n push:\r\n branches: [main]\r\n\r\njobs:\r\n deploy:\r\n runs-on: ubuntu-latest\r\n # needs: [ci] # Uncomment if using a reusable CI workflow\r\n environment: production\r\n steps:\r\n - uses: actions/checkout@v4\r\n - uses: actions/setup-node@v4\r\n with: {node-version: '20', cache: 'npm'}\r\n - run: npm ci\r\n - run: npm run build\r\n - name: Deploy\r\n env:\r\n DEPLOY_TOKEN: \\${{ secrets.DEPLOY_TOKEN }}\r\n DEPLOY_URL: \\${{ secrets.DEPLOY_URL }}\r\n run: |\r\n # Add your deployment command here\r\n # e.g.: npx railway deploy, vercel deploy --prod, etc.\r\n echo \"Deploy to production\"\r\n - name: Health check\r\n run: |\r\n sleep 30\r\n curl -f \\${{ secrets.APP_URL }}/health || exit 1\r\n`,\r\n },\r\n {\r\n id: 'security-scan',\r\n name: 'Security Scan',\r\n description: 'GitHub Actions security: npm audit + CodeQL analysis',\r\n defaultPath: '.github/workflows/security.yml',\r\n category: 'github-actions',\r\n content: `name: Security\r\non:\r\n push:\r\n branches: [main]\r\n schedule:\r\n - cron: '0 0 * * 1' # Weekly on Monday\r\n\r\njobs:\r\n audit:\r\n runs-on: ubuntu-latest\r\n steps:\r\n - uses: actions/checkout@v4\r\n - uses: actions/setup-node@v4\r\n with: {node-version: '20', cache: 'npm'}\r\n - run: npm ci\r\n - run: npm audit --audit-level=high\r\n\r\n codeql:\r\n runs-on: ubuntu-latest\r\n permissions:\r\n actions: read\r\n contents: read\r\n security-events: write\r\n steps:\r\n - uses: actions/checkout@v4\r\n - uses: github/codeql-action/init@v3\r\n with: {languages: javascript}\r\n - uses: github/codeql-action/autobuild@v3\r\n - uses: github/codeql-action/analyze@v3\r\n`,\r\n },\r\n {\r\n id: 'dependabot-config',\r\n name: 'Dependabot Config',\r\n description: 'Dependabot config: npm + GitHub Actions weekly updates',\r\n defaultPath: '.github/dependabot.yml',\r\n category: 'github-actions',\r\n content: `version: 2\r\nupdates:\r\n - package-ecosystem: npm\r\n directory: \"/\"\r\n schedule:\r\n interval: weekly\r\n day: monday\r\n groups:\r\n minor-and-patch:\r\n update-types: [\"minor\", \"patch\"]\r\n ignore:\r\n - dependency-name: \"*\"\r\n update-types: [\"version-update:semver-major\"]\r\n\r\n - package-ecosystem: github-actions\r\n directory: \"/\"\r\n schedule:\r\n interval: weekly\r\n day: monday\r\n`,\r\n },\r\n {\r\n id: 'release-workflow',\r\n name: 'Release Workflow',\r\n description: 'GitHub Actions release: GitHub Release + Docker image to GHCR',\r\n defaultPath: '.github/workflows/release.yml',\r\n category: 'github-actions',\r\n content: `name: Release\r\non:\r\n push:\r\n tags: ['v*']\r\n\r\njobs:\r\n release:\r\n runs-on: ubuntu-latest\r\n permissions:\r\n contents: write\r\n packages: write\r\n steps:\r\n - uses: actions/checkout@v4\r\n - name: Create GitHub Release\r\n uses: softprops/action-gh-release@v2\r\n with:\r\n generate_release_notes: true\r\n - name: Log in to GHCR\r\n uses: docker/login-action@v3\r\n with:\r\n registry: ghcr.io\r\n username: \\${{ github.actor }}\r\n password: \\${{ secrets.GITHUB_TOKEN }}\r\n - name: Build and push Docker image\r\n uses: docker/build-push-action@v5\r\n with:\r\n context: .\r\n push: true\r\n tags: |\r\n ghcr.io/\\${{ github.repository }}:\\${{ github.ref_name }}\r\n ghcr.io/\\${{ github.repository }}:latest\r\n`,\r\n },\r\n {\r\n id: 'codeowners',\r\n name: 'CODEOWNERS',\r\n description: 'GitHub CODEOWNERS file for review assignments',\r\n defaultPath: '.github/CODEOWNERS',\r\n category: 'github',\r\n content: `# IMPORTANT: Replace {{PROJECT_NAME}} below with your GitHub organization name\r\n# (org name and project name are often different)\r\n# Format: @org-name/team-slug\r\n\r\n# Global owners - review all changes\r\n* @{{PROJECT_NAME}}/maintainers\r\n\r\n# Documentation\r\ndocs/ @{{PROJECT_NAME}}/docs\r\n*.md @{{PROJECT_NAME}}/docs\r\n\r\n# CI/CD config\r\n.github/ @{{PROJECT_NAME}}/devops\r\nDockerfile @{{PROJECT_NAME}}/devops\r\ndocker-compose*.yml @{{PROJECT_NAME}}/devops\r\n\r\n# Security-sensitive files\r\n**/auth/ @{{PROJECT_NAME}}/security\r\n**/security/ @{{PROJECT_NAME}}/security\r\nSECURITY.md @{{PROJECT_NAME}}/security\r\n`,\r\n },\r\n]\r\n","import type { Template } from './types'\r\n\r\nexport const CODE_QUALITY_TEMPLATES: Template[] = [\r\n {\r\n id: 'eslintrc',\r\n name: 'ESLint Config',\r\n description: 'ESLint config with TypeScript strict rules',\r\n defaultPath: '.eslintrc.json',\r\n category: 'code-quality',\r\n content: `{\r\n \"extends\": [\r\n \"eslint:recommended\",\r\n \"plugin:@typescript-eslint/recommended\",\r\n \"plugin:@typescript-eslint/recommended-requiring-type-checking\"\r\n ],\r\n \"parser\": \"@typescript-eslint/parser\",\r\n \"parserOptions\": {\r\n \"project\": true,\r\n \"tsconfigRootDir\": \".\"\r\n },\r\n \"plugins\": [\"@typescript-eslint\"],\r\n \"rules\": {\r\n \"no-console\": \"warn\",\r\n \"no-unused-vars\": \"off\",\r\n \"@typescript-eslint/no-unused-vars\": [\"error\", { \"argsIgnorePattern\": \"^_\" }],\r\n \"@typescript-eslint/no-explicit-any\": \"warn\",\r\n \"@typescript-eslint/consistent-type-imports\": \"error\",\r\n \"@typescript-eslint/no-floating-promises\": \"error\"\r\n },\r\n \"ignorePatterns\": [\"dist/\", \"build/\", \"node_modules/\", \"*.config.js\"]\r\n}\r\n`,\r\n },\r\n {\r\n id: 'prettierrc',\r\n name: 'Prettier Config',\r\n description: 'Prettier formatting config',\r\n defaultPath: '.prettierrc',\r\n category: 'code-quality',\r\n content: `{\r\n \"semi\": false,\r\n \"singleQuote\": true,\r\n \"trailingComma\": \"es5\",\r\n \"printWidth\": 100,\r\n \"tabWidth\": 2,\r\n \"useTabs\": false,\r\n \"bracketSpacing\": true,\r\n \"arrowParens\": \"avoid\"\r\n}\r\n`,\r\n },\r\n {\r\n id: 'tsconfig-strict',\r\n name: 'tsconfig (strict)',\r\n description: 'TypeScript config with strict settings for Node/ESM',\r\n defaultPath: 'tsconfig.json',\r\n category: 'code-quality',\r\n content: `{\r\n \"compilerOptions\": {\r\n \"target\": \"ES2022\",\r\n \"lib\": [\"ES2022\"],\r\n \"module\": \"NodeNext\",\r\n \"moduleResolution\": \"NodeNext\",\r\n \"outDir\": \"dist\",\r\n \"rootDir\": \"src\",\r\n \"strict\": true,\r\n \"noUncheckedIndexedAccess\": true,\r\n \"exactOptionalPropertyTypes\": true,\r\n \"noImplicitReturns\": true,\r\n \"noFallthroughCasesInSwitch\": true,\r\n \"noImplicitOverride\": true,\r\n \"esModuleInterop\": true,\r\n \"skipLibCheck\": true,\r\n \"forceConsistentCasingInFileNames\": true,\r\n \"paths\": {\r\n \"@/*\": [\"./src/*\"]\r\n }\r\n },\r\n \"include\": [\"src/**/*\"],\r\n \"exclude\": [\"node_modules\", \"dist\"]\r\n}\r\n`,\r\n },\r\n {\r\n id: 'editorconfig',\r\n name: '.editorconfig',\r\n description: 'EditorConfig for consistent editor settings',\r\n defaultPath: '.editorconfig',\r\n category: 'code-quality',\r\n content: `root = true\r\n\r\n[*]\r\nindent_style = space\r\nindent_size = 2\r\nend_of_line = lf\r\ncharset = utf-8\r\ntrim_trailing_whitespace = true\r\ninsert_final_newline = true\r\n\r\n[*.md]\r\ntrim_trailing_whitespace = false\r\n\r\n[Makefile]\r\nindent_style = tab\r\n\r\n[*.{yml,yaml}]\r\nindent_size = 2\r\n`,\r\n },\r\n {\r\n id: 'lint-staged',\r\n name: 'lint-staged Config',\r\n description: 'lint-staged config for pre-commit formatting and linting',\r\n defaultPath: '.lintstagedrc.json',\r\n category: 'code-quality',\r\n content: `{\r\n \"*.{ts,tsx}\": [\"eslint --fix\", \"prettier --write\"],\r\n \"*.{js,jsx}\": [\"eslint --fix\", \"prettier --write\"],\r\n \"*.{json,md,yml,yaml}\": [\"prettier --write\"],\r\n \"*.{css,scss}\": [\"prettier --write\"]\r\n}\r\n`,\r\n },\r\n {\r\n id: 'commitlint',\r\n name: 'commitlint Config',\r\n description: 'commitlint config enforcing Conventional Commits',\r\n defaultPath: 'commitlint.config.js',\r\n category: 'code-quality',\r\n content: `module.exports = {\r\n extends: ['@commitlint/config-conventional'],\r\n rules: {\r\n 'type-enum': [2, 'always', [\r\n 'feat', 'fix', 'docs', 'style', 'refactor',\r\n 'perf', 'test', 'chore', 'revert', 'ci', 'build'\r\n ]],\r\n 'scope-case': [2, 'always', 'lower-case'],\r\n 'subject-case': [2, 'always', 'lower-case'],\r\n 'subject-max-length': [2, 'always', 100],\r\n 'body-max-line-length': [2, 'always', 200],\r\n },\r\n}\r\n`,\r\n },\r\n {\r\n id: 'husky-setup',\r\n name: 'Husky Setup Doc',\r\n description: 'Documentation for Husky git hooks setup',\r\n defaultPath: '.husky/README.md',\r\n category: 'code-quality',\r\n content: `# Husky Git Hooks\r\n\r\nThis project uses [Husky](https://typicode.github.io/husky/) to enforce code quality at commit time.\r\n\r\n## Setup\r\n\r\nAfter cloning and running \\`npm install\\`, Husky hooks are auto-installed via the \\`prepare\\` script.\r\n\r\nIf hooks aren't running, install manually:\r\n\r\n\\`\\`\\`\r\nnpx husky install\r\n\\`\\`\\`\r\n\r\n## Hooks\r\n\r\n| Hook | Command | Purpose |\r\n|------|---------|---------|\r\n| pre-commit | \\`lint-staged\\` | Lint and format staged files |\r\n| commit-msg | \\`commitlint\\` | Validate commit message format |\r\n| pre-push | \\`npm test\\` | Run tests before pushing |\r\n\r\n## Skip hooks (emergencies only)\r\n\r\n\\`\\`\\`\r\ngit commit --no-verify -m \"emergency fix\"\r\n\\`\\`\\`\r\n\r\nUse sparingly. CI will still catch failures.\r\n`,\r\n },\r\n {\r\n id: 'vscode-settings',\r\n name: 'VS Code Settings',\r\n description: 'VS Code workspace settings for the project',\r\n defaultPath: '.vscode/settings.json',\r\n category: 'code-quality',\r\n content: `{\r\n \"editor.formatOnSave\": true,\r\n \"editor.defaultFormatter\": \"esbenp.prettier-vscode\",\r\n \"editor.codeActionsOnSave\": {\r\n \"source.fixAll.eslint\": \"explicit\",\r\n \"source.organizeImports\": \"explicit\"\r\n },\r\n \"typescript.preferences.importModuleSpecifier\": \"non-relative\",\r\n \"typescript.tsdk\": \"node_modules/typescript/lib\",\r\n \"files.eol\": \"\\\\n\",\r\n \"files.trimTrailingWhitespace\": true,\r\n \"files.insertFinalNewline\": true,\r\n \"[markdown]\": {\r\n \"editor.formatOnSave\": false\r\n }\r\n}\r\n`,\r\n },\r\n {\r\n id: 'vscode-extensions',\r\n name: 'VS Code Extensions',\r\n description: 'Recommended VS Code extensions for the project',\r\n defaultPath: '.vscode/extensions.json',\r\n category: 'code-quality',\r\n content: `{\r\n \"recommendations\": [\r\n \"esbenp.prettier-vscode\",\r\n \"dbaeumer.vscode-eslint\",\r\n \"ms-vscode.vscode-typescript-next\",\r\n \"bradlc.vscode-tailwindcss\",\r\n \"eamodio.gitlens\",\r\n \"usernamehw.errorlens\",\r\n \"streetsidesoftware.code-spell-checker\",\r\n \"github.copilot\",\r\n \"christian-kohler.path-intellisense\"\r\n ]\r\n}\r\n`,\r\n },\r\n]\r\n","import type { Template } from './types'\r\n\r\nexport const MONITORING_TEMPLATES: Template[] = [\r\n {\r\n id: 'health-check-doc',\r\n name: 'Health Check Guide',\r\n description: 'Health check endpoint documentation with Kubernetes config',\r\n defaultPath: 'docs/health-checks.md',\r\n category: 'monitoring',\r\n content: `# Health Checks — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Overview\r\n\r\nHealth check endpoints allow load balancers and orchestrators to verify service status.\r\n\r\n## Endpoints\r\n\r\n| Endpoint | Purpose | Auth required |\r\n|----------|---------|---------------|\r\n| \\`GET /health\\` | Liveness probe — is the process running? | No |\r\n| \\`GET /health/ready\\` | Readiness probe — can the service handle traffic? | No |\r\n| \\`GET /health/detailed\\` | Full dependency status | Yes (internal) |\r\n\r\n## Liveness Check (\\`GET /health\\`)\r\n\r\nReturns 200 if the process is alive, regardless of dependency status.\r\n\r\n\\`\\`\\`json\r\n{\"status\": \"ok\", \"uptime\": 1234}\r\n\\`\\`\\`\r\n\r\n## Readiness Check (\\`GET /health/ready\\`)\r\n\r\nReturns 200 only if all critical dependencies are healthy.\r\n\r\n\\`\\`\\`json\r\n{\r\n \"status\": \"ready\",\r\n \"dependencies\": {\r\n \"database\": \"ok\",\r\n \"redis\": \"ok\",\r\n \"external_api\": \"degraded\"\r\n }\r\n}\r\n\\`\\`\\`\r\n\r\nReturns 503 if any critical dependency is unhealthy.\r\n\r\n## Kubernetes Configuration\r\n\r\n\\`\\`\\`yaml\r\nlivenessProbe:\r\n httpGet:\r\n path: /health\r\n port: 3000\r\n initialDelaySeconds: 30\r\n periodSeconds: 10\r\nreadinessProbe:\r\n httpGet:\r\n path: /health/ready\r\n port: 3000\r\n initialDelaySeconds: 5\r\n periodSeconds: 5\r\n\\`\\`\\`\r\n`,\r\n },\r\n {\r\n id: 'slo-doc',\r\n name: 'SLO/SLA Document',\r\n description: 'Service Level Objectives with error budget and burn rate alerts',\r\n defaultPath: 'docs/slo.md',\r\n category: 'monitoring',\r\n content: `# Service Level Objectives — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n**Owner:** Platform Team\r\n\r\n## Availability SLO\r\n\r\n| Metric | Target | Error Budget (30 days) |\r\n|--------|--------|----------------------|\r\n| Availability | 99.9% | 43.8 minutes |\r\n| Success rate | 99.5% | — |\r\n\r\n## Latency SLO\r\n\r\n| Percentile | Target |\r\n|------------|--------|\r\n| p50 | < 100ms |\r\n| p95 | < 500ms |\r\n| p99 | < 1000ms |\r\n\r\n## Error Budget Policy\r\n\r\n| Burn Rate | Alert Window | Severity | Action |\r\n|-----------|-------------|----------|--------|\r\n| > 14.4x | 1 hour | Critical | Page on-call immediately |\r\n| > 6x | 6 hours | High | Page on-call |\r\n| > 3x | 24 hours | Medium | Ticket + monitor |\r\n| > 1x | 72 hours | Low | Review in standup |\r\n\r\n## Consequences of Exhausting Error Budget\r\n\r\n- Feature freeze until budget replenishes\r\n- Reliability sprint prioritized over new features\r\n- Post-mortem required for any budget burn > 50%\r\n\r\n## Measurement\r\n\r\n- Uptime tracked via synthetic monitoring (Pingdom / UptimeRobot)\r\n- Latency tracked via APM (Datadog / New Relic)\r\n- Error rate from application logs + Sentry\r\n`,\r\n },\r\n {\r\n id: 'incident-runbook',\r\n name: 'Incident Runbook',\r\n description: 'Incident response runbook with severity levels and escalation',\r\n defaultPath: 'docs/incident-runbook.md',\r\n category: 'monitoring',\r\n content: `# Incident Runbook — {{PROJECT_NAME}}\r\n\r\n**Last updated:** {{DATE}}\r\n\r\n## Severity Levels\r\n\r\n| Severity | Definition | Response Time | Example |\r\n|----------|-----------|---------------|---------|\r\n| P0 | Complete outage, all users affected | 15 minutes | Site down |\r\n| P1 | Major feature broken, >50% users affected | 30 minutes | Login broken |\r\n| P2 | Significant degradation, subset of users | 2 hours | Slow API |\r\n| P3 | Minor issue, workaround available | Next business day | Cosmetic bug |\r\n\r\n## Roles\r\n\r\n| Role | Responsibility |\r\n|------|---------------|\r\n| Incident Commander (IC) | Owns resolution, coordinates team, communicates status |\r\n| Tech Lead | Diagnoses root cause, coordinates fixes |\r\n| Comms Lead | Updates status page, notifies stakeholders |\r\n\r\n## Response Process\r\n\r\n### 0–15 minutes (Detect & Triage)\r\n1. Confirm the incident (not a false alarm)\r\n2. Assign Incident Commander\r\n3. Create incident Slack channel: \\`#incident-YYYYMMDD-description\\`\r\n4. Set severity level\r\n5. Start incident timeline document\r\n\r\n### 15–60 minutes (Investigate)\r\n1. Identify scope: what's broken, who's affected\r\n2. Check recent deployments (\\`git log\\`, deployment history)\r\n3. Review error rates and logs\r\n4. Consider rollback if recent deploy is suspected\r\n\r\n### Mitigation\r\n1. Apply fix or rollback\r\n2. Monitor for improvement\r\n3. Update status page\r\n4. Notify stakeholders\r\n\r\n## Post-Incident Checklist\r\n\r\n- [ ] Incident resolved and verified\r\n- [ ] Status page updated to \"resolved\"\r\n- [ ] Stakeholders notified\r\n- [ ] Timeline documented\r\n- [ ] Post-mortem scheduled (P0/P1) or ticket created (P2)\r\n- [ ] Action items created in project tracker\r\n`,\r\n },\r\n {\r\n id: 'postmortem',\r\n name: 'Postmortem Template',\r\n description: 'Blameless postmortem template with five-whys and action items',\r\n defaultPath: 'docs/postmortem-template.md',\r\n category: 'monitoring',\r\n content: `# Postmortem: [Title]\r\n\r\n**Date:** {{DATE}}\r\n**Severity:** P[0-3]\r\n**Duration:**\r\n**Author:**\r\n**Reviewers:**\r\n\r\n> This postmortem follows a blameless culture. We focus on systems and processes, not individuals.\r\n\r\n## Summary\r\n\r\n<!-- 2-3 sentence summary: what happened, why it matters, what we're doing about it -->\r\n\r\n## Impact\r\n\r\n- **Users affected:**\r\n- **Duration:**\r\n- **Revenue impact:**\r\n- **Data loss:**\r\n\r\n## Timeline\r\n\r\n| Time (UTC) | Event |\r\n|------------|-------|\r\n| 00:00 | Monitoring alert fired |\r\n| 00:05 | On-call engineer paged |\r\n| 00:15 | Incident confirmed, IC assigned |\r\n| 00:30 | Root cause identified |\r\n| 01:00 | Fix deployed |\r\n| 01:15 | Incident resolved |\r\n\r\n## Root Cause Analysis (Five Whys)\r\n\r\n**Problem:** [Describe the issue]\r\n\r\n1. **Why?** [First cause]\r\n2. **Why?** [Second cause]\r\n3. **Why?** [Third cause]\r\n4. **Why?** [Fourth cause]\r\n5. **Why?** [Root cause]\r\n\r\n## What Went Well\r\n\r\n-\r\n-\r\n\r\n## What Could Have Gone Better\r\n\r\n-\r\n-\r\n\r\n## Action Items\r\n\r\n| Action | Owner | Due Date | Priority |\r\n|--------|-------|----------|----------|\r\n| | | | P[0-3] |\r\n\r\n## Lessons Learned\r\n\r\n<!-- Key takeaways to share with the wider team -->\r\n`,\r\n },\r\n]\r\n","import { AI_AGENT_TEMPLATES } from './ai-agent'\r\nimport { GITHUB_TEMPLATES } from './github'\r\nimport { PROCESS_TEMPLATES } from './process'\r\nimport { TECHNICAL_TEMPLATES } from './technical'\r\nimport { INFRASTRUCTURE_TEMPLATES } from './infrastructure'\r\nimport { GITHUB_ACTIONS_TEMPLATES } from './github-actions'\r\nimport { CODE_QUALITY_TEMPLATES } from './code-quality'\r\nimport { MONITORING_TEMPLATES } from './monitoring'\r\n\r\nexport * from './types'\r\n\r\nexport const TEMPLATES = [\r\n ...AI_AGENT_TEMPLATES,\r\n ...GITHUB_TEMPLATES,\r\n ...PROCESS_TEMPLATES,\r\n ...TECHNICAL_TEMPLATES,\r\n ...INFRASTRUCTURE_TEMPLATES,\r\n ...GITHUB_ACTIONS_TEMPLATES,\r\n ...CODE_QUALITY_TEMPLATES,\r\n ...MONITORING_TEMPLATES,\r\n]\r\n\r\n// dedent removes common leading whitespace from template literals\r\nexport function dedent(str: string): string {\r\n const lines = str.split('\\n')\r\n // Skip empty leading lines\r\n const nonEmpty = lines.filter(l => l.trim().length > 0)\r\n if (nonEmpty.length === 0) return str\r\n const indent = Math.min(...nonEmpty.map(l => l.match(/^(\\s*)/)?.[1].length ?? 0))\r\n if (indent === 0) return str\r\n return lines.map(l => l.slice(indent)).join('\\n')\r\n}\r\n"],"names":[],"mappings":"uCAgBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAf,AAAe,CAAf,AAAe,CAAf,AAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAbF,CAamB,AAblB,CAakB,AAbjB,CAaiB,CAAA,CAAA,CAAA,CAAA,CAAA,AAbjB,CAAQ,AAaS,AAbjB,CAaiB,AAbP,AAAF,CAamB,CAbd,AAac,eAbd,CAAA,AAAiB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA,4DCgBpF,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAS,CAAT,AAAS,CAAA,AAAT,CAAS,AAAT,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAhBI,CAClC,AAewC,CAfvC,AAeuC,CAfvC,AAeuC,CAfvC,AAeuC,CAfvC,AAeuC,CAfvC,AAeuC,CAfvC,AAeuC,CAfvC,AAeuC,CAfvC,AAAQ,AAe+B,CAf/B,AAAE,AAe6B,CAAU,CAAA,AAfpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAoB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACjD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAU,CAAE,CAAA,CAAA,CAAA,AAAI,IAAA,CAAA,AAAM,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAA,CAAG,AAAH,CAAG,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,AAAK,QAAA,CAAU,CAAA,CAC1D,sDCsBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAW,CAAA,CAAA,CAAX,AAAW,CAAX,AAAW,CAAX,AAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAzBE,CAClC,AAwB6C,CAAA,AAvB3C,CAuB2C,AAvB3C,CAAA,AAuB2C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAvB3C,AAuB2C,CAtB3C,AAsB2C,CArBzC,AAqByC,CArBzC,AAqBmD,CAAA,AArBhD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAET,CACA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA2B,AAA3B,CAA2B,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,AAAR,CAAQ,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,AAAX,CAAW,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACxC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACzC,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAY,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC3C,wDCbO,IAAM,EAAiC,CAC5C,CACE,GAAI,YACJ,KAAM,YACN,YAAa,wCACb,YAAa,YACb,SAAU,WACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDd,CAAC,AACC,EACA,CACE,GAAI,YACJ,KAAM,YACN,YAAa,+CACb,YAAa,YACb,SAAU,WACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBd,CAAC,AACC,EACA,CACE,GAAI,YACJ,KAAM,YACN,YAAa,uCACb,YAAa,YACb,SAAU,WACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8Bd,CAAC,AACC,EACA,CACE,GAAI,cACJ,KAAM,eACN,YAAa,qCACb,YAAa,eACb,SAAU,WACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBd,CAAC,AACC,EACA,CACE,GAAI,gBACJ,KAAM,iBACN,YAAa,uCACb,YAAa,iBACb,SAAU,WACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;AAoBd,CAAC,AACC,EACA,CACE,GAAI,uBACJ,KAAM,uBACN,YAAa,qCACb,YAAa,kCACb,SAAU,WACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBd,CAAC,AACC,EACD,CC9NY,EAA+B,CAC1C,CACE,GAAI,eACJ,KAAM,kBACN,YAAa,0BACb,YAAa,kBACb,SAAU,SACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Fd,CAAC,AACC,EACA,CACE,GAAI,WACJ,KAAM,cACN,YAAa,8CACb,YAAa,cACb,SAAU,SACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsEd,CAAC,AACC,EACA,CACE,GAAI,cACJ,KAAM,cACN,YAAa,wBACb,YAAa,mCACb,SAAU,SACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCd,CAAC,AACC,EACA,CACE,GAAI,aACJ,KAAM,sBACN,YAAa,iCACb,YAAa,uCACb,SAAU,SACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCd,CACE,AADD,EAEC,CACE,GAAI,kBACJ,KAAM,2BACN,YAAa,qCACb,YAAa,4CACb,SAAU,SACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Bd,CAAC,AACC,EACD,CC7SY,EAAgC,CAC3C,CACE,GAAI,YACJ,KAAM,eACN,YAAa,0BACb,YAAa,eACb,SAAU,UACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyBd,CAAC,AACC,EACA,CACE,GAAI,aACJ,KAAM,gBACN,YAAa,kCACb,YAAa,gBACb,SAAU,UACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Dd,CAAC,AACC,EACA,CACE,GAAI,UACJ,KAAM,aACN,YAAa,6BACb,YAAa,aACb,SAAU,UACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Hd,CAAC,AACC,EACA,CACE,GAAI,WACJ,KAAM,WACN,YAAa,gCACb,YAAa,mBACb,SAAU,UACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyBd,CAAC,AACC,EACD,CC7QK,EAAQ,IAAI,OAAO,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CKSvC,EAAY,IACpB,KACA,KACA,ELTH,CACE,GAAI,MACJ,KAAM,MACN,YAAa,gCACb,YAAa,cACb,SAAU,YACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8Cd,CACE,AADD,EAEC,CACE,GAAI,wBACJ,KAAM,wBACN,YAAa,0BACb,YAAa,gCACb,SAAU,YACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEd,CAAC,AACC,EACA,CACE,GAAI,gBACJ,KAAM,gBACN,YAAa,0BACb,YAAa,wBACb,SAAU,YACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwId,CAAC,AACC,EACA,CACE,GAAI,UACJ,KAAM,UACN,YAAa,sBACb,YAAa,kBACb,SAAU,YACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4Id,CAAC,AACC,EACA,CACE,GAAI,MACJ,KAAM,wBACN,YAAa,+BACb,YAAa,yCACb,SAAU,YACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Bd,CAAC,AACC,EACA,CACE,GAAI,aACJ,KAAM,mBACN,YAAa,6BACb,YAAa,qBACb,SAAU,YACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwHd,CAAC,AACC,EACA,CACE,GAAI,WACJ,KAAM,gBACN,YAAa,uCACb,YAAa,mBACb,SAAU,YACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8Dd,CAAC,AACC,EACA,CACE,GAAI,UACJ,KAAM,eACN,YAAa,yCACb,YAAa,qBACb,SAAU,YACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Gd,CAAC,AACC,EACA,CACE,GAAI,gBACJ,KAAM,gBACN,YAAa,yBACb,YAAa,CAAC,cAAc,EAAE,EAAM,GAAG,CAAC,CACxC,SAAU,YACV,QAAS,CAAC,kBAAkB,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;AAqBxC,CAAC,AACC,EACA,CACE,GAAI,QACJ,KAAM,iBACN,YAAa,sBACb,YAAa,mBACb,SAAU,YACV,QAAS,gBACX,ECxyBA,CACE,GAAI,aACJ,KAAM,aACN,YAAa,6CACb,YAAa,aACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4Bd,CAAC,AACC,EACA,CACE,GAAI,iBACJ,KAAM,qBACN,YAAa,+CACb,YAAa,qBACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCd,CAAC,AACC,EACA,CACE,GAAI,eACJ,KAAM,gBACN,YAAa,kCACb,YAAa,gBACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;AAkBd,CAAC,AACC,EACA,CACE,GAAI,WACJ,KAAM,WACN,YAAa,gDACb,YAAa,WACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4Bd,CAAC,AACC,EACA,CACE,GAAI,cACJ,KAAM,eACN,YAAa,2CACb,YAAa,eACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Bd,CAAC,AACC,EACA,CACE,GAAI,aACJ,KAAM,aACN,YAAa,iEACb,YAAa,mBACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Cd,CAAC,AACC,ECtOA,CACE,GAAI,cACJ,KAAM,cACN,YAAa,4DACb,YAAa,2BACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCd,CAAC,AACC,EACA,CACE,GAAI,cACJ,KAAM,cACN,YAAa,4DACb,YAAa,2BACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4Bd,CAAC,AACC,EACA,CACE,GAAI,gBACJ,KAAM,gBACN,YAAa,uDACb,YAAa,iCACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Bd,CAAC,AACC,EACA,CACE,GAAI,oBACJ,KAAM,oBACN,YAAa,yDACb,YAAa,yBACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;AAmBd,CAAC,AACC,EACA,CACE,GAAI,mBACJ,KAAM,mBACN,YAAa,gEACb,YAAa,gCACb,SAAU,iBACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+Bd,CAAC,AACC,EACA,CACE,GAAI,aACJ,KAAM,aACN,YAAa,gDACb,YAAa,qBACb,SAAU,SACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;AAoBd,CAAC,AACC,ECvNA,CACE,GAAI,WACJ,KAAM,gBACN,YAAa,6CACb,YAAa,iBACb,SAAU,eACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBd,CAAC,AACC,EACA,CACE,GAAI,aACJ,KAAM,kBACN,YAAa,6BACb,YAAa,cACb,SAAU,eACV,QAAS,CAAC;;;;;;;;;;AAUd,CAAC,AACC,EACA,CACE,GAAI,kBACJ,KAAM,oBACN,YAAa,sDACb,YAAa,gBACb,SAAU,eACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBd,CAAC,AACC,EACA,CACE,GAAI,eACJ,KAAM,gBACN,YAAa,8CACb,YAAa,gBACb,SAAU,eACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;AAkBd,CAAC,AACC,EACA,CACE,GAAI,cACJ,KAAM,qBACN,YAAa,2DACb,YAAa,qBACb,SAAU,eACV,QAAS,CAAC;;;;;;AAMd,CAAC,AACC,EACA,CACE,GAAI,aACJ,KAAM,oBACN,YAAa,mDACb,YAAa,uBACb,SAAU,eACV,QAAS,CAAC;;;;;;;;;;;;;AAad,CAAC,AACC,EACA,CACE,GAAI,cACJ,KAAM,kBACN,YAAa,0CACb,YAAa,mBACb,SAAU,eACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Bd,CAAC,AACC,EACA,CACE,GAAI,kBACJ,KAAM,mBACN,YAAa,6CACb,YAAa,wBACb,SAAU,eACV,QAAS,CAAC;;;;;;;;;;;;;;;;AAgBd,CAAC,AACC,EACA,CACE,GAAI,oBACJ,KAAM,qBACN,YAAa,iDACb,YAAa,0BACb,SAAU,eACV,QAAS,CAAC;;;;;;;;;;;;;AAad,CAAC,AACC,EC9NA,CACE,GAAI,mBACJ,KAAM,qBACN,YAAa,6DACb,YAAa,wBACb,SAAU,aACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDd,CAAC,AACC,EACA,CACE,GAAI,UACJ,KAAM,mBACN,YAAa,kEACb,YAAa,cACb,SAAU,aACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCd,CAAC,AACC,EACA,CACE,GAAI,mBACJ,KAAM,mBACN,YAAa,gEACb,YAAa,2BACb,SAAU,aACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDd,CAAC,AACC,EACA,CACE,GAAI,aACJ,KAAM,sBACN,YAAa,gEACb,YAAa,8BACb,SAAU,aACV,QAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Dd,CAAC,AACC,EC9ND","ignoreList":[0,1,2]}
@@ -1,7 +0,0 @@
1
- module.exports=[59653,a=>{"use strict";function b(a,c,{checkForDefaultPrevented:d=!0}={}){return function(b){if(a?.(b),!1===d||!b.defaultPrevented)return c?.(b)}}a.s(["composeEventHandlers",()=>b])},95819,a=>{"use strict";var b=a.i(60940),c=a.i(9637);function d(a,d){let e=b.createContext(d),f=a=>{let{children:d,...f}=a,g=b.useMemo(()=>f,Object.values(f));return(0,c.jsx)(e.Provider,{value:g,children:d})};return f.displayName=a+"Provider",[f,function(c){let f=b.useContext(e);if(f)return f;if(void 0!==d)return d;throw Error(`\`${c}\` must be used within \`${a}\``)}]}function e(a,d=[]){let f=[],g=()=>{let c=f.map(a=>b.createContext(a));return function(d){let e=d?.[a]||c;return b.useMemo(()=>({[`__scope${a}`]:{...d,[a]:e}}),[d,e])}};return g.scopeName=a,[function(d,e){let g=b.createContext(e),h=f.length;f=[...f,e];let i=d=>{let{scope:e,children:f,...i}=d,j=e?.[a]?.[h]||g,k=b.useMemo(()=>i,Object.values(i));return(0,c.jsx)(j.Provider,{value:k,children:f})};return i.displayName=d+"Provider",[i,function(c,f){let i=f?.[a]?.[h]||g,j=b.useContext(i);if(j)return j;if(void 0!==e)return e;throw Error(`\`${c}\` must be used within \`${d}\``)}]},function(...a){let c=a[0];if(1===a.length)return c;let d=()=>{let d=a.map(a=>({useScope:a(),scopeName:a.scopeName}));return function(a){let e=d.reduce((b,{useScope:c,scopeName:d})=>{let e=c(a)[`__scope${d}`];return{...b,...e}},{});return b.useMemo(()=>({[`__scope${c.scopeName}`]:e}),[e])}};return d.scopeName=c.scopeName,d}(g,...d)]}a.s(["createContext",()=>d,"createContextScope",()=>e])},18867,a=>{"use strict";var b=a.i(60940),c=globalThis?.document?b.useLayoutEffect:()=>{};a.s(["useLayoutEffect",()=>c])},47427,a=>{"use strict";var b=a.i(60940),c=a.i(18867);b[" useEffectEvent ".trim().toString()],b[" useInsertionEffect ".trim().toString()];var d=b[" useInsertionEffect ".trim().toString()]||c.useLayoutEffect;function e({prop:a,defaultProp:c,onChange:e=()=>{},caller:f}){let[g,h,i]=function({defaultProp:a,onChange:c}){let[e,f]=b.useState(a),g=b.useRef(e),h=b.useRef(c);return d(()=>{h.current=c},[c]),b.useEffect(()=>{g.current!==e&&(h.current?.(e),g.current=e)},[e,g]),[e,f,h]}({defaultProp:c,onChange:e}),j=void 0!==a,k=j?a:g;{let c=b.useRef(void 0!==a);b.useEffect(()=>{let a=c.current;if(a!==j){let b=j?"controlled":"uncontrolled";console.warn(`${f} is changing from ${a?"controlled":"uncontrolled"} to ${b}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}c.current=j},[j,f])}return[k,b.useCallback(b=>{if(j){let c="function"==typeof b?b(a):b;c!==a&&i.current?.(c)}else h(b)},[j,a,h,i])]}Symbol("RADIX:SYNC_STATE"),a.s(["useControllableState",()=>e],47427)},30419,92274,a=>{"use strict";var b=a.i(60940),c=a.i(36439),d=a.i(80303),e=a.i(9637);function f(a){var c;let f,g=(c=a,(f=b.forwardRef((a,c)=>{let{children:e,...f}=a;if(b.isValidElement(e)){var g;let a,h,i=(g=e,(h=(a=Object.getOwnPropertyDescriptor(g.props,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?g.ref:(h=(a=Object.getOwnPropertyDescriptor(g,"ref")?.get)&&"isReactWarning"in a&&a.isReactWarning)?g.props.ref:g.props.ref||g.ref),j=function(a,b){let c={...b};for(let d in b){let e=a[d],f=b[d];/^on[A-Z]/.test(d)?e&&f?c[d]=(...a)=>{let b=f(...a);return e(...a),b}:e&&(c[d]=e):"style"===d?c[d]={...e,...f}:"className"===d&&(c[d]=[e,f].filter(Boolean).join(" "))}return{...a,...c}}(f,e.props);return e.type!==b.Fragment&&(j.ref=c?(0,d.composeRefs)(c,i):i),b.cloneElement(e,j)}return b.Children.count(e)>1?b.Children.only(null):null})).displayName=`${c}.SlotClone`,f),h=b.forwardRef((a,c)=>{let{children:d,...f}=a,h=b.Children.toArray(d),j=h.find(i);if(j){let a=j.props.children,d=h.map(c=>c!==j?c:b.Children.count(a)>1?b.Children.only(null):b.isValidElement(a)?a.props.children:null);return(0,e.jsx)(g,{...f,ref:c,children:b.isValidElement(a)?b.cloneElement(a,void 0,d):null})}return(0,e.jsx)(g,{...f,ref:c,children:d})});return h.displayName=`${a}.Slot`,h}var g=Symbol("radix.slottable");function h(a){let b=({children:a})=>(0,e.jsx)(e.Fragment,{children:a});return b.displayName=`${a}.Slottable`,b.__radixId=g,b}function i(a){return b.isValidElement(a)&&"function"==typeof a.type&&"__radixId"in a.type&&a.type.__radixId===g}a.s(["createSlot",()=>f,"createSlottable",()=>h],92274);var j=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,c)=>{let d=f(`Primitive.${c}`),g=b.forwardRef((a,b)=>{let{asChild:f,...g}=a;return(0,e.jsx)(f?d:c,{...g,ref:b})});return g.displayName=`Primitive.${c}`,{...a,[c]:g}},{});function k(a,b){a&&c.flushSync(()=>a.dispatchEvent(b))}a.s(["Primitive",()=>j,"dispatchDiscreteCustomEvent",()=>k],30419)},69471,a=>{"use strict";var b=a.i(60940),c=a.i(95819),d=a.i(80303),e=a.i(92274),f=a.i(9637);function g(a){let g=a+"CollectionProvider",[h,i]=(0,c.createContextScope)(g),[j,k]=h(g,{collectionRef:{current:null},itemMap:new Map}),l=a=>{let{scope:c,children:d}=a,e=b.default.useRef(null),g=b.default.useRef(new Map).current;return(0,f.jsx)(j,{scope:c,itemMap:g,collectionRef:e,children:d})};l.displayName=g;let m=a+"CollectionSlot",n=(0,e.createSlot)(m),o=b.default.forwardRef((a,b)=>{let{scope:c,children:e}=a,g=k(m,c),h=(0,d.useComposedRefs)(b,g.collectionRef);return(0,f.jsx)(n,{ref:h,children:e})});o.displayName=m;let p=a+"CollectionItemSlot",q="data-radix-collection-item",r=(0,e.createSlot)(p),s=b.default.forwardRef((a,c)=>{let{scope:e,children:g,...h}=a,i=b.default.useRef(null),j=(0,d.useComposedRefs)(c,i),l=k(p,e);return b.default.useEffect(()=>(l.itemMap.set(i,{ref:i,...h}),()=>void l.itemMap.delete(i))),(0,f.jsx)(r,{...{[q]:""},ref:j,children:g})});return s.displayName=p,[{Provider:l,Slot:o,ItemSlot:s},function(c){let d=k(a+"CollectionConsumer",c);return b.default.useCallback(()=>{let a=d.collectionRef.current;if(!a)return[];let b=Array.from(a.querySelectorAll(`[${q}]`));return Array.from(d.itemMap.values()).sort((a,c)=>b.indexOf(a.ref.current)-b.indexOf(c.ref.current))},[d.collectionRef,d.itemMap])},i]}var h=new WeakMap;function i(a,b){var c,d;let e,f,g;if("at"in Array.prototype)return Array.prototype.at.call(a,b);let h=(c=a,d=b,e=c.length,(g=(f=j(d))>=0?f:e+f)<0||g>=e?-1:g);return -1===h?void 0:a[h]}function j(a){return a!=a||0===a?0:Math.trunc(a)}(class a extends Map{#a;constructor(a){super(a),this.#a=[...super.keys()],h.set(this,!0)}set(a,b){return h.get(this)&&(this.has(a)?this.#a[this.#a.indexOf(a)]=a:this.#a.push(a)),super.set(a,b),this}insert(a,b,c){let d,e=this.has(b),f=this.#a.length,g=j(a),h=g>=0?g:f+g,i=h<0||h>=f?-1:h;if(i===this.size||e&&i===this.size-1||-1===i)return this.set(b,c),this;let k=this.size+ +!e;g<0&&h++;let l=[...this.#a],m=!1;for(let a=h;a<k;a++)if(h===a){let f=l[a];l[a]===b&&(f=l[a+1]),e&&this.delete(b),d=this.get(f),this.set(b,c)}else{m||l[a-1]!==b||(m=!0);let c=l[m?a:a-1],e=d;d=this.get(c),this.delete(c),this.set(c,e)}return this}with(b,c,d){let e=new a(this);return e.insert(b,c,d),e}before(a){let b=this.#a.indexOf(a)-1;if(!(b<0))return this.entryAt(b)}setBefore(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d,b,c)}after(a){let b=this.#a.indexOf(a);if(-1!==(b=-1===b||b===this.size-1?-1:b+1))return this.entryAt(b)}setAfter(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d+1,b,c)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#a=[],super.clear()}delete(a){let b=super.delete(a);return b&&this.#a.splice(this.#a.indexOf(a),1),b}deleteAt(a){let b=this.keyAt(a);return void 0!==b&&this.delete(b)}at(a){let b=i(this.#a,a);if(void 0!==b)return this.get(b)}entryAt(a){let b=i(this.#a,a);if(void 0!==b)return[b,this.get(b)]}indexOf(a){return this.#a.indexOf(a)}keyAt(a){return i(this.#a,a)}from(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.at(d)}keyFrom(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.keyAt(d)}find(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return d;c++}}findIndex(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return c;c++}return -1}filter(b,c){let d=[],e=0;for(let a of this)Reflect.apply(b,c,[a,e,this])&&d.push(a),e++;return new a(d)}map(b,c){let d=[],e=0;for(let a of this)d.push([a[0],Reflect.apply(b,c,[a,e,this])]),e++;return new a(d)}reduce(...a){let[b,c]=a,d=0,e=c??this.at(0);for(let c of this)e=0===d&&1===a.length?c:Reflect.apply(b,this,[e,c,d,this]),d++;return e}reduceRight(...a){let[b,c]=a,d=c??this.at(-1);for(let c=this.size-1;c>=0;c--){let e=this.at(c);d=c===this.size-1&&1===a.length?e:Reflect.apply(b,this,[d,e,c,this])}return d}toSorted(b){return new a([...this.entries()].sort(b))}toReversed(){let b=new a;for(let a=this.size-1;a>=0;a--){let c=this.keyAt(a),d=this.get(c);b.set(c,d)}return b}toSpliced(...b){let c=[...this.entries()];return c.splice(...b),new a(c)}slice(b,c){let d=new a,e=this.size-1;if(void 0===b)return d;b<0&&(b+=this.size),void 0!==c&&c>0&&(e=c-1);for(let a=b;a<=e;a++){let b=this.keyAt(a),c=this.get(b);d.set(b,c)}return d}every(a,b){let c=0;for(let d of this){if(!Reflect.apply(a,b,[d,c,this]))return!1;c++}return!0}some(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return!0;c++}return!1}}),a.s(["createCollection",()=>g])},60380,a=>{"use strict";var b=a.i(60940);a.i(9637);var c=b.createContext(void 0);function d(a){let d=b.useContext(c);return a||d||"ltr"}a.s(["useDirection",()=>d])},8725,a=>{"use strict";var b=a.i(60940);function c(a){let c=b.useRef(a);return b.useEffect(()=>{c.current=a}),b.useMemo(()=>(...a)=>c.current?.(...a),[])}a.s(["useCallbackRef",()=>c])},49350,98340,39990,a=>{"use strict";let b;var c,d=a.i(60940),e=a.i(59653),f=a.i(30419),g=a.i(80303),h=a.i(8725),i=a.i(9637),j="dismissableLayer.update",k=d.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),l=d.forwardRef((a,b)=>{let{disableOutsidePointerEvents:l=!1,onEscapeKeyDown:o,onPointerDownOutside:p,onFocusOutside:q,onInteractOutside:r,onDismiss:s,...t}=a,u=d.useContext(k),[v,w]=d.useState(null),x=v?.ownerDocument??globalThis?.document,[,y]=d.useState({}),z=(0,g.useComposedRefs)(b,a=>w(a)),A=Array.from(u.layers),[B]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),C=A.indexOf(B),D=v?A.indexOf(v):-1,E=u.layersWithOutsidePointerEventsDisabled.size>0,F=D>=C,G=function(a,b=globalThis?.document){let c=(0,h.useCallbackRef)(a),e=d.useRef(!1),f=d.useRef(()=>{});return d.useEffect(()=>{let a=a=>{if(a.target&&!e.current){let d=function(){n("dismissableLayer.pointerDownOutside",c,e,{discrete:!0})},e={originalEvent:a};"touch"===a.pointerType?(b.removeEventListener("click",f.current),f.current=d,b.addEventListener("click",f.current,{once:!0})):d()}else b.removeEventListener("click",f.current);e.current=!1},d=window.setTimeout(()=>{b.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(d),b.removeEventListener("pointerdown",a),b.removeEventListener("click",f.current)}},[b,c]),{onPointerDownCapture:()=>e.current=!0}}(a=>{let b=a.target,c=[...u.branches].some(a=>a.contains(b));F&&!c&&(p?.(a),r?.(a),a.defaultPrevented||s?.())},x),H=function(a,b=globalThis?.document){let c=(0,h.useCallbackRef)(a),e=d.useRef(!1);return d.useEffect(()=>{let a=a=>{a.target&&!e.current&&n("dismissableLayer.focusOutside",c,{originalEvent:a},{discrete:!1})};return b.addEventListener("focusin",a),()=>b.removeEventListener("focusin",a)},[b,c]),{onFocusCapture:()=>e.current=!0,onBlurCapture:()=>e.current=!1}}(a=>{let b=a.target;![...u.branches].some(a=>a.contains(b))&&(q?.(a),r?.(a),a.defaultPrevented||s?.())},x);return!function(a,b=globalThis?.document){let c=(0,h.useCallbackRef)(a);d.useEffect(()=>{let a=a=>{"Escape"===a.key&&c(a)};return b.addEventListener("keydown",a,{capture:!0}),()=>b.removeEventListener("keydown",a,{capture:!0})},[c,b])}(a=>{D===u.layers.size-1&&(o?.(a),!a.defaultPrevented&&s&&(a.preventDefault(),s()))},x),d.useEffect(()=>{if(v)return l&&(0===u.layersWithOutsidePointerEventsDisabled.size&&(c=x.body.style.pointerEvents,x.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(v)),u.layers.add(v),m(),()=>{l&&1===u.layersWithOutsidePointerEventsDisabled.size&&(x.body.style.pointerEvents=c)}},[v,x,l,u]),d.useEffect(()=>()=>{v&&(u.layers.delete(v),u.layersWithOutsidePointerEventsDisabled.delete(v),m())},[v,u]),d.useEffect(()=>{let a=()=>y({});return document.addEventListener(j,a),()=>document.removeEventListener(j,a)},[]),(0,i.jsx)(f.Primitive.div,{...t,ref:z,style:{pointerEvents:E?F?"auto":"none":void 0,...a.style},onFocusCapture:(0,e.composeEventHandlers)(a.onFocusCapture,H.onFocusCapture),onBlurCapture:(0,e.composeEventHandlers)(a.onBlurCapture,H.onBlurCapture),onPointerDownCapture:(0,e.composeEventHandlers)(a.onPointerDownCapture,G.onPointerDownCapture)})});function m(){let a=new CustomEvent(j);document.dispatchEvent(a)}function n(a,b,c,{discrete:d}){let e=c.originalEvent.target,g=new CustomEvent(a,{bubbles:!1,cancelable:!0,detail:c});b&&e.addEventListener(a,b,{once:!0}),d?(0,f.dispatchDiscreteCustomEvent)(e,g):e.dispatchEvent(g)}l.displayName="DismissableLayer",d.forwardRef((a,b)=>{let c=d.useContext(k),e=d.useRef(null),h=(0,g.useComposedRefs)(b,e);return d.useEffect(()=>{let a=e.current;if(a)return c.branches.add(a),()=>{c.branches.delete(a)}},[c.branches]),(0,i.jsx)(f.Primitive.div,{...a,ref:h})}).displayName="DismissableLayerBranch",a.s(["DismissableLayer",()=>l],49350);var o=0;function p(){d.useEffect(()=>{let a=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",a[0]??q()),document.body.insertAdjacentElement("beforeend",a[1]??q()),o++,()=>{1===o&&document.querySelectorAll("[data-radix-focus-guard]").forEach(a=>a.remove()),o--}},[])}function q(){let a=document.createElement("span");return a.setAttribute("data-radix-focus-guard",""),a.tabIndex=0,a.style.outline="none",a.style.opacity="0",a.style.position="fixed",a.style.pointerEvents="none",a}a.s(["useFocusGuards",()=>p],98340);var r="focusScope.autoFocusOnMount",s="focusScope.autoFocusOnUnmount",t={bubbles:!1,cancelable:!0},u=d.forwardRef((a,b)=>{let{loop:c=!1,trapped:e=!1,onMountAutoFocus:j,onUnmountAutoFocus:k,...l}=a,[m,n]=d.useState(null),o=(0,h.useCallbackRef)(j),p=(0,h.useCallbackRef)(k),q=d.useRef(null),u=(0,g.useComposedRefs)(b,a=>n(a)),z=d.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;d.useEffect(()=>{if(e){let a=function(a){if(z.paused||!m)return;let b=a.target;m.contains(b)?q.current=b:x(q.current,{select:!0})},b=function(a){if(z.paused||!m)return;let b=a.relatedTarget;null!==b&&(m.contains(b)||x(q.current,{select:!0}))};document.addEventListener("focusin",a),document.addEventListener("focusout",b);let c=new MutationObserver(function(a){if(document.activeElement===document.body)for(let b of a)b.removedNodes.length>0&&x(m)});return m&&c.observe(m,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",a),document.removeEventListener("focusout",b),c.disconnect()}}},[e,m,z.paused]),d.useEffect(()=>{if(m){y.add(z);let a=document.activeElement;if(!m.contains(a)){let b=new CustomEvent(r,t);m.addEventListener(r,o),m.dispatchEvent(b),b.defaultPrevented||(function(a,{select:b=!1}={}){let c=document.activeElement;for(let d of a)if(x(d,{select:b}),document.activeElement!==c)return}(v(m).filter(a=>"A"!==a.tagName),{select:!0}),document.activeElement===a&&x(m))}return()=>{m.removeEventListener(r,o),setTimeout(()=>{let b=new CustomEvent(s,t);m.addEventListener(s,p),m.dispatchEvent(b),b.defaultPrevented||x(a??document.body,{select:!0}),m.removeEventListener(s,p),y.remove(z)},0)}}},[m,o,p,z]);let A=d.useCallback(a=>{if(!c&&!e||z.paused)return;let b="Tab"===a.key&&!a.altKey&&!a.ctrlKey&&!a.metaKey,d=document.activeElement;if(b&&d){var f;let b,e=a.currentTarget,[g,h]=[w(b=v(f=e),f),w(b.reverse(),f)];g&&h?a.shiftKey||d!==h?a.shiftKey&&d===g&&(a.preventDefault(),c&&x(h,{select:!0})):(a.preventDefault(),c&&x(g,{select:!0})):d===e&&a.preventDefault()}},[c,e,z.paused]);return(0,i.jsx)(f.Primitive.div,{tabIndex:-1,...l,ref:u,onKeyDown:A})});function v(a){let b=[],c=document.createTreeWalker(a,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{let b="INPUT"===a.tagName&&"hidden"===a.type;return a.disabled||a.hidden||b?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;c.nextNode();)b.push(c.currentNode);return b}function w(a,b){for(let c of a)if(!function(a,{upTo:b}){if("hidden"===getComputedStyle(a).visibility)return!0;for(;a&&(void 0===b||a!==b);){if("none"===getComputedStyle(a).display)return!0;a=a.parentElement}return!1}(c,{upTo:b}))return c}function x(a,{select:b=!1}={}){if(a&&a.focus){var c;let d=document.activeElement;a.focus({preventScroll:!0}),a!==d&&(c=a)instanceof HTMLInputElement&&"select"in c&&b&&a.select()}}u.displayName="FocusScope";var y=(b=[],{add(a){let c=b[0];a!==c&&c?.pause(),(b=z(b,a)).unshift(a)},remove(a){b=z(b,a),b[0]?.resume()}});function z(a,b){let c=[...a],d=c.indexOf(b);return -1!==d&&c.splice(d,1),c}a.s(["FocusScope",()=>u],39990)},55277,a=>{"use strict";var b=a.i(60940),c=a.i(18867),d=b[" useId ".trim().toString()]||(()=>void 0),e=0;function f(a){let[f,g]=b.useState(d());return(0,c.useLayoutEffect)(()=>{a||g(a=>a??String(e++))},[a]),a||(f?`radix-${f}`:"")}a.s(["useId",()=>f])},29724,50608,a=>{"use strict";var b=a.i(60940);let c=["top","right","bottom","left"],d=Math.min,e=Math.max,f=Math.round,g=Math.floor,h=a=>({x:a,y:a}),i={left:"right",right:"left",bottom:"top",top:"bottom"},j={start:"end",end:"start"};function k(a,b){return"function"==typeof a?a(b):a}function l(a){return a.split("-")[0]}function m(a){return a.split("-")[1]}function n(a){return"x"===a?"y":"x"}function o(a){return"y"===a?"height":"width"}let p=new Set(["top","bottom"]);function q(a){return p.has(l(a))?"y":"x"}function r(a){return a.replace(/start|end/g,a=>j[a])}let s=["left","right"],t=["right","left"],u=["top","bottom"],v=["bottom","top"];function w(a){return a.replace(/left|right|bottom|top/g,a=>i[a])}function x(a){return"number"!=typeof a?{top:0,right:0,bottom:0,left:0,...a}:{top:a,right:a,bottom:a,left:a}}function y(a){let{x:b,y:c,width:d,height:e}=a;return{width:d,height:e,top:c,left:b,right:b+d,bottom:c+e,x:b,y:c}}function z(a,b,c){let d,{reference:e,floating:f}=a,g=q(b),h=n(q(b)),i=o(h),j=l(b),k="y"===g,p=e.x+e.width/2-f.width/2,r=e.y+e.height/2-f.height/2,s=e[i]/2-f[i]/2;switch(j){case"top":d={x:p,y:e.y-f.height};break;case"bottom":d={x:p,y:e.y+e.height};break;case"right":d={x:e.x+e.width,y:r};break;case"left":d={x:e.x-f.width,y:r};break;default:d={x:e.x,y:e.y}}switch(m(b)){case"start":d[h]-=s*(c&&k?-1:1);break;case"end":d[h]+=s*(c&&k?-1:1)}return d}async function A(a,b){var c;void 0===b&&(b={});let{x:d,y:e,platform:f,rects:g,elements:h,strategy:i}=a,{boundary:j="clippingAncestors",rootBoundary:l="viewport",elementContext:m="floating",altBoundary:n=!1,padding:o=0}=k(b,a),p=x(o),q=h[n?"floating"===m?"reference":"floating":m],r=y(await f.getClippingRect({element:null==(c=await (null==f.isElement?void 0:f.isElement(q)))||c?q:q.contextElement||await (null==f.getDocumentElement?void 0:f.getDocumentElement(h.floating)),boundary:j,rootBoundary:l,strategy:i})),s="floating"===m?{x:d,y:e,width:g.floating.width,height:g.floating.height}:g.reference,t=await (null==f.getOffsetParent?void 0:f.getOffsetParent(h.floating)),u=await (null==f.isElement?void 0:f.isElement(t))&&await (null==f.getScale?void 0:f.getScale(t))||{x:1,y:1},v=y(f.convertOffsetParentRelativeRectToViewportRelativeRect?await f.convertOffsetParentRelativeRectToViewportRelativeRect({elements:h,rect:s,offsetParent:t,strategy:i}):s);return{top:(r.top-v.top+p.top)/u.y,bottom:(v.bottom-r.bottom+p.bottom)/u.y,left:(r.left-v.left+p.left)/u.x,right:(v.right-r.right+p.right)/u.x}}let B=async(a,b,c)=>{let{placement:d="bottom",strategy:e="absolute",middleware:f=[],platform:g}=c,h=f.filter(Boolean),i=await (null==g.isRTL?void 0:g.isRTL(b)),j=await g.getElementRects({reference:a,floating:b,strategy:e}),{x:k,y:l}=z(j,d,i),m=d,n={},o=0;for(let c=0;c<h.length;c++){var p;let{name:f,fn:q}=h[c],{x:r,y:s,data:t,reset:u}=await q({x:k,y:l,initialPlacement:d,placement:m,strategy:e,middlewareData:n,rects:j,platform:{...g,detectOverflow:null!=(p=g.detectOverflow)?p:A},elements:{reference:a,floating:b}});k=null!=r?r:k,l=null!=s?s:l,n={...n,[f]:{...n[f],...t}},u&&o<=50&&(o++,"object"==typeof u&&(u.placement&&(m=u.placement),u.rects&&(j=!0===u.rects?await g.getElementRects({reference:a,floating:b,strategy:e}):u.rects),{x:k,y:l}=z(j,m,i)),c=-1)}return{x:k,y:l,placement:m,strategy:e,middlewareData:n}};function C(a,b){return{top:a.top-b.height,right:a.right-b.width,bottom:a.bottom-b.height,left:a.left-b.width}}function D(a){return c.some(b=>a[b]>=0)}let E=new Set(["left","top"]);async function F(a,b){let{placement:c,platform:d,elements:e}=a,f=await (null==d.isRTL?void 0:d.isRTL(e.floating)),g=l(c),h=m(c),i="y"===q(c),j=E.has(g)?-1:1,n=f&&i?-1:1,o=k(b,a),{mainAxis:p,crossAxis:r,alignmentAxis:s}="number"==typeof o?{mainAxis:o,crossAxis:0,alignmentAxis:null}:{mainAxis:o.mainAxis||0,crossAxis:o.crossAxis||0,alignmentAxis:o.alignmentAxis};return h&&"number"==typeof s&&(r="end"===h?-1*s:s),i?{x:r*n,y:p*j}:{x:p*j,y:r*n}}function G(a){return function(a){return!1}(a)?(a.nodeName||"").toLowerCase():"#document"}function H(a){var b;return(null==a||null==(b=a.ownerDocument)?void 0:b.defaultView)||window}function I(a){var b;return null==(b=(function(a){return!1}(a)?a.ownerDocument:a.document)||window.document)?void 0:b.documentElement}function J(a){return!1}let K=new Set(["inline","contents"]);function L(a){let{overflow:b,overflowX:c,overflowY:d,display:e}=W(a);return/auto|scroll|overlay|hidden|clip/.test(b+d+c)&&!K.has(e)}let M=new Set(["table","td","th"]),N=[":popover-open",":modal"];function O(a){return N.some(b=>{try{return a.matches(b)}catch(a){return!1}})}let P=["transform","translate","scale","rotate","perspective"],Q=["transform","translate","scale","rotate","perspective","filter"],R=["paint","layout","strict","content"];function S(a){let b=T(),c=a;return P.some(a=>!!c[a]&&"none"!==c[a])||!!c.containerType&&"normal"!==c.containerType||!b&&!!c.backdropFilter&&"none"!==c.backdropFilter||!b&&!!c.filter&&"none"!==c.filter||Q.some(a=>(c.willChange||"").includes(a))||R.some(a=>(c.contain||"").includes(a))}function T(){return!("u"<typeof CSS)&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let U=new Set(["html","body","#document"]);function V(a){return U.has(G(a))}function W(a){return H(a).getComputedStyle(a)}function X(a){return{scrollLeft:a.scrollX,scrollTop:a.scrollY}}function Y(a){if("html"===G(a))return a;let b=a.assignedSlot||a.parentNode||!1||I(a);return b}function Z(a,b,c){var d;void 0===b&&(b=[]),void 0===c&&(c=!0);let e=function a(b){let c=Y(b);return V(c)?b.ownerDocument?b.ownerDocument.body:b.body:a(c)}(a),f=e===(null==(d=a.ownerDocument)?void 0:d.body),g=H(e);if(f){let a=$(g);return b.concat(g,g.visualViewport||[],L(e)?e:[],a&&c?Z(a):[])}return b.concat(e,Z(e,[],c))}function $(a){return a.parent&&Object.getPrototypeOf(a.parent)?a.frameElement:null}function _(a){let b=W(a),c=parseFloat(b.width)||0,d=parseFloat(b.height)||0,e=!1,g=e?a.offsetWidth:c,h=e?a.offsetHeight:d,i=f(c)!==g||f(d)!==h;return i&&(c=g,d=h),{width:c,height:d,$:i}}function aa(a){return 0,a.contextElement}function ab(a){let b=aa(a);1;return h(1)}let ac=h(0);function ad(a){let b=H(a);return T()&&b.visualViewport?{x:b.visualViewport.offsetLeft,y:b.visualViewport.offsetTop}:ac}function ae(a,b,c,d){var e;void 0===b&&(b=!1),void 0===c&&(c=!1);let f=a.getBoundingClientRect(),g=aa(a),i=h(1);b&&(d||(i=ab(a)));let j=(void 0===(e=c)&&(e=!1),d&&(!e||d===H(g))&&e)?ad(g):h(0),k=(f.left+j.x)/i.x,l=(f.top+j.y)/i.y,m=f.width/i.x,n=f.height/i.y;if(g){let a=H(g),b=d,c=a,e=$(c);for(;e&&d&&b!==c;){let a=ab(e),b=e.getBoundingClientRect(),d=W(e),f=b.left+(e.clientLeft+parseFloat(d.paddingLeft))*a.x,g=b.top+(e.clientTop+parseFloat(d.paddingTop))*a.y;k*=a.x,l*=a.y,m*=a.x,n*=a.y,k+=f,l+=g,e=$(c=H(e))}}return y({width:m,height:n,x:k,y:l})}function af(a,b){let c=X(a).scrollLeft;return b?b.left+c:ae(I(a)).left+c}function ag(a,b){let c=a.getBoundingClientRect();return{x:c.left+b.scrollLeft-af(a,c),y:c.top+b.scrollTop}}function ah(a,b,c){var d;let f;if("viewport"===b)f=function(a,b){let c=H(a),d=I(a),e=c.visualViewport,f=d.clientWidth,g=d.clientHeight,h=0,i=0;if(e){f=e.width,g=e.height;let a=T();(!a||a&&"fixed"===b)&&(h=e.offsetLeft,i=e.offsetTop)}let j=af(d);if(j<=0){let a=d.ownerDocument,b=a.body,c=getComputedStyle(b),e="CSS1Compat"===a.compatMode&&parseFloat(c.marginLeft)+parseFloat(c.marginRight)||0,g=Math.abs(d.clientWidth-b.clientWidth-e);g<=25&&(f-=g)}else j<=25&&(f+=j);return{width:f,height:g,x:h,y:i}}(a,c);else if("document"===b){let b,c,g,h,i,j,k;d=I(a),b=I(d),c=X(d),g=d.ownerDocument.body,h=e(b.scrollWidth,b.clientWidth,g.scrollWidth,g.clientWidth),i=e(b.scrollHeight,b.clientHeight,g.scrollHeight,g.clientHeight),j=-c.scrollLeft+af(d),k=-c.scrollTop,"rtl"===W(g).direction&&(j+=e(b.clientWidth,g.clientWidth)-h),f={width:h,height:i,x:j,y:k}}else{1;{let c=ad(a);f={x:b.x-c.x,y:b.y-c.y,width:b.width,height:b.height}}}return y(f)}function ai(a){return"static"===W(a).position}function aj(a,b){1;return null}function ak(a,b){var c;let d=H(a);if(O(a))return d;1;{let b=Y(a);for(;b&&!V(b);){0;b=Y(b)}return d}}let al=async function(a){let b=this.getOffsetParent||ak,c=this.getDimensions,d=await c(a.floating);return{reference:function(a,b,c){var d;let e=(d=0,!1),f=I(b),g="fixed"===c,i=ae(a,!0,g,b),j={scrollLeft:0,scrollTop:0},k=h(0);if(e||!e&&!g)if(("body"!==G(b)||L(f))&&(j=X(b)),e){let a=ae(b,!0,g,b);k.x=a.x+b.clientLeft,k.y=a.y+b.clientTop}else f&&(k.x=af(f));g&&!e&&f&&(k.x=af(f));let l=!f||e||g?h(0):ag(f,j);return{x:i.left+j.scrollLeft-k.x-l.x,y:i.top+j.scrollTop-k.y-l.y,width:i.width,height:i.height}}(a.reference,await b(a.floating),a.strategy),floating:{x:0,y:0,width:d.width,height:d.height}}},am={convertOffsetParentRelativeRectToViewportRelativeRect:function(a){var b,c;let{elements:d,rect:e,offsetParent:f,strategy:g}=a,i="fixed"===g,j=I(f),k=!!d&&O(d.floating);if(f===j||k&&i)return e;let l={scrollLeft:0,scrollTop:0},m=h(1),n=h(0),o=(b=0,!1);(o||!o&&!i)&&(("body"!==G(f)||L(j))&&(l=X(f)),c=0,0);let p=!j||o||i?h(0):ag(j,l);return{width:e.width*m.x,height:e.height*m.y,x:e.x*m.x-l.scrollLeft*m.x+n.x+p.x,y:e.y*m.y-l.scrollTop*m.y+n.y+p.y}},getDocumentElement:I,getClippingRect:function(a){let{element:b,boundary:c,rootBoundary:f,strategy:g}=a,h=[..."clippingAncestors"===c?O(b)?[]:function(a,b){var c;let d=b.get(a);if(d)return d;let e=Z(a,[],!1).filter(a=>{var b;return b=0,!1}),f="fixed"===W(a).position,g=f?Y(a):a;return c=0,b.set(a,e),e}(b,this._c):[].concat(c),f],i=h[0],j=h.reduce((a,c)=>{let f=ah(b,c,g);return a.top=e(f.top,a.top),a.right=d(f.right,a.right),a.bottom=d(f.bottom,a.bottom),a.left=e(f.left,a.left),a},ah(b,i,g));return{width:j.right-j.left,height:j.bottom-j.top,x:j.left,y:j.top}},getOffsetParent:ak,getElementRects:al,getClientRects:function(a){return Array.from(a.getClientRects())},getDimensions:function(a){let{width:b,height:c}=_(a);return{width:b,height:c}},getScale:ab,isElement:J,isRTL:function(a){return"rtl"===W(a).direction}};function an(a,b){return a.x===b.x&&a.y===b.y&&a.width===b.width&&a.height===b.height}let ao=a=>({name:"arrow",options:a,async fn(b){let{x:c,y:f,placement:g,rects:h,platform:i,elements:j,middlewareData:l}=b,{element:p,padding:r=0}=k(a,b)||{};if(null==p)return{};let s=x(r),t={x:c,y:f},u=n(q(g)),v=o(u),w=await i.getDimensions(p),y="y"===u,z=y?"clientHeight":"clientWidth",A=h.reference[v]+h.reference[u]-t[u]-h.floating[v],B=t[u]-h.reference[u],C=await (null==i.getOffsetParent?void 0:i.getOffsetParent(p)),D=C?C[z]:0;D&&await (null==i.isElement?void 0:i.isElement(C))||(D=j.floating[z]||h.floating[v]);let E=D/2-w[v]/2-1,F=d(s[y?"top":"left"],E),G=d(s[y?"bottom":"right"],E),H=D-w[v]-G,I=D/2-w[v]/2+(A/2-B/2),J=e(F,d(I,H)),K=!l.arrow&&null!=m(g)&&I!==J&&h.reference[v]/2-(I<F?F:G)-w[v]/2<0,L=K?I<F?I-F:I-H:0;return{[u]:t[u]+L,data:{[u]:J,centerOffset:I-J-L,...K&&{alignmentOffset:L}},reset:K}}});var ap=a.i(36439),aq="u">typeof document?b.useLayoutEffect:function(){};function ar(a,b){let c,d,e;if(a===b)return!0;if(typeof a!=typeof b)return!1;if("function"==typeof a&&a.toString()===b.toString())return!0;if(a&&b&&"object"==typeof a){if(Array.isArray(a)){if((c=a.length)!==b.length)return!1;for(d=c;0!=d--;)if(!ar(a[d],b[d]))return!1;return!0}if((c=(e=Object.keys(a)).length)!==Object.keys(b).length)return!1;for(d=c;0!=d--;)if(!({}).hasOwnProperty.call(b,e[d]))return!1;for(d=c;0!=d--;){let c=e[d];if(("_owner"!==c||!a.$$typeof)&&!ar(a[c],b[c]))return!1}return!0}return a!=a&&b!=b}function as(a,b){let c=1;return Math.round(b*c)/c}function at(a){let c=b.useRef(a);return aq(()=>{c.current=a}),c}var au=a.i(30419),av=a.i(9637),aw=b.forwardRef((a,b)=>{let{children:c,width:d=10,height:e=5,...f}=a;return(0,av.jsx)(au.Primitive.svg,{...f,ref:b,width:d,height:e,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:a.asChild?c:(0,av.jsx)("polygon",{points:"0,0 30,0 15,10"})})});aw.displayName="Arrow";var ax=a.i(80303),ay=a.i(95819),az=a.i(8725),aA=a.i(18867),aB="Popper",[aC,aD]=(0,ay.createContextScope)(aB),[aE,aF]=aC(aB),aG=a=>{let{__scopePopper:c,children:d}=a,[e,f]=b.useState(null);return(0,av.jsx)(aE,{scope:c,anchor:e,onAnchorChange:f,children:d})};aG.displayName=aB;var aH="PopperAnchor",aI=b.forwardRef((a,c)=>{let{__scopePopper:d,virtualRef:e,...f}=a,g=aF(aH,d),h=b.useRef(null),i=(0,ax.useComposedRefs)(c,h),j=b.useRef(null);return b.useEffect(()=>{let a=j.current;j.current=e?.current||h.current,a!==j.current&&g.onAnchorChange(j.current)}),e?null:(0,av.jsx)(au.Primitive.div,{...f,ref:i})});aI.displayName=aH;var aJ="PopperContent",[aK,aL]=aC(aJ),aM=b.forwardRef((a,c)=>{var f,h,i,j,p,x,y,z,A,G,H,J,K,L,M,N,O,P,Q,R,S;let{__scopePopper:T,side:U="bottom",sideOffset:V=0,align:W="center",alignOffset:X=0,arrowPadding:Y=0,avoidCollisions:$=!0,collisionBoundary:_=[],collisionPadding:ab=0,sticky:ac="partial",hideWhenDetached:ad=!1,updatePositionStrategy:af="optimized",onPlaced:ag,...ah}=a,ai=aF(aJ,T),[aj,ak]=b.useState(null),al=(0,ax.useComposedRefs)(c,a=>ak(a)),[aw,ay]=b.useState(null),aB=function(a){let[c,d]=b.useState(void 0);return(0,aA.useLayoutEffect)(()=>{if(a){d({width:a.offsetWidth,height:a.offsetHeight});let b=new ResizeObserver(b=>{let c,e;if(!Array.isArray(b)||!b.length)return;let f=b[0];if("borderBoxSize"in f){let a=f.borderBoxSize,b=Array.isArray(a)?a[0]:a;c=b.inlineSize,e=b.blockSize}else c=a.offsetWidth,e=a.offsetHeight;d({width:c,height:e})});return b.observe(a,{box:"border-box"}),()=>b.unobserve(a)}d(void 0)},[a]),c}(aw),aC=aB?.width??0,aD=aB?.height??0,aE="number"==typeof ab?ab:{top:0,right:0,bottom:0,left:0,...ab},aG=Array.isArray(_)?_:[_],aH=aG.length>0,aI={padding:aE,boundary:aG.filter(aQ),altBoundary:aH},{refs:aL,floatingStyles:aM,placement:aN,isPositioned:aO,middlewareData:aP}=function(a){void 0===a&&(a={});let{placement:c="bottom",strategy:d="absolute",middleware:e=[],platform:f,elements:{reference:g,floating:h}={},transform:i=!0,whileElementsMounted:j,open:k}=a,[l,m]=b.useState({x:0,y:0,strategy:d,placement:c,middlewareData:{},isPositioned:!1}),[n,o]=b.useState(e);ar(n,e)||o(e);let[p,q]=b.useState(null),[r,s]=b.useState(null),t=b.useCallback(a=>{a!==x.current&&(x.current=a,q(a))},[]),u=b.useCallback(a=>{a!==y.current&&(y.current=a,s(a))},[]),v=g||p,w=h||r,x=b.useRef(null),y=b.useRef(null),z=b.useRef(l),A=null!=j,C=at(j),D=at(f),E=at(k),F=b.useCallback(()=>{var a,b;let e,f,g;if(!x.current||!y.current)return;let h={placement:c,strategy:d,middleware:n};D.current&&(h.platform=D.current),(a=x.current,b=y.current,e=new Map,g={...(f={platform:am,...h}).platform,_c:e},B(a,b,{...f,platform:g})).then(a=>{let b={...a,isPositioned:!1!==E.current};G.current&&!ar(z.current,b)&&(z.current=b,ap.flushSync(()=>{m(b)}))})},[n,c,d,D,E]);aq(()=>{!1===k&&z.current.isPositioned&&(z.current.isPositioned=!1,m(a=>({...a,isPositioned:!1})))},[k]);let G=b.useRef(!1);aq(()=>(G.current=!0,()=>{G.current=!1}),[]),aq(()=>{if(v&&(x.current=v),w&&(y.current=w),v&&w){if(C.current)return C.current(v,w,F);F()}},[v,w,F,C,A]);let H=b.useMemo(()=>({reference:x,floating:y,setReference:t,setFloating:u}),[t,u]),I=b.useMemo(()=>({reference:v,floating:w}),[v,w]),J=b.useMemo(()=>{let a={position:d,left:0,top:0};if(!I.floating)return a;let b=as(I.floating,l.x),c=as(I.floating,l.y);if(i)return{...a,transform:"translate("+b+"px, "+c+"px)",...(I.floating,false)};return{position:d,left:b,top:c}},[d,i,I.floating,l.x,l.y]);return b.useMemo(()=>({...l,update:F,refs:H,elements:I,floatingStyles:J}),[l,F,H,I,J])}({strategy:"fixed",placement:U+("center"!==W?"-"+W:""),whileElementsMounted:(...a)=>(function(a,b,c,f){let h;void 0===f&&(f={});let{ancestorScroll:i=!0,ancestorResize:j=!0,elementResize:k="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:m=!1}=f,n=aa(a),o=i||j?[...n?Z(n):[],...Z(b)]:[];o.forEach(a=>{i&&a.addEventListener("scroll",c,{passive:!0}),j&&a.addEventListener("resize",c)});let p=n&&l?function(a,b){let c,f=null,h=I(a);function i(){var a;clearTimeout(c),null==(a=f)||a.disconnect(),f=null}return!function j(k,l){void 0===k&&(k=!1),void 0===l&&(l=1),i();let m=a.getBoundingClientRect(),{left:n,top:o,width:p,height:q}=m;if(k||b(),!p||!q)return;let r={rootMargin:-g(o)+"px "+-g(h.clientWidth-(n+p))+"px "+-g(h.clientHeight-(o+q))+"px "+-g(n)+"px",threshold:e(0,d(1,l))||1},s=!0;function t(b){let d=b[0].intersectionRatio;if(d!==l){if(!s)return j();d?j(!1,d):c=setTimeout(()=>{j(!1,1e-7)},1e3)}1!==d||an(m,a.getBoundingClientRect())||j(),s=!1}try{f=new IntersectionObserver(t,{...r,root:h.ownerDocument})}catch(a){f=new IntersectionObserver(t,r)}f.observe(a)}(!0),i}(n,c):null,q=-1,r=null;k&&(r=new ResizeObserver(a=>{let[d]=a;d&&d.target===n&&r&&(r.unobserve(b),cancelAnimationFrame(q),q=requestAnimationFrame(()=>{var a;null==(a=r)||a.observe(b)})),c()}),n&&!m&&r.observe(n),r.observe(b));let s=m?ae(a):null;return m&&function b(){let d=ae(a);s&&!an(s,d)&&c(),s=d,h=requestAnimationFrame(b)}(),c(),()=>{var a;o.forEach(a=>{i&&a.removeEventListener("scroll",c),j&&a.removeEventListener("resize",c)}),null==p||p(),null==(a=r)||a.disconnect(),r=null,m&&cancelAnimationFrame(h)}})(...a,{animationFrame:"always"===af}),elements:{reference:ai.anchor},middleware:[{...{name:"offset",options:i=f={mainAxis:V+aD,alignmentAxis:X},async fn(a){var b,c;let{x:d,y:e,placement:f,middlewareData:g}=a,h=await F(a,i);return f===(null==(b=g.offset)?void 0:b.placement)&&null!=(c=g.arrow)&&c.alignmentOffset?{}:{x:d+h.x,y:e+h.y,data:{...h,placement:f}}}},options:[f,h]},$&&{...{name:"shift",options:A=y={mainAxis:!0,crossAxis:!1,limiter:"partial"===ac?{...(void 0===(x=j)&&(x={}),{options:x,fn(a){let{x:b,y:c,placement:d,rects:e,middlewareData:f}=a,{offset:g=0,mainAxis:h=!0,crossAxis:i=!0}=k(x,a),j={x:b,y:c},m=q(d),o=n(m),p=j[o],r=j[m],s=k(g,a),t="number"==typeof s?{mainAxis:s,crossAxis:0}:{mainAxis:0,crossAxis:0,...s};if(h){let a="y"===o?"height":"width",b=e.reference[o]-e.floating[a]+t.mainAxis,c=e.reference[o]+e.reference[a]-t.mainAxis;p<b?p=b:p>c&&(p=c)}if(i){var u,v;let a="y"===o?"width":"height",b=E.has(l(d)),c=e.reference[m]-e.floating[a]+(b&&(null==(u=f.offset)?void 0:u[m])||0)+(b?0:t.crossAxis),g=e.reference[m]+e.reference[a]+(b?0:(null==(v=f.offset)?void 0:v[m])||0)-(b?t.crossAxis:0);r<c?r=c:r>g&&(r=g)}return{[o]:p,[m]:r}}}),options:[j,p]}:void 0,...aI},async fn(a){let{x:b,y:c,placement:f,platform:g}=a,{mainAxis:h=!0,crossAxis:i=!1,limiter:j={fn:a=>{let{x:b,y:c}=a;return{x:b,y:c}}},...m}=k(A,a),o={x:b,y:c},p=await g.detectOverflow(a,m),r=q(l(f)),s=n(r),t=o[s],u=o[r];if(h){let a="y"===s?"top":"left",b="y"===s?"bottom":"right",c=t+p[a],f=t-p[b];t=e(c,d(t,f))}if(i){let a="y"===r?"top":"left",b="y"===r?"bottom":"right",c=u+p[a],f=u-p[b];u=e(c,d(u,f))}let v=j.fn({...a,[s]:t,[r]:u});return{...v,data:{x:v.x-b,y:v.y-c,enabled:{[s]:h,[r]:i}}}}},options:[y,z]},$&&{...{name:"flip",options:J=G={...aI},async fn(a){var b,c,d,e,f,g,h,i;let j,p,x,{placement:y,middlewareData:z,rects:A,initialPlacement:B,platform:C,elements:D}=a,{mainAxis:E=!0,crossAxis:F=!0,fallbackPlacements:G,fallbackStrategy:H="bestFit",fallbackAxisSideDirection:I="none",flipAlignment:K=!0,...L}=k(J,a);if(null!=(b=z.arrow)&&b.alignmentOffset)return{};let M=l(y),N=q(B),O=l(B)===B,P=await (null==C.isRTL?void 0:C.isRTL(D.floating)),Q=G||(O||!K?[w(B)]:(j=w(B),[r(B),j,r(j)])),R="none"!==I;!G&&R&&Q.push(...(p=m(B),x=function(a,b,c){switch(a){case"top":case"bottom":if(c)return b?t:s;return b?s:t;case"left":case"right":return b?u:v;default:return[]}}(l(B),"start"===I,P),p&&(x=x.map(a=>a+"-"+p),K&&(x=x.concat(x.map(r)))),x));let S=[B,...Q],T=await C.detectOverflow(a,L),U=[],V=(null==(c=z.flip)?void 0:c.overflows)||[];if(E&&U.push(T[M]),F){let a,b,c,d,e=(g=y,h=A,void 0===(i=P)&&(i=!1),a=m(g),c=o(b=n(q(g))),d="x"===b?a===(i?"end":"start")?"right":"left":"start"===a?"bottom":"top",h.reference[c]>h.floating[c]&&(d=w(d)),[d,w(d)]);U.push(T[e[0]],T[e[1]])}if(V=[...V,{placement:y,overflows:U}],!U.every(a=>a<=0)){let a=((null==(d=z.flip)?void 0:d.index)||0)+1,b=S[a];if(b&&("alignment"!==F||N===q(b)||V.every(a=>q(a.placement)!==N||a.overflows[0]>0)))return{data:{index:a,overflows:V},reset:{placement:b}};let c=null==(e=V.filter(a=>a.overflows[0]<=0).sort((a,b)=>a.overflows[1]-b.overflows[1])[0])?void 0:e.placement;if(!c)switch(H){case"bestFit":{let a=null==(f=V.filter(a=>{if(R){let b=q(a.placement);return b===N||"y"===b}return!0}).map(a=>[a.placement,a.overflows.filter(a=>a>0).reduce((a,b)=>a+b,0)]).sort((a,b)=>a[1]-b[1])[0])?void 0:f[0];a&&(c=a);break}case"initialPlacement":c=B}if(y!==c)return{reset:{placement:c}}}return{}}},options:[G,H]},{...{name:"size",options:M=K={...aI,apply:({elements:a,rects:b,availableWidth:c,availableHeight:d})=>{let{width:e,height:f}=b.reference,g=a.floating.style;g.setProperty("--radix-popper-available-width",`${c}px`),g.setProperty("--radix-popper-available-height",`${d}px`),g.setProperty("--radix-popper-anchor-width",`${e}px`),g.setProperty("--radix-popper-anchor-height",`${f}px`)}},async fn(a){var b,c;let f,g,{placement:h,rects:i,platform:j,elements:n}=a,{apply:o=()=>{},...p}=k(M,a),r=await j.detectOverflow(a,p),s=l(h),t=m(h),u="y"===q(h),{width:v,height:w}=i.floating;"top"===s||"bottom"===s?(f=s,g=t===(await (null==j.isRTL?void 0:j.isRTL(n.floating))?"start":"end")?"left":"right"):(g=s,f="end"===t?"top":"bottom");let x=w-r.top-r.bottom,y=v-r.left-r.right,z=d(w-r[f],x),A=d(v-r[g],y),B=!a.middlewareData.shift,C=z,D=A;if(null!=(b=a.middlewareData.shift)&&b.enabled.x&&(D=y),null!=(c=a.middlewareData.shift)&&c.enabled.y&&(C=x),B&&!t){let a=e(r.left,0),b=e(r.right,0),c=e(r.top,0),d=e(r.bottom,0);u?D=v-2*(0!==a||0!==b?a+b:e(r.left,r.right)):C=w-2*(0!==c||0!==d?c+d:e(r.top,r.bottom))}await o({...a,availableWidth:D,availableHeight:C});let E=await j.getDimensions(n.floating);return v!==E.width||w!==E.height?{reset:{rects:!0}}:{}}},options:[K,L]},aw&&{...{name:"arrow",options:P=N={element:aw,padding:Y},fn(a){let{element:b,padding:c}="function"==typeof P?P(a):P;return b&&({}).hasOwnProperty.call(b,"current")?null!=b.current?ao({element:b.current,padding:c}).fn(a):{}:b?ao({element:b,padding:c}).fn(a):{}}},options:[N,O]},aR({arrowWidth:aC,arrowHeight:aD}),ad&&{...{name:"hide",options:S=Q={strategy:"referenceHidden",...aI},async fn(a){let{rects:b,platform:c}=a,{strategy:d="referenceHidden",...e}=k(S,a);switch(d){case"referenceHidden":{let d=C(await c.detectOverflow(a,{...e,elementContext:"reference"}),b.reference);return{data:{referenceHiddenOffsets:d,referenceHidden:D(d)}}}case"escaped":{let d=C(await c.detectOverflow(a,{...e,altBoundary:!0}),b.floating);return{data:{escapedOffsets:d,escaped:D(d)}}}default:return{}}}},options:[Q,R]}]}),[aT,aU]=aS(aN),aV=(0,az.useCallbackRef)(ag);(0,aA.useLayoutEffect)(()=>{aO&&aV?.()},[aO,aV]);let aW=aP.arrow?.x,aX=aP.arrow?.y,aY=aP.arrow?.centerOffset!==0,[aZ,a$]=b.useState();return(0,aA.useLayoutEffect)(()=>{aj&&a$(window.getComputedStyle(aj).zIndex)},[aj]),(0,av.jsx)("div",{ref:aL.setFloating,"data-radix-popper-content-wrapper":"",style:{...aM,transform:aO?aM.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:aZ,"--radix-popper-transform-origin":[aP.transformOrigin?.x,aP.transformOrigin?.y].join(" "),...aP.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:a.dir,children:(0,av.jsx)(aK,{scope:T,placedSide:aT,onArrowChange:ay,arrowX:aW,arrowY:aX,shouldHideArrow:aY,children:(0,av.jsx)(au.Primitive.div,{"data-side":aT,"data-align":aU,...ah,ref:al,style:{...ah.style,animation:aO?void 0:"none"}})})})});aM.displayName=aJ;var aN="PopperArrow",aO={top:"bottom",right:"left",bottom:"top",left:"right"},aP=b.forwardRef(function(a,b){let{__scopePopper:c,...d}=a,e=aL(aN,c),f=aO[e.placedSide];return(0,av.jsx)("span",{ref:e.onArrowChange,style:{position:"absolute",left:e.arrowX,top:e.arrowY,[f]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[e.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[e.placedSide],visibility:e.shouldHideArrow?"hidden":void 0},children:(0,av.jsx)(aw,{...d,ref:b,style:{...d.style,display:"block"}})})});function aQ(a){return null!==a}aP.displayName=aN;var aR=a=>({name:"transformOrigin",options:a,fn(b){let{placement:c,rects:d,middlewareData:e}=b,f=e.arrow?.centerOffset!==0,g=f?0:a.arrowWidth,h=f?0:a.arrowHeight,[i,j]=aS(c),k={start:"0%",center:"50%",end:"100%"}[j],l=(e.arrow?.x??0)+g/2,m=(e.arrow?.y??0)+h/2,n="",o="";return"bottom"===i?(n=f?k:`${l}px`,o=`${-h}px`):"top"===i?(n=f?k:`${l}px`,o=`${d.floating.height+h}px`):"right"===i?(n=`${-h}px`,o=f?k:`${m}px`):"left"===i&&(n=`${d.floating.width+h}px`,o=f?k:`${m}px`),{data:{x:n,y:o}}}});function aS(a){let[b,c="center"]=a.split("-");return[b,c]}a.s(["Anchor",()=>aI,"Arrow",()=>aP,"Content",()=>aM,"Root",()=>aG,"createPopperScope",()=>aD],29724);var aT=b.forwardRef((a,c)=>{let{container:d,...e}=a,[f,g]=b.useState(!1);(0,aA.useLayoutEffect)(()=>g(!0),[]);let h=d||f&&globalThis?.document?.body;return h?ap.default.createPortal((0,av.jsx)(au.Primitive.div,{...e,ref:c}),h):null});aT.displayName="Portal",a.s(["Portal",()=>aT],50608)},73490,a=>{"use strict";var b=a.i(60940),c=a.i(80303),d=a.i(18867),e=a=>{var e;let g,h,{present:i,children:j}=a,k=function(a){var c,e;let[g,h]=b.useState(),i=b.useRef(null),j=b.useRef(a),k=b.useRef("none"),[l,m]=(c=a?"mounted":"unmounted",e={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},b.useReducer((a,b)=>e[a][b]??a,c));return b.useEffect(()=>{let a=f(i.current);k.current="mounted"===l?a:"none"},[l]),(0,d.useLayoutEffect)(()=>{let b=i.current,c=j.current;if(c!==a){let d=k.current,e=f(b);a?m("MOUNT"):"none"===e||b?.display==="none"?m("UNMOUNT"):c&&d!==e?m("ANIMATION_OUT"):m("UNMOUNT"),j.current=a}},[a,m]),(0,d.useLayoutEffect)(()=>{if(g){let a,b=g.ownerDocument.defaultView??window,c=c=>{let d=f(i.current).includes(CSS.escape(c.animationName));if(c.target===g&&d&&(m("ANIMATION_END"),!j.current)){let c=g.style.animationFillMode;g.style.animationFillMode="forwards",a=b.setTimeout(()=>{"forwards"===g.style.animationFillMode&&(g.style.animationFillMode=c)})}},d=a=>{a.target===g&&(k.current=f(i.current))};return g.addEventListener("animationstart",d),g.addEventListener("animationcancel",c),g.addEventListener("animationend",c),()=>{b.clearTimeout(a),g.removeEventListener("animationstart",d),g.removeEventListener("animationcancel",c),g.removeEventListener("animationend",c)}}m("ANIMATION_END")},[g,m]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:b.useCallback(a=>{i.current=a?getComputedStyle(a):null,h(a)},[])}}(i),l="function"==typeof j?j({present:k.isPresent}):b.Children.only(j),m=(0,c.useComposedRefs)(k.ref,(e=l,(h=(g=Object.getOwnPropertyDescriptor(e.props,"ref")?.get)&&"isReactWarning"in g&&g.isReactWarning)?e.ref:(h=(g=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in g&&g.isReactWarning)?e.props.ref:e.props.ref||e.ref));return"function"==typeof j||k.isPresent?b.cloneElement(l,{ref:m}):null};function f(a){return a?.animationName||"none"}e.displayName="Presence",a.s(["Presence",()=>e])},35732,81139,16164,55571,a=>{"use strict";var b,c,d,e,f,g,h,i=a.i(9637),j=a.i(60940),k=a.i(59653),l=a.i(80303),m=a.i(95819),n=a.i(47427),o=a.i(30419),p=a.i(69471),q=a.i(60380),r=a.i(49350),s=a.i(98340),t=a.i(39990),u=a.i(55277),v=a.i(29724),w=a.i(50608),x=a.i(73490),y=a.i(8725),z="rovingFocusGroup.onEntryFocus",A={bubbles:!1,cancelable:!0},B="RovingFocusGroup",[C,D,E]=(0,p.createCollection)(B),[F,G]=(0,m.createContextScope)(B,[E]),[H,I]=F(B),J=j.forwardRef((a,b)=>(0,i.jsx)(C.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,i.jsx)(C.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,i.jsx)(K,{...a,ref:b})})}));J.displayName=B;var K=j.forwardRef((a,b)=>{let{__scopeRovingFocusGroup:c,orientation:d,loop:e=!1,dir:f,currentTabStopId:g,defaultCurrentTabStopId:h,onCurrentTabStopIdChange:m,onEntryFocus:p,preventScrollOnEntryFocus:r=!1,...s}=a,t=j.useRef(null),u=(0,l.useComposedRefs)(b,t),v=(0,q.useDirection)(f),[w,x]=(0,n.useControllableState)({prop:g,defaultProp:h??null,onChange:m,caller:B}),[C,E]=j.useState(!1),F=(0,y.useCallbackRef)(p),G=D(c),I=j.useRef(!1),[J,K]=j.useState(0);return j.useEffect(()=>{let a=t.current;if(a)return a.addEventListener(z,F),()=>a.removeEventListener(z,F)},[F]),(0,i.jsx)(H,{scope:c,orientation:d,dir:v,loop:e,currentTabStopId:w,onItemFocus:j.useCallback(a=>x(a),[x]),onItemShiftTab:j.useCallback(()=>E(!0),[]),onFocusableItemAdd:j.useCallback(()=>K(a=>a+1),[]),onFocusableItemRemove:j.useCallback(()=>K(a=>a-1),[]),children:(0,i.jsx)(o.Primitive.div,{tabIndex:C||0===J?-1:0,"data-orientation":d,...s,ref:u,style:{outline:"none",...a.style},onMouseDown:(0,k.composeEventHandlers)(a.onMouseDown,()=>{I.current=!0}),onFocus:(0,k.composeEventHandlers)(a.onFocus,a=>{let b=!I.current;if(a.target===a.currentTarget&&b&&!C){let b=new CustomEvent(z,A);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=G().filter(a=>a.focusable);O([a.find(a=>a.active),a.find(a=>a.id===w),...a].filter(Boolean).map(a=>a.ref.current),r)}}I.current=!1}),onBlur:(0,k.composeEventHandlers)(a.onBlur,()=>E(!1))})})}),L="RovingFocusGroupItem",M=j.forwardRef((a,b)=>{let{__scopeRovingFocusGroup:c,focusable:d=!0,active:e=!1,tabStopId:f,children:g,...h}=a,l=(0,u.useId)(),m=f||l,n=I(L,c),p=n.currentTabStopId===m,q=D(c),{onFocusableItemAdd:r,onFocusableItemRemove:s,currentTabStopId:t}=n;return j.useEffect(()=>{if(d)return r(),()=>s()},[d,r,s]),(0,i.jsx)(C.ItemSlot,{scope:c,id:m,focusable:d,active:e,children:(0,i.jsx)(o.Primitive.span,{tabIndex:p?0:-1,"data-orientation":n.orientation,...h,ref:b,onMouseDown:(0,k.composeEventHandlers)(a.onMouseDown,a=>{d?n.onItemFocus(m):a.preventDefault()}),onFocus:(0,k.composeEventHandlers)(a.onFocus,()=>n.onItemFocus(m)),onKeyDown:(0,k.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void n.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return N[e]}(a,n.orientation,n.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=q().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=n.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>O(e))}}),children:"function"==typeof g?g({isCurrentTabStop:p,hasTabStop:null!=t}):g})})});M.displayName=L;var N={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function O(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}a.s(["Item",()=>M,"Root",()=>J,"createRovingFocusGroupScope",()=>G],81139);var P=a.i(92274),Q=new WeakMap,R=new WeakMap,S={},T=0,U=function(a){return a&&(a.host||U(a.parentNode))},V=function(a,b,c,d){var e=(Array.isArray(a)?a:[a]).map(function(a){if(b.contains(a))return a;var c=U(a);return c&&b.contains(c)?c:(console.error("aria-hidden",a,"in not contained inside",b,". Doing nothing"),null)}).filter(function(a){return!!a});S[c]||(S[c]=new WeakMap);var f=S[c],g=[],h=new Set,i=new Set(e),j=function(a){!a||h.has(a)||(h.add(a),j(a.parentNode))};e.forEach(j);var k=function(a){!a||i.has(a)||Array.prototype.forEach.call(a.children,function(a){if(h.has(a))k(a);else try{var b=a.getAttribute(d),e=null!==b&&"false"!==b,i=(Q.get(a)||0)+1,j=(f.get(a)||0)+1;Q.set(a,i),f.set(a,j),g.push(a),1===i&&e&&R.set(a,!0),1===j&&a.setAttribute(c,"true"),e||a.setAttribute(d,"true")}catch(b){console.error("aria-hidden: cannot operate on ",a,b)}})};return k(b),h.clear(),T++,function(){g.forEach(function(a){var b=Q.get(a)-1,e=f.get(a)-1;Q.set(a,b),f.set(a,e),b||(R.has(a)||a.removeAttribute(d),R.delete(a)),e||a.removeAttribute(c)}),--T||(Q=new WeakMap,Q=new WeakMap,R=new WeakMap,S={})}},W=function(a,b,c){void 0===c&&(c="data-aria-hidden");var d=Array.from(Array.isArray(a)?a:[a]),e=b||("u"<typeof document?null:(Array.isArray(a)?a[0]:a).ownerDocument.body);return e?(d.push.apply(d,Array.from(e.querySelectorAll("[aria-live], script"))),V(d,e,c,"aria-hidden")):function(){return null}};a.s(["hideOthers",()=>W],16164);var X=function(){return(X=Object.assign||function(a){for(var b,c=1,d=arguments.length;c<d;c++)for(var e in b=arguments[c])Object.prototype.hasOwnProperty.call(b,e)&&(a[e]=b[e]);return a}).apply(this,arguments)};function Y(a,b){var c={};for(var d in a)Object.prototype.hasOwnProperty.call(a,d)&&0>b.indexOf(d)&&(c[d]=a[d]);if(null!=a&&"function"==typeof Object.getOwnPropertySymbols)for(var e=0,d=Object.getOwnPropertySymbols(a);e<d.length;e++)0>b.indexOf(d[e])&&Object.prototype.propertyIsEnumerable.call(a,d[e])&&(c[d[e]]=a[d[e]]);return c}var Z=("function"==typeof SuppressedError&&SuppressedError,"right-scroll-bar-position"),$="width-before-scroll-bar";function _(a,b){return"function"==typeof a?a(b):a&&(a.current=b),a}var aa=j.useEffect,ab=new WeakMap,ac=(void 0===b&&(b={}),(void 0===c&&(c=function(a){return a}),d=[],e=!1,f={read:function(){if(e)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return d.length?d[d.length-1]:null},useMedium:function(a){var b=c(a,e);return d.push(b),function(){d=d.filter(function(a){return a!==b})}},assignSyncMedium:function(a){for(e=!0;d.length;){var b=d;d=[],b.forEach(a)}d={push:function(b){return a(b)},filter:function(){return d}}},assignMedium:function(a){e=!0;var b=[];if(d.length){var c=d;d=[],c.forEach(a),b=d}var f=function(){var c=b;b=[],c.forEach(a)},g=function(){return Promise.resolve().then(f)};g(),d={push:function(a){b.push(a),g()},filter:function(a){return b=b.filter(a),d}}}}).options=X({async:!0,ssr:!1},b),f),ad=function(){},ae=j.forwardRef(function(a,b){var c,d,e,f,g=j.useRef(null),h=j.useState({onScrollCapture:ad,onWheelCapture:ad,onTouchMoveCapture:ad}),i=h[0],k=h[1],l=a.forwardProps,m=a.children,n=a.className,o=a.removeScrollBar,p=a.enabled,q=a.shards,r=a.sideCar,s=a.noRelative,t=a.noIsolation,u=a.inert,v=a.allowPinchZoom,w=a.as,x=a.gapMode,y=Y(a,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),z=(c=[g,b],d=function(a){return c.forEach(function(b){return _(b,a)})},(e=(0,j.useState)(function(){return{value:null,callback:d,facade:{get current(){return e.value},set current(value){var a=e.value;a!==value&&(e.value=value,e.callback(value,a))}}}})[0]).callback=d,f=e.facade,aa(function(){var a=ab.get(f);if(a){var b=new Set(a),d=new Set(c),e=f.current;b.forEach(function(a){d.has(a)||_(a,null)}),d.forEach(function(a){b.has(a)||_(a,e)})}ab.set(f,c)},[c]),f),A=X(X({},y),i);return j.createElement(j.Fragment,null,p&&j.createElement(r,{sideCar:ac,removeScrollBar:o,shards:q,noRelative:s,noIsolation:t,inert:u,setCallbacks:k,allowPinchZoom:!!v,lockRef:g,gapMode:x}),l?j.cloneElement(j.Children.only(m),X(X({},A),{ref:z})):j.createElement(void 0===w?"div":w,X({},A,{className:n,ref:z}),m))});ae.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},ae.classNames={fullWidth:$,zeroRight:Z};var af=function(a){var b=a.sideCar,c=Y(a,["sideCar"]);if(!b)throw Error("Sidecar: please provide `sideCar` property to import the right car");var d=b.read();if(!d)throw Error("Sidecar medium not found");return j.createElement(d,X({},c))};af.isSideCarExport=!0;var ag=function(){var a=0,b=null;return{add:function(c){if(0==a&&(b=function(){if(!document)return null;var a=document.createElement("style");a.type="text/css";var b=h||("u">typeof __webpack_nonce__?__webpack_nonce__:void 0);return b&&a.setAttribute("nonce",b),a}())){var d,e;(d=b).styleSheet?d.styleSheet.cssText=c:d.appendChild(document.createTextNode(c)),e=b,(document.head||document.getElementsByTagName("head")[0]).appendChild(e)}a++},remove:function(){--a||!b||(b.parentNode&&b.parentNode.removeChild(b),b=null)}}},ah=function(){var a=ag();return function(b,c){j.useEffect(function(){return a.add(b),function(){a.remove()}},[b&&c])}},ai=function(){var a=ah();return function(b){return a(b.styles,b.dynamic),null}},aj={left:0,top:0,right:0,gap:0},ak=ai(),al="data-scroll-locked",am=function(a,b,c,d){var e=a.left,f=a.top,g=a.right,h=a.gap;return void 0===c&&(c="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(d,";\n padding-right: ").concat(h,"px ").concat(d,";\n }\n body[").concat(al,"] {\n overflow: hidden ").concat(d,";\n overscroll-behavior: contain;\n ").concat([b&&"position: relative ".concat(d,";"),"margin"===c&&"\n padding-left: ".concat(e,"px;\n padding-top: ").concat(f,"px;\n padding-right: ").concat(g,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(h,"px ").concat(d,";\n "),"padding"===c&&"padding-right: ".concat(h,"px ").concat(d,";")].filter(Boolean).join(""),"\n }\n \n .").concat(Z," {\n right: ").concat(h,"px ").concat(d,";\n }\n \n .").concat($," {\n margin-right: ").concat(h,"px ").concat(d,";\n }\n \n .").concat(Z," .").concat(Z," {\n right: 0 ").concat(d,";\n }\n \n .").concat($," .").concat($," {\n margin-right: 0 ").concat(d,";\n }\n \n body[").concat(al,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(h,"px;\n }\n")},an=function(){var a=parseInt(document.body.getAttribute(al)||"0",10);return isFinite(a)?a:0},ao=function(){j.useEffect(function(){return document.body.setAttribute(al,(an()+1).toString()),function(){var a=an()-1;a<=0?document.body.removeAttribute(al):document.body.setAttribute(al,a.toString())}},[])},ap=function(a){var b=a.noRelative,c=a.noImportant,d=a.gapMode,e=void 0===d?"margin":d;ao();var f=j.useMemo(function(){return void 0===e,aj},[e]);return j.createElement(ak,{styles:am(f,!b,e,c?"":"!important")})},aq=function(a,b){if(!(a instanceof Element))return!1;var c=window.getComputedStyle(a);return"hidden"!==c[b]&&(c.overflowY!==c.overflowX||"TEXTAREA"===a.tagName||"visible"!==c[b])},ar=function(a,b){var c=b.ownerDocument,d=b;do{if("u">typeof ShadowRoot&&d instanceof ShadowRoot&&(d=d.host),as(a,d)){var e=at(a,d);if(e[1]>e[2])return!0}d=d.parentNode}while(d&&d!==c.body)return!1},as=function(a,b){return"v"===a?aq(b,"overflowY"):aq(b,"overflowX")},at=function(a,b){return"v"===a?[b.scrollTop,b.scrollHeight,b.clientHeight]:[b.scrollLeft,b.scrollWidth,b.clientWidth]},au=function(a,b,c,d,e){var f,g=(f=window.getComputedStyle(b).direction,"h"===a&&"rtl"===f?-1:1),h=g*d,i=c.target,j=b.contains(i),k=!1,l=h>0,m=0,n=0;do{if(!i)break;var o=at(a,i),p=o[0],q=o[1]-o[2]-g*p;(p||q)&&as(a,i)&&(m+=q,n+=p);var r=i.parentNode;i=r&&r.nodeType===Node.DOCUMENT_FRAGMENT_NODE?r.host:r}while(!j&&i!==document.body||j&&(b.contains(i)||b===i))return l&&(e&&1>Math.abs(m)||!e&&h>m)?k=!0:!l&&(e&&1>Math.abs(n)||!e&&-h>n)&&(k=!0),k},av=function(a){return"changedTouches"in a?[a.changedTouches[0].clientX,a.changedTouches[0].clientY]:[0,0]},aw=function(a){return[a.deltaX,a.deltaY]},ax=function(a){return a&&"current"in a?a.current:a},ay=0,az=[];let aA=(g=function(a){var b=j.useRef([]),c=j.useRef([0,0]),d=j.useRef(),e=j.useState(ay++)[0],f=j.useState(ai)[0],g=j.useRef(a);j.useEffect(function(){g.current=a},[a]),j.useEffect(function(){if(a.inert){document.body.classList.add("block-interactivity-".concat(e));var b=(function(a,b,c){if(c||2==arguments.length)for(var d,e=0,f=b.length;e<f;e++)!d&&e in b||(d||(d=Array.prototype.slice.call(b,0,e)),d[e]=b[e]);return a.concat(d||Array.prototype.slice.call(b))})([a.lockRef.current],(a.shards||[]).map(ax),!0).filter(Boolean);return b.forEach(function(a){return a.classList.add("allow-interactivity-".concat(e))}),function(){document.body.classList.remove("block-interactivity-".concat(e)),b.forEach(function(a){return a.classList.remove("allow-interactivity-".concat(e))})}}},[a.inert,a.lockRef.current,a.shards]);var h=j.useCallback(function(a,b){if("touches"in a&&2===a.touches.length||"wheel"===a.type&&a.ctrlKey)return!g.current.allowPinchZoom;var e,f=av(a),h=c.current,i="deltaX"in a?a.deltaX:h[0]-f[0],j="deltaY"in a?a.deltaY:h[1]-f[1],k=a.target,l=Math.abs(i)>Math.abs(j)?"h":"v";if("touches"in a&&"h"===l&&"range"===k.type)return!1;var m=window.getSelection(),n=m&&m.anchorNode;if(n&&(n===k||n.contains(k)))return!1;var o=ar(l,k);if(!o)return!0;if(o?e=l:(e="v"===l?"h":"v",o=ar(l,k)),!o)return!1;if(!d.current&&"changedTouches"in a&&(i||j)&&(d.current=e),!e)return!0;var p=d.current||e;return au(p,b,a,"h"===p?i:j,!0)},[]),i=j.useCallback(function(a){if(az.length&&az[az.length-1]===f){var c="deltaY"in a?aw(a):av(a),d=b.current.filter(function(b){var d;return b.name===a.type&&(b.target===a.target||a.target===b.shadowParent)&&(d=b.delta,d[0]===c[0]&&d[1]===c[1])})[0];if(d&&d.should){a.cancelable&&a.preventDefault();return}if(!d){var e=(g.current.shards||[]).map(ax).filter(Boolean).filter(function(b){return b.contains(a.target)});(e.length>0?h(a,e[0]):!g.current.noIsolation)&&a.cancelable&&a.preventDefault()}}},[]),k=j.useCallback(function(a,c,d,e){var f={name:a,delta:c,target:d,should:e,shadowParent:function(a){for(var b=null;null!==a;)a instanceof ShadowRoot&&(b=a.host,a=a.host),a=a.parentNode;return b}(d)};b.current.push(f),setTimeout(function(){b.current=b.current.filter(function(a){return a!==f})},1)},[]),l=j.useCallback(function(a){c.current=av(a),d.current=void 0},[]),m=j.useCallback(function(b){k(b.type,aw(b),b.target,h(b,a.lockRef.current))},[]),n=j.useCallback(function(b){k(b.type,av(b),b.target,h(b,a.lockRef.current))},[]);j.useEffect(function(){return az.push(f),a.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:n}),document.addEventListener("wheel",i,!1),document.addEventListener("touchmove",i,!1),document.addEventListener("touchstart",l,!1),function(){az=az.filter(function(a){return a!==f}),document.removeEventListener("wheel",i,!1),document.removeEventListener("touchmove",i,!1),document.removeEventListener("touchstart",l,!1)}},[]);var o=a.removeScrollBar,p=a.inert;return j.createElement(j.Fragment,null,p?j.createElement(f,{styles:"\n .block-interactivity-".concat(e," {pointer-events: none;}\n .allow-interactivity-").concat(e," {pointer-events: all;}\n")}):null,o?j.createElement(ap,{noRelative:a.noRelative,gapMode:a.gapMode}):null)},ac.useMedium(g),af);var aB=j.forwardRef(function(a,b){return j.createElement(ae,X({},a,{ref:b,sideCar:aA}))});aB.classNames=ae.classNames,a.s(["RemoveScroll",0,aB],55571);var aC=["Enter"," "],aD=["ArrowUp","PageDown","End"],aE=["ArrowDown","PageUp","Home",...aD],aF={ltr:[...aC,"ArrowRight"],rtl:[...aC,"ArrowLeft"]},aG={ltr:["ArrowLeft"],rtl:["ArrowRight"]},aH="Menu",[aI,aJ,aK]=(0,p.createCollection)(aH),[aL,aM]=(0,m.createContextScope)(aH,[aK,v.createPopperScope,G]),aN=(0,v.createPopperScope)(),aO=G(),[aP,aQ]=aL(aH),[aR,aS]=aL(aH),aT=a=>{let{__scopeMenu:b,open:c=!1,children:d,dir:e,onOpenChange:f,modal:g=!0}=a,h=aN(b),[k,l]=j.useState(null),m=j.useRef(!1),n=(0,y.useCallbackRef)(f),o=(0,q.useDirection)(e);return j.useEffect(()=>{let a=()=>{m.current=!0,document.addEventListener("pointerdown",b,{capture:!0,once:!0}),document.addEventListener("pointermove",b,{capture:!0,once:!0})},b=()=>m.current=!1;return document.addEventListener("keydown",a,{capture:!0}),()=>{document.removeEventListener("keydown",a,{capture:!0}),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("pointermove",b,{capture:!0})}},[]),(0,i.jsx)(v.Root,{...h,children:(0,i.jsx)(aP,{scope:b,open:c,onOpenChange:n,content:k,onContentChange:l,children:(0,i.jsx)(aR,{scope:b,onClose:j.useCallback(()=>n(!1),[n]),isUsingKeyboardRef:m,dir:o,modal:g,children:d})})})};aT.displayName=aH;var aU=j.forwardRef((a,b)=>{let{__scopeMenu:c,...d}=a,e=aN(c);return(0,i.jsx)(v.Anchor,{...e,...d,ref:b})});aU.displayName="MenuAnchor";var aV="MenuPortal",[aW,aX]=aL(aV,{forceMount:void 0}),aY=a=>{let{__scopeMenu:b,forceMount:c,children:d,container:e}=a,f=aQ(aV,b);return(0,i.jsx)(aW,{scope:b,forceMount:c,children:(0,i.jsx)(x.Presence,{present:c||f.open,children:(0,i.jsx)(w.Portal,{asChild:!0,container:e,children:d})})})};aY.displayName=aV;var aZ="MenuContent",[a$,a_]=aL(aZ),a0=j.forwardRef((a,b)=>{let c=aX(aZ,a.__scopeMenu),{forceMount:d=c.forceMount,...e}=a,f=aQ(aZ,a.__scopeMenu),g=aS(aZ,a.__scopeMenu);return(0,i.jsx)(aI.Provider,{scope:a.__scopeMenu,children:(0,i.jsx)(x.Presence,{present:d||f.open,children:(0,i.jsx)(aI.Slot,{scope:a.__scopeMenu,children:g.modal?(0,i.jsx)(a1,{...e,ref:b}):(0,i.jsx)(a2,{...e,ref:b})})})})}),a1=j.forwardRef((a,b)=>{let c=aQ(aZ,a.__scopeMenu),d=j.useRef(null),e=(0,l.useComposedRefs)(b,d);return j.useEffect(()=>{let a=d.current;if(a)return W(a)},[]),(0,i.jsx)(a4,{...a,ref:e,trapFocus:c.open,disableOutsidePointerEvents:c.open,disableOutsideScroll:!0,onFocusOutside:(0,k.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>c.onOpenChange(!1)})}),a2=j.forwardRef((a,b)=>{let c=aQ(aZ,a.__scopeMenu);return(0,i.jsx)(a4,{...a,ref:b,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>c.onOpenChange(!1)})}),a3=(0,P.createSlot)("MenuContent.ScrollLock"),a4=j.forwardRef((a,b)=>{let{__scopeMenu:c,loop:d=!1,trapFocus:e,onOpenAutoFocus:f,onCloseAutoFocus:g,disableOutsidePointerEvents:h,onEntryFocus:m,onEscapeKeyDown:n,onPointerDownOutside:o,onFocusOutside:p,onInteractOutside:q,onDismiss:u,disableOutsideScroll:w,...x}=a,y=aQ(aZ,c),z=aS(aZ,c),A=aN(c),B=aO(c),C=aJ(c),[D,E]=j.useState(null),F=j.useRef(null),G=(0,l.useComposedRefs)(b,F,y.onContentChange),H=j.useRef(0),I=j.useRef(""),K=j.useRef(0),L=j.useRef(null),M=j.useRef("right"),N=j.useRef(0),O=w?aB:j.Fragment;j.useEffect(()=>()=>window.clearTimeout(H.current),[]),(0,s.useFocusGuards)();let P=j.useCallback(a=>{var b,c;return M.current===L.current?.side&&(b=a,!!(c=L.current?.area)&&function(a,b){let{x:c,y:d}=a,e=!1;for(let a=0,f=b.length-1;a<b.length;f=a++){let g=b[a],h=b[f],i=g.x,j=g.y,k=h.x,l=h.y;j>d!=l>d&&c<(k-i)*(d-j)/(l-j)+i&&(e=!e)}return e}({x:b.clientX,y:b.clientY},c))},[]);return(0,i.jsx)(a$,{scope:c,searchRef:I,onItemEnter:j.useCallback(a=>{P(a)&&a.preventDefault()},[P]),onItemLeave:j.useCallback(a=>{P(a)||(F.current?.focus(),E(null))},[P]),onTriggerLeave:j.useCallback(a=>{P(a)&&a.preventDefault()},[P]),pointerGraceTimerRef:K,onPointerGraceIntentChange:j.useCallback(a=>{L.current=a},[]),children:(0,i.jsx)(O,{...w?{as:a3,allowPinchZoom:!0}:void 0,children:(0,i.jsx)(t.FocusScope,{asChild:!0,trapped:e,onMountAutoFocus:(0,k.composeEventHandlers)(f,a=>{a.preventDefault(),F.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:g,children:(0,i.jsx)(r.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:h,onEscapeKeyDown:n,onPointerDownOutside:o,onFocusOutside:p,onInteractOutside:q,onDismiss:u,children:(0,i.jsx)(J,{asChild:!0,...B,dir:z.dir,orientation:"vertical",loop:d,currentTabStopId:D,onCurrentTabStopIdChange:E,onEntryFocus:(0,k.composeEventHandlers)(m,a=>{z.isUsingKeyboardRef.current||a.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,i.jsx)(v.Content,{role:"menu","aria-orientation":"vertical","data-state":bu(y.open),"data-radix-menu-content":"",dir:z.dir,...A,...x,ref:G,style:{outline:"none",...x.style},onKeyDown:(0,k.composeEventHandlers)(x.onKeyDown,a=>{let b=a.target.closest("[data-radix-menu-content]")===a.currentTarget,c=a.ctrlKey||a.altKey||a.metaKey,d=1===a.key.length;if(b){var e;let b,f,g,h,i,j;"Tab"===a.key&&a.preventDefault(),!c&&d&&(e=a.key,b=I.current+e,f=C().filter(a=>!a.disabled),g=document.activeElement,h=f.find(a=>a.ref.current===g)?.textValue,i=function(a,b,c){var d;let e=b.length>1&&Array.from(b).every(a=>a===b[0])?b[0]:b,f=c?a.indexOf(c):-1,g=(d=Math.max(f,0),a.map((b,c)=>a[(d+c)%a.length]));1===e.length&&(g=g.filter(a=>a!==c));let h=g.find(a=>a.toLowerCase().startsWith(e.toLowerCase()));return h!==c?h:void 0}(f.map(a=>a.textValue),b,h),j=f.find(a=>a.textValue===i)?.ref.current,function a(b){I.current=b,window.clearTimeout(H.current),""!==b&&(H.current=window.setTimeout(()=>a(""),1e3))}(b),j&&setTimeout(()=>j.focus()))}let f=F.current;if(a.target!==f||!aE.includes(a.key))return;a.preventDefault();let g=C().filter(a=>!a.disabled).map(a=>a.ref.current);aD.includes(a.key)&&g.reverse(),function(a){let b=document.activeElement;for(let c of a)if(c===b||(c.focus(),document.activeElement!==b))return}(g)}),onBlur:(0,k.composeEventHandlers)(a.onBlur,a=>{a.currentTarget.contains(a.target)||(window.clearTimeout(H.current),I.current="")}),onPointerMove:(0,k.composeEventHandlers)(a.onPointerMove,bx(a=>{let b=a.target,c=N.current!==a.clientX;a.currentTarget.contains(b)&&c&&(M.current=a.clientX>N.current?"right":"left",N.current=a.clientX)}))})})})})})})});a0.displayName=aZ;var a5=j.forwardRef((a,b)=>{let{__scopeMenu:c,...d}=a;return(0,i.jsx)(o.Primitive.div,{role:"group",...d,ref:b})});a5.displayName="MenuGroup";var a6=j.forwardRef((a,b)=>{let{__scopeMenu:c,...d}=a;return(0,i.jsx)(o.Primitive.div,{...d,ref:b})});a6.displayName="MenuLabel";var a7="MenuItem",a8="menu.itemSelect",a9=j.forwardRef((a,b)=>{let{disabled:c=!1,onSelect:d,...e}=a,f=j.useRef(null),g=aS(a7,a.__scopeMenu),h=a_(a7,a.__scopeMenu),m=(0,l.useComposedRefs)(b,f),n=j.useRef(!1);return(0,i.jsx)(ba,{...e,ref:m,disabled:c,onClick:(0,k.composeEventHandlers)(a.onClick,()=>{let a=f.current;if(!c&&a){let b=new CustomEvent(a8,{bubbles:!0,cancelable:!0});a.addEventListener(a8,a=>d?.(a),{once:!0}),(0,o.dispatchDiscreteCustomEvent)(a,b),b.defaultPrevented?n.current=!1:g.onClose()}}),onPointerDown:b=>{a.onPointerDown?.(b),n.current=!0},onPointerUp:(0,k.composeEventHandlers)(a.onPointerUp,a=>{n.current||a.currentTarget?.click()}),onKeyDown:(0,k.composeEventHandlers)(a.onKeyDown,a=>{let b=""!==h.searchRef.current;c||b&&" "===a.key||aC.includes(a.key)&&(a.currentTarget.click(),a.preventDefault())})})});a9.displayName=a7;var ba=j.forwardRef((a,b)=>{let{__scopeMenu:c,disabled:d=!1,textValue:e,...f}=a,g=a_(a7,c),h=aO(c),m=j.useRef(null),n=(0,l.useComposedRefs)(b,m),[p,q]=j.useState(!1),[r,s]=j.useState("");return j.useEffect(()=>{let a=m.current;a&&s((a.textContent??"").trim())},[f.children]),(0,i.jsx)(aI.ItemSlot,{scope:c,disabled:d,textValue:e??r,children:(0,i.jsx)(M,{asChild:!0,...h,focusable:!d,children:(0,i.jsx)(o.Primitive.div,{role:"menuitem","data-highlighted":p?"":void 0,"aria-disabled":d||void 0,"data-disabled":d?"":void 0,...f,ref:n,onPointerMove:(0,k.composeEventHandlers)(a.onPointerMove,bx(a=>{d?g.onItemLeave(a):(g.onItemEnter(a),a.defaultPrevented||a.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,k.composeEventHandlers)(a.onPointerLeave,bx(a=>g.onItemLeave(a))),onFocus:(0,k.composeEventHandlers)(a.onFocus,()=>q(!0)),onBlur:(0,k.composeEventHandlers)(a.onBlur,()=>q(!1))})})})}),bb=j.forwardRef((a,b)=>{let{checked:c=!1,onCheckedChange:d,...e}=a;return(0,i.jsx)(bj,{scope:a.__scopeMenu,checked:c,children:(0,i.jsx)(a9,{role:"menuitemcheckbox","aria-checked":bv(c)?"mixed":c,...e,ref:b,"data-state":bw(c),onSelect:(0,k.composeEventHandlers)(e.onSelect,()=>d?.(!!bv(c)||!c),{checkForDefaultPrevented:!1})})})});bb.displayName="MenuCheckboxItem";var bc="MenuRadioGroup",[bd,be]=aL(bc,{value:void 0,onValueChange:()=>{}}),bf=j.forwardRef((a,b)=>{let{value:c,onValueChange:d,...e}=a,f=(0,y.useCallbackRef)(d);return(0,i.jsx)(bd,{scope:a.__scopeMenu,value:c,onValueChange:f,children:(0,i.jsx)(a5,{...e,ref:b})})});bf.displayName=bc;var bg="MenuRadioItem",bh=j.forwardRef((a,b)=>{let{value:c,...d}=a,e=be(bg,a.__scopeMenu),f=c===e.value;return(0,i.jsx)(bj,{scope:a.__scopeMenu,checked:f,children:(0,i.jsx)(a9,{role:"menuitemradio","aria-checked":f,...d,ref:b,"data-state":bw(f),onSelect:(0,k.composeEventHandlers)(d.onSelect,()=>e.onValueChange?.(c),{checkForDefaultPrevented:!1})})})});bh.displayName=bg;var bi="MenuItemIndicator",[bj,bk]=aL(bi,{checked:!1}),bl=j.forwardRef((a,b)=>{let{__scopeMenu:c,forceMount:d,...e}=a,f=bk(bi,c);return(0,i.jsx)(x.Presence,{present:d||bv(f.checked)||!0===f.checked,children:(0,i.jsx)(o.Primitive.span,{...e,ref:b,"data-state":bw(f.checked)})})});bl.displayName=bi;var bm=j.forwardRef((a,b)=>{let{__scopeMenu:c,...d}=a;return(0,i.jsx)(o.Primitive.div,{role:"separator","aria-orientation":"horizontal",...d,ref:b})});bm.displayName="MenuSeparator";var bn=j.forwardRef((a,b)=>{let{__scopeMenu:c,...d}=a,e=aN(c);return(0,i.jsx)(v.Arrow,{...e,...d,ref:b})});bn.displayName="MenuArrow";var[bo,bp]=aL("MenuSub"),bq="MenuSubTrigger",br=j.forwardRef((a,b)=>{let c=aQ(bq,a.__scopeMenu),d=aS(bq,a.__scopeMenu),e=bp(bq,a.__scopeMenu),f=a_(bq,a.__scopeMenu),g=j.useRef(null),{pointerGraceTimerRef:h,onPointerGraceIntentChange:m}=f,n={__scopeMenu:a.__scopeMenu},o=j.useCallback(()=>{g.current&&window.clearTimeout(g.current),g.current=null},[]);return j.useEffect(()=>o,[o]),j.useEffect(()=>{let a=h.current;return()=>{window.clearTimeout(a),m(null)}},[h,m]),(0,i.jsx)(aU,{asChild:!0,...n,children:(0,i.jsx)(ba,{id:e.triggerId,"aria-haspopup":"menu","aria-expanded":c.open,"aria-controls":e.contentId,"data-state":bu(c.open),...a,ref:(0,l.composeRefs)(b,e.onTriggerChange),onClick:b=>{a.onClick?.(b),a.disabled||b.defaultPrevented||(b.currentTarget.focus(),c.open||c.onOpenChange(!0))},onPointerMove:(0,k.composeEventHandlers)(a.onPointerMove,bx(b=>{f.onItemEnter(b),!b.defaultPrevented&&(a.disabled||c.open||g.current||(f.onPointerGraceIntentChange(null),g.current=window.setTimeout(()=>{c.onOpenChange(!0),o()},100)))})),onPointerLeave:(0,k.composeEventHandlers)(a.onPointerLeave,bx(a=>{o();let b=c.content?.getBoundingClientRect();if(b){let d=c.content?.dataset.side,e="right"===d,g=b[e?"left":"right"],i=b[e?"right":"left"];f.onPointerGraceIntentChange({area:[{x:a.clientX+(e?-5:5),y:a.clientY},{x:g,y:b.top},{x:i,y:b.top},{x:i,y:b.bottom},{x:g,y:b.bottom}],side:d}),window.clearTimeout(h.current),h.current=window.setTimeout(()=>f.onPointerGraceIntentChange(null),300)}else{if(f.onTriggerLeave(a),a.defaultPrevented)return;f.onPointerGraceIntentChange(null)}})),onKeyDown:(0,k.composeEventHandlers)(a.onKeyDown,b=>{let e=""!==f.searchRef.current;a.disabled||e&&" "===b.key||aF[d.dir].includes(b.key)&&(c.onOpenChange(!0),c.content?.focus(),b.preventDefault())})})})});br.displayName=bq;var bs="MenuSubContent",bt=j.forwardRef((a,b)=>{let c=aX(aZ,a.__scopeMenu),{forceMount:d=c.forceMount,...e}=a,f=aQ(aZ,a.__scopeMenu),g=aS(aZ,a.__scopeMenu),h=bp(bs,a.__scopeMenu),m=j.useRef(null),n=(0,l.useComposedRefs)(b,m);return(0,i.jsx)(aI.Provider,{scope:a.__scopeMenu,children:(0,i.jsx)(x.Presence,{present:d||f.open,children:(0,i.jsx)(aI.Slot,{scope:a.__scopeMenu,children:(0,i.jsx)(a4,{id:h.contentId,"aria-labelledby":h.triggerId,...e,ref:n,align:"start",side:"rtl"===g.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:a=>{g.isUsingKeyboardRef.current&&m.current?.focus(),a.preventDefault()},onCloseAutoFocus:a=>a.preventDefault(),onFocusOutside:(0,k.composeEventHandlers)(a.onFocusOutside,a=>{a.target!==h.trigger&&f.onOpenChange(!1)}),onEscapeKeyDown:(0,k.composeEventHandlers)(a.onEscapeKeyDown,a=>{g.onClose(),a.preventDefault()}),onKeyDown:(0,k.composeEventHandlers)(a.onKeyDown,a=>{let b=a.currentTarget.contains(a.target),c=aG[g.dir].includes(a.key);b&&c&&(f.onOpenChange(!1),h.trigger?.focus(),a.preventDefault())})})})})})});function bu(a){return a?"open":"closed"}function bv(a){return"indeterminate"===a}function bw(a){return bv(a)?"indeterminate":a?"checked":"unchecked"}function bx(a){return b=>"mouse"===b.pointerType?a(b):void 0}bt.displayName=bs;var by="DropdownMenu",[bz,bA]=(0,m.createContextScope)(by,[aM]),bB=aM(),[bC,bD]=bz(by),bE=a=>{let{__scopeDropdownMenu:b,children:c,dir:d,open:e,defaultOpen:f,onOpenChange:g,modal:h=!0}=a,k=bB(b),l=j.useRef(null),[m,o]=(0,n.useControllableState)({prop:e,defaultProp:f??!1,onChange:g,caller:by});return(0,i.jsx)(bC,{scope:b,triggerId:(0,u.useId)(),triggerRef:l,contentId:(0,u.useId)(),open:m,onOpenChange:o,onOpenToggle:j.useCallback(()=>o(a=>!a),[o]),modal:h,children:(0,i.jsx)(aT,{...k,open:m,onOpenChange:o,dir:d,modal:h,children:c})})};bE.displayName=by;var bF="DropdownMenuTrigger",bG=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,disabled:d=!1,...e}=a,f=bD(bF,c),g=bB(c);return(0,i.jsx)(aU,{asChild:!0,...g,children:(0,i.jsx)(o.Primitive.button,{type:"button",id:f.triggerId,"aria-haspopup":"menu","aria-expanded":f.open,"aria-controls":f.open?f.contentId:void 0,"data-state":f.open?"open":"closed","data-disabled":d?"":void 0,disabled:d,...e,ref:(0,l.composeRefs)(b,f.triggerRef),onPointerDown:(0,k.composeEventHandlers)(a.onPointerDown,a=>{!d&&0===a.button&&!1===a.ctrlKey&&(f.onOpenToggle(),f.open||a.preventDefault())}),onKeyDown:(0,k.composeEventHandlers)(a.onKeyDown,a=>{!d&&(["Enter"," "].includes(a.key)&&f.onOpenToggle(),"ArrowDown"===a.key&&f.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(a.key)&&a.preventDefault())})})})});bG.displayName=bF;var bH=a=>{let{__scopeDropdownMenu:b,...c}=a,d=bB(b);return(0,i.jsx)(aY,{...d,...c})};bH.displayName="DropdownMenuPortal";var bI="DropdownMenuContent",bJ=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bD(bI,c),f=bB(c),g=j.useRef(!1);return(0,i.jsx)(a0,{id:e.contentId,"aria-labelledby":e.triggerId,...f,...d,ref:b,onCloseAutoFocus:(0,k.composeEventHandlers)(a.onCloseAutoFocus,a=>{g.current||e.triggerRef.current?.focus(),g.current=!1,a.preventDefault()}),onInteractOutside:(0,k.composeEventHandlers)(a.onInteractOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey,d=2===b.button||c;(!e.modal||d)&&(g.current=!0)}),style:{...a.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});bJ.displayName=bI,j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(a5,{...e,...d,ref:b})}).displayName="DropdownMenuGroup";var bK=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(a6,{...e,...d,ref:b})});bK.displayName="DropdownMenuLabel";var bL=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(a9,{...e,...d,ref:b})});bL.displayName="DropdownMenuItem";var bM=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(bb,{...e,...d,ref:b})});bM.displayName="DropdownMenuCheckboxItem",j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(bf,{...e,...d,ref:b})}).displayName="DropdownMenuRadioGroup";var bN=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(bh,{...e,...d,ref:b})});bN.displayName="DropdownMenuRadioItem";var bO=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(bl,{...e,...d,ref:b})});bO.displayName="DropdownMenuItemIndicator";var bP=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(bm,{...e,...d,ref:b})});bP.displayName="DropdownMenuSeparator",j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(bn,{...e,...d,ref:b})}).displayName="DropdownMenuArrow";var bQ=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(br,{...e,...d,ref:b})});bQ.displayName="DropdownMenuSubTrigger";var bR=j.forwardRef((a,b)=>{let{__scopeDropdownMenu:c,...d}=a,e=bB(c);return(0,i.jsx)(bt,{...e,...d,ref:b,style:{...a.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});bR.displayName="DropdownMenuSubContent";var bS=a.i(39863),bT=a.i(22820);let bU=(0,a.i(33214).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);var bV=a.i(68114);j.forwardRef(({className:a,inset:b,children:c,...d},e)=>(0,i.jsxs)(bQ,{ref:e,className:(0,bV.cn)("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-slate-100 data-[state=open]:bg-slate-100 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 dark:focus:bg-slate-800 dark:data-[state=open]:bg-slate-800",b&&"pl-8",a),...d,children:[c,(0,i.jsx)(bT.ChevronRight,{className:"ml-auto"})]})).displayName=bQ.displayName,j.forwardRef(({className:a,...b},c)=>(0,i.jsx)(bR,{ref:c,className:(0,bV.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border border-slate-200 bg-white p-1 text-slate-950 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin] dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50",a),...b})).displayName=bR.displayName;let bW=j.forwardRef(({className:a,sideOffset:b=4,...c},d)=>(0,i.jsx)(bH,{children:(0,i.jsx)(bJ,{ref:d,sideOffset:b,className:(0,bV.cn)("z-50 max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border border-slate-200 bg-white p-1 text-slate-950 shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-dropdown-menu-content-transform-origin] dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50",a),...c})}));bW.displayName=bJ.displayName;let bX=j.forwardRef(({className:a,inset:b,...c},d)=>(0,i.jsx)(bL,{ref:d,className:(0,bV.cn)("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-slate-100 focus:text-slate-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 dark:focus:bg-slate-800 dark:focus:text-slate-50",b&&"pl-8",a),...c}));bX.displayName=bL.displayName,j.forwardRef(({className:a,children:b,checked:c,...d},e)=>(0,i.jsxs)(bM,{ref:e,className:(0,bV.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-slate-100 focus:text-slate-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-800 dark:focus:text-slate-50",a),checked:c,...d,children:[(0,i.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,i.jsx)(bO,{children:(0,i.jsx)(bS.Check,{className:"h-4 w-4"})})}),b]})).displayName=bM.displayName,j.forwardRef(({className:a,children:b,...c},d)=>(0,i.jsxs)(bN,{ref:d,className:(0,bV.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-slate-100 focus:text-slate-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-slate-800 dark:focus:text-slate-50",a),...c,children:[(0,i.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,i.jsx)(bO,{children:(0,i.jsx)(bU,{className:"h-2 w-2 fill-current"})})}),b]})).displayName=bN.displayName,j.forwardRef(({className:a,inset:b,...c},d)=>(0,i.jsx)(bK,{ref:d,className:(0,bV.cn)("px-2 py-1.5 text-sm font-semibold",b&&"pl-8",a),...c})).displayName=bK.displayName,j.forwardRef(({className:a,...b},c)=>(0,i.jsx)(bP,{ref:c,className:(0,bV.cn)("-mx-1 my-1 h-px bg-slate-100 dark:bg-slate-800",a),...b})).displayName=bP.displayName,a.s(["DropdownMenu",()=>bE,"DropdownMenuContent",()=>bW,"DropdownMenuItem",()=>bX,"DropdownMenuTrigger",()=>bG],35732)},51523,a=>{"use strict";var b=a.i(9637),c=a.i(60940);a.i(36439);var d=a.i(35194),e=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((a,e)=>{let f=(0,d.createSlot)(`Primitive.${e}`),g=c.forwardRef((a,c)=>{let{asChild:d,...g}=a;return(0,b.jsx)(d?f:e,{...g,ref:c})});return g.displayName=`Primitive.${e}`,{...a,[e]:g}},{}),f="horizontal",g=["horizontal","vertical"],h=c.forwardRef((a,c)=>{var d;let{decorative:h,orientation:i=f,...j}=a,k=(d=i,g.includes(d))?i:f;return(0,b.jsx)(e.div,{"data-orientation":k,...h?{role:"none"}:{"aria-orientation":"vertical"===k?k:void 0,role:"separator"},...j,ref:c})});h.displayName="Separator";var i=a.i(68114);let j=c.forwardRef(({className:a,orientation:c="horizontal",decorative:d=!0,...e},f)=>(0,b.jsx)(h,{ref:f,decorative:d,orientation:c,className:(0,i.cn)("shrink-0 bg-slate-200 dark:bg-slate-800","horizontal"===c?"h-[1px] w-full":"h-full w-[1px]",a),...e}));j.displayName=h.displayName,a.s(["Separator",()=>j],51523)},66238,a=>{"use strict";var b=a.i(60940),c=a.i(59653),d=a.i(80303),e=a.i(95819),f=a.i(55277),g=a.i(47427),h=a.i(49350),i=a.i(39990),j=a.i(50608),k=a.i(73490),l=a.i(30419),m=a.i(98340),n=a.i(55571),o=a.i(16164),p=a.i(92274),q=a.i(9637),r="Dialog",[s,t]=(0,e.createContextScope)(r),[u,v]=s(r),w=a=>{let{__scopeDialog:c,children:d,open:e,defaultOpen:h,onOpenChange:i,modal:j=!0}=a,k=b.useRef(null),l=b.useRef(null),[m,n]=(0,g.useControllableState)({prop:e,defaultProp:h??!1,onChange:i,caller:r});return(0,q.jsx)(u,{scope:c,triggerRef:k,contentRef:l,contentId:(0,f.useId)(),titleId:(0,f.useId)(),descriptionId:(0,f.useId)(),open:m,onOpenChange:n,onOpenToggle:b.useCallback(()=>n(a=>!a),[n]),modal:j,children:d})};w.displayName=r;var x="DialogTrigger",y=b.forwardRef((a,b)=>{let{__scopeDialog:e,...f}=a,g=v(x,e),h=(0,d.useComposedRefs)(b,g.triggerRef);return(0,q.jsx)(l.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":g.open,"aria-controls":g.contentId,"data-state":S(g.open),...f,ref:h,onClick:(0,c.composeEventHandlers)(a.onClick,g.onOpenToggle)})});y.displayName=x;var z="DialogPortal",[A,B]=s(z,{forceMount:void 0}),C=a=>{let{__scopeDialog:c,forceMount:d,children:e,container:f}=a,g=v(z,c);return(0,q.jsx)(A,{scope:c,forceMount:d,children:b.Children.map(e,a=>(0,q.jsx)(k.Presence,{present:d||g.open,children:(0,q.jsx)(j.Portal,{asChild:!0,container:f,children:a})}))})};C.displayName=z;var D="DialogOverlay",E=b.forwardRef((a,b)=>{let c=B(D,a.__scopeDialog),{forceMount:d=c.forceMount,...e}=a,f=v(D,a.__scopeDialog);return f.modal?(0,q.jsx)(k.Presence,{present:d||f.open,children:(0,q.jsx)(G,{...e,ref:b})}):null});E.displayName=D;var F=(0,p.createSlot)("DialogOverlay.RemoveScroll"),G=b.forwardRef((a,b)=>{let{__scopeDialog:c,...d}=a,e=v(D,c);return(0,q.jsx)(n.RemoveScroll,{as:F,allowPinchZoom:!0,shards:[e.contentRef],children:(0,q.jsx)(l.Primitive.div,{"data-state":S(e.open),...d,ref:b,style:{pointerEvents:"auto",...d.style}})})}),H="DialogContent",I=b.forwardRef((a,b)=>{let c=B(H,a.__scopeDialog),{forceMount:d=c.forceMount,...e}=a,f=v(H,a.__scopeDialog);return(0,q.jsx)(k.Presence,{present:d||f.open,children:f.modal?(0,q.jsx)(J,{...e,ref:b}):(0,q.jsx)(K,{...e,ref:b})})});I.displayName=H;var J=b.forwardRef((a,e)=>{let f=v(H,a.__scopeDialog),g=b.useRef(null),h=(0,d.useComposedRefs)(e,f.contentRef,g);return b.useEffect(()=>{let a=g.current;if(a)return(0,o.hideOthers)(a)},[]),(0,q.jsx)(L,{...a,ref:h,trapFocus:f.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,c.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),f.triggerRef.current?.focus()}),onPointerDownOutside:(0,c.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;(2===b.button||c)&&a.preventDefault()}),onFocusOutside:(0,c.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault())})}),K=b.forwardRef((a,c)=>{let d=v(H,a.__scopeDialog),e=b.useRef(!1),f=b.useRef(!1);return(0,q.jsx)(L,{...a,ref:c,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(e.current||d.triggerRef.current?.focus(),b.preventDefault()),e.current=!1,f.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(e.current=!0,"pointerdown"===b.detail.originalEvent.type&&(f.current=!0));let c=b.target;d.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&f.current&&b.preventDefault()}})}),L=b.forwardRef((a,c)=>{let{__scopeDialog:e,trapFocus:f,onOpenAutoFocus:g,onCloseAutoFocus:j,...k}=a,l=v(H,e),n=b.useRef(null),o=(0,d.useComposedRefs)(c,n);return(0,m.useFocusGuards)(),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(i.FocusScope,{asChild:!0,loop:!0,trapped:f,onMountAutoFocus:g,onUnmountAutoFocus:j,children:(0,q.jsx)(h.DismissableLayer,{role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":S(l.open),...k,ref:o,onDismiss:()=>l.onOpenChange(!1)})}),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(W,{titleId:l.titleId}),(0,q.jsx)(X,{contentRef:n,descriptionId:l.descriptionId})]})]})}),M="DialogTitle",N=b.forwardRef((a,b)=>{let{__scopeDialog:c,...d}=a,e=v(M,c);return(0,q.jsx)(l.Primitive.h2,{id:e.titleId,...d,ref:b})});N.displayName=M;var O="DialogDescription",P=b.forwardRef((a,b)=>{let{__scopeDialog:c,...d}=a,e=v(O,c);return(0,q.jsx)(l.Primitive.p,{id:e.descriptionId,...d,ref:b})});P.displayName=O;var Q="DialogClose",R=b.forwardRef((a,b)=>{let{__scopeDialog:d,...e}=a,f=v(Q,d);return(0,q.jsx)(l.Primitive.button,{type:"button",...e,ref:b,onClick:(0,c.composeEventHandlers)(a.onClick,()=>f.onOpenChange(!1))})});function S(a){return a?"open":"closed"}R.displayName=Q;var T="DialogTitleWarning",[U,V]=(0,e.createContext)(T,{contentName:H,titleName:M,docsSlug:"dialog"}),W=({titleId:a})=>{let c=V(T),d=`\`${c.contentName}\` requires a \`${c.titleName}\` for the component to be accessible for screen reader users.
2
-
3
- If you want to hide the \`${c.titleName}\`, you can wrap it with our VisuallyHidden component.
4
-
5
- For more information, see https://radix-ui.com/primitives/docs/components/${c.docsSlug}`;return b.useEffect(()=>{a&&(document.getElementById(a)||console.error(d))},[d,a]),null},X=({contentRef:a,descriptionId:c})=>{let d=V("DialogDescriptionWarning"),e=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${d.contentName}}.`;return b.useEffect(()=>{let b=a.current?.getAttribute("aria-describedby");c&&b&&(document.getElementById(c)||console.warn(e))},[e,a,c]),null};a.s(["Close",()=>R,"Content",()=>I,"Description",()=>P,"Overlay",()=>E,"Portal",()=>C,"Root",()=>w,"Title",()=>N,"Trigger",()=>y])},85259,a=>{"use strict";var b=a.i(9637),c=a.i(60940),d=a.i(59653),e=a.i(80303),f=a.i(95819),g=a.i(49350),h=a.i(55277),i=a.i(29724),j=(a.i(50608),a.i(73490)),k=a.i(30419),l=a.i(92274),m=a.i(47427),n=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),o=c.forwardRef((a,c)=>(0,b.jsx)(k.Primitive.span,{...a,ref:c,style:{...n,...a.style}}));o.displayName="VisuallyHidden";var[p,q]=(0,f.createContextScope)("Tooltip",[i.createPopperScope]),r=(0,i.createPopperScope)(),s="TooltipProvider",t="tooltip.open",[u,v]=p(s),w=a=>{let{__scopeTooltip:d,delayDuration:e=700,skipDelayDuration:f=300,disableHoverableContent:g=!1,children:h}=a,i=c.useRef(!0),j=c.useRef(!1),k=c.useRef(0);return c.useEffect(()=>{let a=k.current;return()=>window.clearTimeout(a)},[]),(0,b.jsx)(u,{scope:d,isOpenDelayedRef:i,delayDuration:e,onOpen:c.useCallback(()=>{window.clearTimeout(k.current),i.current=!1},[]),onClose:c.useCallback(()=>{window.clearTimeout(k.current),k.current=window.setTimeout(()=>i.current=!0,f)},[f]),isPointerInTransitRef:j,onPointerInTransitChange:c.useCallback(a=>{j.current=a},[]),disableHoverableContent:g,children:h})};w.displayName=s;var x="Tooltip",[y,z]=p(x),A=a=>{let{__scopeTooltip:d,children:e,open:f,defaultOpen:g,onOpenChange:j,disableHoverableContent:k,delayDuration:l}=a,n=v(x,a.__scopeTooltip),o=r(d),[p,q]=c.useState(null),s=(0,h.useId)(),u=c.useRef(0),w=k??n.disableHoverableContent,z=l??n.delayDuration,A=c.useRef(!1),[B,C]=(0,m.useControllableState)({prop:f,defaultProp:g??!1,onChange:a=>{a?(n.onOpen(),document.dispatchEvent(new CustomEvent(t))):n.onClose(),j?.(a)},caller:x}),D=c.useMemo(()=>B?A.current?"delayed-open":"instant-open":"closed",[B]),E=c.useCallback(()=>{window.clearTimeout(u.current),u.current=0,A.current=!1,C(!0)},[C]),F=c.useCallback(()=>{window.clearTimeout(u.current),u.current=0,C(!1)},[C]),G=c.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>{A.current=!0,C(!0),u.current=0},z)},[z,C]);return c.useEffect(()=>()=>{u.current&&(window.clearTimeout(u.current),u.current=0)},[]),(0,b.jsx)(i.Root,{...o,children:(0,b.jsx)(y,{scope:d,contentId:s,open:B,stateAttribute:D,trigger:p,onTriggerChange:q,onTriggerEnter:c.useCallback(()=>{n.isOpenDelayedRef.current?G():E()},[n.isOpenDelayedRef,G,E]),onTriggerLeave:c.useCallback(()=>{w?F():(window.clearTimeout(u.current),u.current=0)},[F,w]),onOpen:E,onClose:F,disableHoverableContent:w,children:e})})};A.displayName=x;var B="TooltipTrigger",C=c.forwardRef((a,f)=>{let{__scopeTooltip:g,...h}=a,j=z(B,g),l=v(B,g),m=r(g),n=c.useRef(null),o=(0,e.useComposedRefs)(f,n,j.onTriggerChange),p=c.useRef(!1),q=c.useRef(!1),s=c.useCallback(()=>p.current=!1,[]);return c.useEffect(()=>()=>document.removeEventListener("pointerup",s),[s]),(0,b.jsx)(i.Anchor,{asChild:!0,...m,children:(0,b.jsx)(k.Primitive.button,{"aria-describedby":j.open?j.contentId:void 0,"data-state":j.stateAttribute,...h,ref:o,onPointerMove:(0,d.composeEventHandlers)(a.onPointerMove,a=>{"touch"!==a.pointerType&&(q.current||l.isPointerInTransitRef.current||(j.onTriggerEnter(),q.current=!0))}),onPointerLeave:(0,d.composeEventHandlers)(a.onPointerLeave,()=>{j.onTriggerLeave(),q.current=!1}),onPointerDown:(0,d.composeEventHandlers)(a.onPointerDown,()=>{j.open&&j.onClose(),p.current=!0,document.addEventListener("pointerup",s,{once:!0})}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{p.current||j.onOpen()}),onBlur:(0,d.composeEventHandlers)(a.onBlur,j.onClose),onClick:(0,d.composeEventHandlers)(a.onClick,j.onClose)})})});C.displayName=B;var[D,E]=p("TooltipPortal",{forceMount:void 0}),F="TooltipContent",G=c.forwardRef((a,c)=>{let d=E(F,a.__scopeTooltip),{forceMount:e=d.forceMount,side:f="top",...g}=a,h=z(F,a.__scopeTooltip);return(0,b.jsx)(j.Presence,{present:e||h.open,children:h.disableHoverableContent?(0,b.jsx)(L,{side:f,...g,ref:c}):(0,b.jsx)(H,{side:f,...g,ref:c})})}),H=c.forwardRef((a,d)=>{let f=z(F,a.__scopeTooltip),g=v(F,a.__scopeTooltip),h=c.useRef(null),i=(0,e.useComposedRefs)(d,h),[j,k]=c.useState(null),{trigger:l,onClose:m}=f,n=h.current,{onPointerInTransitChange:o}=g,p=c.useCallback(()=>{k(null),o(!1)},[o]),q=c.useCallback((a,b)=>{let c,d=a.currentTarget,e={x:a.clientX,y:a.clientY},f=function(a,b){let c=Math.abs(b.top-a.y),d=Math.abs(b.bottom-a.y),e=Math.abs(b.right-a.x),f=Math.abs(b.left-a.x);switch(Math.min(c,d,e,f)){case f:return"left";case e:return"right";case c:return"top";case d:return"bottom";default:throw Error("unreachable")}}(e,d.getBoundingClientRect());k(((c=[...function(a,b,c=5){let d=[];switch(b){case"top":d.push({x:a.x-c,y:a.y+c},{x:a.x+c,y:a.y+c});break;case"bottom":d.push({x:a.x-c,y:a.y-c},{x:a.x+c,y:a.y-c});break;case"left":d.push({x:a.x+c,y:a.y-c},{x:a.x+c,y:a.y+c});break;case"right":d.push({x:a.x-c,y:a.y-c},{x:a.x-c,y:a.y+c})}return d}(e,f),...function(a){let{top:b,right:c,bottom:d,left:e}=a;return[{x:e,y:b},{x:c,y:b},{x:c,y:d},{x:e,y:d}]}(b.getBoundingClientRect())].slice()).sort((a,b)=>a.x<b.x?-1:a.x>b.x?1:a.y<b.y?-1:1*!!(a.y>b.y)),function(a){if(a.length<=1)return a.slice();let b=[];for(let c=0;c<a.length;c++){let d=a[c];for(;b.length>=2;){let a=b[b.length-1],c=b[b.length-2];if((a.x-c.x)*(d.y-c.y)>=(a.y-c.y)*(d.x-c.x))b.pop();else break}b.push(d)}b.pop();let c=[];for(let b=a.length-1;b>=0;b--){let d=a[b];for(;c.length>=2;){let a=c[c.length-1],b=c[c.length-2];if((a.x-b.x)*(d.y-b.y)>=(a.y-b.y)*(d.x-b.x))c.pop();else break}c.push(d)}return(c.pop(),1===b.length&&1===c.length&&b[0].x===c[0].x&&b[0].y===c[0].y)?b:b.concat(c)}(c))),o(!0)},[o]);return c.useEffect(()=>()=>p(),[p]),c.useEffect(()=>{if(l&&n){let a=a=>q(a,n),b=a=>q(a,l);return l.addEventListener("pointerleave",a),n.addEventListener("pointerleave",b),()=>{l.removeEventListener("pointerleave",a),n.removeEventListener("pointerleave",b)}}},[l,n,q,p]),c.useEffect(()=>{if(j){let a=a=>{let b=a.target,c={x:a.clientX,y:a.clientY},d=l?.contains(b)||n?.contains(b),e=!function(a,b){let{x:c,y:d}=a,e=!1;for(let a=0,f=b.length-1;a<b.length;f=a++){let g=b[a],h=b[f],i=g.x,j=g.y,k=h.x,l=h.y;j>d!=l>d&&c<(k-i)*(d-j)/(l-j)+i&&(e=!e)}return e}(c,j);d?p():e&&(p(),m())};return document.addEventListener("pointermove",a),()=>document.removeEventListener("pointermove",a)}},[l,n,j,m,p]),(0,b.jsx)(L,{...a,ref:i})}),[I,J]=p(x,{isInside:!1}),K=(0,l.createSlottable)("TooltipContent"),L=c.forwardRef((a,d)=>{let{__scopeTooltip:e,children:f,"aria-label":h,onEscapeKeyDown:j,onPointerDownOutside:k,...l}=a,m=z(F,e),n=r(e),{onClose:p}=m;return c.useEffect(()=>(document.addEventListener(t,p),()=>document.removeEventListener(t,p)),[p]),c.useEffect(()=>{if(m.trigger){let a=a=>{let b=a.target;b?.contains(m.trigger)&&p()};return window.addEventListener("scroll",a,{capture:!0}),()=>window.removeEventListener("scroll",a,{capture:!0})}},[m.trigger,p]),(0,b.jsx)(g.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:j,onPointerDownOutside:k,onFocusOutside:a=>a.preventDefault(),onDismiss:p,children:(0,b.jsxs)(i.Content,{"data-state":m.stateAttribute,...n,...l,ref:d,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,b.jsx)(K,{children:f}),(0,b.jsx)(I,{scope:e,isInside:!0,children:(0,b.jsx)(o,{id:m.contentId,role:"tooltip",children:h||f})})]})})});G.displayName=F;var M="TooltipArrow";c.forwardRef((a,c)=>{let{__scopeTooltip:d,...e}=a,f=r(d);return J(M,d).isInside?null:(0,b.jsx)(i.Arrow,{...f,...e,ref:c})}).displayName=M;var N=a.i(68114);let O=c.forwardRef(({className:a,sideOffset:c=4,...d},e)=>(0,b.jsx)(G,{ref:e,sideOffset:c,className:(0,N.cn)("z-50 overflow-hidden rounded-md border border-slate-200 bg-white px-3 py-1.5 text-sm text-slate-950 shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin] dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50",a),...d}));O.displayName=G.displayName,a.s(["Tooltip",()=>A,"TooltipContent",()=>O,"TooltipProvider",()=>w,"TooltipTrigger",()=>C],85259)},14574,a=>{"use strict";var b=a.i(9637),c=a.i(60940),d=a.i(66238),e=a.i(16502),f=a.i(68114);let g=d.Root;d.Trigger;let h=d.Portal;d.Close;let i=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Overlay,{ref:e,className:(0,f.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...c}));i.displayName=d.Overlay.displayName;let j=c.forwardRef(({className:a,children:c,...g},j)=>(0,b.jsxs)(h,{children:[(0,b.jsx)(i,{}),(0,b.jsxs)(d.Content,{ref:j,className:(0,f.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-slate-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg dark:border-slate-800 dark:bg-slate-950",a),...g,children:[c,(0,b.jsxs)(d.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-slate-100 data-[state=open]:text-slate-500 dark:ring-offset-slate-950 dark:focus:ring-slate-300 dark:data-[state=open]:bg-slate-800 dark:data-[state=open]:text-slate-400",children:[(0,b.jsx)(e.X,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));j.displayName=d.Content.displayName;let k=({className:a,...c})=>(0,b.jsx)("div",{className:(0,f.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...c});k.displayName="DialogHeader";let l=c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Title,{ref:e,className:(0,f.cn)("text-lg font-semibold leading-none tracking-tight",a),...c}));l.displayName=d.Title.displayName,c.forwardRef(({className:a,...c},e)=>(0,b.jsx)(d.Description,{ref:e,className:(0,f.cn)("text-sm text-slate-500 dark:text-slate-400",a),...c})).displayName=d.Description.displayName,a.s(["Dialog",()=>g,"DialogContent",()=>j,"DialogHeader",()=>k,"DialogTitle",()=>l])},48972,a=>{"use strict";function b(a,[b,c]){return Math.min(c,Math.max(b,a))}a.s(["clamp",()=>b])},69876,a=>{"use strict";var b=a.i(9637),c=a.i(60940),d=a.i(30419),e=a.i(73490),f=a.i(95819),g=a.i(80303),h=a.i(8725),i=a.i(60380),j=a.i(18867),k=a.i(48972),l=a.i(59653),m="ScrollArea",[n,o]=(0,f.createContextScope)(m),[p,q]=n(m),r=c.forwardRef((a,e)=>{let{__scopeScrollArea:f,type:h="hover",dir:j,scrollHideDelay:k=600,...l}=a,[m,n]=c.useState(null),[o,q]=c.useState(null),[r,s]=c.useState(null),[t,u]=c.useState(null),[v,w]=c.useState(null),[x,y]=c.useState(0),[z,A]=c.useState(0),[B,C]=c.useState(!1),[D,E]=c.useState(!1),F=(0,g.useComposedRefs)(e,a=>n(a)),G=(0,i.useDirection)(j);return(0,b.jsx)(p,{scope:f,type:h,dir:G,scrollHideDelay:k,scrollArea:m,viewport:o,onViewportChange:q,content:r,onContentChange:s,scrollbarX:t,onScrollbarXChange:u,scrollbarXEnabled:B,onScrollbarXEnabledChange:C,scrollbarY:v,onScrollbarYChange:w,scrollbarYEnabled:D,onScrollbarYEnabledChange:E,onCornerWidthChange:y,onCornerHeightChange:A,children:(0,b.jsx)(d.Primitive.div,{dir:G,...l,ref:F,style:{position:"relative","--radix-scroll-area-corner-width":x+"px","--radix-scroll-area-corner-height":z+"px",...a.style}})})});r.displayName=m;var s="ScrollAreaViewport",t=c.forwardRef((a,e)=>{let{__scopeScrollArea:f,children:h,nonce:i,...j}=a,k=q(s,f),l=c.useRef(null),m=(0,g.useComposedRefs)(e,l,k.onViewportChange);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),(0,b.jsx)(d.Primitive.div,{"data-radix-scroll-area-viewport":"",...j,ref:m,style:{overflowX:k.scrollbarXEnabled?"scroll":"hidden",overflowY:k.scrollbarYEnabled?"scroll":"hidden",...a.style},children:(0,b.jsx)("div",{ref:k.onContentChange,style:{minWidth:"100%",display:"table"},children:h})})]})});t.displayName=s;var u="ScrollAreaScrollbar",v=c.forwardRef((a,d)=>{let{forceMount:e,...f}=a,g=q(u,a.__scopeScrollArea),{onScrollbarXEnabledChange:h,onScrollbarYEnabledChange:i}=g,j="horizontal"===a.orientation;return c.useEffect(()=>(j?h(!0):i(!0),()=>{j?h(!1):i(!1)}),[j,h,i]),"hover"===g.type?(0,b.jsx)(w,{...f,ref:d,forceMount:e}):"scroll"===g.type?(0,b.jsx)(x,{...f,ref:d,forceMount:e}):"auto"===g.type?(0,b.jsx)(y,{...f,ref:d,forceMount:e}):"always"===g.type?(0,b.jsx)(z,{...f,ref:d}):null});v.displayName=u;var w=c.forwardRef((a,d)=>{let{forceMount:f,...g}=a,h=q(u,a.__scopeScrollArea),[i,j]=c.useState(!1);return c.useEffect(()=>{let a=h.scrollArea,b=0;if(a){let c=()=>{window.clearTimeout(b),j(!0)},d=()=>{b=window.setTimeout(()=>j(!1),h.scrollHideDelay)};return a.addEventListener("pointerenter",c),a.addEventListener("pointerleave",d),()=>{window.clearTimeout(b),a.removeEventListener("pointerenter",c),a.removeEventListener("pointerleave",d)}}},[h.scrollArea,h.scrollHideDelay]),(0,b.jsx)(e.Presence,{present:f||i,children:(0,b.jsx)(y,{"data-state":i?"visible":"hidden",...g,ref:d})})}),x=c.forwardRef((a,d)=>{var f;let{forceMount:g,...h}=a,i=q(u,a.__scopeScrollArea),j="horizontal"===a.orientation,k=R(()=>n("SCROLL_END"),100),[m,n]=(f={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},c.useReducer((a,b)=>f[a][b]??a,"hidden"));return c.useEffect(()=>{if("idle"===m){let a=window.setTimeout(()=>n("HIDE"),i.scrollHideDelay);return()=>window.clearTimeout(a)}},[m,i.scrollHideDelay,n]),c.useEffect(()=>{let a=i.viewport,b=j?"scrollLeft":"scrollTop";if(a){let c=a[b],d=()=>{let d=a[b];c!==d&&(n("SCROLL"),k()),c=d};return a.addEventListener("scroll",d),()=>a.removeEventListener("scroll",d)}},[i.viewport,j,n,k]),(0,b.jsx)(e.Presence,{present:g||"hidden"!==m,children:(0,b.jsx)(z,{"data-state":"hidden"===m?"hidden":"visible",...h,ref:d,onPointerEnter:(0,l.composeEventHandlers)(a.onPointerEnter,()=>n("POINTER_ENTER")),onPointerLeave:(0,l.composeEventHandlers)(a.onPointerLeave,()=>n("POINTER_LEAVE"))})})}),y=c.forwardRef((a,d)=>{let f=q(u,a.__scopeScrollArea),{forceMount:g,...h}=a,[i,j]=c.useState(!1),k="horizontal"===a.orientation,l=R(()=>{if(f.viewport){let a=f.viewport.offsetWidth<f.viewport.scrollWidth,b=f.viewport.offsetHeight<f.viewport.scrollHeight;j(k?a:b)}},10);return S(f.viewport,l),S(f.content,l),(0,b.jsx)(e.Presence,{present:g||i,children:(0,b.jsx)(z,{"data-state":i?"visible":"hidden",...h,ref:d})})}),z=c.forwardRef((a,d)=>{let{orientation:e="vertical",...f}=a,g=q(u,a.__scopeScrollArea),h=c.useRef(null),i=c.useRef(0),[j,k]=c.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),l=M(j.viewport,j.content),m={...f,sizes:j,onSizesChange:k,hasThumb:!!(l>0&&l<1),onThumbChange:a=>h.current=a,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:a=>i.current=a};function n(a,b){return function(a,b,c,d="ltr"){let e=N(c),f=b||e/2,g=c.scrollbar.paddingStart+f,h=c.scrollbar.size-c.scrollbar.paddingEnd-(e-f),i=c.content-c.viewport;return P([g,h],"ltr"===d?[0,i]:[-1*i,0])(a)}(a,i.current,j,b)}return"horizontal"===e?(0,b.jsx)(A,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=O(g.viewport.scrollLeft,j,g.dir);h.current.style.transform=`translate3d(${a}px, 0, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollLeft=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollLeft=n(a,g.dir))}}):"vertical"===e?(0,b.jsx)(B,{...m,ref:d,onThumbPositionChange:()=>{if(g.viewport&&h.current){let a=O(g.viewport.scrollTop,j);h.current.style.transform=`translate3d(0, ${a}px, 0)`}},onWheelScroll:a=>{g.viewport&&(g.viewport.scrollTop=a)},onDragScroll:a=>{g.viewport&&(g.viewport.scrollTop=n(a))}}):null}),A=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...h}=a,i=q(u,a.__scopeScrollArea),[j,k]=c.useState(),l=c.useRef(null),m=(0,g.useComposedRefs)(d,l,i.onScrollbarXChange);return c.useEffect(()=>{l.current&&k(getComputedStyle(l.current))},[l]),(0,b.jsx)(E,{"data-orientation":"horizontal",...h,ref:m,sizes:e,style:{bottom:0,left:"rtl"===i.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===i.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":N(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.x),onDragScroll:b=>a.onDragScroll(b.x),onWheelScroll:(b,c)=>{if(i.viewport){var d,e;let f=i.viewport.scrollLeft+b.deltaX;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{l.current&&i.viewport&&j&&f({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:L(j.paddingLeft),paddingEnd:L(j.paddingRight)}})}})}),B=c.forwardRef((a,d)=>{let{sizes:e,onSizesChange:f,...h}=a,i=q(u,a.__scopeScrollArea),[j,k]=c.useState(),l=c.useRef(null),m=(0,g.useComposedRefs)(d,l,i.onScrollbarYChange);return c.useEffect(()=>{l.current&&k(getComputedStyle(l.current))},[l]),(0,b.jsx)(E,{"data-orientation":"vertical",...h,ref:m,sizes:e,style:{top:0,right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":N(e)+"px",...a.style},onThumbPointerDown:b=>a.onThumbPointerDown(b.y),onDragScroll:b=>a.onDragScroll(b.y),onWheelScroll:(b,c)=>{if(i.viewport){var d,e;let f=i.viewport.scrollTop+b.deltaY;a.onWheelScroll(f),d=f,e=c,d>0&&d<e&&b.preventDefault()}},onResize:()=>{l.current&&i.viewport&&j&&f({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:L(j.paddingTop),paddingEnd:L(j.paddingBottom)}})}})}),[C,D]=n(u),E=c.forwardRef((a,e)=>{let{__scopeScrollArea:f,sizes:i,hasThumb:j,onThumbChange:k,onThumbPointerUp:m,onThumbPointerDown:n,onThumbPositionChange:o,onDragScroll:p,onWheelScroll:r,onResize:s,...t}=a,v=q(u,f),[w,x]=c.useState(null),y=(0,g.useComposedRefs)(e,a=>x(a)),z=c.useRef(null),A=c.useRef(""),B=v.viewport,D=i.content-i.viewport,E=(0,h.useCallbackRef)(r),F=(0,h.useCallbackRef)(o),G=R(s,10);function H(a){z.current&&p({x:a.clientX-z.current.left,y:a.clientY-z.current.top})}return c.useEffect(()=>{let a=a=>{let b=a.target;w?.contains(b)&&E(a,D)};return document.addEventListener("wheel",a,{passive:!1}),()=>document.removeEventListener("wheel",a,{passive:!1})},[B,w,D,E]),c.useEffect(F,[i,F]),S(w,G),S(v.content,G),(0,b.jsx)(C,{scope:f,scrollbar:w,hasThumb:j,onThumbChange:(0,h.useCallbackRef)(k),onThumbPointerUp:(0,h.useCallbackRef)(m),onThumbPositionChange:F,onThumbPointerDown:(0,h.useCallbackRef)(n),children:(0,b.jsx)(d.Primitive.div,{...t,ref:y,style:{position:"absolute",...t.style},onPointerDown:(0,l.composeEventHandlers)(a.onPointerDown,a=>{0===a.button&&(a.target.setPointerCapture(a.pointerId),z.current=w.getBoundingClientRect(),A.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",v.viewport&&(v.viewport.style.scrollBehavior="auto"),H(a))}),onPointerMove:(0,l.composeEventHandlers)(a.onPointerMove,H),onPointerUp:(0,l.composeEventHandlers)(a.onPointerUp,a=>{let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),document.body.style.webkitUserSelect=A.current,v.viewport&&(v.viewport.style.scrollBehavior=""),z.current=null})})})}),F="ScrollAreaThumb",G=c.forwardRef((a,c)=>{let{forceMount:d,...f}=a,g=D(F,a.__scopeScrollArea);return(0,b.jsx)(e.Presence,{present:d||g.hasThumb,children:(0,b.jsx)(H,{ref:c,...f})})}),H=c.forwardRef((a,e)=>{let{__scopeScrollArea:f,style:h,...i}=a,j=q(F,f),k=D(F,f),{onThumbPositionChange:m}=k,n=(0,g.useComposedRefs)(e,a=>k.onThumbChange(a)),o=c.useRef(void 0),p=R(()=>{o.current&&(o.current(),o.current=void 0)},100);return c.useEffect(()=>{let a=j.viewport;if(a){let b=()=>{p(),o.current||(o.current=Q(a,m),m())};return m(),a.addEventListener("scroll",b),()=>a.removeEventListener("scroll",b)}},[j.viewport,p,m]),(0,b.jsx)(d.Primitive.div,{"data-state":k.hasThumb?"visible":"hidden",...i,ref:n,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...h},onPointerDownCapture:(0,l.composeEventHandlers)(a.onPointerDownCapture,a=>{let b=a.target.getBoundingClientRect(),c=a.clientX-b.left,d=a.clientY-b.top;k.onThumbPointerDown({x:c,y:d})}),onPointerUp:(0,l.composeEventHandlers)(a.onPointerUp,k.onThumbPointerUp)})});G.displayName=F;var I="ScrollAreaCorner",J=c.forwardRef((a,c)=>{let d=q(I,a.__scopeScrollArea),e=!!(d.scrollbarX&&d.scrollbarY);return"scroll"!==d.type&&e?(0,b.jsx)(K,{...a,ref:c}):null});J.displayName=I;var K=c.forwardRef((a,e)=>{let{__scopeScrollArea:f,...g}=a,h=q(I,f),[i,j]=c.useState(0),[k,l]=c.useState(0),m=!!(i&&k);return S(h.scrollbarX,()=>{let a=h.scrollbarX?.offsetHeight||0;h.onCornerHeightChange(a),l(a)}),S(h.scrollbarY,()=>{let a=h.scrollbarY?.offsetWidth||0;h.onCornerWidthChange(a),j(a)}),m?(0,b.jsx)(d.Primitive.div,{...g,ref:e,style:{width:i,height:k,position:"absolute",right:"ltr"===h.dir?0:void 0,left:"rtl"===h.dir?0:void 0,bottom:0,...a.style}}):null});function L(a){return a?parseInt(a,10):0}function M(a,b){let c=a/b;return isNaN(c)?0:c}function N(a){let b=M(a.viewport,a.content),c=a.scrollbar.paddingStart+a.scrollbar.paddingEnd;return Math.max((a.scrollbar.size-c)*b,18)}function O(a,b,c="ltr"){let d=N(b),e=b.scrollbar.paddingStart+b.scrollbar.paddingEnd,f=b.scrollbar.size-e,g=b.content-b.viewport,h=(0,k.clamp)(a,"ltr"===c?[0,g]:[-1*g,0]);return P([0,g],[0,f-d])(h)}function P(a,b){return c=>{if(a[0]===a[1]||b[0]===b[1])return b[0];let d=(b[1]-b[0])/(a[1]-a[0]);return b[0]+d*(c-a[0])}}var Q=(a,b=()=>{})=>{let c={left:a.scrollLeft,top:a.scrollTop},d=0;return!function e(){let f={left:a.scrollLeft,top:a.scrollTop},g=c.left!==f.left,h=c.top!==f.top;(g||h)&&b(),c=f,d=window.requestAnimationFrame(e)}(),()=>window.cancelAnimationFrame(d)};function R(a,b){let d=(0,h.useCallbackRef)(a),e=c.useRef(0);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),c.useCallback(()=>{window.clearTimeout(e.current),e.current=window.setTimeout(d,b)},[d,b])}function S(a,b){let c=(0,h.useCallbackRef)(b);(0,j.useLayoutEffect)(()=>{let b=0;if(a){let d=new ResizeObserver(()=>{cancelAnimationFrame(b),b=window.requestAnimationFrame(c)});return d.observe(a),()=>{window.cancelAnimationFrame(b),d.unobserve(a)}}},[a,c])}var T=a.i(68114);let U=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(r,{ref:e,className:(0,T.cn)("relative overflow-hidden",a),...d,children:[(0,b.jsx)(t,{className:"h-full w-full rounded-[inherit]",children:c}),(0,b.jsx)(V,{}),(0,b.jsx)(J,{})]}));U.displayName=r.displayName;let V=c.forwardRef(({className:a,orientation:c="vertical",...d},e)=>(0,b.jsx)(v,{ref:e,orientation:c,className:(0,T.cn)("flex touch-none select-none transition-colors","vertical"===c&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===c&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",a),...d,children:(0,b.jsx)(G,{className:"relative flex-1 rounded-full bg-slate-200 dark:bg-slate-800"})}));V.displayName=v.displayName,a.s(["ScrollArea",()=>U],69876)},52260,a=>{"use strict";let b=(0,a.i(33214).default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",()=>b],52260)},77468,a=>{"use strict";var b=a.i(9637),c=a.i(60940),d=a.i(14879),e=a.i(52260),f=a.i(68114),g=a.i(14574),h=a.i(99570),i=a.i(66718),j=a.i(69876),k=a.i(94194);function l({open:a,onOpenChange:l,rootParam:m,onDocCreated:n}){let[o,p]=(0,c.useState)(1),[q,r]=(0,c.useState)(null),[s,t]=(0,c.useState)(""),[u,v]=(0,c.useState)(""),[w,x]=(0,c.useState)(!1);async function y(){if(q&&s.trim()){v(""),x(!0);try{let a=await fetch(`/api/docs${m}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:s.trim(),content:q.content})});if(409===a.status){v("File already exists"),x(!1);return}if(!a.ok){let b=await a.json();v(b.error||"Failed to create file"),x(!1);return}l(!1),n(s.trim())}catch{v("Network error"),x(!1)}}}return(0,c.useEffect)(()=>{a&&(p(1),r(null),t(""),v(""),x(!1))},[a]),(0,b.jsx)(g.Dialog,{open:a,onOpenChange:l,children:(0,b.jsxs)(g.DialogContent,{className:"max-w-2xl bg-surface border-border",children:[(0,b.jsx)(g.DialogHeader,{children:(0,b.jsx)(g.DialogTitle,{className:"text-txt text-sm font-semibold",children:1===o?"Choose a template":"Confirm file path"})}),1===o&&(0,b.jsx)(j.ScrollArea,{className:"max-h-[420px]",children:(0,b.jsx)("div",{className:"grid grid-cols-3 gap-2 p-1",children:k.TEMPLATES.map(a=>(0,b.jsxs)("button",{onClick:()=>{r(a),t(a.defaultPath),v(""),p(2)},className:(0,f.cn)("flex flex-col items-start gap-1.5 p-3 rounded-lg border border-border text-left","bg-surface2 hover:bg-surface2/80 hover:border-accent/50 transition-colors"),children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(d.FileText,{className:"h-3.5 w-3.5 text-accent shrink-0"}),(0,b.jsx)("span",{className:"text-xs font-medium text-txt",children:a.name})]}),(0,b.jsx)("p",{className:"text-[11px] text-muted leading-relaxed",children:a.description}),(0,b.jsx)("p",{className:"text-[10px] text-muted/60 font-mono truncate w-full",children:a.defaultPath})]},a.id))})}),2===o&&q&&(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-start gap-3 p-3 rounded-lg bg-surface2 border border-border",children:[(0,b.jsx)(d.FileText,{className:"h-4 w-4 text-accent shrink-0 mt-0.5"}),(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"text-xs font-medium text-txt",children:q.name}),(0,b.jsx)("p",{className:"text-[11px] text-muted mt-0.5",children:q.description})]})]}),(0,b.jsxs)("div",{className:"space-y-1.5",children:[(0,b.jsx)("label",{className:"text-[11px] font-medium text-muted uppercase tracking-wider",children:"File path"}),(0,b.jsx)(i.Input,{autoFocus:!0,value:s,onChange:a=>{t(a.target.value),v("")},onKeyDown:a=>{"Enter"===a.key&&y()},placeholder:"docs/my-document.md",className:"h-8 text-xs bg-surface2 border-border font-mono"}),u&&(0,b.jsx)("p",{className:"text-[11px] text-red-400",children:u})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between pt-1",children:[(0,b.jsxs)(h.Button,{variant:"ghost",size:"sm",onClick:()=>p(1),className:"h-7 text-xs text-muted hover:text-txt gap-1.5",children:[(0,b.jsx)(e.ArrowLeft,{className:"h-3 w-3"}),"Back"]}),(0,b.jsx)(h.Button,{size:"sm",onClick:y,disabled:w||!s.trim(),className:"h-7 text-xs bg-accent hover:bg-accent/90 text-white",children:w?"Creating…":"Create"})]})]})]})})}a.s(["NewDocModal",()=>l])}];
6
-
7
- //# sourceMappingURL=_c022dd84._.js.map