@tyroneross/navgator 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/dist/cli/index.js +1 -1
  2. package/package.json +1 -1
  3. package/web/.next/standalone/web/.next/BUILD_ID +1 -0
  4. package/web/.next/standalone/web/.next/app-path-routes-manifest.json +13 -0
  5. package/web/.next/standalone/web/.next/build-manifest.json +20 -0
  6. package/web/.next/standalone/web/.next/package.json +1 -0
  7. package/web/.next/standalone/web/.next/prerender-manifest.json +88 -0
  8. package/web/.next/standalone/web/.next/required-server-files.json +317 -0
  9. package/web/.next/standalone/web/.next/routes-manifest.json +110 -0
  10. package/web/.next/standalone/web/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  11. package/web/.next/standalone/web/.next/server/app/_global-error/page/build-manifest.json +17 -0
  12. package/web/.next/standalone/web/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  13. package/web/.next/standalone/web/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  14. package/web/.next/standalone/web/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  15. package/web/.next/standalone/web/.next/server/app/_global-error/page.js +10 -0
  16. package/web/.next/standalone/web/.next/server/app/_global-error/page.js.map +5 -0
  17. package/web/.next/standalone/web/.next/server/app/_global-error/page.js.nft.json +1 -0
  18. package/web/.next/standalone/web/.next/server/app/_global-error/page_client-reference-manifest.js +2 -0
  19. package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -0
  20. package/web/.next/standalone/web/.next/server/app/_global-error.meta +15 -0
  21. package/web/.next/standalone/web/.next/server/app/_global-error.rsc +12 -0
  22. package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  23. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +12 -0
  24. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +7 -0
  25. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +4 -0
  26. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  27. package/web/.next/standalone/web/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  28. package/web/.next/standalone/web/.next/server/app/_not-found/page/build-manifest.json +17 -0
  29. package/web/.next/standalone/web/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  30. package/web/.next/standalone/web/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  31. package/web/.next/standalone/web/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  32. package/web/.next/standalone/web/.next/server/app/_not-found/page.js +13 -0
  33. package/web/.next/standalone/web/.next/server/app/_not-found/page.js.map +5 -0
  34. package/web/.next/standalone/web/.next/server/app/_not-found/page.js.nft.json +1 -0
  35. package/web/.next/standalone/web/.next/server/app/_not-found/page_client-reference-manifest.js +2 -0
  36. package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -0
  37. package/web/.next/standalone/web/.next/server/app/_not-found.meta +16 -0
  38. package/web/.next/standalone/web/.next/server/app/_not-found.rsc +17 -0
  39. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +17 -0
  40. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +8 -0
  41. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +8 -0
  42. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  43. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -0
  44. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -0
  45. package/web/.next/standalone/web/.next/server/app/api/components/route/app-paths-manifest.json +3 -0
  46. package/web/.next/standalone/web/.next/server/app/api/components/route/build-manifest.json +11 -0
  47. package/web/.next/standalone/web/.next/server/app/api/components/route/server-reference-manifest.json +4 -0
  48. package/web/.next/standalone/web/.next/server/app/api/components/route.js +6 -0
  49. package/web/.next/standalone/web/.next/server/app/api/components/route.js.map +5 -0
  50. package/web/.next/standalone/web/.next/server/app/api/components/route.js.nft.json +1 -0
  51. package/web/.next/standalone/web/.next/server/app/api/components/route_client-reference-manifest.js +2 -0
  52. package/web/.next/standalone/web/.next/server/app/api/connections/route/app-paths-manifest.json +3 -0
  53. package/web/.next/standalone/web/.next/server/app/api/connections/route/build-manifest.json +11 -0
  54. package/web/.next/standalone/web/.next/server/app/api/connections/route/server-reference-manifest.json +4 -0
  55. package/web/.next/standalone/web/.next/server/app/api/connections/route.js +6 -0
  56. package/web/.next/standalone/web/.next/server/app/api/connections/route.js.map +5 -0
  57. package/web/.next/standalone/web/.next/server/app/api/connections/route.js.nft.json +1 -0
  58. package/web/.next/standalone/web/.next/server/app/api/connections/route_client-reference-manifest.js +2 -0
  59. package/web/.next/standalone/web/.next/server/app/api/graph/route/app-paths-manifest.json +3 -0
  60. package/web/.next/standalone/web/.next/server/app/api/graph/route/build-manifest.json +11 -0
  61. package/web/.next/standalone/web/.next/server/app/api/graph/route/server-reference-manifest.json +4 -0
  62. package/web/.next/standalone/web/.next/server/app/api/graph/route.js +6 -0
  63. package/web/.next/standalone/web/.next/server/app/api/graph/route.js.map +5 -0
  64. package/web/.next/standalone/web/.next/server/app/api/graph/route.js.nft.json +1 -0
  65. package/web/.next/standalone/web/.next/server/app/api/graph/route_client-reference-manifest.js +2 -0
  66. package/web/.next/standalone/web/.next/server/app/api/projects/route/app-paths-manifest.json +3 -0
  67. package/web/.next/standalone/web/.next/server/app/api/projects/route/build-manifest.json +11 -0
  68. package/web/.next/standalone/web/.next/server/app/api/projects/route/server-reference-manifest.json +4 -0
  69. package/web/.next/standalone/web/.next/server/app/api/projects/route.js +6 -0
  70. package/web/.next/standalone/web/.next/server/app/api/projects/route.js.map +5 -0
  71. package/web/.next/standalone/web/.next/server/app/api/projects/route.js.nft.json +1 -0
  72. package/web/.next/standalone/web/.next/server/app/api/projects/route_client-reference-manifest.js +2 -0
  73. package/web/.next/standalone/web/.next/server/app/api/prompts/route/app-paths-manifest.json +3 -0
  74. package/web/.next/standalone/web/.next/server/app/api/prompts/route/build-manifest.json +11 -0
  75. package/web/.next/standalone/web/.next/server/app/api/prompts/route/server-reference-manifest.json +4 -0
  76. package/web/.next/standalone/web/.next/server/app/api/prompts/route.js +7 -0
  77. package/web/.next/standalone/web/.next/server/app/api/prompts/route.js.map +5 -0
  78. package/web/.next/standalone/web/.next/server/app/api/prompts/route.js.nft.json +1 -0
  79. package/web/.next/standalone/web/.next/server/app/api/prompts/route_client-reference-manifest.js +2 -0
  80. package/web/.next/standalone/web/.next/server/app/api/scan/route/app-paths-manifest.json +3 -0
  81. package/web/.next/standalone/web/.next/server/app/api/scan/route/build-manifest.json +11 -0
  82. package/web/.next/standalone/web/.next/server/app/api/scan/route/server-reference-manifest.json +4 -0
  83. package/web/.next/standalone/web/.next/server/app/api/scan/route.js +6 -0
  84. package/web/.next/standalone/web/.next/server/app/api/scan/route.js.map +5 -0
  85. package/web/.next/standalone/web/.next/server/app/api/scan/route.js.nft.json +1 -0
  86. package/web/.next/standalone/web/.next/server/app/api/scan/route_client-reference-manifest.js +2 -0
  87. package/web/.next/standalone/web/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
  88. package/web/.next/standalone/web/.next/server/app/api/settings/route/build-manifest.json +11 -0
  89. package/web/.next/standalone/web/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
  90. package/web/.next/standalone/web/.next/server/app/api/settings/route.js +6 -0
  91. package/web/.next/standalone/web/.next/server/app/api/settings/route.js.map +5 -0
  92. package/web/.next/standalone/web/.next/server/app/api/settings/route.js.nft.json +1 -0
  93. package/web/.next/standalone/web/.next/server/app/api/settings/route_client-reference-manifest.js +2 -0
  94. package/web/.next/standalone/web/.next/server/app/api/status/route/app-paths-manifest.json +3 -0
  95. package/web/.next/standalone/web/.next/server/app/api/status/route/build-manifest.json +11 -0
  96. package/web/.next/standalone/web/.next/server/app/api/status/route/server-reference-manifest.json +4 -0
  97. package/web/.next/standalone/web/.next/server/app/api/status/route.js +6 -0
  98. package/web/.next/standalone/web/.next/server/app/api/status/route.js.map +5 -0
  99. package/web/.next/standalone/web/.next/server/app/api/status/route.js.nft.json +1 -0
  100. package/web/.next/standalone/web/.next/server/app/api/status/route_client-reference-manifest.js +2 -0
  101. package/web/.next/standalone/web/.next/server/app/index.html +1 -0
  102. package/web/.next/standalone/web/.next/server/app/index.meta +14 -0
  103. package/web/.next/standalone/web/.next/server/app/index.rsc +23 -0
  104. package/web/.next/standalone/web/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -0
  105. package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +23 -0
  106. package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +8 -0
  107. package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +8 -0
  108. package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +5 -0
  109. package/web/.next/standalone/web/.next/server/app/page/app-paths-manifest.json +3 -0
  110. package/web/.next/standalone/web/.next/server/app/page/build-manifest.json +17 -0
  111. package/web/.next/standalone/web/.next/server/app/page/next-font-manifest.json +11 -0
  112. package/web/.next/standalone/web/.next/server/app/page/react-loadable-manifest.json +1 -0
  113. package/web/.next/standalone/web/.next/server/app/page/server-reference-manifest.json +4 -0
  114. package/web/.next/standalone/web/.next/server/app/page.js +15 -0
  115. package/web/.next/standalone/web/.next/server/app/page.js.map +5 -0
  116. package/web/.next/standalone/web/.next/server/app/page.js.nft.json +1 -0
  117. package/web/.next/standalone/web/.next/server/app/page_client-reference-manifest.js +2 -0
  118. package/web/.next/standalone/web/.next/server/app-paths-manifest.json +13 -0
  119. package/web/.next/standalone/web/.next/server/chunks/2374f_next_dist_esm_build_templates_app-route_0bb4e66a.js +19 -0
  120. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__006b837d._.js +3 -0
  121. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__1ab91221._.js +3 -0
  122. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__2e09fec9._.js +3 -0
  123. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__38d0390f._.js +3 -0
  124. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__539ef30d._.js +3 -0
  125. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__594bcf20._.js +3 -0
  126. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__b888fadf._.js +3 -0
  127. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__f3450c22._.js +21 -0
  128. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__fa2ec862._.js +3 -0
  129. package/web/.next/standalone/web/.next/server/chunks/[turbopack]_runtime.js +770 -0
  130. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_e6039567._.js +6 -0
  131. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_09351209._.js +6 -0
  132. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_222be7ae._.js +6 -0
  133. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_2346e1b3._.js +3 -0
  134. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_cec86455._.js +4 -0
  135. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_client_components_9c5d1a14._.js +3 -0
  136. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_client_components_builtin_forbidden_8eae0c85.js +3 -0
  137. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_client_components_builtin_global-error_81159d60.js +3 -0
  138. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_client_components_builtin_unauthorized_7d34a31c.js +3 -0
  139. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_e03afa0e._.js +3 -0
  140. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_esm_build_templates_app-page_2c8d71b9.js +4 -0
  141. package/web/.next/standalone/web/.next/server/chunks/ssr/2374f_next_dist_server_route-modules_app-page_vendored_ssr_react-dom_8910f04c.js +3 -0
  142. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__1a0663e6._.js +3 -0
  143. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__4306eafc._.js +3 -0
  144. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__44903626._.js +3 -0
  145. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__60278e3f._.js +3 -0
  146. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__61942f24._.js +4 -0
  147. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__8c45c3c9._.js +3 -0
  148. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__9a2f110d._.js +3 -0
  149. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__ed07bd88._.js +3 -0
  150. package/web/.next/standalone/web/.next/server/chunks/ssr/[root-of-the-server]__f2db61af._.js +3 -0
  151. package/web/.next/standalone/web/.next/server/chunks/ssr/[turbopack]_runtime.js +770 -0
  152. package/web/.next/standalone/web/.next/server/chunks/ssr/web_0103e631._.js +4 -0
  153. package/web/.next/standalone/web/.next/server/chunks/ssr/web_171de0df._.js +14 -0
  154. package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app__global-error_page_actions_2a1e94d4.js +3 -0
  155. package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app__not-found_page_actions_9eaa9845.js +3 -0
  156. package/web/.next/standalone/web/.next/server/chunks/ssr/web__next-internal_server_app_page_actions_ec26bf28.js +3 -0
  157. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_components_route_actions_c88bf2a6.js +3 -0
  158. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_connections_route_actions_b1d5e95a.js +3 -0
  159. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_graph_route_actions_e2dd052c.js +3 -0
  160. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_projects_route_actions_3f671cbb.js +3 -0
  161. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_prompts_route_actions_85b56166.js +3 -0
  162. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_scan_route_actions_861cde8d.js +3 -0
  163. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_settings_route_actions_e19026ae.js +3 -0
  164. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_status_route_actions_8b8c6c89.js +3 -0
  165. package/web/.next/standalone/web/.next/server/functions-config-manifest.json +4 -0
  166. package/web/.next/standalone/web/.next/server/middleware-build-manifest.js +21 -0
  167. package/web/.next/standalone/web/.next/server/middleware-manifest.json +6 -0
  168. package/web/.next/standalone/web/.next/server/next-font-manifest.js +1 -0
  169. package/web/.next/standalone/web/.next/server/next-font-manifest.json +15 -0
  170. package/web/.next/standalone/web/.next/server/pages/404.html +1 -0
  171. package/web/.next/standalone/web/.next/server/pages/500.html +2 -0
  172. package/web/.next/standalone/web/.next/server/pages-manifest.json +4 -0
  173. package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -0
  174. package/web/.next/standalone/web/.next/server/server-reference-manifest.json +5 -0
  175. package/web/.next/standalone/web/.next/static/WH0NvTGUEDs9QVUjcPJKx/_buildManifest.js +11 -0
  176. package/web/.next/standalone/web/.next/static/WH0NvTGUEDs9QVUjcPJKx/_clientMiddlewareManifest.json +1 -0
  177. package/web/.next/standalone/web/.next/static/WH0NvTGUEDs9QVUjcPJKx/_ssgManifest.js +1 -0
  178. package/web/.next/standalone/web/.next/static/chunks/062ae79751df2759.js +1 -0
  179. package/web/.next/standalone/web/.next/static/chunks/159889e17b2cf1f8.js +2 -0
  180. package/web/.next/standalone/web/.next/static/chunks/458d6f37339fc069.js +1 -0
  181. package/web/.next/standalone/web/.next/static/chunks/6d3d39425a878d7f.js +1 -0
  182. package/web/.next/standalone/web/.next/static/chunks/8a80e7184ad3a13f.css +2 -0
  183. package/web/.next/standalone/web/.next/static/chunks/a6dad97d9634a72d.js +1 -0
  184. package/web/.next/standalone/web/.next/static/chunks/c056475f5f4424b6.css +1 -0
  185. package/web/.next/standalone/web/.next/static/chunks/c57fee8cce8d7cb9.js +1 -0
  186. package/web/.next/standalone/web/.next/static/chunks/cb3513192b63e480.js +12 -0
  187. package/web/.next/standalone/web/.next/static/chunks/dd22b5f2beb2cc31.js +1 -0
  188. package/web/.next/standalone/web/.next/static/chunks/e0affeef0ddb9a97.js +4 -0
  189. package/web/.next/standalone/web/.next/static/chunks/f74a6859e1c4d5e3.js +1 -0
  190. package/web/.next/standalone/web/.next/static/chunks/turbopack-c0c89f9e6f0a38c4.js +3 -0
  191. package/web/.next/standalone/web/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  192. package/web/.next/standalone/web/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  193. package/web/.next/standalone/web/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  194. package/web/.next/standalone/web/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  195. package/web/.next/standalone/web/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  196. package/web/.next/standalone/web/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  197. package/web/.next/standalone/web/app/api/components/route.ts +252 -0
  198. package/web/.next/standalone/web/app/api/connections/route.ts +319 -0
  199. package/web/.next/standalone/web/app/api/graph/route.ts +235 -0
  200. package/web/.next/standalone/web/app/api/projects/route.ts +221 -0
  201. package/web/.next/standalone/web/app/api/prompts/route.ts +328 -0
  202. package/web/.next/standalone/web/app/api/scan/route.ts +108 -0
  203. package/web/.next/standalone/web/app/api/settings/route.ts +198 -0
  204. package/web/.next/standalone/web/app/api/status/route.ts +169 -0
  205. package/web/.next/standalone/web/app/globals.css +99 -0
  206. package/web/.next/standalone/web/app/layout.tsx +49 -0
  207. package/web/.next/standalone/web/app/page.tsx +94 -0
  208. package/web/.next/standalone/web/components/components-panel.tsx +240 -0
  209. package/web/.next/standalone/web/components/connections-panel.tsx +220 -0
  210. package/web/.next/standalone/web/components/diagram-view.tsx +735 -0
  211. package/web/.next/standalone/web/components/header.tsx +225 -0
  212. package/web/.next/standalone/web/components/impact-analysis.tsx +358 -0
  213. package/web/.next/standalone/web/components/llm-tracking-panel.tsx +1483 -0
  214. package/web/.next/standalone/web/components/settings-panel.tsx +671 -0
  215. package/web/.next/standalone/web/components/sidebar.tsx +74 -0
  216. package/web/.next/standalone/web/components/status-overview.tsx +326 -0
  217. package/web/.next/standalone/web/components/theme-provider.tsx +11 -0
  218. package/web/.next/standalone/web/components/ui/accordion.tsx +66 -0
  219. package/web/.next/standalone/web/components/ui/alert-dialog.tsx +157 -0
  220. package/web/.next/standalone/web/components/ui/alert.tsx +66 -0
  221. package/web/.next/standalone/web/components/ui/aspect-ratio.tsx +11 -0
  222. package/web/.next/standalone/web/components/ui/avatar.tsx +53 -0
  223. package/web/.next/standalone/web/components/ui/badge.tsx +46 -0
  224. package/web/.next/standalone/web/components/ui/breadcrumb.tsx +109 -0
  225. package/web/.next/standalone/web/components/ui/button-group.tsx +83 -0
  226. package/web/.next/standalone/web/components/ui/button.tsx +60 -0
  227. package/web/.next/standalone/web/components/ui/calendar.tsx +213 -0
  228. package/web/.next/standalone/web/components/ui/card.tsx +92 -0
  229. package/web/.next/standalone/web/components/ui/carousel.tsx +241 -0
  230. package/web/.next/standalone/web/components/ui/chart.tsx +353 -0
  231. package/web/.next/standalone/web/components/ui/checkbox.tsx +32 -0
  232. package/web/.next/standalone/web/components/ui/collapsible.tsx +33 -0
  233. package/web/.next/standalone/web/components/ui/command.tsx +184 -0
  234. package/web/.next/standalone/web/components/ui/context-menu.tsx +252 -0
  235. package/web/.next/standalone/web/components/ui/dialog.tsx +143 -0
  236. package/web/.next/standalone/web/components/ui/drawer.tsx +135 -0
  237. package/web/.next/standalone/web/components/ui/dropdown-menu.tsx +257 -0
  238. package/web/.next/standalone/web/components/ui/empty.tsx +104 -0
  239. package/web/.next/standalone/web/components/ui/field.tsx +244 -0
  240. package/web/.next/standalone/web/components/ui/form.tsx +167 -0
  241. package/web/.next/standalone/web/components/ui/hover-card.tsx +44 -0
  242. package/web/.next/standalone/web/components/ui/input-group.tsx +169 -0
  243. package/web/.next/standalone/web/components/ui/input-otp.tsx +77 -0
  244. package/web/.next/standalone/web/components/ui/input.tsx +21 -0
  245. package/web/.next/standalone/web/components/ui/item.tsx +193 -0
  246. package/web/.next/standalone/web/components/ui/kbd.tsx +28 -0
  247. package/web/.next/standalone/web/components/ui/label.tsx +24 -0
  248. package/web/.next/standalone/web/components/ui/menubar.tsx +276 -0
  249. package/web/.next/standalone/web/components/ui/navigation-menu.tsx +166 -0
  250. package/web/.next/standalone/web/components/ui/pagination.tsx +127 -0
  251. package/web/.next/standalone/web/components/ui/popover.tsx +48 -0
  252. package/web/.next/standalone/web/components/ui/progress.tsx +31 -0
  253. package/web/.next/standalone/web/components/ui/radio-group.tsx +45 -0
  254. package/web/.next/standalone/web/components/ui/resizable.tsx +56 -0
  255. package/web/.next/standalone/web/components/ui/scroll-area.tsx +58 -0
  256. package/web/.next/standalone/web/components/ui/select.tsx +185 -0
  257. package/web/.next/standalone/web/components/ui/separator.tsx +28 -0
  258. package/web/.next/standalone/web/components/ui/sheet.tsx +139 -0
  259. package/web/.next/standalone/web/components/ui/sidebar.tsx +726 -0
  260. package/web/.next/standalone/web/components/ui/skeleton.tsx +13 -0
  261. package/web/.next/standalone/web/components/ui/slider.tsx +63 -0
  262. package/web/.next/standalone/web/components/ui/sonner.tsx +25 -0
  263. package/web/.next/standalone/web/components/ui/spinner.tsx +16 -0
  264. package/web/.next/standalone/web/components/ui/switch.tsx +31 -0
  265. package/web/.next/standalone/web/components/ui/table.tsx +116 -0
  266. package/web/.next/standalone/web/components/ui/tabs.tsx +66 -0
  267. package/web/.next/standalone/web/components/ui/textarea.tsx +18 -0
  268. package/web/.next/standalone/web/components/ui/toast.tsx +129 -0
  269. package/web/.next/standalone/web/components/ui/toaster.tsx +35 -0
  270. package/web/.next/standalone/web/components/ui/toggle-group.tsx +73 -0
  271. package/web/.next/standalone/web/components/ui/toggle.tsx +47 -0
  272. package/web/.next/standalone/web/components/ui/tooltip.tsx +61 -0
  273. package/web/.next/standalone/web/components/ui/use-mobile.tsx +19 -0
  274. package/web/.next/standalone/web/components/ui/use-toast.ts +191 -0
  275. package/web/.next/standalone/web/components.json +21 -0
  276. package/web/.next/standalone/web/hooks/use-mobile.ts +19 -0
  277. package/web/.next/standalone/web/hooks/use-toast.ts +191 -0
  278. package/web/.next/standalone/web/lib/hooks/index.ts +8 -0
  279. package/web/.next/standalone/web/lib/hooks/use-components.ts +83 -0
  280. package/web/.next/standalone/web/lib/hooks/use-connections.ts +83 -0
  281. package/web/.next/standalone/web/lib/hooks/use-projects.ts +116 -0
  282. package/web/.next/standalone/web/lib/hooks/use-prompts.ts +122 -0
  283. package/web/.next/standalone/web/lib/hooks/use-settings.ts +135 -0
  284. package/web/.next/standalone/web/lib/hooks/use-status.ts +80 -0
  285. package/web/.next/standalone/web/lib/project-context.tsx +46 -0
  286. package/web/.next/standalone/web/lib/transform.ts +625 -0
  287. package/web/.next/standalone/web/lib/types.ts +198 -0
  288. package/web/.next/standalone/web/lib/utils.ts +6 -0
  289. package/web/.next/standalone/web/next.config.mjs +12 -0
  290. package/web/.next/standalone/web/package-lock.json +3987 -0
  291. package/web/.next/standalone/web/package.json +73 -0
  292. package/web/.next/standalone/web/pnpm-lock.yaml +5 -0
  293. package/web/.next/standalone/web/postcss.config.mjs +8 -0
  294. package/web/.next/standalone/web/public/apple-icon.png +0 -0
  295. package/web/.next/standalone/web/public/icon-dark-32x32.png +0 -0
  296. package/web/.next/standalone/web/public/icon-light-32x32.png +0 -0
  297. package/web/.next/standalone/web/public/icon.svg +26 -0
  298. package/web/.next/standalone/web/public/navgator-logo.png +0 -0
  299. package/web/.next/standalone/web/public/placeholder-logo.png +0 -0
  300. package/web/.next/standalone/web/public/placeholder-logo.svg +1 -0
  301. package/web/.next/standalone/web/public/placeholder-user.jpg +0 -0
  302. package/web/.next/standalone/web/public/placeholder.jpg +0 -0
  303. package/web/.next/standalone/web/public/placeholder.svg +1 -0
  304. package/web/.next/standalone/web/public/public/apple-icon.png +0 -0
  305. package/web/.next/standalone/web/public/public/icon-dark-32x32.png +0 -0
  306. package/web/.next/standalone/web/public/public/icon-light-32x32.png +0 -0
  307. package/web/.next/standalone/web/public/public/icon.svg +26 -0
  308. package/web/.next/standalone/web/public/public/navgator-logo.png +0 -0
  309. package/web/.next/standalone/web/public/public/placeholder-logo.png +0 -0
  310. package/web/.next/standalone/web/public/public/placeholder-logo.svg +1 -0
  311. package/web/.next/standalone/web/public/public/placeholder-user.jpg +0 -0
  312. package/web/.next/standalone/web/public/public/placeholder.jpg +0 -0
  313. package/web/.next/standalone/web/public/public/placeholder.svg +1 -0
  314. package/web/.next/standalone/web/server.js +38 -0
  315. package/web/.next/standalone/web/styles/globals.css +125 -0
  316. package/web/.next/standalone/web/tsconfig.json +41 -0
  317. package/web/.next/static/WH0NvTGUEDs9QVUjcPJKx/_buildManifest.js +11 -0
  318. package/web/.next/static/WH0NvTGUEDs9QVUjcPJKx/_clientMiddlewareManifest.json +1 -0
  319. package/web/.next/static/WH0NvTGUEDs9QVUjcPJKx/_ssgManifest.js +1 -0
  320. package/web/.next/static/chunks/062ae79751df2759.js +1 -0
  321. package/web/.next/static/chunks/159889e17b2cf1f8.js +2 -0
  322. package/web/.next/static/chunks/458d6f37339fc069.js +1 -0
  323. package/web/.next/static/chunks/6d3d39425a878d7f.js +1 -0
  324. package/web/.next/static/chunks/8a80e7184ad3a13f.css +2 -0
  325. package/web/.next/static/chunks/a6dad97d9634a72d.js +1 -0
  326. package/web/.next/static/chunks/c056475f5f4424b6.css +1 -0
  327. package/web/.next/static/chunks/c57fee8cce8d7cb9.js +1 -0
  328. package/web/.next/static/chunks/cb3513192b63e480.js +12 -0
  329. package/web/.next/static/chunks/dd22b5f2beb2cc31.js +1 -0
  330. package/web/.next/static/chunks/e0affeef0ddb9a97.js +4 -0
  331. package/web/.next/static/chunks/f74a6859e1c4d5e3.js +1 -0
  332. package/web/.next/static/chunks/turbopack-c0c89f9e6f0a38c4.js +3 -0
  333. package/web/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  334. package/web/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  335. package/web/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  336. package/web/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  337. package/web/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  338. package/web/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
@@ -0,0 +1,74 @@
1
+ "use client"
2
+
3
+ import {
4
+ LayoutDashboard,
5
+ Boxes,
6
+ GitBranch,
7
+ Target,
8
+ Share2,
9
+ Settings,
10
+ Brain,
11
+ } from "lucide-react"
12
+ import { cn } from "@/lib/utils"
13
+ import type { View } from "@/app/page"
14
+
15
+ interface SidebarProps {
16
+ activeView: View
17
+ setActiveView: (view: View) => void
18
+ }
19
+
20
+ const navItems = [
21
+ { id: "overview" as const, label: "Overview", icon: LayoutDashboard },
22
+ { id: "components" as const, label: "Components", icon: Boxes },
23
+ { id: "connections" as const, label: "Connections", icon: GitBranch },
24
+ { id: "impact" as const, label: "Impact", icon: Target },
25
+ { id: "diagram" as const, label: "Diagram", icon: Share2 },
26
+ { id: "llm" as const, label: "LLM Tracking", icon: Brain },
27
+ ]
28
+
29
+ export function Sidebar({ activeView, setActiveView }: SidebarProps) {
30
+ return (
31
+ <aside className="hidden w-56 shrink-0 border-r border-border bg-sidebar md:block">
32
+ <nav className="flex h-full flex-col p-3">
33
+ <div className="space-y-1">
34
+ {navItems.map((item) => (
35
+ <button
36
+ key={item.id}
37
+ onClick={() => setActiveView(item.id)}
38
+ className={cn(
39
+ "flex w-full items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors",
40
+ activeView === item.id
41
+ ? "bg-sidebar-accent text-sidebar-primary"
42
+ : "text-sidebar-foreground/70 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground"
43
+ )}
44
+ >
45
+ <item.icon className="h-4 w-4" />
46
+ {item.label}
47
+ {activeView === item.id && (
48
+ <span className="ml-auto h-1.5 w-1.5 rounded-full bg-sidebar-primary" />
49
+ )}
50
+ </button>
51
+ ))}
52
+ </div>
53
+
54
+ <div className="mt-auto space-y-1 border-t border-sidebar-border pt-3">
55
+ <button
56
+ onClick={() => setActiveView("settings")}
57
+ className={cn(
58
+ "flex w-full items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors",
59
+ activeView === "settings"
60
+ ? "bg-sidebar-accent text-sidebar-primary"
61
+ : "text-sidebar-foreground/70 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground"
62
+ )}
63
+ >
64
+ <Settings className="h-4 w-4" />
65
+ Settings
66
+ {activeView === "settings" && (
67
+ <span className="ml-auto h-1.5 w-1.5 rounded-full bg-sidebar-primary" />
68
+ )}
69
+ </button>
70
+ </div>
71
+ </nav>
72
+ </aside>
73
+ )
74
+ }
@@ -0,0 +1,326 @@
1
+ "use client"
2
+
3
+ import {
4
+ Boxes,
5
+ GitBranch,
6
+ Clock,
7
+ CheckCircle2,
8
+ Package,
9
+ Database,
10
+ Cloud,
11
+ Server,
12
+ ChevronRight,
13
+ AlertTriangle,
14
+ Activity,
15
+ Brain,
16
+ Loader2,
17
+ Info,
18
+ } from "lucide-react"
19
+ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"
20
+ import { Badge } from "@/components/ui/badge"
21
+ import { useStatus, useComponents, usePrompts } from "@/lib/hooks"
22
+ import type { View } from "@/app/page"
23
+
24
+ interface StatusOverviewProps {
25
+ onSelectComponent: (name: string) => void
26
+ onNavigate: (view: View) => void
27
+ onNavigateToType?: (type: string) => void
28
+ }
29
+
30
+ const typeIcons: Record<string, typeof Package> = {
31
+ npm: Package,
32
+ pip: Package,
33
+ cargo: Package,
34
+ service: Cloud,
35
+ database: Database,
36
+ queue: Server,
37
+ infra: Server,
38
+ framework: Boxes,
39
+ prompt: Brain,
40
+ }
41
+
42
+ const typeColors: Record<string, string> = {
43
+ npm: "text-chart-1",
44
+ pip: "text-chart-1",
45
+ cargo: "text-chart-1",
46
+ service: "text-chart-2",
47
+ database: "text-chart-3",
48
+ queue: "text-chart-4",
49
+ infra: "text-chart-5",
50
+ framework: "text-primary",
51
+ prompt: "text-info",
52
+ }
53
+
54
+ const quickActions = [
55
+ { label: "Run Full Scan", description: "Analyze entire codebase", icon: Activity, view: "settings" as View },
56
+ { label: "View Diagram", description: "Architecture visualization", icon: GitBranch, view: "diagram" as View },
57
+ { label: "Impact Analysis", description: "Check change effects", icon: AlertTriangle, view: "impact" as View },
58
+ ]
59
+
60
+ export function StatusOverview({ onSelectComponent, onNavigate, onNavigateToType }: StatusOverviewProps) {
61
+ const { status, isLoading: statusLoading, error: statusError } = useStatus({ autoFetch: true })
62
+ const { components, summary: componentsSummary, isLoading: componentsLoading } = useComponents({ autoFetch: true })
63
+ const { calls, prompts, isLoading: promptsLoading } = usePrompts({ autoFetch: true })
64
+
65
+ const isLoading = statusLoading || componentsLoading || promptsLoading
66
+
67
+ // Count LLM issues for the stat card badge
68
+ const llmIssueCount = (() => {
69
+ let count = 0
70
+ for (const call of calls) {
71
+ if (call.provider === "unknown") count++
72
+ if (call.model === "unknown") count++
73
+ }
74
+ for (const prompt of prompts) {
75
+ if (prompt.usedBy.length === 0) count++
76
+ }
77
+ return count
78
+ })()
79
+
80
+ // Build stats from real data
81
+ const stats = [
82
+ {
83
+ label: "Components",
84
+ value: status?.stats.total_components?.toString() || "0",
85
+ icon: Boxes,
86
+ trend: componentsSummary?.outdatedCount ? `${componentsSummary.outdatedCount} outdated` : undefined,
87
+ view: "components" as View,
88
+ },
89
+ {
90
+ label: "Connections",
91
+ value: status?.stats.total_connections?.toString() || "0",
92
+ icon: GitBranch,
93
+ view: "connections" as View,
94
+ },
95
+ {
96
+ label: "LLM Calls",
97
+ value: calls.length.toString(),
98
+ icon: Brain,
99
+ trend: llmIssueCount > 0 ? `${llmIssueCount} issues` : undefined,
100
+ view: "llm" as View,
101
+ },
102
+ {
103
+ label: "Health",
104
+ value: status?.stats.vulnerable_count === 0 ? "Good" : "Issues",
105
+ icon: CheckCircle2,
106
+ status: status?.stats.vulnerable_count === 0 ? "success" : "warning",
107
+ view: "settings" as View,
108
+ },
109
+ ]
110
+
111
+ // Build components by type from real data
112
+ const componentsByType = Object.entries(status?.stats.components_by_type || {})
113
+ .map(([type, count]) => ({
114
+ type,
115
+ count,
116
+ icon: typeIcons[type] || Package,
117
+ color: typeColors[type] || "text-muted-foreground",
118
+ }))
119
+ .sort((a, b) => b.count - a.count)
120
+ .slice(0, 6)
121
+
122
+ // Get top connected components from real data
123
+ const recentComponents = components
124
+ .map((c) => ({
125
+ name: c.name,
126
+ type: c.type,
127
+ layer: c.layer,
128
+ connections: c.connections,
129
+ }))
130
+ .sort((a, b) => b.connections - a.connections)
131
+ .slice(0, 5)
132
+ // Show loading state
133
+ if (isLoading && !status) {
134
+ return (
135
+ <div className="flex h-64 items-center justify-center">
136
+ <Loader2 className="h-8 w-8 animate-spin text-muted-foreground" />
137
+ </div>
138
+ )
139
+ }
140
+
141
+ // Show empty state if no scan data
142
+ const hasData = status && status.stats.total_components > 0
143
+
144
+ return (
145
+ <div className="space-y-6">
146
+ <div>
147
+ <h1 className="text-2xl font-semibold text-foreground">Architecture Status</h1>
148
+ <p className="text-sm text-muted-foreground">
149
+ {status?.project_name
150
+ ? `Overview of ${status.project_name} architecture and connections`
151
+ : "Overview of your project architecture and connections"}
152
+ </p>
153
+ </div>
154
+
155
+ {!hasData && (
156
+ <div className="flex items-center gap-2 rounded-lg border border-info/30 bg-info/10 p-4">
157
+ <Info className="h-5 w-5 text-info" />
158
+ <div>
159
+ <p className="text-sm font-medium text-info">No scan data found</p>
160
+ <p className="text-xs text-info/80">
161
+ Run <code className="rounded bg-info/20 px-1.5 py-0.5">navgator setup</code> to scan your project.
162
+ </p>
163
+ </div>
164
+ </div>
165
+ )}
166
+
167
+ {/* Stats Grid - Clickable Navigation */}
168
+ <div className="grid gap-4 sm:grid-cols-2 lg:grid-cols-4">
169
+ {stats.map((stat) => (
170
+ <button
171
+ key={stat.label}
172
+ onClick={() => stat.view && onNavigate(stat.view)}
173
+ className="group text-left"
174
+ >
175
+ <Card className="bg-card transition-all duration-200 group-hover:border-primary/50 group-hover:bg-secondary/50">
176
+ <CardContent className="p-4">
177
+ <div className="flex items-center justify-between">
178
+ <div className="flex h-10 w-10 items-center justify-center rounded-lg bg-secondary transition-colors group-hover:bg-primary/10">
179
+ <stat.icon className="h-5 w-5 text-primary" />
180
+ </div>
181
+ <div className="flex items-center gap-2">
182
+ {stat.trend && (
183
+ <Badge variant="secondary" className="bg-primary/10 text-primary">
184
+ {stat.trend}
185
+ </Badge>
186
+ )}
187
+ {stat.status === "success" && (
188
+ <Badge variant="secondary" className="bg-success/10 text-success">
189
+ Healthy
190
+ </Badge>
191
+ )}
192
+ {stat.status === "warning" && (
193
+ <Badge variant="secondary" className="bg-warning/10 text-warning">
194
+ Issues
195
+ </Badge>
196
+ )}
197
+ <ChevronRight className="h-4 w-4 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100" />
198
+ </div>
199
+ </div>
200
+ <div className="mt-3">
201
+ <p className="text-2xl font-semibold text-card-foreground">{stat.value}</p>
202
+ <p className="text-sm text-muted-foreground">{stat.label}</p>
203
+ </div>
204
+ </CardContent>
205
+ </Card>
206
+ </button>
207
+ ))}
208
+ </div>
209
+
210
+ {/* Quick Actions */}
211
+ <div className="grid gap-3 sm:grid-cols-3">
212
+ {quickActions.map((action) => (
213
+ <button
214
+ key={action.label}
215
+ onClick={() => onNavigate(action.view)}
216
+ className="group flex items-center gap-3 rounded-lg border border-border bg-card p-4 text-left transition-all hover:border-primary/50 hover:bg-secondary/50"
217
+ >
218
+ <div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-secondary transition-colors group-hover:bg-primary/10">
219
+ <action.icon className="h-5 w-5 text-primary" />
220
+ </div>
221
+ <div className="min-w-0 flex-1">
222
+ <p className="text-sm font-medium text-card-foreground">{action.label}</p>
223
+ <p className="truncate text-xs text-muted-foreground">{action.description}</p>
224
+ </div>
225
+ <ChevronRight className="h-4 w-4 shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100" />
226
+ </button>
227
+ ))}
228
+ </div>
229
+
230
+ <div className="grid gap-6 lg:grid-cols-2">
231
+ {/* Components by Type */}
232
+ <Card className="bg-card">
233
+ <CardHeader className="flex flex-row items-center justify-between pb-3">
234
+ <CardTitle className="text-base font-medium">Components by Type</CardTitle>
235
+ <button
236
+ onClick={() => onNavigate("components")}
237
+ className="text-xs text-muted-foreground transition-colors hover:text-primary"
238
+ >
239
+ View all
240
+ </button>
241
+ </CardHeader>
242
+ <CardContent>
243
+ {componentsByType.length === 0 ? (
244
+ <p className="py-4 text-center text-sm text-muted-foreground">
245
+ No components scanned yet
246
+ </p>
247
+ ) : (
248
+ <div className="space-y-2">
249
+ {componentsByType.map((item) => (
250
+ <button
251
+ key={item.type}
252
+ onClick={() => onNavigateToType ? onNavigateToType(item.type) : onNavigate("components")}
253
+ className="group flex w-full items-center gap-3 rounded-md p-2 transition-colors hover:bg-secondary"
254
+ >
255
+ <div className="flex h-8 w-8 items-center justify-center rounded bg-secondary transition-colors group-hover:bg-primary/10">
256
+ <item.icon className={`h-4 w-4 ${item.color}`} />
257
+ </div>
258
+ <div className="flex-1">
259
+ <div className="flex items-center justify-between">
260
+ <span className="text-sm font-medium text-card-foreground capitalize">
261
+ {item.type}
262
+ </span>
263
+ <div className="flex items-center gap-2">
264
+ <span className="text-sm text-muted-foreground">{item.count}</span>
265
+ <ChevronRight className="h-3 w-3 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100" />
266
+ </div>
267
+ </div>
268
+ <div className="mt-1 h-1.5 overflow-hidden rounded-full bg-secondary">
269
+ <div
270
+ className="h-full rounded-full bg-primary transition-all"
271
+ style={{ width: `${Math.min(100, (item.count / Math.max(...componentsByType.map(c => c.count), 1)) * 100)}%` }}
272
+ />
273
+ </div>
274
+ </div>
275
+ </button>
276
+ ))}
277
+ </div>
278
+ )}
279
+ </CardContent>
280
+ </Card>
281
+
282
+ {/* Recent Components */}
283
+ <Card className="bg-card">
284
+ <CardHeader className="pb-3">
285
+ <CardTitle className="text-base font-medium">Top Connected Components</CardTitle>
286
+ </CardHeader>
287
+ <CardContent>
288
+ {recentComponents.length === 0 ? (
289
+ <p className="py-4 text-center text-sm text-muted-foreground">
290
+ No components scanned yet
291
+ </p>
292
+ ) : (
293
+ <div className="space-y-2">
294
+ {recentComponents.map((component) => (
295
+ <button
296
+ key={component.name}
297
+ onClick={() => onSelectComponent(component.name)}
298
+ className="flex w-full items-center justify-between rounded-md px-3 py-2 text-left transition-colors hover:bg-secondary"
299
+ >
300
+ <div className="flex items-center gap-3">
301
+ <div className="flex h-8 w-8 items-center justify-center rounded bg-primary/10">
302
+ <span className="text-xs font-medium text-primary">
303
+ {component.name.slice(0, 2).toUpperCase()}
304
+ </span>
305
+ </div>
306
+ <div>
307
+ <p className="text-sm font-medium text-card-foreground">{component.name}</p>
308
+ <p className="text-xs text-muted-foreground">
309
+ {component.type} · {component.layer}
310
+ </p>
311
+ </div>
312
+ </div>
313
+ <div className="flex items-center gap-2">
314
+ <GitBranch className="h-3.5 w-3.5 text-muted-foreground" />
315
+ <span className="text-sm text-muted-foreground">{component.connections}</span>
316
+ </div>
317
+ </button>
318
+ ))}
319
+ </div>
320
+ )}
321
+ </CardContent>
322
+ </Card>
323
+ </div>
324
+ </div>
325
+ )
326
+ }
@@ -0,0 +1,11 @@
1
+ 'use client'
2
+
3
+ import * as React from 'react'
4
+ import {
5
+ ThemeProvider as NextThemesProvider,
6
+ type ThemeProviderProps,
7
+ } from 'next-themes'
8
+
9
+ export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
10
+ return <NextThemesProvider {...props}>{children}</NextThemesProvider>
11
+ }
@@ -0,0 +1,66 @@
1
+ 'use client'
2
+
3
+ import * as React from 'react'
4
+ import * as AccordionPrimitive from '@radix-ui/react-accordion'
5
+ import { ChevronDownIcon } from 'lucide-react'
6
+
7
+ import { cn } from '@/lib/utils'
8
+
9
+ function Accordion({
10
+ ...props
11
+ }: React.ComponentProps<typeof AccordionPrimitive.Root>) {
12
+ return <AccordionPrimitive.Root data-slot="accordion" {...props} />
13
+ }
14
+
15
+ function AccordionItem({
16
+ className,
17
+ ...props
18
+ }: React.ComponentProps<typeof AccordionPrimitive.Item>) {
19
+ return (
20
+ <AccordionPrimitive.Item
21
+ data-slot="accordion-item"
22
+ className={cn('border-b last:border-b-0', className)}
23
+ {...props}
24
+ />
25
+ )
26
+ }
27
+
28
+ function AccordionTrigger({
29
+ className,
30
+ children,
31
+ ...props
32
+ }: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {
33
+ return (
34
+ <AccordionPrimitive.Header className="flex">
35
+ <AccordionPrimitive.Trigger
36
+ data-slot="accordion-trigger"
37
+ className={cn(
38
+ 'focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180',
39
+ className,
40
+ )}
41
+ {...props}
42
+ >
43
+ {children}
44
+ <ChevronDownIcon className="text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" />
45
+ </AccordionPrimitive.Trigger>
46
+ </AccordionPrimitive.Header>
47
+ )
48
+ }
49
+
50
+ function AccordionContent({
51
+ className,
52
+ children,
53
+ ...props
54
+ }: React.ComponentProps<typeof AccordionPrimitive.Content>) {
55
+ return (
56
+ <AccordionPrimitive.Content
57
+ data-slot="accordion-content"
58
+ className="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm"
59
+ {...props}
60
+ >
61
+ <div className={cn('pt-0 pb-4', className)}>{children}</div>
62
+ </AccordionPrimitive.Content>
63
+ )
64
+ }
65
+
66
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
@@ -0,0 +1,157 @@
1
+ 'use client'
2
+
3
+ import * as React from 'react'
4
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog'
5
+
6
+ import { cn } from '@/lib/utils'
7
+ import { buttonVariants } from '@/components/ui/button'
8
+
9
+ function AlertDialog({
10
+ ...props
11
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {
12
+ return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />
13
+ }
14
+
15
+ function AlertDialogTrigger({
16
+ ...props
17
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {
18
+ return (
19
+ <AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} />
20
+ )
21
+ }
22
+
23
+ function AlertDialogPortal({
24
+ ...props
25
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {
26
+ return (
27
+ <AlertDialogPrimitive.Portal data-slot="alert-dialog-portal" {...props} />
28
+ )
29
+ }
30
+
31
+ function AlertDialogOverlay({
32
+ className,
33
+ ...props
34
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {
35
+ return (
36
+ <AlertDialogPrimitive.Overlay
37
+ data-slot="alert-dialog-overlay"
38
+ className={cn(
39
+ 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',
40
+ className,
41
+ )}
42
+ {...props}
43
+ />
44
+ )
45
+ }
46
+
47
+ function AlertDialogContent({
48
+ className,
49
+ ...props
50
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {
51
+ return (
52
+ <AlertDialogPortal>
53
+ <AlertDialogOverlay />
54
+ <AlertDialogPrimitive.Content
55
+ data-slot="alert-dialog-content"
56
+ className={cn(
57
+ 'bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg',
58
+ className,
59
+ )}
60
+ {...props}
61
+ />
62
+ </AlertDialogPortal>
63
+ )
64
+ }
65
+
66
+ function AlertDialogHeader({
67
+ className,
68
+ ...props
69
+ }: React.ComponentProps<'div'>) {
70
+ return (
71
+ <div
72
+ data-slot="alert-dialog-header"
73
+ className={cn('flex flex-col gap-2 text-center sm:text-left', className)}
74
+ {...props}
75
+ />
76
+ )
77
+ }
78
+
79
+ function AlertDialogFooter({
80
+ className,
81
+ ...props
82
+ }: React.ComponentProps<'div'>) {
83
+ return (
84
+ <div
85
+ data-slot="alert-dialog-footer"
86
+ className={cn(
87
+ 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',
88
+ className,
89
+ )}
90
+ {...props}
91
+ />
92
+ )
93
+ }
94
+
95
+ function AlertDialogTitle({
96
+ className,
97
+ ...props
98
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {
99
+ return (
100
+ <AlertDialogPrimitive.Title
101
+ data-slot="alert-dialog-title"
102
+ className={cn('text-lg font-semibold', className)}
103
+ {...props}
104
+ />
105
+ )
106
+ }
107
+
108
+ function AlertDialogDescription({
109
+ className,
110
+ ...props
111
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {
112
+ return (
113
+ <AlertDialogPrimitive.Description
114
+ data-slot="alert-dialog-description"
115
+ className={cn('text-muted-foreground text-sm', className)}
116
+ {...props}
117
+ />
118
+ )
119
+ }
120
+
121
+ function AlertDialogAction({
122
+ className,
123
+ ...props
124
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {
125
+ return (
126
+ <AlertDialogPrimitive.Action
127
+ className={cn(buttonVariants(), className)}
128
+ {...props}
129
+ />
130
+ )
131
+ }
132
+
133
+ function AlertDialogCancel({
134
+ className,
135
+ ...props
136
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {
137
+ return (
138
+ <AlertDialogPrimitive.Cancel
139
+ className={cn(buttonVariants({ variant: 'outline' }), className)}
140
+ {...props}
141
+ />
142
+ )
143
+ }
144
+
145
+ export {
146
+ AlertDialog,
147
+ AlertDialogPortal,
148
+ AlertDialogOverlay,
149
+ AlertDialogTrigger,
150
+ AlertDialogContent,
151
+ AlertDialogHeader,
152
+ AlertDialogFooter,
153
+ AlertDialogTitle,
154
+ AlertDialogDescription,
155
+ AlertDialogAction,
156
+ AlertDialogCancel,
157
+ }