@brainfish-ai/devdoc 0.1.42 → 0.1.44

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 (398) hide show
  1. package/dist/cli/commands/create.js +2 -2
  2. package/dist/cli/commands/dev.js +19 -10
  3. package/package.json +3 -2
  4. package/renderer/app/api/assets/[...path]/route.js +108 -0
  5. package/renderer/app/api/assets/route.js +114 -0
  6. package/renderer/app/api/assets/upload/route.js +163 -0
  7. package/renderer/app/api/auth-schemes/route.js +58 -0
  8. package/renderer/app/api/chat/route.js +759 -0
  9. package/renderer/app/api/codegen/route.js +52 -0
  10. package/renderer/app/api/collections/route.js +706 -0
  11. package/renderer/app/api/debug/route.js +47 -0
  12. package/renderer/app/api/deploy/route.js +199 -0
  13. package/renderer/app/api/device/route.js +36 -0
  14. package/renderer/app/api/docs/route.js +205 -0
  15. package/renderer/app/api/domains/add/route.js +121 -0
  16. package/renderer/app/api/domains/lookup/route.js +43 -0
  17. package/renderer/app/api/domains/remove/route.js +89 -0
  18. package/renderer/app/api/domains/status/route.js +140 -0
  19. package/renderer/app/api/domains/verify/route.js +168 -0
  20. package/renderer/app/api/keys/regenerate/route.js +71 -0
  21. package/renderer/app/api/local-assets/[...path]/route.js +108 -0
  22. package/renderer/app/api/openapi-spec/route.js +73 -0
  23. package/renderer/app/api/projects/[slug]/route.js +129 -0
  24. package/renderer/app/api/projects/[slug]/stats/route.js +80 -0
  25. package/renderer/app/api/projects/register/route.js +176 -0
  26. package/renderer/app/api/proxy/route.js +139 -0
  27. package/renderer/app/api/proxy-stream/route.js +156 -0
  28. package/renderer/app/api/redirects/route.js +35 -0
  29. package/renderer/app/api/schema/route.js +85 -0
  30. package/renderer/app/api/subdomains/check/route.js +158 -0
  31. package/renderer/app/api/suggestions/route.js +195 -0
  32. package/renderer/app/globals.css +69 -0
  33. package/renderer/app/layout.js +47 -0
  34. package/renderer/app/llms-full.txt/route.js +266 -0
  35. package/renderer/app/llms.txt/route.js +228 -0
  36. package/renderer/app/page.js +12 -0
  37. package/renderer/app/robots.txt/route.js +66 -0
  38. package/renderer/app/sitemap.xml/route.js +155 -0
  39. package/renderer/components/docs/index.js +8 -0
  40. package/renderer/components/docs/mdx/accordion.js +113 -0
  41. package/renderer/components/docs/mdx/badge.js +72 -0
  42. package/renderer/components/docs/mdx/callouts.js +137 -0
  43. package/renderer/components/docs/mdx/cards.js +175 -0
  44. package/renderer/components/docs/mdx/changelog.js +100 -0
  45. package/renderer/components/docs/mdx/code-block.js +147 -0
  46. package/renderer/components/docs/mdx/code-group.js +287 -0
  47. package/renderer/components/docs/mdx/file-embeds.js +82 -0
  48. package/renderer/components/docs/mdx/frame.js +59 -0
  49. package/renderer/components/docs/mdx/highlight.js +90 -0
  50. package/renderer/components/docs/mdx/iframe.js +69 -0
  51. package/renderer/components/docs/mdx/image.js +135 -0
  52. package/renderer/components/docs/mdx/index.js +134 -0
  53. package/renderer/components/docs/mdx/landing.js +317 -0
  54. package/renderer/components/docs/mdx/mermaid.js +212 -0
  55. package/renderer/components/docs/mdx/param-field.js +112 -0
  56. package/renderer/components/docs/mdx/steps.js +74 -0
  57. package/renderer/components/docs/mdx/tabs.js +50 -0
  58. package/renderer/components/docs/mdx-renderer.js +77 -0
  59. package/renderer/components/docs/navigation/breadcrumbs.js +64 -0
  60. package/renderer/components/docs/navigation/index.js +6 -0
  61. package/renderer/components/docs/navigation/page-nav.js +57 -0
  62. package/renderer/components/docs/navigation/sidebar.js +375 -0
  63. package/renderer/components/docs/navigation/toc.js +89 -0
  64. package/renderer/components/docs/notice.js +77 -0
  65. package/renderer/components/docs-header.js +202 -0
  66. package/renderer/components/docs-viewer/agent/agent-chat.js +1831 -0
  67. package/renderer/components/docs-viewer/agent/agent-popup-button.js +99 -0
  68. package/renderer/components/docs-viewer/agent/cards/debug-context-card.js +107 -0
  69. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.js +57 -0
  70. package/renderer/components/docs-viewer/agent/cards/index.js +45 -0
  71. package/renderer/components/docs-viewer/agent/cards/response-options-card.js +154 -0
  72. package/renderer/components/docs-viewer/agent/cards/types.js +22 -0
  73. package/renderer/components/docs-viewer/agent/chat-message.js +2 -0
  74. package/renderer/components/docs-viewer/agent/index.js +7 -0
  75. package/renderer/components/docs-viewer/agent/messages/assistant-message.js +108 -0
  76. package/renderer/components/docs-viewer/agent/messages/chat-message.js +34 -0
  77. package/renderer/components/docs-viewer/agent/messages/index.js +6 -0
  78. package/renderer/components/docs-viewer/agent/messages/tool-call-display.js +1065 -0
  79. package/renderer/components/docs-viewer/agent/messages/types.js +2 -0
  80. package/renderer/components/docs-viewer/agent/messages/typing-indicator.js +26 -0
  81. package/renderer/components/docs-viewer/agent/messages/user-message.js +37 -0
  82. package/renderer/components/docs-viewer/code-editor/{index.tsx → index.js} +1 -1
  83. package/renderer/components/docs-viewer/code-editor/notes-mode.js +1338 -0
  84. package/renderer/components/docs-viewer/content/changelog-page.js +297 -0
  85. package/renderer/components/docs-viewer/content/content-router.js +182 -0
  86. package/renderer/components/docs-viewer/content/doc-page.js +290 -0
  87. package/renderer/components/docs-viewer/content/documentation-viewer.js +14 -0
  88. package/renderer/components/docs-viewer/content/index.js +31 -0
  89. package/renderer/components/docs-viewer/content/not-found-page.js +300 -0
  90. package/renderer/components/docs-viewer/content/request-details.js +528 -0
  91. package/renderer/components/docs-viewer/content/sections/auth.js +108 -0
  92. package/renderer/components/docs-viewer/content/sections/body.js +80 -0
  93. package/renderer/components/docs-viewer/content/sections/headers.js +64 -0
  94. package/renderer/components/docs-viewer/content/sections/overview.js +56 -0
  95. package/renderer/components/docs-viewer/content/sections/parameters.js +64 -0
  96. package/renderer/components/docs-viewer/content/sections/responses.js +91 -0
  97. package/renderer/components/docs-viewer/global-auth-modal.js +427 -0
  98. package/renderer/components/docs-viewer/index.js +1448 -0
  99. package/renderer/components/docs-viewer/playground/auth-editor.js +418 -0
  100. package/renderer/components/docs-viewer/playground/body-editor.js +240 -0
  101. package/renderer/components/docs-viewer/playground/code-editor.js +135 -0
  102. package/renderer/components/docs-viewer/playground/code-snippet.js +393 -0
  103. package/renderer/components/docs-viewer/playground/graphql-playground.js +936 -0
  104. package/renderer/components/docs-viewer/playground/index.js +682 -0
  105. package/renderer/components/docs-viewer/playground/key-value-editor.js +317 -0
  106. package/renderer/components/docs-viewer/playground/method-selector.js +65 -0
  107. package/renderer/components/docs-viewer/playground/request-builder.js +181 -0
  108. package/renderer/components/docs-viewer/playground/request-tabs.js +240 -0
  109. package/renderer/components/docs-viewer/playground/response-cards/idle-card.js +42 -0
  110. package/renderer/components/docs-viewer/playground/response-cards/index.js +72 -0
  111. package/renderer/components/docs-viewer/playground/response-cards/loading-card.js +24 -0
  112. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.js +28 -0
  113. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.js +308 -0
  114. package/renderer/components/docs-viewer/playground/response-cards/types.js +9 -0
  115. package/renderer/components/docs-viewer/playground/response-viewer.js +18 -0
  116. package/renderer/components/docs-viewer/search/index.js +2 -0
  117. package/renderer/components/docs-viewer/search/search-dialog.js +367 -0
  118. package/renderer/components/docs-viewer/search/use-search.js +89 -0
  119. package/renderer/components/docs-viewer/shared/markdown-renderer.js +423 -0
  120. package/renderer/components/docs-viewer/shared/method-badge.js +23 -0
  121. package/renderer/components/docs-viewer/shared/schema-viewer.js +321 -0
  122. package/renderer/components/docs-viewer/sidebar/collection-tree.js +222 -0
  123. package/renderer/components/docs-viewer/sidebar/endpoint-options.js +512 -0
  124. package/renderer/components/docs-viewer/sidebar/index.js +196 -0
  125. package/renderer/components/docs-viewer/sidebar/right-sidebar.js +159 -0
  126. package/renderer/components/docs-viewer/sidebar/sidebar-group.js +87 -0
  127. package/renderer/components/docs-viewer/sidebar/sidebar-item.js +172 -0
  128. package/renderer/components/docs-viewer/sidebar/sidebar-section.js +31 -0
  129. package/renderer/components/theme-provider.js +10 -0
  130. package/renderer/components/theme-toggle.js +86 -0
  131. package/renderer/components/ui/badge.js +29 -0
  132. package/renderer/components/ui/button.js +40 -0
  133. package/renderer/components/ui/dialog.js +50 -0
  134. package/renderer/components/ui/dropdown-menu.js +143 -0
  135. package/renderer/components/ui/input.js +12 -0
  136. package/renderer/components/ui/label.js +13 -0
  137. package/renderer/components/ui/navigation-menu.js +83 -0
  138. package/renderer/components/ui/select.js +116 -0
  139. package/renderer/components/ui/spinner.js +92 -0
  140. package/renderer/components/ui/tabs.js +34 -0
  141. package/renderer/components/ui/tooltip.js +43 -0
  142. package/renderer/hooks/use-code-copy.js +76 -0
  143. package/renderer/hooks/use-openapi-title.js +33 -0
  144. package/renderer/hooks/use-route-state.js +159 -0
  145. package/renderer/lib/api-docs/agent/index.js +4 -0
  146. package/renderer/lib/api-docs/agent/indexer.js +254 -0
  147. package/renderer/lib/api-docs/agent/spec-summary.js +227 -0
  148. package/renderer/lib/api-docs/agent/types.js +5 -0
  149. package/renderer/lib/api-docs/agent/use-suggestions.js +97 -0
  150. package/renderer/lib/api-docs/auth/auth-context.js +157 -0
  151. package/renderer/lib/api-docs/auth/auth-storage.js +66 -0
  152. package/renderer/lib/api-docs/auth/crypto.js +64 -0
  153. package/renderer/lib/api-docs/auth/index.js +3 -0
  154. package/renderer/lib/api-docs/code-editor/db.js +145 -0
  155. package/renderer/lib/api-docs/code-editor/hooks.js +254 -0
  156. package/renderer/lib/api-docs/code-editor/{index.ts → index.js} +3 -4
  157. package/renderer/lib/api-docs/code-editor/mode-context.js +126 -0
  158. package/renderer/lib/api-docs/code-editor/types.js +53 -0
  159. package/renderer/lib/api-docs/codegen/definitions.js +258 -0
  160. package/renderer/lib/api-docs/codegen/har.js +171 -0
  161. package/renderer/lib/api-docs/codegen/index.js +118 -0
  162. package/renderer/lib/api-docs/factories.js +136 -0
  163. package/renderer/lib/api-docs/{index.ts → index.js} +5 -10
  164. package/renderer/lib/api-docs/mobile-context.js +116 -0
  165. package/renderer/lib/api-docs/navigation-context.js +62 -0
  166. package/renderer/lib/api-docs/parsers/graphql/index.js +50 -0
  167. package/renderer/lib/api-docs/parsers/graphql/parser.js +350 -0
  168. package/renderer/lib/api-docs/parsers/graphql/transformer.js +215 -0
  169. package/renderer/lib/api-docs/parsers/graphql/types.js +46 -0
  170. package/renderer/lib/api-docs/parsers/openapi/dereferencer.js +43 -0
  171. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.js +486 -0
  172. package/renderer/lib/api-docs/parsers/openapi/extractors/body.js +295 -0
  173. package/renderer/lib/api-docs/parsers/openapi/extractors/index.js +132 -0
  174. package/renderer/lib/api-docs/parsers/openapi/index.js +127 -0
  175. package/renderer/lib/api-docs/parsers/openapi/transformer.js +192 -0
  176. package/renderer/lib/api-docs/parsers/openapi/validator.js +24 -0
  177. package/renderer/lib/api-docs/playground/context.js +65 -0
  178. package/renderer/lib/api-docs/playground/navigation-context.js +74 -0
  179. package/renderer/lib/api-docs/playground/request-builder.js +163 -0
  180. package/renderer/lib/api-docs/playground/request-runner.js +224 -0
  181. package/renderer/lib/api-docs/playground/types.js +5 -0
  182. package/renderer/lib/api-docs/types.js +23 -0
  183. package/renderer/lib/api-docs/utils.js +212 -0
  184. package/renderer/lib/cache.js +157 -0
  185. package/renderer/lib/docs/config/domain-schema.js +161 -0
  186. package/renderer/lib/docs/config/environment.js +38 -0
  187. package/renderer/lib/docs/config/index.js +6 -0
  188. package/renderer/lib/docs/config/loader.js +113 -0
  189. package/renderer/lib/docs/config/schema.js +281 -0
  190. package/renderer/lib/docs/index.js +8 -0
  191. package/renderer/lib/docs/mdx/compiler.js +131 -0
  192. package/renderer/lib/docs/mdx/frontmatter.js +73 -0
  193. package/renderer/lib/docs/mdx/index.js +10 -0
  194. package/renderer/lib/docs/mdx/remark-mermaid.js +63 -0
  195. package/renderer/lib/docs/navigation/generator.js +269 -0
  196. package/renderer/lib/docs/navigation/index.js +3 -0
  197. package/renderer/lib/docs/navigation/types.js +11 -0
  198. package/renderer/lib/docs-navigation-context.js +40 -0
  199. package/renderer/lib/docs-navigation.js +140 -0
  200. package/renderer/lib/multi-tenant/context.js +80 -0
  201. package/renderer/lib/storage/blob.js +767 -0
  202. package/renderer/lib/utils/icons.js +30 -0
  203. package/renderer/lib/utils.js +5 -0
  204. package/renderer/next.config.js +62 -0
  205. package/renderer/package.json +1 -0
  206. package/renderer/tsconfig.json +23 -5
  207. package/renderer/app/api/assets/[...path]/route.ts +0 -123
  208. package/renderer/app/api/assets/route.ts +0 -124
  209. package/renderer/app/api/assets/upload/route.ts +0 -177
  210. package/renderer/app/api/auth-schemes/route.ts +0 -77
  211. package/renderer/app/api/chat/route.ts +0 -858
  212. package/renderer/app/api/codegen/route.ts +0 -72
  213. package/renderer/app/api/collections/route.ts +0 -1002
  214. package/renderer/app/api/debug/route.ts +0 -53
  215. package/renderer/app/api/deploy/route.ts +0 -234
  216. package/renderer/app/api/device/route.ts +0 -42
  217. package/renderer/app/api/docs/route.ts +0 -201
  218. package/renderer/app/api/domains/add/route.ts +0 -132
  219. package/renderer/app/api/domains/lookup/route.ts +0 -43
  220. package/renderer/app/api/domains/remove/route.ts +0 -100
  221. package/renderer/app/api/domains/status/route.ts +0 -158
  222. package/renderer/app/api/domains/verify/route.ts +0 -181
  223. package/renderer/app/api/keys/regenerate/route.ts +0 -80
  224. package/renderer/app/api/local-assets/[...path]/route.ts +0 -122
  225. package/renderer/app/api/openapi-spec/route.ts +0 -151
  226. package/renderer/app/api/projects/[slug]/route.ts +0 -153
  227. package/renderer/app/api/projects/[slug]/stats/route.ts +0 -96
  228. package/renderer/app/api/projects/register/route.ts +0 -152
  229. package/renderer/app/api/proxy/route.ts +0 -149
  230. package/renderer/app/api/proxy-stream/route.ts +0 -168
  231. package/renderer/app/api/redirects/route.ts +0 -47
  232. package/renderer/app/api/schema/route.ts +0 -73
  233. package/renderer/app/api/subdomains/check/route.ts +0 -172
  234. package/renderer/app/api/suggestions/route.ts +0 -144
  235. package/renderer/app/layout.tsx +0 -54
  236. package/renderer/app/llms-full.txt/route.ts +0 -346
  237. package/renderer/app/llms.txt/route.ts +0 -279
  238. package/renderer/app/page.tsx +0 -14
  239. package/renderer/app/robots.txt/route.ts +0 -84
  240. package/renderer/app/sitemap.xml/route.ts +0 -199
  241. package/renderer/components/docs/index.ts +0 -12
  242. package/renderer/components/docs/mdx/accordion.tsx +0 -169
  243. package/renderer/components/docs/mdx/badge.tsx +0 -132
  244. package/renderer/components/docs/mdx/callouts.tsx +0 -154
  245. package/renderer/components/docs/mdx/cards.tsx +0 -241
  246. package/renderer/components/docs/mdx/changelog.tsx +0 -120
  247. package/renderer/components/docs/mdx/code-block.tsx +0 -186
  248. package/renderer/components/docs/mdx/code-group.tsx +0 -421
  249. package/renderer/components/docs/mdx/file-embeds.tsx +0 -105
  250. package/renderer/components/docs/mdx/frame.tsx +0 -112
  251. package/renderer/components/docs/mdx/highlight.tsx +0 -151
  252. package/renderer/components/docs/mdx/iframe.tsx +0 -134
  253. package/renderer/components/docs/mdx/image.tsx +0 -235
  254. package/renderer/components/docs/mdx/index.ts +0 -237
  255. package/renderer/components/docs/mdx/landing.tsx +0 -684
  256. package/renderer/components/docs/mdx/mermaid.tsx +0 -240
  257. package/renderer/components/docs/mdx/param-field.tsx +0 -200
  258. package/renderer/components/docs/mdx/steps.tsx +0 -113
  259. package/renderer/components/docs/mdx/tabs.tsx +0 -86
  260. package/renderer/components/docs/mdx-renderer.tsx +0 -100
  261. package/renderer/components/docs/navigation/breadcrumbs.tsx +0 -76
  262. package/renderer/components/docs/navigation/index.ts +0 -8
  263. package/renderer/components/docs/navigation/page-nav.tsx +0 -64
  264. package/renderer/components/docs/navigation/sidebar.tsx +0 -515
  265. package/renderer/components/docs/navigation/toc.tsx +0 -113
  266. package/renderer/components/docs/notice.tsx +0 -105
  267. package/renderer/components/docs-header.tsx +0 -278
  268. package/renderer/components/docs-viewer/agent/agent-chat.tsx +0 -2076
  269. package/renderer/components/docs-viewer/agent/cards/debug-context-card.tsx +0 -90
  270. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.tsx +0 -49
  271. package/renderer/components/docs-viewer/agent/cards/index.tsx +0 -50
  272. package/renderer/components/docs-viewer/agent/cards/response-options-card.tsx +0 -212
  273. package/renderer/components/docs-viewer/agent/cards/types.ts +0 -84
  274. package/renderer/components/docs-viewer/agent/chat-message.tsx +0 -17
  275. package/renderer/components/docs-viewer/agent/index.tsx +0 -6
  276. package/renderer/components/docs-viewer/agent/messages/assistant-message.tsx +0 -119
  277. package/renderer/components/docs-viewer/agent/messages/chat-message.tsx +0 -46
  278. package/renderer/components/docs-viewer/agent/messages/index.ts +0 -17
  279. package/renderer/components/docs-viewer/agent/messages/tool-call-display.tsx +0 -721
  280. package/renderer/components/docs-viewer/agent/messages/types.ts +0 -61
  281. package/renderer/components/docs-viewer/agent/messages/typing-indicator.tsx +0 -24
  282. package/renderer/components/docs-viewer/agent/messages/user-message.tsx +0 -51
  283. package/renderer/components/docs-viewer/code-editor/notes-mode.tsx +0 -1283
  284. package/renderer/components/docs-viewer/content/changelog-page.tsx +0 -331
  285. package/renderer/components/docs-viewer/content/doc-page.tsx +0 -367
  286. package/renderer/components/docs-viewer/content/documentation-viewer.tsx +0 -17
  287. package/renderer/components/docs-viewer/content/index.tsx +0 -29
  288. package/renderer/components/docs-viewer/content/not-found-page.tsx +0 -330
  289. package/renderer/components/docs-viewer/content/request-details.tsx +0 -330
  290. package/renderer/components/docs-viewer/content/sections/auth.tsx +0 -69
  291. package/renderer/components/docs-viewer/content/sections/body.tsx +0 -66
  292. package/renderer/components/docs-viewer/content/sections/headers.tsx +0 -43
  293. package/renderer/components/docs-viewer/content/sections/overview.tsx +0 -40
  294. package/renderer/components/docs-viewer/content/sections/parameters.tsx +0 -43
  295. package/renderer/components/docs-viewer/content/sections/responses.tsx +0 -87
  296. package/renderer/components/docs-viewer/global-auth-modal.tsx +0 -352
  297. package/renderer/components/docs-viewer/index.tsx +0 -1670
  298. package/renderer/components/docs-viewer/playground/auth-editor.tsx +0 -280
  299. package/renderer/components/docs-viewer/playground/body-editor.tsx +0 -221
  300. package/renderer/components/docs-viewer/playground/code-editor.tsx +0 -224
  301. package/renderer/components/docs-viewer/playground/code-snippet.tsx +0 -387
  302. package/renderer/components/docs-viewer/playground/graphql-playground.tsx +0 -745
  303. package/renderer/components/docs-viewer/playground/index.tsx +0 -671
  304. package/renderer/components/docs-viewer/playground/key-value-editor.tsx +0 -261
  305. package/renderer/components/docs-viewer/playground/method-selector.tsx +0 -60
  306. package/renderer/components/docs-viewer/playground/request-builder.tsx +0 -179
  307. package/renderer/components/docs-viewer/playground/request-tabs.tsx +0 -237
  308. package/renderer/components/docs-viewer/playground/response-cards/idle-card.tsx +0 -21
  309. package/renderer/components/docs-viewer/playground/response-cards/index.tsx +0 -93
  310. package/renderer/components/docs-viewer/playground/response-cards/loading-card.tsx +0 -16
  311. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.tsx +0 -23
  312. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.tsx +0 -268
  313. package/renderer/components/docs-viewer/playground/response-cards/types.ts +0 -82
  314. package/renderer/components/docs-viewer/playground/response-viewer.tsx +0 -43
  315. package/renderer/components/docs-viewer/search/index.ts +0 -2
  316. package/renderer/components/docs-viewer/search/search-dialog.tsx +0 -331
  317. package/renderer/components/docs-viewer/search/use-search.ts +0 -117
  318. package/renderer/components/docs-viewer/shared/markdown-renderer.tsx +0 -431
  319. package/renderer/components/docs-viewer/shared/method-badge.tsx +0 -41
  320. package/renderer/components/docs-viewer/shared/schema-viewer.tsx +0 -349
  321. package/renderer/components/docs-viewer/sidebar/collection-tree.tsx +0 -259
  322. package/renderer/components/docs-viewer/sidebar/endpoint-options.tsx +0 -316
  323. package/renderer/components/docs-viewer/sidebar/index.tsx +0 -282
  324. package/renderer/components/docs-viewer/sidebar/right-sidebar.tsx +0 -202
  325. package/renderer/components/docs-viewer/sidebar/sidebar-group.tsx +0 -118
  326. package/renderer/components/docs-viewer/sidebar/sidebar-item.tsx +0 -212
  327. package/renderer/components/docs-viewer/sidebar/sidebar-section.tsx +0 -38
  328. package/renderer/components/theme-provider.tsx +0 -11
  329. package/renderer/components/theme-toggle.tsx +0 -76
  330. package/renderer/components/ui/badge.tsx +0 -46
  331. package/renderer/components/ui/button.tsx +0 -59
  332. package/renderer/components/ui/dialog.tsx +0 -118
  333. package/renderer/components/ui/dropdown-menu.tsx +0 -257
  334. package/renderer/components/ui/input.tsx +0 -21
  335. package/renderer/components/ui/label.tsx +0 -24
  336. package/renderer/components/ui/navigation-menu.tsx +0 -168
  337. package/renderer/components/ui/select.tsx +0 -190
  338. package/renderer/components/ui/spinner.tsx +0 -114
  339. package/renderer/components/ui/tabs.tsx +0 -66
  340. package/renderer/components/ui/tooltip.tsx +0 -61
  341. package/renderer/hooks/use-code-copy.ts +0 -88
  342. package/renderer/hooks/use-openapi-title.ts +0 -44
  343. package/renderer/lib/api-docs/agent/index.ts +0 -6
  344. package/renderer/lib/api-docs/agent/indexer.ts +0 -323
  345. package/renderer/lib/api-docs/agent/spec-summary.ts +0 -335
  346. package/renderer/lib/api-docs/agent/types.ts +0 -116
  347. package/renderer/lib/api-docs/auth/auth-context.tsx +0 -225
  348. package/renderer/lib/api-docs/auth/auth-storage.ts +0 -87
  349. package/renderer/lib/api-docs/auth/crypto.ts +0 -89
  350. package/renderer/lib/api-docs/auth/index.ts +0 -4
  351. package/renderer/lib/api-docs/code-editor/db.ts +0 -164
  352. package/renderer/lib/api-docs/code-editor/hooks.ts +0 -266
  353. package/renderer/lib/api-docs/code-editor/mode-context.tsx +0 -207
  354. package/renderer/lib/api-docs/code-editor/types.ts +0 -105
  355. package/renderer/lib/api-docs/codegen/definitions.ts +0 -297
  356. package/renderer/lib/api-docs/codegen/har.ts +0 -251
  357. package/renderer/lib/api-docs/codegen/index.ts +0 -159
  358. package/renderer/lib/api-docs/factories.ts +0 -170
  359. package/renderer/lib/api-docs/mobile-context.tsx +0 -112
  360. package/renderer/lib/api-docs/navigation-context.tsx +0 -88
  361. package/renderer/lib/api-docs/parsers/graphql/README.md +0 -129
  362. package/renderer/lib/api-docs/parsers/graphql/index.ts +0 -91
  363. package/renderer/lib/api-docs/parsers/graphql/parser.ts +0 -491
  364. package/renderer/lib/api-docs/parsers/graphql/transformer.ts +0 -246
  365. package/renderer/lib/api-docs/parsers/graphql/types.ts +0 -283
  366. package/renderer/lib/api-docs/parsers/openapi/README.md +0 -32
  367. package/renderer/lib/api-docs/parsers/openapi/dereferencer.ts +0 -60
  368. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.ts +0 -574
  369. package/renderer/lib/api-docs/parsers/openapi/extractors/body.ts +0 -403
  370. package/renderer/lib/api-docs/parsers/openapi/extractors/index.ts +0 -232
  371. package/renderer/lib/api-docs/parsers/openapi/index.ts +0 -171
  372. package/renderer/lib/api-docs/parsers/openapi/transformer.ts +0 -278
  373. package/renderer/lib/api-docs/parsers/openapi/validator.ts +0 -31
  374. package/renderer/lib/api-docs/playground/context.tsx +0 -107
  375. package/renderer/lib/api-docs/playground/navigation-context.tsx +0 -124
  376. package/renderer/lib/api-docs/playground/request-builder.ts +0 -223
  377. package/renderer/lib/api-docs/playground/request-runner.ts +0 -282
  378. package/renderer/lib/api-docs/playground/types.ts +0 -35
  379. package/renderer/lib/api-docs/types.ts +0 -269
  380. package/renderer/lib/api-docs/utils.ts +0 -311
  381. package/renderer/lib/cache.ts +0 -193
  382. package/renderer/lib/docs/config/domain-schema.ts +0 -260
  383. package/renderer/lib/docs/config/index.ts +0 -43
  384. package/renderer/lib/docs/config/loader.ts +0 -142
  385. package/renderer/lib/docs/config/schema.ts +0 -308
  386. package/renderer/lib/docs/index.ts +0 -12
  387. package/renderer/lib/docs/mdx/compiler.ts +0 -176
  388. package/renderer/lib/docs/mdx/frontmatter.ts +0 -91
  389. package/renderer/lib/docs/mdx/index.ts +0 -26
  390. package/renderer/lib/docs/navigation/generator.ts +0 -348
  391. package/renderer/lib/docs/navigation/index.ts +0 -12
  392. package/renderer/lib/docs/navigation/types.ts +0 -123
  393. package/renderer/lib/docs-navigation-context.tsx +0 -80
  394. package/renderer/lib/multi-tenant/context.ts +0 -105
  395. package/renderer/lib/storage/blob.ts +0 -1083
  396. package/renderer/lib/utils/icons.ts +0 -48
  397. package/renderer/lib/utils.ts +0 -6
  398. package/renderer/next.config.ts +0 -76
@@ -1,202 +0,0 @@
1
- 'use client'
2
-
3
- import { useEffect, useState, useCallback } from 'react'
4
- import Image from 'next/image'
5
- import { X, ArrowClockwise } from '@phosphor-icons/react'
6
- import type { BrainfishCollection, BrainfishRESTRequest } from '@/lib/api-docs/types'
7
- import type { PrefillData } from '@/lib/api-docs/agent/types'
8
- import type { DebugContext } from '../playground/response-viewer'
9
- import { AgentChat } from '../agent'
10
- import { Button } from '@/components/ui/button'
11
- import { useMobile } from '@/lib/api-docs/mobile-context'
12
- import { cn } from '@/lib/utils'
13
- import {
14
- Tooltip,
15
- TooltipContent,
16
- TooltipTrigger,
17
- } from '@/components/ui/tooltip'
18
-
19
- interface RightSidebarProps {
20
- /** Current endpoint - when null, only agent mode is available */
21
- request: BrainfishRESTRequest | null
22
- /** Full collection for agent context */
23
- collection: BrainfishCollection
24
- /** Pre-generated API summary (cached server-side) */
25
- apiSummary?: string | null
26
- /** Callback when agent navigates to an endpoint */
27
- onNavigateToEndpoint: (endpointId: string) => void
28
- /** Callback when agent prefills parameters */
29
- onPrefillParameters: (data: PrefillData) => void
30
- /** Debug context from playground response - triggers agent debug */
31
- debugContext?: DebugContext | null
32
- /** Callback to clear debug context after processing */
33
- onClearDebugContext?: () => void
34
- /** Explain context from playground response - triggers agent explanation */
35
- explainContext?: DebugContext | null
36
- /** Callback to clear explain context after processing */
37
- onClearExplainContext?: () => void
38
- /** Callback to open global auth dialog */
39
- onOpenGlobalAuth?: () => void
40
- /** Callback to navigate to authorization tab in playground */
41
- onNavigateToAuthTab?: () => void
42
- /** Callback to navigate to parameters tab in playground */
43
- onNavigateToParamsTab?: () => void
44
- /** Callback to navigate to body tab in playground */
45
- onNavigateToBodyTab?: () => void
46
- /** Callback to navigate to headers tab in playground */
47
- onNavigateToHeadersTab?: () => void
48
- /** Callback to navigate to a documentation section */
49
- onNavigateToDocSection?: (sectionId: string) => void
50
- /** Callback to navigate to a documentation page */
51
- onNavigateToDocPage?: (slug: string) => void
52
- }
53
-
54
- export function RightSidebar({
55
- request,
56
- collection,
57
- apiSummary,
58
- onNavigateToEndpoint,
59
- onPrefillParameters,
60
- debugContext,
61
- onClearDebugContext,
62
- explainContext,
63
- onClearExplainContext,
64
- onOpenGlobalAuth,
65
- onNavigateToAuthTab,
66
- onNavigateToParamsTab,
67
- onNavigateToBodyTab,
68
- onNavigateToHeadersTab,
69
- onNavigateToDocSection,
70
- onNavigateToDocPage,
71
- }: RightSidebarProps) {
72
- // Mobile context
73
- const { isMobile, isRightSidebarOpen, closeRightSidebar } = useMobile()
74
-
75
- // Debug context to send to agent (full context for card display)
76
- const [pendingDebugContext, setPendingDebugContext] = useState<DebugContext | null>(null)
77
-
78
- // Handle debug context
79
- useEffect(() => {
80
- if (debugContext) {
81
- // Pass full context to agent
82
- setPendingDebugContext(debugContext)
83
-
84
- // Clear the debug context from parent
85
- onClearDebugContext?.()
86
- }
87
- }, [debugContext, onClearDebugContext])
88
-
89
- // Clear debug context after it's been used
90
- const handleDebugContextConsumed = () => {
91
- setPendingDebugContext(null)
92
- }
93
-
94
- // Key for resetting chat
95
- const [chatKey, setChatKey] = useState(0)
96
-
97
- // Track if there are messages
98
- const [hasMessages, setHasMessages] = useState(false)
99
-
100
- // Handle reset conversation
101
- const handleResetConversation = useCallback(() => {
102
- // Clear chat storage before remounting
103
- localStorage.removeItem('brainfish-agent-chat')
104
- setChatKey(prev => prev + 1)
105
- setHasMessages(false)
106
- }, [])
107
-
108
- return (
109
- <>
110
- {/* Mobile overlay backdrop - z-[55] to cover header (z-50) but below panel (z-60) */}
111
- {isMobile && isRightSidebarOpen && (
112
- <div
113
- className="docs-agent-overlay fixed inset-0 bg-black/50 z-[55] lg:hidden"
114
- onClick={closeRightSidebar}
115
- />
116
- )}
117
-
118
- <div
119
- className={cn(
120
- "docs-agent-panel border-l border-border bg-background flex flex-col overflow-hidden",
121
- // Desktop: always visible, fixed width
122
- "lg:relative lg:w-96 lg:h-full lg:z-auto",
123
- // Mobile: drawer behavior from right - z-[60] to appear above header (z-50)
124
- "fixed inset-y-0 right-0 z-[60] w-[320px] sm:w-[360px] h-full",
125
- "transform transition-transform duration-300 ease-in-out",
126
- "lg:transform-none lg:translate-x-0",
127
- isMobile && !isRightSidebarOpen && "translate-x-full",
128
- isMobile && isRightSidebarOpen && "translate-x-0"
129
- )}
130
- >
131
- {/* Header */}
132
- <div className="docs-agent-header shrink-0 px-3 sm:px-4 h-[41px] flex items-center border-b border-border bg-muted/30">
133
- <div className="flex items-center justify-between gap-2 w-full">
134
- {/* Left: Assistant */}
135
- <div className="docs-agent-title flex items-center gap-2.5">
136
- <div className="docs-agent-avatar size-7 rounded-full overflow-hidden bg-muted flex items-center justify-center shrink-0">
137
- <Image src="/icon.png" alt="Assistant" width={28} height={28} className="size-7 object-cover" />
138
- </div>
139
- <span className="text-sm font-medium">Assistant</span>
140
- </div>
141
-
142
- {/* Right: Actions */}
143
- <div className="flex items-center gap-1 shrink-0">
144
- {/* Reset conversation button - only show when there are messages */}
145
- {hasMessages && (
146
- <Tooltip>
147
- <TooltipTrigger asChild>
148
- <Button
149
- variant="ghost"
150
- size="icon"
151
- onClick={handleResetConversation}
152
- className="h-7 w-7 text-muted-foreground hover:text-foreground"
153
- >
154
- <ArrowClockwise className="h-4 w-4" weight="bold" />
155
- </Button>
156
- </TooltipTrigger>
157
- <TooltipContent side="bottom">New conversation</TooltipContent>
158
- </Tooltip>
159
- )}
160
-
161
- {/* Mobile close button */}
162
- {isMobile && (
163
- <Button
164
- variant="ghost"
165
- size="icon"
166
- onClick={closeRightSidebar}
167
- className="h-7 w-7 lg:hidden"
168
- >
169
- <X className="h-4 w-4" weight="bold" />
170
- </Button>
171
- )}
172
- </div>
173
- </div>
174
- </div>
175
-
176
- {/* Content */}
177
- <div className="docs-agent-content flex-1 overflow-hidden">
178
- <AgentChat
179
- key={chatKey}
180
- collection={collection}
181
- currentEndpoint={request}
182
- apiSummary={apiSummary}
183
- onNavigate={onNavigateToEndpoint}
184
- onPrefill={onPrefillParameters}
185
- debugContext={pendingDebugContext}
186
- onDebugContextConsumed={handleDebugContextConsumed}
187
- explainContext={explainContext}
188
- onExplainContextConsumed={onClearExplainContext}
189
- onOpenGlobalAuth={onOpenGlobalAuth}
190
- onNavigateToAuthTab={onNavigateToAuthTab}
191
- onNavigateToParamsTab={onNavigateToParamsTab}
192
- onNavigateToBodyTab={onNavigateToBodyTab}
193
- onNavigateToHeadersTab={onNavigateToHeadersTab}
194
- onNavigateToDocSection={onNavigateToDocSection}
195
- onNavigateToDocPage={onNavigateToDocPage}
196
- onHasMessagesChange={setHasMessages}
197
- />
198
- </div>
199
- </div>
200
- </>
201
- )
202
- }
@@ -1,118 +0,0 @@
1
- 'use client'
2
-
3
- import { ReactNode, useState, useRef, useEffect } from 'react'
4
- import { CaretRight } from '@phosphor-icons/react'
5
- import { cn } from '@/lib/utils'
6
-
7
- interface SidebarGroupProps {
8
- title: ReactNode
9
- children: ReactNode
10
- defaultOpen?: boolean
11
- selected?: boolean
12
- indent?: number
13
- onClick?: () => void
14
- asideContent?: ReactNode
15
- /** Selected child slug - when this changes and a child is selected, auto-expand */
16
- selectedChildSlug?: string | null
17
- }
18
-
19
- /**
20
- * Sidebar Group component - collapsible group with toggle
21
- * Arrow on right side with smooth rotation and expand animations
22
- */
23
- export function SidebarGroup({
24
- title,
25
- children,
26
- defaultOpen = false,
27
- selected = false,
28
- indent = 0,
29
- onClick,
30
- asideContent,
31
- selectedChildSlug,
32
- }: SidebarGroupProps) {
33
- const [isOpen, setIsOpen] = useState(defaultOpen)
34
- const contentRef = useRef<HTMLUListElement>(null)
35
- const [contentHeight, setContentHeight] = useState<number | undefined>(
36
- defaultOpen ? undefined : 0
37
- )
38
-
39
- // Auto-expand when a child is selected (e.g., via agent navigation)
40
- // Triggers on defaultOpen change OR when selectedChildSlug changes (even if defaultOpen stays true)
41
- useEffect(() => {
42
- if (defaultOpen) {
43
- setIsOpen(true)
44
- }
45
- }, [defaultOpen, selectedChildSlug])
46
-
47
- // Update height when open state changes
48
- useEffect(() => {
49
- if (isOpen) {
50
- const height = contentRef.current?.scrollHeight
51
- setContentHeight(height)
52
- // After animation, set to auto for dynamic content
53
- const timer = setTimeout(() => setContentHeight(undefined), 200)
54
- return () => clearTimeout(timer)
55
- } else {
56
- // First set the current height, then animate to 0
57
- const height = contentRef.current?.scrollHeight
58
- setContentHeight(height)
59
- requestAnimationFrame(() => {
60
- setContentHeight(0)
61
- })
62
- }
63
- }, [isOpen])
64
-
65
- const handleToggle = () => {
66
- setIsOpen(!isOpen)
67
- onClick?.()
68
- }
69
-
70
- return (
71
- <li className="docs-sidebar-group flex flex-col">
72
- <button
73
- type="button"
74
- aria-expanded={isOpen}
75
- onClick={handleToggle}
76
- className={cn(
77
- // Base styles
78
- 'docs-sidebar-group-toggle group/button flex items-center rounded-lg px-3 py-2 w-full text-left',
79
- 'text-sm leading-5 transition-colors duration-150',
80
- // State variants
81
- selected
82
- ? 'docs-sidebar-group-active bg-sidebar-primary text-sidebar-primary-foreground font-medium'
83
- : 'text-sidebar-foreground/80 hover:bg-sidebar-accent/30 hover:text-sidebar-foreground'
84
- )}
85
- style={{ paddingLeft: indent > 0 ? `${indent * 12 + 12}px` : undefined }}
86
- >
87
- <span className="flex-1 truncate font-medium">{title}</span>
88
- {asideContent && (
89
- <span className="ml-2 shrink-0">{asideContent}</span>
90
- )}
91
- {/* Toggle icon - right side with rotation animation */}
92
- <span className="docs-sidebar-group-icon ml-2 text-sidebar-foreground/50 group-hover/button:text-sidebar-foreground/70">
93
- <CaretRight
94
- weight="bold"
95
- className={cn(
96
- "h-3.5 w-3.5 transition-transform duration-200 ease-out",
97
- isOpen && "rotate-90"
98
- )}
99
- />
100
- </span>
101
- </button>
102
- {/* Child items with expand animation */}
103
- <ul
104
- ref={contentRef}
105
- className={cn(
106
- "docs-sidebar-group-items flex flex-col overflow-hidden transition-all duration-200 ease-out",
107
- !isOpen && "opacity-0",
108
- isOpen && "opacity-100"
109
- )}
110
- style={{
111
- height: contentHeight !== undefined ? `${contentHeight}px` : 'auto',
112
- }}
113
- >
114
- {children}
115
- </ul>
116
- </li>
117
- )
118
- }
@@ -1,212 +0,0 @@
1
- 'use client'
2
-
3
- import { ReactNode, useRef, useEffect, useLayoutEffect, useState, createContext, useContext } from 'react'
4
- import { cn } from '@/lib/utils'
5
- import { getPhosphorIcon } from '@/lib/utils/icons'
6
-
7
- // Context for the sliding indicator
8
- interface SlidingIndicatorContextType {
9
- registerItem: (id: string, element: HTMLElement | null) => void
10
- selectedId: string | null
11
- setSelectedId: (id: string) => void
12
- }
13
-
14
- const SlidingIndicatorContext = createContext<SlidingIndicatorContextType | null>(null)
15
-
16
- /**
17
- * Wrapper component that provides sliding indicator animation
18
- */
19
- interface SlidingIndicatorProviderProps {
20
- children: ReactNode
21
- className?: string
22
- }
23
-
24
- export function SlidingIndicatorProvider({ children, className }: SlidingIndicatorProviderProps) {
25
- const containerRef = useRef<HTMLDivElement>(null)
26
- const itemsRef = useRef<Map<string, HTMLElement>>(new Map())
27
- const [selectedId, setSelectedId] = useState<string | null>(null)
28
- const [indicatorStyle, setIndicatorStyle] = useState<React.CSSProperties>({
29
- opacity: 0,
30
- top: 0,
31
- height: 0,
32
- })
33
-
34
- const registerItem = (id: string, element: HTMLElement | null) => {
35
- if (element) {
36
- itemsRef.current.set(id, element)
37
- } else {
38
- itemsRef.current.delete(id)
39
- }
40
- }
41
-
42
- // Update indicator position when selection changes
43
- useLayoutEffect(() => {
44
- if (!selectedId || !containerRef.current) {
45
- setIndicatorStyle(prev => ({ ...prev, opacity: 0 }))
46
- return
47
- }
48
-
49
- const selectedElement = itemsRef.current.get(selectedId)
50
- if (!selectedElement) {
51
- setIndicatorStyle(prev => ({ ...prev, opacity: 0 }))
52
- return
53
- }
54
-
55
- const containerRect = containerRef.current.getBoundingClientRect()
56
- const itemRect = selectedElement.getBoundingClientRect()
57
-
58
- setIndicatorStyle({
59
- opacity: 1,
60
- top: itemRect.top - containerRect.top + containerRef.current.scrollTop,
61
- height: itemRect.height,
62
- left: 8,
63
- right: 8,
64
- })
65
- }, [selectedId])
66
-
67
- // Also update on scroll to keep indicator in sync
68
- useEffect(() => {
69
- const container = containerRef.current
70
- if (!container) return
71
-
72
- const handleScroll = () => {
73
- if (!selectedId) return
74
- const selectedElement = itemsRef.current.get(selectedId)
75
- if (!selectedElement) return
76
-
77
- const containerRect = container.getBoundingClientRect()
78
- const itemRect = selectedElement.getBoundingClientRect()
79
-
80
- setIndicatorStyle(prev => ({
81
- ...prev,
82
- top: itemRect.top - containerRect.top + container.scrollTop,
83
- }))
84
- }
85
-
86
- container.addEventListener('scroll', handleScroll, { passive: true })
87
- return () => container.removeEventListener('scroll', handleScroll)
88
- }, [selectedId])
89
-
90
- return (
91
- <SlidingIndicatorContext.Provider value={{ registerItem, selectedId, setSelectedId }}>
92
- <div ref={containerRef} className={cn('relative', className)}>
93
- {/* Sliding indicator background */}
94
- <div
95
- className="docs-sidebar-indicator absolute rounded-lg bg-background dark:bg-stone-800/50 pointer-events-none z-0"
96
- style={{
97
- ...indicatorStyle,
98
- transition: 'top 350ms cubic-bezier(0.4, 0, 0.2, 1), height 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 200ms ease-out',
99
- }}
100
- />
101
- {children}
102
- </div>
103
- </SlidingIndicatorContext.Provider>
104
- )
105
- }
106
-
107
- interface SidebarItemProps {
108
- children: ReactNode
109
- selected?: boolean
110
- active?: boolean
111
- disabled?: boolean
112
- indent?: number
113
- onClick?: () => void
114
- className?: string
115
- asideContent?: ReactNode
116
- /** Unique ID for sliding animation */
117
- itemId?: string
118
- /** Phosphor icon name */
119
- icon?: string
120
- }
121
-
122
- /**
123
- * Sidebar Item component - individual clickable item in the sidebar
124
- * Uses subtle sage/mint style when selected with smooth sliding animation
125
- */
126
- export function SidebarItem({
127
- children,
128
- selected = false,
129
- active = false,
130
- disabled = false,
131
- indent = 0,
132
- onClick,
133
- className,
134
- asideContent,
135
- itemId,
136
- icon,
137
- }: SidebarItemProps) {
138
- const buttonRef = useRef<HTMLButtonElement>(null)
139
- const context = useContext(SlidingIndicatorContext)
140
- const id = itemId || String(children)
141
- const IconComponent = getPhosphorIcon(icon)
142
-
143
- // Register this item with the sliding indicator provider
144
- useEffect(() => {
145
- if (context && buttonRef.current) {
146
- context.registerItem(id, buttonRef.current)
147
- return () => context.registerItem(id, null)
148
- }
149
- }, [context, id])
150
-
151
- // Update selected state in context
152
- useEffect(() => {
153
- if (context && selected) {
154
- context.setSelectedId(id)
155
- }
156
- }, [context, selected, id])
157
-
158
- // Auto-scroll into view when selected (e.g., via agent navigation)
159
- useEffect(() => {
160
- if (selected && buttonRef.current) {
161
- // Small delay to allow folder expansion animation to complete
162
- setTimeout(() => {
163
- buttonRef.current?.scrollIntoView({
164
- behavior: 'smooth',
165
- block: 'center',
166
- })
167
- }, 100)
168
- }
169
- }, [selected])
170
-
171
- // Check if we're inside a sliding indicator provider
172
- const hasSliding = context !== null
173
-
174
- return (
175
- <li className="docs-sidebar-item-wrapper flex flex-col">
176
- <button
177
- ref={buttonRef}
178
- type="button"
179
- disabled={disabled}
180
- aria-selected={selected}
181
- onClick={onClick}
182
- className={cn(
183
- // Base styles
184
- 'docs-sidebar-item group/button flex items-center rounded-lg px-3 py-2 w-full text-left relative z-10',
185
- 'text-sm leading-5 transition-colors duration-150',
186
- // Indentation
187
- indent > 0 && `ml-${indent * 3}`,
188
- // State variants
189
- selected
190
- ? hasSliding
191
- ? 'docs-sidebar-item-active text-green-700 font-semibold dark:text-green-400' // No bg when sliding
192
- : 'docs-sidebar-item-active bg-background text-green-700 font-semibold dark:bg-stone-800/50 dark:text-green-400'
193
- : active
194
- ? 'text-sidebar-foreground font-medium hover:bg-sidebar-accent/50'
195
- : disabled
196
- ? 'text-sidebar-foreground/50 cursor-default'
197
- : 'text-sidebar-foreground/80 hover:bg-sidebar-accent/30 hover:text-sidebar-foreground',
198
- className
199
- )}
200
- style={{ paddingLeft: indent > 0 ? `${indent * 12 + 12}px` : undefined }}
201
- >
202
- {IconComponent && (
203
- <IconComponent className="h-4 w-4 mr-2 shrink-0 opacity-60" weight="regular" />
204
- )}
205
- <span className="flex-1 truncate">{children}</span>
206
- {asideContent && (
207
- <span className="ml-2 shrink-0">{asideContent}</span>
208
- )}
209
- </button>
210
- </li>
211
- )
212
- }
@@ -1,38 +0,0 @@
1
- 'use client'
2
-
3
- import { ReactNode } from 'react'
4
- import { cn } from '@/lib/utils'
5
- import { getPhosphorIcon } from '@/lib/utils/icons'
6
-
7
- interface SidebarSectionProps {
8
- title: string
9
- children: ReactNode
10
- className?: string
11
- /** Phosphor icon name (e.g., "rocket", "book-open", "sliders") */
12
- icon?: string
13
- }
14
-
15
- /**
16
- * Sidebar Section component - groups items under a title with optional icon
17
- */
18
- export function SidebarSection({ title, children, className = '', icon }: SidebarSectionProps) {
19
- const IconComponent = getPhosphorIcon(icon)
20
-
21
- return (
22
- <div className={cn('docs-sidebar-section flex flex-col', className)}>
23
- {/* Section title with optional icon */}
24
- <div className="docs-sidebar-section-header flex items-center gap-2 px-4 py-3">
25
- {IconComponent && (
26
- <IconComponent className="docs-sidebar-section-icon h-4 w-4 text-sidebar-foreground/70" weight="regular" />
27
- )}
28
- <span className="docs-sidebar-section-title text-sm font-semibold text-sidebar-foreground">
29
- {title}
30
- </span>
31
- </div>
32
- {/* Section items */}
33
- <ul className="docs-sidebar-section-items flex flex-col gap-0.5 px-2 pb-4">
34
- {children}
35
- </ul>
36
- </div>
37
- )
38
- }
@@ -1,11 +0,0 @@
1
- "use client"
2
-
3
- import * as React from "react"
4
- import { ThemeProvider as NextThemesProvider } from "next-themes"
5
-
6
- export function ThemeProvider({
7
- children,
8
- ...props
9
- }: React.ComponentProps<typeof NextThemesProvider>) {
10
- return <NextThemesProvider {...props}>{children}</NextThemesProvider>
11
- }
@@ -1,76 +0,0 @@
1
- "use client"
2
-
3
- import * as React from "react"
4
- import { Moon, Sun, Desktop, Check } from "@phosphor-icons/react"
5
- import { useTheme } from "next-themes"
6
- import { Button } from "@/components/ui/button"
7
- import {
8
- DropdownMenu,
9
- DropdownMenuContent,
10
- DropdownMenuItem,
11
- DropdownMenuTrigger,
12
- } from "@/components/ui/dropdown-menu"
13
- import { cn } from "@/lib/utils"
14
-
15
- export function ThemeToggle() {
16
- const { theme, setTheme } = useTheme()
17
- const [mounted, setMounted] = React.useState(false)
18
-
19
- // Avoid hydration mismatch
20
- React.useEffect(() => {
21
- setMounted(true)
22
- }, [])
23
-
24
- return (
25
- <DropdownMenu>
26
- <DropdownMenuTrigger asChild>
27
- <Button variant="ghost" size="icon" className="h-9 w-9">
28
- <Sun className="h-4 w-4 rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
29
- <Moon className="absolute h-4 w-4 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
30
- <span className="sr-only">Toggle theme</span>
31
- </Button>
32
- </DropdownMenuTrigger>
33
- <DropdownMenuContent align="end" className="min-w-[140px]">
34
- <DropdownMenuItem
35
- onClick={() => setTheme("light")}
36
- className={cn(
37
- "flex items-center justify-between gap-2",
38
- mounted && theme === "light" && "bg-accent"
39
- )}
40
- >
41
- <div className="flex items-center gap-2">
42
- <Sun className="h-4 w-4" />
43
- <span>Light</span>
44
- </div>
45
- {mounted && theme === "light" && <Check className="h-4 w-4" />}
46
- </DropdownMenuItem>
47
- <DropdownMenuItem
48
- onClick={() => setTheme("dark")}
49
- className={cn(
50
- "flex items-center justify-between gap-2",
51
- mounted && theme === "dark" && "bg-accent"
52
- )}
53
- >
54
- <div className="flex items-center gap-2">
55
- <Moon className="h-4 w-4" />
56
- <span>Dark</span>
57
- </div>
58
- {mounted && theme === "dark" && <Check className="h-4 w-4" />}
59
- </DropdownMenuItem>
60
- <DropdownMenuItem
61
- onClick={() => setTheme("system")}
62
- className={cn(
63
- "flex items-center justify-between gap-2",
64
- mounted && theme === "system" && "bg-accent"
65
- )}
66
- >
67
- <div className="flex items-center gap-2">
68
- <Desktop className="h-4 w-4" />
69
- <span>System</span>
70
- </div>
71
- {mounted && theme === "system" && <Check className="h-4 w-4" />}
72
- </DropdownMenuItem>
73
- </DropdownMenuContent>
74
- </DropdownMenu>
75
- )
76
- }