@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
@@ -0,0 +1,321 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { CaretDown, CaretRight, Plus, Minus } from '@phosphor-icons/react';
5
+ function getTypeLabel(prop) {
6
+ if (prop.type === 'array' && prop.items) {
7
+ const itemType = prop.items.type || 'object';
8
+ return `${itemType}[]`;
9
+ }
10
+ return prop.type || 'object';
11
+ }
12
+ function hasChildProperties(prop) {
13
+ if (prop.properties && Object.keys(prop.properties).length > 0) {
14
+ return true;
15
+ }
16
+ if (prop.type === 'array' && prop.items?.properties) {
17
+ return true;
18
+ }
19
+ if (prop.allOf || prop.oneOf || prop.anyOf) {
20
+ return true;
21
+ }
22
+ return false;
23
+ }
24
+ function PropertyRow({ name, prop, isRequired, level = 0 }) {
25
+ const [showChildren, setShowChildren] = useState(false);
26
+ const hasChildren = hasChildProperties(prop);
27
+ const typeLabel = getTypeLabel(prop);
28
+ // Get child properties
29
+ const getChildProperties = ()=>{
30
+ if (prop.properties) {
31
+ return prop.properties;
32
+ }
33
+ if (prop.type === 'array' && prop.items?.properties) {
34
+ return prop.items.properties;
35
+ }
36
+ if (prop.allOf) {
37
+ // Merge all schemas
38
+ const merged = {};
39
+ prop.allOf.forEach((schema)=>{
40
+ if (schema.properties) {
41
+ Object.assign(merged, schema.properties);
42
+ }
43
+ });
44
+ return Object.keys(merged).length > 0 ? merged : null;
45
+ }
46
+ return null;
47
+ };
48
+ const getChildRequired = ()=>{
49
+ if (prop.required) return prop.required;
50
+ if (prop.type === 'array' && prop.items?.required) {
51
+ return prop.items.required;
52
+ }
53
+ if (prop.allOf) {
54
+ const allRequired = [];
55
+ prop.allOf.forEach((schema)=>{
56
+ if (schema.required) {
57
+ allRequired.push(...schema.required);
58
+ }
59
+ });
60
+ return allRequired;
61
+ }
62
+ return [];
63
+ };
64
+ const childProps = getChildProperties();
65
+ const childRequired = getChildRequired();
66
+ return /*#__PURE__*/ _jsxs("div", {
67
+ className: `${level > 0 ? 'border-l-2 border-muted pl-4 ml-2' : ''}`,
68
+ children: [
69
+ /*#__PURE__*/ _jsxs("div", {
70
+ className: "py-3 border-b border-border/50",
71
+ children: [
72
+ /*#__PURE__*/ _jsxs("div", {
73
+ className: "flex items-start gap-2 flex-wrap",
74
+ children: [
75
+ /*#__PURE__*/ _jsx("span", {
76
+ className: "font-semibold text-sm text-foreground",
77
+ children: name
78
+ }),
79
+ /*#__PURE__*/ _jsx("span", {
80
+ className: "text-xs text-muted-foreground",
81
+ children: typeLabel
82
+ }),
83
+ prop.format && /*#__PURE__*/ _jsxs(_Fragment, {
84
+ children: [
85
+ /*#__PURE__*/ _jsx("span", {
86
+ className: "text-xs text-muted-foreground",
87
+ children: "·"
88
+ }),
89
+ /*#__PURE__*/ _jsx("span", {
90
+ className: "text-xs text-muted-foreground",
91
+ children: prop.format
92
+ })
93
+ ]
94
+ }),
95
+ isRequired && /*#__PURE__*/ _jsx("span", {
96
+ className: "text-xs text-orange-500 font-medium",
97
+ children: "required"
98
+ }),
99
+ prop.example !== undefined && /*#__PURE__*/ _jsx("button", {
100
+ className: "text-xs text-muted-foreground hover:text-foreground underline",
101
+ children: "Example"
102
+ })
103
+ ]
104
+ }),
105
+ prop.description && /*#__PURE__*/ _jsx("p", {
106
+ className: "text-sm text-muted-foreground mt-1",
107
+ children: prop.description
108
+ }),
109
+ prop.enum && /*#__PURE__*/ _jsxs("div", {
110
+ className: "mt-2 flex flex-wrap gap-1",
111
+ children: [
112
+ /*#__PURE__*/ _jsx("span", {
113
+ className: "text-xs text-muted-foreground",
114
+ children: "Enum:"
115
+ }),
116
+ prop.enum.map((val, idx)=>/*#__PURE__*/ _jsx("code", {
117
+ className: "text-xs bg-muted px-1.5 py-0.5 rounded",
118
+ children: JSON.stringify(val)
119
+ }, idx))
120
+ ]
121
+ }),
122
+ prop.default !== undefined && /*#__PURE__*/ _jsxs("div", {
123
+ className: "mt-1",
124
+ children: [
125
+ /*#__PURE__*/ _jsx("span", {
126
+ className: "text-xs text-muted-foreground",
127
+ children: "Default: "
128
+ }),
129
+ /*#__PURE__*/ _jsx("code", {
130
+ className: "text-xs bg-muted px-1.5 py-0.5 rounded",
131
+ children: JSON.stringify(prop.default)
132
+ })
133
+ ]
134
+ }),
135
+ hasChildren && childProps && /*#__PURE__*/ _jsx("button", {
136
+ onClick: ()=>setShowChildren(!showChildren),
137
+ className: "mt-2 flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground border rounded-full px-3 py-1 hover:bg-muted/50 transition-colors",
138
+ children: showChildren ? /*#__PURE__*/ _jsxs(_Fragment, {
139
+ children: [
140
+ /*#__PURE__*/ _jsx(Minus, {
141
+ className: "h-3 w-3",
142
+ weight: "bold"
143
+ }),
144
+ "Hide Child Attributes"
145
+ ]
146
+ }) : /*#__PURE__*/ _jsxs(_Fragment, {
147
+ children: [
148
+ /*#__PURE__*/ _jsx(Plus, {
149
+ className: "h-3 w-3",
150
+ weight: "bold"
151
+ }),
152
+ "Show Child Attributes"
153
+ ]
154
+ })
155
+ })
156
+ ]
157
+ }),
158
+ showChildren && childProps && /*#__PURE__*/ _jsx("div", {
159
+ className: "mt-2",
160
+ children: Object.entries(childProps).map(([childName, childProp])=>/*#__PURE__*/ _jsx(PropertyRow, {
161
+ name: childName,
162
+ prop: childProp,
163
+ isRequired: childRequired.includes(childName),
164
+ level: level + 1
165
+ }, childName))
166
+ })
167
+ ]
168
+ });
169
+ }
170
+ export function SchemaViewer({ schema, requiredFields = [], level = 0 }) {
171
+ // Parse schema if it's a string
172
+ let parsedSchema;
173
+ try {
174
+ if (typeof schema === 'string') {
175
+ parsedSchema = JSON.parse(schema);
176
+ } else {
177
+ parsedSchema = schema;
178
+ }
179
+ } catch {
180
+ // If parsing fails, show raw content
181
+ return /*#__PURE__*/ _jsx("pre", {
182
+ className: "text-xs text-muted-foreground p-3 bg-muted/50 rounded overflow-auto",
183
+ children: typeof schema === 'string' ? schema : JSON.stringify(schema, null, 2)
184
+ });
185
+ }
186
+ // Handle nested schema property (common in OpenAPI responses)
187
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
188
+ if (parsedSchema.schema) {
189
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
190
+ parsedSchema = parsedSchema.schema;
191
+ }
192
+ // Handle allOf, oneOf, anyOf at root level
193
+ if (parsedSchema.allOf) {
194
+ const mergedProps = {};
195
+ const mergedRequired = [];
196
+ parsedSchema.allOf.forEach((s)=>{
197
+ if (s.properties) Object.assign(mergedProps, s.properties);
198
+ if (s.required) mergedRequired.push(...s.required);
199
+ });
200
+ parsedSchema = {
201
+ ...parsedSchema,
202
+ properties: mergedProps,
203
+ required: mergedRequired
204
+ };
205
+ }
206
+ const properties = parsedSchema.properties || {};
207
+ const required = parsedSchema.required || requiredFields;
208
+ if (Object.keys(properties).length === 0) {
209
+ // No properties - maybe it's a simple type
210
+ if (parsedSchema.type) {
211
+ return /*#__PURE__*/ _jsxs("div", {
212
+ className: "py-2",
213
+ children: [
214
+ /*#__PURE__*/ _jsx("span", {
215
+ className: "text-xs text-muted-foreground",
216
+ children: parsedSchema.type
217
+ }),
218
+ parsedSchema.description && /*#__PURE__*/ _jsx("p", {
219
+ className: "text-sm text-muted-foreground mt-1",
220
+ children: parsedSchema.description
221
+ })
222
+ ]
223
+ });
224
+ }
225
+ return /*#__PURE__*/ _jsx("pre", {
226
+ className: "text-xs text-muted-foreground p-3 bg-muted/50 rounded overflow-auto",
227
+ children: JSON.stringify(parsedSchema, null, 2)
228
+ });
229
+ }
230
+ return /*#__PURE__*/ _jsx("div", {
231
+ className: level > 0 ? 'pl-4 border-l-2 border-muted' : '',
232
+ children: Object.entries(properties).map(([name, prop])=>/*#__PURE__*/ _jsx(PropertyRow, {
233
+ name: name,
234
+ prop: prop,
235
+ isRequired: required.includes(name),
236
+ level: level
237
+ }, name))
238
+ });
239
+ }
240
+ export function ResponseSchema({ code, status, description, schema, contentType = 'application/json' }) {
241
+ const [isOpen, setIsOpen] = useState(code >= 200 && code < 300);
242
+ const [viewMode, setViewMode] = useState('schema');
243
+ // Try to parse schema
244
+ let parsedSchema = null;
245
+ try {
246
+ if (typeof schema === 'string') {
247
+ parsedSchema = JSON.parse(schema);
248
+ } else {
249
+ parsedSchema = schema;
250
+ }
251
+ // Handle nested schema property
252
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
253
+ if (parsedSchema && parsedSchema.schema) {
254
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
255
+ parsedSchema = parsedSchema.schema;
256
+ }
257
+ } catch {
258
+ parsedSchema = null;
259
+ }
260
+ const typeLabel = parsedSchema?.type || 'object';
261
+ return /*#__PURE__*/ _jsxs("div", {
262
+ className: "border-b border-border",
263
+ children: [
264
+ /*#__PURE__*/ _jsxs("button", {
265
+ onClick: ()=>setIsOpen(!isOpen),
266
+ className: "w-full py-3 flex items-center gap-3 hover:bg-muted/30 transition-colors text-left",
267
+ children: [
268
+ isOpen ? /*#__PURE__*/ _jsx(CaretDown, {
269
+ className: "h-4 w-4 text-muted-foreground shrink-0",
270
+ weight: "bold"
271
+ }) : /*#__PURE__*/ _jsx(CaretRight, {
272
+ className: "h-4 w-4 text-muted-foreground shrink-0",
273
+ weight: "bold"
274
+ }),
275
+ /*#__PURE__*/ _jsx("span", {
276
+ className: `font-semibold text-sm ${code >= 200 && code < 300 ? 'text-green-600' : code >= 400 ? 'text-red-500' : 'text-orange-500'}`,
277
+ children: code
278
+ }),
279
+ /*#__PURE__*/ _jsx("span", {
280
+ className: "text-sm text-muted-foreground truncate",
281
+ children: description || status
282
+ })
283
+ ]
284
+ }),
285
+ isOpen && /*#__PURE__*/ _jsxs("div", {
286
+ className: "pb-4 pl-7",
287
+ children: [
288
+ /*#__PURE__*/ _jsxs("div", {
289
+ className: "flex items-center justify-between mb-3",
290
+ children: [
291
+ /*#__PURE__*/ _jsxs("div", {
292
+ className: "flex items-center gap-2",
293
+ children: [
294
+ /*#__PURE__*/ _jsx("span", {
295
+ className: "text-xs text-muted-foreground",
296
+ children: typeLabel
297
+ }),
298
+ /*#__PURE__*/ _jsx("button", {
299
+ onClick: ()=>setViewMode(viewMode === 'schema' ? 'example' : 'schema'),
300
+ className: `text-xs underline ${viewMode === 'example' ? 'text-foreground' : 'text-muted-foreground hover:text-foreground'}`,
301
+ children: "Example"
302
+ })
303
+ ]
304
+ }),
305
+ /*#__PURE__*/ _jsx("span", {
306
+ className: "text-xs text-muted-foreground font-mono",
307
+ children: contentType
308
+ })
309
+ ]
310
+ }),
311
+ viewMode === 'schema' && parsedSchema ? /*#__PURE__*/ _jsx(SchemaViewer, {
312
+ schema: parsedSchema
313
+ }) : /*#__PURE__*/ _jsx("pre", {
314
+ className: "text-xs bg-muted/50 p-3 rounded overflow-auto",
315
+ children: typeof schema === 'string' ? schema : JSON.stringify(schema, null, 2)
316
+ })
317
+ ]
318
+ })
319
+ ]
320
+ });
321
+ }
@@ -0,0 +1,222 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useState, useMemo, useEffect } from 'react';
4
+ import { Folder, FolderOpen } from '@phosphor-icons/react';
5
+ import { MethodBadge } from '../shared/method-badge';
6
+ import { SidebarItem } from './sidebar-item';
7
+ import { SidebarGroup } from './sidebar-group';
8
+ /**
9
+ * Find the folder ID that contains a request (recursive)
10
+ */ function _findFolderContainingRequest(collection, requestId) {
11
+ // Check if request is directly in this collection's folders
12
+ for (const folder of collection.folders){
13
+ // Check direct requests in folder
14
+ if (folder.requests.some((r)=>r.id === requestId)) {
15
+ return folder.id;
16
+ }
17
+ // Check nested folders recursively
18
+ const nestedFolderId = _findFolderContainingRequest(folder, requestId);
19
+ if (nestedFolderId) {
20
+ return folder.id // Return this folder's ID so it gets expanded too
21
+ ;
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ /**
27
+ * Get all folder IDs that need to be expanded to show a request
28
+ */ function getFoldersToExpand(collection, requestId, path = []) {
29
+ for (const folder of collection.folders){
30
+ // Check direct requests in folder
31
+ if (folder.requests.some((r)=>r.id === requestId)) {
32
+ return [
33
+ ...path,
34
+ folder.id
35
+ ];
36
+ }
37
+ // Check nested folders recursively
38
+ const nestedPath = getFoldersToExpand(folder, requestId, [
39
+ ...path,
40
+ folder.id
41
+ ]);
42
+ if (nestedPath.length > path.length) {
43
+ return nestedPath;
44
+ }
45
+ }
46
+ return path;
47
+ }
48
+ export function CollectionTree({ collection, selectedRequest, onSelectRequest, searchQuery = '', level = 0 }) {
49
+ // Track which folders are expanded
50
+ const [expandedFolders, setExpandedFolders] = useState(()=>{
51
+ const expanded = new Set();
52
+ // Expand all folders at root level by default
53
+ if (level === 0) {
54
+ collection.folders.forEach((folder)=>{
55
+ expanded.add(folder.id);
56
+ });
57
+ }
58
+ return expanded;
59
+ });
60
+ // Re-expand all folders when collection folders change (e.g., tab switch)
61
+ // This ensures folders are expanded when switching between tabs with different folder sets
62
+ const folderIds = useMemo(()=>collection.folders.map((f)=>f.id).sort().join(','), [
63
+ collection.folders
64
+ ]);
65
+ useEffect(()=>{
66
+ if (level === 0 && collection.folders.length > 0) {
67
+ setExpandedFolders((prev)=>{
68
+ const newExpanded = new Set(prev);
69
+ // Add all current folder IDs to expanded set
70
+ collection.folders.forEach((folder)=>{
71
+ newExpanded.add(folder.id);
72
+ });
73
+ return newExpanded;
74
+ });
75
+ }
76
+ }, [
77
+ folderIds,
78
+ level,
79
+ collection.folders
80
+ ]);
81
+ // Auto-expand folder when selectedRequest changes (e.g., via agent navigation)
82
+ useEffect(()=>{
83
+ if (selectedRequest && level === 0) {
84
+ const foldersToExpand = getFoldersToExpand(collection, selectedRequest.id);
85
+ if (foldersToExpand.length > 0) {
86
+ setExpandedFolders((prev)=>{
87
+ const newExpanded = new Set(prev);
88
+ foldersToExpand.forEach((folderId)=>newExpanded.add(folderId));
89
+ return newExpanded;
90
+ });
91
+ }
92
+ }
93
+ }, [
94
+ selectedRequest,
95
+ collection,
96
+ level
97
+ ]);
98
+ const toggleFolder = (folderId)=>{
99
+ const newExpanded = new Set(expandedFolders);
100
+ if (newExpanded.has(folderId)) {
101
+ newExpanded.delete(folderId);
102
+ } else {
103
+ newExpanded.add(folderId);
104
+ }
105
+ setExpandedFolders(newExpanded);
106
+ };
107
+ // Filter items based on search query
108
+ const filteredData = useMemo(()=>{
109
+ if (!searchQuery.trim()) {
110
+ return {
111
+ folders: collection.folders,
112
+ requests: collection.requests
113
+ };
114
+ }
115
+ const query = searchQuery.toLowerCase();
116
+ const filteredFolders = [];
117
+ const filteredRequests = [];
118
+ // Filter folders
119
+ for (const folder of collection.folders){
120
+ const folderMatches = folder.name.toLowerCase().includes(query);
121
+ const folderRequests = folder.requests.filter((req)=>req.name.toLowerCase().includes(query) || req.endpoint.toLowerCase().includes(query) || req.description?.toLowerCase().includes(query));
122
+ if (folderMatches || folderRequests.length > 0) {
123
+ filteredFolders.push({
124
+ ...folder,
125
+ requests: folderMatches ? folder.requests : folderRequests
126
+ });
127
+ }
128
+ }
129
+ // Filter root requests
130
+ filteredRequests.push(...collection.requests.filter((req)=>req.name.toLowerCase().includes(query) || req.endpoint.toLowerCase().includes(query) || req.description?.toLowerCase().includes(query)));
131
+ return {
132
+ folders: filteredFolders,
133
+ requests: filteredRequests
134
+ };
135
+ }, [
136
+ collection,
137
+ searchQuery
138
+ ]);
139
+ // Show message if no content
140
+ if (filteredData.folders.length === 0 && filteredData.requests.length === 0) {
141
+ if (level === 0) {
142
+ return /*#__PURE__*/ _jsx("li", {
143
+ className: "py-4 px-2 text-center",
144
+ children: /*#__PURE__*/ _jsx("p", {
145
+ className: "text-sm text-muted-foreground",
146
+ children: "No endpoints found"
147
+ })
148
+ });
149
+ }
150
+ return null;
151
+ }
152
+ return /*#__PURE__*/ _jsxs(_Fragment, {
153
+ children: [
154
+ filteredData.folders.map((folder)=>{
155
+ const isExpanded = expandedFolders.has(folder.id);
156
+ const hasContent = folder.requests.length > 0 || folder.folders.length > 0;
157
+ if (!hasContent) {
158
+ // Empty folder - render as disabled item
159
+ return /*#__PURE__*/ _jsx(SidebarItem, {
160
+ indent: level,
161
+ disabled: true,
162
+ asideContent: /*#__PURE__*/ _jsx(Folder, {
163
+ className: "h-4 w-4 text-sidebar-foreground/40",
164
+ weight: "fill"
165
+ }),
166
+ children: folder.name
167
+ }, folder.id);
168
+ }
169
+ return /*#__PURE__*/ _jsxs(SidebarGroup, {
170
+ title: /*#__PURE__*/ _jsxs("span", {
171
+ className: "flex items-center gap-2",
172
+ children: [
173
+ isExpanded ? /*#__PURE__*/ _jsx(FolderOpen, {
174
+ className: "h-4 w-4 text-sidebar-foreground/60 shrink-0",
175
+ weight: "fill"
176
+ }) : /*#__PURE__*/ _jsx(Folder, {
177
+ className: "h-4 w-4 text-sidebar-foreground/60 shrink-0",
178
+ weight: "fill"
179
+ }),
180
+ /*#__PURE__*/ _jsx("span", {
181
+ className: "truncate",
182
+ children: folder.name
183
+ })
184
+ ]
185
+ }),
186
+ defaultOpen: isExpanded,
187
+ indent: level,
188
+ onClick: ()=>toggleFolder(folder.id),
189
+ children: [
190
+ folder.folders.length > 0 && /*#__PURE__*/ _jsx(CollectionTree, {
191
+ collection: folder,
192
+ selectedRequest: selectedRequest,
193
+ onSelectRequest: onSelectRequest,
194
+ searchQuery: searchQuery,
195
+ level: level + 1
196
+ }),
197
+ folder.requests.map((request)=>/*#__PURE__*/ _jsx(SidebarItem, {
198
+ selected: selectedRequest?.id === request.id,
199
+ indent: level + 1,
200
+ onClick: ()=>onSelectRequest(request),
201
+ asideContent: /*#__PURE__*/ _jsx(MethodBadge, {
202
+ method: request.method,
203
+ size: "sm"
204
+ }),
205
+ children: request.name
206
+ }, request.id))
207
+ ]
208
+ }, folder.id);
209
+ }),
210
+ filteredData.requests.map((request)=>/*#__PURE__*/ _jsx(SidebarItem, {
211
+ selected: selectedRequest?.id === request.id,
212
+ indent: level,
213
+ onClick: ()=>onSelectRequest(request),
214
+ asideContent: /*#__PURE__*/ _jsx(MethodBadge, {
215
+ method: request.method,
216
+ size: "sm"
217
+ }),
218
+ children: request.name
219
+ }, request.id))
220
+ ]
221
+ });
222
+ }