@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,35 @@
1
+ import { NextResponse } from 'next/server';
2
+ import { readFileSync, existsSync } from 'fs';
3
+ import { join, isAbsolute } from 'path';
4
+ // Configuration
5
+ const STARTER_PATH = process.env.STARTER_PATH || 'devdoc-docs';
6
+ // Helper to resolve paths - supports both relative and absolute STARTER_PATH
7
+ function resolvePath(...paths) {
8
+ if (isAbsolute(STARTER_PATH)) {
9
+ return join(STARTER_PATH, ...paths);
10
+ }
11
+ return join(process.cwd(), STARTER_PATH, ...paths);
12
+ }
13
+ /**
14
+ * GET /api/redirects
15
+ * Returns the redirect configuration from docs.json
16
+ */ export async function GET() {
17
+ try {
18
+ const docsJsonPath = resolvePath('docs.json');
19
+ if (!existsSync(docsJsonPath)) {
20
+ return NextResponse.json({
21
+ redirects: []
22
+ });
23
+ }
24
+ const docsJsonContent = readFileSync(docsJsonPath, 'utf-8');
25
+ const docsConfig = JSON.parse(docsJsonContent);
26
+ return NextResponse.json({
27
+ redirects: docsConfig.redirects || []
28
+ });
29
+ } catch (error) {
30
+ console.error('[Redirects API] Error:', error);
31
+ return NextResponse.json({
32
+ redirects: []
33
+ });
34
+ }
35
+ }
@@ -0,0 +1,85 @@
1
+ import { NextResponse } from 'next/server';
2
+ import { readFileSync, existsSync } from 'fs';
3
+ import { join, isAbsolute } from 'path';
4
+ import { getProjectContent } from '@/lib/storage/blob';
5
+ // Configuration - match collections route
6
+ const STARTER_PATH = process.env.STARTER_PATH || 'devdoc-docs';
7
+ // Get the docs directory - respects STARTER_PATH for local development
8
+ function getDocsDir() {
9
+ const projectSlug = process.env.BRAINFISH_PROJECT_SLUG;
10
+ if (projectSlug) {
11
+ return join(process.cwd(), '.devdoc', projectSlug);
12
+ }
13
+ // Use STARTER_PATH (can be absolute or relative)
14
+ if (isAbsolute(STARTER_PATH)) {
15
+ return STARTER_PATH;
16
+ }
17
+ return join(process.cwd(), STARTER_PATH);
18
+ }
19
+ export async function GET(request) {
20
+ const searchParams = request.nextUrl.searchParams;
21
+ const path = searchParams.get('path');
22
+ if (!path) {
23
+ return NextResponse.json({
24
+ error: 'Missing path parameter'
25
+ }, {
26
+ status: 400
27
+ });
28
+ }
29
+ // Security: Only allow .graphql, .gql files
30
+ if (!path.endsWith('.graphql') && !path.endsWith('.gql')) {
31
+ return NextResponse.json({
32
+ error: 'Invalid file type'
33
+ }, {
34
+ status: 400
35
+ });
36
+ }
37
+ // Security: Prevent path traversal
38
+ if (path.includes('..')) {
39
+ return NextResponse.json({
40
+ error: 'Invalid path'
41
+ }, {
42
+ status: 400
43
+ });
44
+ }
45
+ try {
46
+ // Try blob storage first (for deployed projects)
47
+ const projectSlug = process.env.BRAINFISH_PROJECT_SLUG;
48
+ if (projectSlug) {
49
+ const projectContent = await getProjectContent(projectSlug);
50
+ if (projectContent?.files) {
51
+ const file = projectContent.files.find((f)=>f.path === path || f.path === `/${path}`);
52
+ if (file?.content) {
53
+ return new NextResponse(file.content, {
54
+ headers: {
55
+ 'Content-Type': 'text/plain'
56
+ }
57
+ });
58
+ }
59
+ }
60
+ }
61
+ // Try local filesystem
62
+ const docsDir = getDocsDir();
63
+ const fullPath = join(docsDir, path);
64
+ if (!existsSync(fullPath)) {
65
+ return NextResponse.json({
66
+ error: 'Schema file not found'
67
+ }, {
68
+ status: 404
69
+ });
70
+ }
71
+ const content = readFileSync(fullPath, 'utf-8');
72
+ return new NextResponse(content, {
73
+ headers: {
74
+ 'Content-Type': 'text/plain'
75
+ }
76
+ });
77
+ } catch (error) {
78
+ console.error('[Schema API] Error:', error);
79
+ return NextResponse.json({
80
+ error: 'Failed to read schema'
81
+ }, {
82
+ status: 500
83
+ });
84
+ }
85
+ }
@@ -0,0 +1,158 @@
1
+ import { NextResponse } from 'next/server';
2
+ import { isSubdomainRegistered } from '@/lib/storage/blob';
3
+ // Reserved/blacklisted subdomains
4
+ const BLACKLISTED_SUBDOMAINS = new Set([
5
+ // Generic reserved
6
+ 'www',
7
+ 'api',
8
+ 'app',
9
+ 'admin',
10
+ 'dashboard',
11
+ 'console',
12
+ 'panel',
13
+ 'manage',
14
+ 'login',
15
+ 'signin',
16
+ 'signup',
17
+ 'register',
18
+ 'auth',
19
+ 'oauth',
20
+ 'sso',
21
+ // Brand/product
22
+ 'devdoc',
23
+ 'brainfish',
24
+ 'docs',
25
+ 'documentation',
26
+ 'help',
27
+ 'support',
28
+ 'status',
29
+ 'blog',
30
+ 'news',
31
+ // Infrastructure
32
+ 'mail',
33
+ 'email',
34
+ 'smtp',
35
+ 'ftp',
36
+ 'cdn',
37
+ 'static',
38
+ 'assets',
39
+ 'images',
40
+ 'files',
41
+ 'media',
42
+ 'download',
43
+ 'downloads',
44
+ // Common
45
+ 'test',
46
+ 'testing',
47
+ 'dev',
48
+ 'development',
49
+ 'staging',
50
+ 'prod',
51
+ 'production',
52
+ 'demo',
53
+ 'example',
54
+ 'sandbox',
55
+ 'preview',
56
+ // Security
57
+ 'secure',
58
+ 'ssl',
59
+ 'security',
60
+ 'abuse',
61
+ 'spam',
62
+ 'postmaster',
63
+ 'hostmaster',
64
+ 'webmaster',
65
+ // Misc
66
+ 'null',
67
+ 'undefined',
68
+ 'true',
69
+ 'false',
70
+ 'root',
71
+ 'system',
72
+ 'localhost'
73
+ ]);
74
+ /**
75
+ * POST /api/subdomains/check
76
+ * Check if a subdomain is available
77
+ *
78
+ * Body:
79
+ * subdomain: string - The subdomain to check
80
+ *
81
+ * Returns:
82
+ * available: boolean
83
+ * error?: string - If not available, why
84
+ * suggestion?: string - Alternative suggestion
85
+ */ export async function POST(request) {
86
+ try {
87
+ const body = await request.json();
88
+ const { subdomain } = body;
89
+ if (!subdomain) {
90
+ return NextResponse.json({
91
+ available: false,
92
+ error: 'Subdomain is required'
93
+ }, {
94
+ status: 400
95
+ });
96
+ }
97
+ // Normalize subdomain
98
+ const normalized = subdomain.toLowerCase().trim();
99
+ // Format validation
100
+ if (normalized.length < 3) {
101
+ return NextResponse.json({
102
+ available: false,
103
+ error: 'Subdomain must be at least 3 characters'
104
+ });
105
+ }
106
+ if (normalized.length > 63) {
107
+ return NextResponse.json({
108
+ available: false,
109
+ error: 'Subdomain must be 63 characters or less'
110
+ });
111
+ }
112
+ if (!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(normalized)) {
113
+ return NextResponse.json({
114
+ available: false,
115
+ error: 'Subdomain must start and end with alphanumeric characters, and can only contain lowercase letters, numbers, and hyphens'
116
+ });
117
+ }
118
+ if (/--/.test(normalized)) {
119
+ return NextResponse.json({
120
+ available: false,
121
+ error: 'Subdomain cannot contain consecutive hyphens'
122
+ });
123
+ }
124
+ // Check blacklist
125
+ if (BLACKLISTED_SUBDOMAINS.has(normalized)) {
126
+ // Generate suggestion
127
+ const suggestion = `${normalized}-docs`;
128
+ return NextResponse.json({
129
+ available: false,
130
+ error: `"${normalized}" is a reserved subdomain`,
131
+ suggestion
132
+ });
133
+ }
134
+ // Check if subdomain is already registered (O(1) lookup from registry)
135
+ const exists = await isSubdomainRegistered(normalized);
136
+ if (exists) {
137
+ // Generate suggestion with random suffix
138
+ const suffix = Math.random().toString(36).substring(2, 6);
139
+ const suggestion = `${normalized}-${suffix}`;
140
+ return NextResponse.json({
141
+ available: false,
142
+ error: `"${normalized}" is already taken`,
143
+ suggestion
144
+ });
145
+ }
146
+ return NextResponse.json({
147
+ available: true
148
+ });
149
+ } catch (error) {
150
+ console.error('[Subdomains API] Check Error:', error);
151
+ return NextResponse.json({
152
+ available: false,
153
+ error: 'Internal server error'
154
+ }, {
155
+ status: 500
156
+ });
157
+ }
158
+ }
@@ -0,0 +1,195 @@
1
+ import { generateObject } from 'ai';
2
+ import { anthropic } from '@ai-sdk/anthropic';
3
+ import { z } from 'zod';
4
+ import crypto from 'crypto';
5
+ import { CacheUtils } from '@/lib/cache';
6
+ export const runtime = 'nodejs';
7
+ // Cache TTL: 1 week in seconds
8
+ const CACHE_TTL_SECONDS = 60 * 60 * 24 * 7 // 7 days
9
+ ;
10
+ const SuggestionsSchema = z.object({
11
+ suggestions: z.array(z.object({
12
+ title: z.string().describe('Short action phrase (2-4 words) like "Find endpoints" or "How do I"'),
13
+ label: z.string().describe('Completion of the title (2-5 words) like "for user management" or "authenticate?"'),
14
+ prompt: z.string().describe('Full question the user would ask')
15
+ })).length(4)
16
+ });
17
+ /**
18
+ * Generate a hash key for caching based on page context
19
+ * Uses SHA-256 hash of endpoint details or general API info
20
+ */ function generateCacheKey(endpointIndex, currentEndpointId) {
21
+ let content;
22
+ if (currentEndpointId) {
23
+ // For specific endpoint: hash the endpoint details
24
+ const endpoint = endpointIndex.find((e)=>e.id === currentEndpointId);
25
+ content = endpoint ? `endpoint:${endpoint.id}:${endpoint.name}:${endpoint.method}:${endpoint.path}` : `endpoint:${currentEndpointId}`;
26
+ } else {
27
+ // For general API: hash based on endpoint count and first few endpoint signatures
28
+ const signature = endpointIndex.slice(0, 10).map((e)=>`${e.method}:${e.path}`).join('|');
29
+ content = `general:${endpointIndex.length}:${signature}`;
30
+ }
31
+ const hash = crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
32
+ return `suggestions:${hash}`;
33
+ }
34
+ function buildSuggestionPrompt(endpoints, currentEndpointId) {
35
+ const currentEndpoint = currentEndpointId ? endpoints.find((e)=>e.id === currentEndpointId) : null;
36
+ if (currentEndpoint) {
37
+ return `You are helping users explore an API. Generate 4 helpful question suggestions for the "${currentEndpoint.name}" endpoint.
38
+
39
+ Endpoint details:
40
+ - Name: ${currentEndpoint.name}
41
+ - Method: ${currentEndpoint.method}
42
+ - Path: ${currentEndpoint.path}
43
+ - Description: ${currentEndpoint.description || 'No description'}
44
+ - Parameters: ${currentEndpoint.parameters.join(', ') || 'None'}
45
+ - Has request body: ${currentEndpoint.hasBody}
46
+
47
+ Generate questions that help users:
48
+ 1. Understand what this endpoint does
49
+ 2. Know what parameters/data to send
50
+ 3. See example requests or responses
51
+ 4. Understand error handling or edge cases
52
+
53
+ Make questions specific to this endpoint, not generic.`;
54
+ }
55
+ // General suggestions based on the API
56
+ const methodCounts = endpoints.reduce((acc, e)=>{
57
+ acc[e.method] = (acc[e.method] || 0) + 1;
58
+ return acc;
59
+ }, {});
60
+ const categories = [
61
+ ...new Set(endpoints.flatMap((e)=>e.tags))
62
+ ].slice(0, 5);
63
+ return `You are helping users explore an API documentation. Generate 4 helpful starter question suggestions.
64
+
65
+ API Overview:
66
+ - Total endpoints: ${endpoints.length}
67
+ - Methods: ${Object.entries(methodCounts).map(([m, c])=>`${m}: ${c}`).join(', ')}
68
+ - Categories: ${categories.join(', ') || 'General'}
69
+
70
+ Sample endpoints:
71
+ ${endpoints.slice(0, 8).map((e)=>`- ${e.method} ${e.name}: ${e.description || 'No description'}`).join('\n')}
72
+
73
+ Generate questions that help users:
74
+ 1. Find the right endpoint for their use case
75
+ 2. Understand authentication/authorization
76
+ 3. Explore common operations (create, read, update, delete)
77
+ 4. Get started quickly with the API
78
+
79
+ Make questions specific to this API's capabilities.`;
80
+ }
81
+ export async function POST(req) {
82
+ try {
83
+ const body = await req.json();
84
+ const { endpointIndex, currentEndpointId } = body;
85
+ // Generate hash-based cache key
86
+ const cacheKey = generateCacheKey(endpointIndex, currentEndpointId);
87
+ // Check KV cache first (1 week TTL)
88
+ const cached = await CacheUtils.get(cacheKey);
89
+ if (cached) {
90
+ console.log(`[Suggestions API] Cache HIT: ${cacheKey}`);
91
+ return Response.json({
92
+ suggestions: cached,
93
+ cached: true
94
+ });
95
+ }
96
+ console.log(`[Suggestions API] Cache MISS: ${cacheKey}`);
97
+ const apiKey = process.env.ANTHROPIC_API_KEY;
98
+ if (!apiKey) {
99
+ // Return fallback suggestions if no API key
100
+ const fallback = currentEndpointId ? [
101
+ {
102
+ title: 'What does this',
103
+ label: 'endpoint do?',
104
+ prompt: 'What does this endpoint do?'
105
+ },
106
+ {
107
+ title: 'What parameters',
108
+ label: 'are required?',
109
+ prompt: 'What parameters are required?'
110
+ },
111
+ {
112
+ title: 'Show me an',
113
+ label: 'example request',
114
+ prompt: 'Show me an example request'
115
+ },
116
+ {
117
+ title: 'What are the',
118
+ label: 'possible responses?',
119
+ prompt: 'What are the possible responses?'
120
+ }
121
+ ] : [
122
+ {
123
+ title: 'Find endpoints',
124
+ label: 'for creating resources',
125
+ prompt: 'Find endpoints for creating resources'
126
+ },
127
+ {
128
+ title: 'How do I',
129
+ label: 'authenticate?',
130
+ prompt: 'How do I authenticate?'
131
+ },
132
+ {
133
+ title: 'What APIs are',
134
+ label: 'available?',
135
+ prompt: 'What APIs are available?'
136
+ },
137
+ {
138
+ title: 'Show me',
139
+ label: 'GET endpoints',
140
+ prompt: 'Show me all GET endpoints'
141
+ }
142
+ ];
143
+ // Don't cache fallback suggestions - allow real suggestions to be generated later
144
+ return Response.json({
145
+ suggestions: fallback,
146
+ cached: false,
147
+ fallback: true
148
+ });
149
+ }
150
+ const prompt = buildSuggestionPrompt(endpointIndex, currentEndpointId);
151
+ const { object } = await generateObject({
152
+ model: anthropic('claude-sonnet-4-20250514'),
153
+ schema: SuggestionsSchema,
154
+ prompt
155
+ });
156
+ // Cache the result in KV with 1 week TTL
157
+ await CacheUtils.set(cacheKey, object.suggestions, CACHE_TTL_SECONDS, {
158
+ log: true
159
+ });
160
+ return Response.json({
161
+ suggestions: object.suggestions,
162
+ cached: false
163
+ });
164
+ } catch (error) {
165
+ console.error('[Suggestions API] Error:', error);
166
+ // Return fallback on error
167
+ const fallback = [
168
+ {
169
+ title: 'What APIs are',
170
+ label: 'available?',
171
+ prompt: 'What APIs are available?'
172
+ },
173
+ {
174
+ title: 'How do I',
175
+ label: 'authenticate?',
176
+ prompt: 'How do I authenticate?'
177
+ },
178
+ {
179
+ title: 'Find endpoints',
180
+ label: 'for my use case',
181
+ prompt: 'Help me find the right endpoint'
182
+ },
183
+ {
184
+ title: 'Show me',
185
+ label: 'examples',
186
+ prompt: 'Show me some example requests'
187
+ }
188
+ ];
189
+ return Response.json({
190
+ suggestions: fallback,
191
+ cached: false,
192
+ error: true
193
+ });
194
+ }
195
+ }
@@ -1197,4 +1197,73 @@ code[data-line-numbers] > [data-line]::before {
1197
1197
  .landing-section {
1198
1198
  width: 100%;
1199
1199
  margin: 0;
1200
+ }
1201
+
1202
+ /* ============================================
1203
+ Agent Popup Button Animations
1204
+ ============================================ */
1205
+
1206
+ /* Scale in animation for popup button appearing */
1207
+ @keyframes popup-scale-in {
1208
+ from {
1209
+ transform: scale(0.8);
1210
+ opacity: 0;
1211
+ }
1212
+ to {
1213
+ transform: scale(1);
1214
+ opacity: 1;
1215
+ }
1216
+ }
1217
+
1218
+ /* Scale out animation for popup button disappearing */
1219
+ @keyframes popup-scale-out {
1220
+ from {
1221
+ transform: scale(1);
1222
+ opacity: 1;
1223
+ }
1224
+ to {
1225
+ transform: scale(0.8);
1226
+ opacity: 0;
1227
+ }
1228
+ }
1229
+
1230
+ .agent-popup-enter {
1231
+ animation: popup-scale-in 0.2s ease-out forwards;
1232
+ }
1233
+
1234
+ .agent-popup-exit {
1235
+ animation: popup-scale-out 0.15s ease-in forwards;
1236
+ }
1237
+
1238
+ /* Suggestions container slide up animation */
1239
+ @keyframes suggestions-slide-up {
1240
+ from {
1241
+ transform: translateY(10px);
1242
+ opacity: 0;
1243
+ }
1244
+ to {
1245
+ transform: translateY(0);
1246
+ opacity: 1;
1247
+ }
1248
+ }
1249
+
1250
+ .agent-suggestions-enter {
1251
+ animation: suggestions-slide-up 0.3s ease-out forwards;
1252
+ }
1253
+
1254
+ /* Individual suggestion item staggered animation */
1255
+ @keyframes suggestion-fade-in {
1256
+ from {
1257
+ transform: translateX(10px);
1258
+ opacity: 0;
1259
+ }
1260
+ to {
1261
+ transform: translateX(0);
1262
+ opacity: 1;
1263
+ }
1264
+ }
1265
+
1266
+ .agent-suggestion-item {
1267
+ animation: suggestion-fade-in 0.2s ease-out forwards;
1268
+ animation-fill-mode: both;
1200
1269
  }
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Geist, Geist_Mono } from "next/font/google";
3
+ import { ThemeProvider } from "@/components/theme-provider";
4
+ import "./globals.css";
5
+ const geistSans = Geist({
6
+ variable: "--font-geist-sans",
7
+ subsets: [
8
+ "latin"
9
+ ]
10
+ });
11
+ const geistMono = Geist_Mono({
12
+ variable: "--font-geist-mono",
13
+ subsets: [
14
+ "latin"
15
+ ]
16
+ });
17
+ export const metadata = {
18
+ title: "Documentation",
19
+ description: "API Documentation and Reference",
20
+ icons: {
21
+ icon: '/icon.png',
22
+ shortcut: '/icon.png',
23
+ apple: '/icon.png'
24
+ }
25
+ };
26
+ export const viewport = {
27
+ width: "device-width",
28
+ initialScale: 1,
29
+ maximumScale: 1,
30
+ userScalable: false
31
+ };
32
+ export default function RootLayout({ children }) {
33
+ return /*#__PURE__*/ _jsx("html", {
34
+ lang: "en",
35
+ suppressHydrationWarning: true,
36
+ children: /*#__PURE__*/ _jsx("body", {
37
+ className: `${geistSans.variable} ${geistMono.variable} antialiased`,
38
+ children: /*#__PURE__*/ _jsx(ThemeProvider, {
39
+ attribute: "class",
40
+ defaultTheme: "dark",
41
+ enableSystem: false,
42
+ disableTransitionOnChange: true,
43
+ children: children
44
+ })
45
+ })
46
+ });
47
+ }