@lukoweb/apitogo 0.1.24 → 0.1.37

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 (477) hide show
  1. package/README.md +92 -0
  2. package/cli.js +13 -13
  3. package/client.d.ts +8 -8
  4. package/dist/cli/cli.js +1117 -624
  5. package/dist/declarations/config/config.d.ts +4 -0
  6. package/dist/declarations/config/loader.d.ts +2 -0
  7. package/dist/declarations/config/resolve-modules.d.ts +34 -0
  8. package/dist/declarations/config/validators/InputNavigationSchema.d.ts +7 -7
  9. package/dist/declarations/config/validators/ModulesSchema.d.ts +417 -0
  10. package/dist/declarations/config/validators/ZudokuConfig.d.ts +123 -4
  11. package/dist/declarations/index.d.ts +3 -1
  12. package/dist/declarations/lib/authentication/components/ProductionUnlockPage.d.ts +1 -0
  13. package/dist/declarations/lib/authentication/hook.d.ts +3 -19
  14. package/dist/declarations/lib/authentication/providers/dev-portal-constants.d.ts +16 -0
  15. package/dist/declarations/lib/authentication/providers/dev-portal-utils.d.ts +9 -0
  16. package/dist/declarations/lib/authentication/providers/dev-portal.d.ts +39 -0
  17. package/dist/declarations/lib/authentication/state.d.ts +12 -26
  18. package/dist/declarations/lib/components/LandingLayout.d.ts +4 -0
  19. package/dist/declarations/lib/components/index.d.ts +2 -0
  20. package/dist/declarations/lib/plugins/api-keys/index.d.ts +2 -1
  21. package/dist/flat-config.d.ts +209 -24
  22. package/docs/components/alert.mdx +130 -0
  23. package/docs/components/badge.mdx +70 -0
  24. package/docs/components/button.mdx +132 -0
  25. package/docs/components/callout.mdx +112 -0
  26. package/docs/components/card.mdx +104 -0
  27. package/docs/components/checkbox.mdx +72 -0
  28. package/docs/components/client-only.mdx +79 -0
  29. package/docs/components/code-tabs.mdx +179 -0
  30. package/docs/components/dialog.mdx +167 -0
  31. package/docs/components/head.mdx +200 -0
  32. package/docs/components/icons.mdx +27 -0
  33. package/docs/components/input.mdx +96 -0
  34. package/docs/components/label.mdx +86 -0
  35. package/docs/components/link.mdx +242 -0
  36. package/docs/components/markdown.mdx +151 -0
  37. package/docs/components/mermaid.mdx +81 -0
  38. package/docs/components/playground.mdx +87 -0
  39. package/docs/components/secret.mdx +79 -0
  40. package/docs/components/select.mdx +176 -0
  41. package/docs/components/shadcn.mdx +73 -0
  42. package/docs/components/slider.mdx +108 -0
  43. package/docs/components/slot.mdx +119 -0
  44. package/docs/components/stepper.mdx +138 -0
  45. package/docs/components/switch.mdx +96 -0
  46. package/docs/components/syntax-highlight.mdx +602 -0
  47. package/docs/components/textarea.mdx +78 -0
  48. package/docs/components/tooltip.mdx +195 -0
  49. package/docs/components/typography.mdx +61 -0
  50. package/docs/concepts/auth-provider-api-identities.md +109 -0
  51. package/docs/configuration/ai-assistants.md +65 -0
  52. package/docs/configuration/api-catalog.md +109 -0
  53. package/docs/configuration/api-reference.md +397 -0
  54. package/docs/configuration/authentication-auth0.md +174 -0
  55. package/docs/configuration/authentication-azure-ad.md +238 -0
  56. package/docs/configuration/authentication-clerk.md +110 -0
  57. package/docs/configuration/authentication-firebase.md +62 -0
  58. package/docs/configuration/authentication-pingfederate.md +136 -0
  59. package/docs/configuration/authentication-supabase.md +226 -0
  60. package/docs/configuration/authentication.md +231 -0
  61. package/docs/configuration/build-configuration.mdx +147 -0
  62. package/docs/configuration/docs.md +282 -0
  63. package/docs/configuration/footer.mdx +214 -0
  64. package/docs/configuration/llms.md +90 -0
  65. package/docs/configuration/make-config.mdx +90 -0
  66. package/docs/configuration/navigation.mdx +422 -0
  67. package/docs/configuration/overview.md +380 -0
  68. package/docs/configuration/protected-routes.md +150 -0
  69. package/docs/configuration/search.md +163 -0
  70. package/docs/configuration/sentry.mdx +44 -0
  71. package/docs/configuration/site.md +124 -0
  72. package/docs/configuration/slots.mdx +125 -0
  73. package/docs/configuration/vite-config.md +18 -0
  74. package/docs/custom-plugins.md +285 -0
  75. package/docs/customization/colors-theme.mdx +276 -0
  76. package/docs/customization/fonts.md +110 -0
  77. package/docs/deploy/apache-nginx.md +41 -0
  78. package/docs/deploy/apitogo.md +139 -0
  79. package/docs/deploy/cloudflare-pages.md +75 -0
  80. package/docs/deploy/direct-upload.md +18 -0
  81. package/docs/deploy/github-pages.md +50 -0
  82. package/docs/deploy/vercel.md +103 -0
  83. package/docs/deployment.md +21 -0
  84. package/docs/extending/events.md +124 -0
  85. package/docs/guides/custom-pages.md +106 -0
  86. package/docs/guides/environment-variables.md +99 -0
  87. package/docs/guides/managing-api-keys-and-identities.md +172 -0
  88. package/docs/guides/mermaid.mdx +70 -0
  89. package/docs/guides/navigation-migration.md +87 -0
  90. package/docs/guides/navigation-rules.mdx +203 -0
  91. package/docs/guides/processors.mdx +234 -0
  92. package/docs/guides/static-files.md +55 -0
  93. package/docs/guides/transforming-examples.md +156 -0
  94. package/docs/guides/using-multiple-apis.md +87 -0
  95. package/docs/markdown/admonitions.md +128 -0
  96. package/docs/markdown/code-blocks.md +196 -0
  97. package/docs/markdown/frontmatter.md +173 -0
  98. package/docs/markdown/mdx.md +68 -0
  99. package/docs/markdown/overview.md +275 -0
  100. package/docs/plugins.md +5 -0
  101. package/docs/quickstart.md +87 -0
  102. package/docs/writing.mdx +72 -0
  103. package/package.json +170 -116
  104. package/src/app/ZuploBuildConfig.ts +36 -36
  105. package/src/app/defaultTheme.css +77 -77
  106. package/src/app/demo-cdn.html +37 -37
  107. package/src/app/demo.html +21 -21
  108. package/src/app/demo.tsx +77 -77
  109. package/src/app/entry.client.tsx +118 -118
  110. package/src/app/entry.server.tsx +160 -160
  111. package/src/app/env.ts +40 -40
  112. package/src/app/font.geist.css +73 -73
  113. package/src/app/main.css +390 -390
  114. package/src/app/main.tsx +8 -1
  115. package/src/app/polyfills.ts +47 -47
  116. package/src/app/processRoutes.tsx +51 -25
  117. package/src/app/sentry.ts +24 -24
  118. package/src/app/standalone.html +23 -23
  119. package/src/app/standalone.tsx +60 -60
  120. package/src/app/utils/createRedirectRoutes.ts +11 -11
  121. package/src/config/config.ts +32 -0
  122. package/src/config/create-plugin.ts +71 -71
  123. package/src/config/file-exists.ts +6 -6
  124. package/src/config/loader.ts +11 -1
  125. package/src/config/resolve-modules.ts +260 -0
  126. package/src/config/validators/BuildSchema.ts +95 -95
  127. package/src/config/validators/HeaderNavigationSchema.ts +41 -41
  128. package/src/config/validators/InputNavigationSchema.test-d.ts +178 -178
  129. package/src/config/validators/InputNavigationSchema.ts +206 -206
  130. package/src/config/validators/ModulesSchema.ts +312 -0
  131. package/src/config/validators/ProtectedRoutesSchema.ts +35 -35
  132. package/src/config/validators/ZudokuConfig.ts +766 -729
  133. package/src/config/validators/auth.ts +3 -3
  134. package/src/config/validators/reason-codes.ts +7 -7
  135. package/src/env.d.ts +11 -11
  136. package/src/index.ts +31 -0
  137. package/src/lib/MissingIcon.tsx +22 -22
  138. package/src/lib/assets/language-icons/bun.tsx +50 -50
  139. package/src/lib/assets/language-icons/c.tsx +31 -31
  140. package/src/lib/assets/language-icons/commonlisp.tsx +22 -22
  141. package/src/lib/assets/language-icons/cpp.tsx +35 -35
  142. package/src/lib/assets/language-icons/csharp.tsx +35 -35
  143. package/src/lib/assets/language-icons/css.tsx +36 -36
  144. package/src/lib/assets/language-icons/dart.tsx +39 -39
  145. package/src/lib/assets/language-icons/elixir.tsx +19 -19
  146. package/src/lib/assets/language-icons/go.tsx +19 -19
  147. package/src/lib/assets/language-icons/graphql.tsx +19 -19
  148. package/src/lib/assets/language-icons/html.tsx +24 -24
  149. package/src/lib/assets/language-icons/java.tsx +35 -35
  150. package/src/lib/assets/language-icons/javascript.tsx +11 -11
  151. package/src/lib/assets/language-icons/json.tsx +19 -19
  152. package/src/lib/assets/language-icons/kotlin.tsx +30 -30
  153. package/src/lib/assets/language-icons/markdown.tsx +19 -19
  154. package/src/lib/assets/language-icons/mdx.tsx +23 -23
  155. package/src/lib/assets/language-icons/npm.tsx +15 -15
  156. package/src/lib/assets/language-icons/objectivec.tsx +23 -23
  157. package/src/lib/assets/language-icons/ocaml.tsx +34 -34
  158. package/src/lib/assets/language-icons/php.tsx +19 -19
  159. package/src/lib/assets/language-icons/pnpm.tsx +32 -32
  160. package/src/lib/assets/language-icons/powershell.tsx +27 -27
  161. package/src/lib/assets/language-icons/python.tsx +23 -23
  162. package/src/lib/assets/language-icons/react.tsx +21 -21
  163. package/src/lib/assets/language-icons/ruby.tsx +19 -19
  164. package/src/lib/assets/language-icons/rust.tsx +19 -19
  165. package/src/lib/assets/language-icons/scala.tsx +19 -19
  166. package/src/lib/assets/language-icons/shell.tsx +19 -19
  167. package/src/lib/assets/language-icons/swift.tsx +19 -19
  168. package/src/lib/assets/language-icons/toml.tsx +23 -23
  169. package/src/lib/assets/language-icons/typescript.tsx +23 -23
  170. package/src/lib/assets/language-icons/xml.tsx +19 -19
  171. package/src/lib/assets/language-icons/yaml.tsx +23 -23
  172. package/src/lib/assets/language-icons/yarn.tsx +17 -17
  173. package/src/lib/assets/language-icons/zig.tsx +32 -32
  174. package/src/lib/auth/issuer.ts +34 -31
  175. package/src/lib/authentication/AuthenticationPlugin.tsx +33 -33
  176. package/src/lib/authentication/authentication.ts +48 -48
  177. package/src/lib/authentication/components/OAuthErrorPage.tsx +197 -197
  178. package/src/lib/authentication/components/ProductionUnlockPage.tsx +27 -0
  179. package/src/lib/authentication/components/SignOut.tsx +15 -15
  180. package/src/lib/authentication/constants.ts +1 -1
  181. package/src/lib/authentication/errors.ts +34 -34
  182. package/src/lib/authentication/hook.ts +141 -139
  183. package/src/lib/authentication/providers/auth0.tsx +91 -91
  184. package/src/lib/authentication/providers/azureb2c.tsx +223 -223
  185. package/src/lib/authentication/providers/dev-portal-constants.ts +21 -0
  186. package/src/lib/authentication/providers/dev-portal-utils.ts +107 -0
  187. package/src/lib/authentication/providers/dev-portal.tsx +270 -0
  188. package/src/lib/authentication/providers/firebase.tsx +486 -486
  189. package/src/lib/authentication/providers/openid.tsx +516 -516
  190. package/src/lib/authentication/providers/supabase.tsx +412 -412
  191. package/src/lib/authentication/providers/util.ts +26 -26
  192. package/src/lib/authentication/state.ts +179 -91
  193. package/src/lib/authentication/ui/icons/Apple.tsx +10 -10
  194. package/src/lib/authentication/ui/icons/Facebook.tsx +15 -15
  195. package/src/lib/authentication/ui/icons/Github.tsx +16 -16
  196. package/src/lib/authentication/ui/icons/Google.tsx +16 -16
  197. package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -12
  198. package/src/lib/authentication/ui/icons/X.tsx +10 -10
  199. package/src/lib/authentication/utils/relativeRedirectUrl.ts +16 -16
  200. package/src/lib/components/AnchorLink.tsx +24 -24
  201. package/src/lib/components/Banner.tsx +52 -52
  202. package/src/lib/components/Bootstrap.tsx +77 -77
  203. package/src/lib/components/BuildCheck.tsx +87 -87
  204. package/src/lib/components/CategoryHeading.tsx +19 -19
  205. package/src/lib/components/ClientOnly.tsx +19 -19
  206. package/src/lib/components/ErrorPage.tsx +26 -26
  207. package/src/lib/components/Footer.tsx +140 -140
  208. package/src/lib/components/Framed.tsx +51 -51
  209. package/src/lib/components/Header.tsx +11 -3
  210. package/src/lib/components/HeaderNavigation.tsx +148 -148
  211. package/src/lib/components/Heading.tsx +84 -84
  212. package/src/lib/components/InlineCode.tsx +15 -15
  213. package/src/lib/components/LandingLayout.tsx +21 -0
  214. package/src/lib/components/LanguageIcon.tsx +199 -199
  215. package/src/lib/components/Markdown.tsx +55 -55
  216. package/src/lib/components/Meta.tsx +46 -46
  217. package/src/lib/components/MobileTopNavigation.tsx +11 -3
  218. package/src/lib/components/NotFoundPage.tsx +37 -37
  219. package/src/lib/components/PageProgress.tsx +28 -28
  220. package/src/lib/components/PagefindSearchMeta.tsx +14 -14
  221. package/src/lib/components/Pagination.tsx +44 -44
  222. package/src/lib/components/PathRenderer.tsx +61 -61
  223. package/src/lib/components/PluginHeads.tsx +17 -17
  224. package/src/lib/components/Search.tsx +70 -70
  225. package/src/lib/components/Slot.tsx +64 -64
  226. package/src/lib/components/Spinner.tsx +5 -5
  227. package/src/lib/components/StatusPage.tsx +96 -96
  228. package/src/lib/components/ThemeSwitch.tsx +49 -49
  229. package/src/lib/components/Typography.tsx +12 -12
  230. package/src/lib/components/Zudoku.tsx +106 -106
  231. package/src/lib/components/cache.ts +27 -27
  232. package/src/lib/components/context/RenderContext.ts +11 -11
  233. package/src/lib/components/context/RouterEventsEmitter.tsx +19 -19
  234. package/src/lib/components/context/SlotProvider.tsx +149 -149
  235. package/src/lib/components/context/ViewportAnchorContext.tsx +137 -137
  236. package/src/lib/components/context/ZudokuContext.ts +140 -140
  237. package/src/lib/components/context/ZudokuProvider.tsx +22 -22
  238. package/src/lib/components/context/ZudokuReactContext.tsx +17 -17
  239. package/src/lib/components/index.ts +2 -0
  240. package/src/lib/components/navigation/Navigation.tsx +51 -51
  241. package/src/lib/components/navigation/NavigationBadge.tsx +48 -48
  242. package/src/lib/components/navigation/NavigationFilterContext.tsx +28 -28
  243. package/src/lib/components/navigation/NavigationWrapper.tsx +49 -49
  244. package/src/lib/components/navigation/Toc.tsx +137 -137
  245. package/src/lib/components/navigation/ZudokuLogo.tsx +25 -25
  246. package/src/lib/components/navigation/ZuploLogo.tsx +14 -14
  247. package/src/lib/components/navigation/utils.ts +234 -234
  248. package/src/lib/core/RouteGuard.tsx +11 -1
  249. package/src/lib/core/ZudokuContext.ts +271 -271
  250. package/src/lib/core/plugins.ts +138 -138
  251. package/src/lib/core/react-query.ts +1 -1
  252. package/src/lib/core/router.ts +1 -1
  253. package/src/lib/core/transform-config.ts +67 -67
  254. package/src/lib/demo/DemoAnnouncement.tsx +17 -17
  255. package/src/lib/errors/ErrorAlert.tsx +28 -28
  256. package/src/lib/errors/RouterError.tsx +18 -18
  257. package/src/lib/errors/ServerError.tsx +5 -5
  258. package/src/lib/errors/TopLevelError.tsx +6 -6
  259. package/src/lib/hooks/index.ts +13 -13
  260. package/src/lib/hooks/useEvent.ts +41 -41
  261. package/src/lib/hooks/useHighlighter.ts +15 -15
  262. package/src/lib/hooks/useHotkey.ts +70 -70
  263. package/src/lib/icons.ts +2 -2
  264. package/src/lib/navigation/applyRules.ts +127 -127
  265. package/src/lib/navigation/pathMatcher.ts +81 -81
  266. package/src/lib/oas/graphql/circular.ts +69 -69
  267. package/src/lib/oas/graphql/constants.ts +2 -2
  268. package/src/lib/oas/graphql/index.ts +791 -791
  269. package/src/lib/oas/parser/dereference/index.ts +84 -84
  270. package/src/lib/oas/parser/dereference/resolveRef.ts +32 -32
  271. package/src/lib/oas/parser/index.ts +129 -129
  272. package/src/lib/oas/parser/schemas/v3.0.json +1489 -1489
  273. package/src/lib/oas/parser/schemas/v3.1.json +1298 -1298
  274. package/src/lib/oas/parser/upgrade/index.ts +174 -174
  275. package/src/lib/plugins/api-catalog/index.tsx +119 -119
  276. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +33 -33
  277. package/src/lib/plugins/api-keys/index.tsx +274 -272
  278. package/src/lib/plugins/api-keys/settings/ApiKeyList.tsx +67 -67
  279. package/src/lib/plugins/custom-pages/index.tsx +32 -32
  280. package/src/lib/plugins/markdown/assets/ChatGPTLogo.tsx +11 -11
  281. package/src/lib/plugins/markdown/assets/ClaudeLogo.tsx +19 -19
  282. package/src/lib/plugins/markdown/index.tsx +62 -62
  283. package/src/lib/plugins/openapi/ColorizedParam.tsx +115 -115
  284. package/src/lib/plugins/openapi/Endpoint.tsx +85 -85
  285. package/src/lib/plugins/openapi/MCPEndpoint.tsx +273 -273
  286. package/src/lib/plugins/openapi/OasProvider.tsx +74 -74
  287. package/src/lib/plugins/openapi/OperationList.tsx +275 -275
  288. package/src/lib/plugins/openapi/ParamInfos.tsx +96 -96
  289. package/src/lib/plugins/openapi/ParameterList.tsx +53 -53
  290. package/src/lib/plugins/openapi/ParameterListItem.tsx +161 -161
  291. package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +67 -67
  292. package/src/lib/plugins/openapi/SidecarBox.tsx +57 -57
  293. package/src/lib/plugins/openapi/SimpleSelect.tsx +46 -46
  294. package/src/lib/plugins/openapi/client/GraphQLClient.tsx +73 -73
  295. package/src/lib/plugins/openapi/client/GraphQLContext.tsx +16 -16
  296. package/src/lib/plugins/openapi/client/createServer.ts +35 -35
  297. package/src/lib/plugins/openapi/client/useCreateQuery.ts +44 -44
  298. package/src/lib/plugins/openapi/components/ConstValue.tsx +24 -24
  299. package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -22
  300. package/src/lib/plugins/openapi/components/SelectOnClick.tsx +29 -29
  301. package/src/lib/plugins/openapi/context.tsx +16 -16
  302. package/src/lib/plugins/openapi/graphql/fragment-masking.ts +104 -104
  303. package/src/lib/plugins/openapi/graphql/gql.ts +95 -95
  304. package/src/lib/plugins/openapi/graphql/graphql.ts +835 -835
  305. package/src/lib/plugins/openapi/graphql/index.ts +2 -2
  306. package/src/lib/plugins/openapi/index.tsx +221 -221
  307. package/src/lib/plugins/openapi/interfaces.ts +100 -100
  308. package/src/lib/plugins/openapi/playground/Headers.tsx +6 -6
  309. package/src/lib/plugins/openapi/playground/PathParams.tsx +53 -53
  310. package/src/lib/plugins/openapi/playground/Spinner.tsx +87 -87
  311. package/src/lib/plugins/openapi/playground/createUrl.ts +25 -25
  312. package/src/lib/plugins/openapi/playground/fileUtils.ts +36 -36
  313. package/src/lib/plugins/openapi/playground/rememberedIdentity.ts +26 -26
  314. package/src/lib/plugins/openapi/playground/request-panel/UrlPath.tsx +31 -31
  315. package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +29 -29
  316. package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +340 -340
  317. package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +117 -117
  318. package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -36
  319. package/src/lib/plugins/openapi/playground/serializeQueryParams.ts +125 -125
  320. package/src/lib/plugins/openapi/playground/useRememberSkipLoginDialog.tsx +23 -23
  321. package/src/lib/plugins/openapi/processors/removeExtensions.ts +29 -29
  322. package/src/lib/plugins/openapi/processors/removeParameters.ts +103 -103
  323. package/src/lib/plugins/openapi/processors/removePaths.ts +57 -57
  324. package/src/lib/plugins/openapi/processors/traverse.ts +1 -1
  325. package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +39 -39
  326. package/src/lib/plugins/openapi/schema/UnionView.tsx +132 -132
  327. package/src/lib/plugins/openapi/schema/union-helpers.ts +123 -123
  328. package/src/lib/plugins/openapi/schema/utils.ts +49 -49
  329. package/src/lib/plugins/openapi/state.ts +36 -36
  330. package/src/lib/plugins/openapi/util/buildTagCategories.ts +54 -54
  331. package/src/lib/plugins/openapi/util/createHttpSnippet.ts +135 -135
  332. package/src/lib/plugins/openapi/util/createNavigationCategory.tsx +39 -39
  333. package/src/lib/plugins/openapi/util/generateSchemaExample.ts +191 -191
  334. package/src/lib/plugins/openapi/util/getRoutes.tsx +265 -265
  335. package/src/lib/plugins/openapi/util/methodColorMap.tsx +11 -11
  336. package/src/lib/plugins/openapi/util/methodToColor.ts +27 -27
  337. package/src/lib/plugins/openapi/util/sanitizeMarkdownForMetatag.tsx +32 -32
  338. package/src/lib/plugins/openapi/util/useWarmupSchema.ts +23 -23
  339. package/src/lib/plugins/search-inkeep/index.tsx +108 -108
  340. package/src/lib/plugins/search-inkeep/inkeep.ts +24 -24
  341. package/src/lib/plugins/search-pagefind/get-results.tsx +74 -74
  342. package/src/lib/plugins/search-pagefind/index.tsx +21 -21
  343. package/src/lib/plugins/search-pagefind/types.ts +118 -118
  344. package/src/lib/shiki-constants.ts +24 -24
  345. package/src/lib/testing/index.tsx +146 -146
  346. package/src/lib/ui/Accordion.tsx +55 -55
  347. package/src/lib/ui/Alert.tsx +84 -84
  348. package/src/lib/ui/AlertDialog.tsx +195 -195
  349. package/src/lib/ui/AspectRatio.tsx +5 -5
  350. package/src/lib/ui/Badge.tsx +48 -48
  351. package/src/lib/ui/Breadcrumb.tsx +115 -115
  352. package/src/lib/ui/Button.tsx +65 -65
  353. package/src/lib/ui/ButtonGroup.tsx +80 -80
  354. package/src/lib/ui/Callout.tsx +113 -113
  355. package/src/lib/ui/Card.tsx +95 -95
  356. package/src/lib/ui/Carousel.tsx +259 -259
  357. package/src/lib/ui/Checkbox.tsx +28 -28
  358. package/src/lib/ui/CodeBlock.tsx +92 -92
  359. package/src/lib/ui/CodeTabPanel.tsx +13 -13
  360. package/src/lib/ui/CodeTabs.tsx +161 -161
  361. package/src/lib/ui/Collapsible.tsx +31 -31
  362. package/src/lib/ui/Dialog.tsx +138 -138
  363. package/src/lib/ui/DismissibleAlert.tsx +74 -74
  364. package/src/lib/ui/Drawer.tsx +121 -121
  365. package/src/lib/ui/DropdownMenu.tsx +254 -254
  366. package/src/lib/ui/EmbeddedCodeBlock.tsx +99 -99
  367. package/src/lib/ui/Form.tsx +176 -176
  368. package/src/lib/ui/Frame.tsx +81 -81
  369. package/src/lib/ui/HoverCard.tsx +26 -26
  370. package/src/lib/ui/Input.tsx +23 -23
  371. package/src/lib/ui/InputGroup.tsx +168 -168
  372. package/src/lib/ui/Item.tsx +213 -213
  373. package/src/lib/ui/Kbd.tsx +28 -28
  374. package/src/lib/ui/Label.tsx +23 -23
  375. package/src/lib/ui/NativeSelect.tsx +48 -48
  376. package/src/lib/ui/NavigationMenu.tsx +169 -169
  377. package/src/lib/ui/Pagination.tsx +115 -115
  378. package/src/lib/ui/Popover.tsx +28 -28
  379. package/src/lib/ui/Progress.tsx +25 -25
  380. package/src/lib/ui/RadioGroup.tsx +41 -41
  381. package/src/lib/ui/ReactComponentDoc.tsx +68 -68
  382. package/src/lib/ui/ScrollArea.tsx +45 -45
  383. package/src/lib/ui/Secret.tsx +133 -133
  384. package/src/lib/ui/Select.tsx +184 -184
  385. package/src/lib/ui/Separator.tsx +25 -25
  386. package/src/lib/ui/Skeleton.tsx +15 -15
  387. package/src/lib/ui/Slider.tsx +25 -25
  388. package/src/lib/ui/Stepper.tsx +8 -8
  389. package/src/lib/ui/Switch.tsx +26 -26
  390. package/src/lib/ui/SyntaxHighlight.tsx +54 -54
  391. package/src/lib/ui/Tabs.tsx +52 -52
  392. package/src/lib/ui/Textarea.tsx +22 -22
  393. package/src/lib/ui/Toggle.tsx +42 -42
  394. package/src/lib/ui/ToggleGroup.tsx +58 -58
  395. package/src/lib/ui/Tooltip.tsx +65 -65
  396. package/src/lib/ui/Value.tsx +42 -42
  397. package/src/lib/ui/util.tsx +8 -8
  398. package/src/lib/util/cn.ts +6 -6
  399. package/src/lib/util/createVariantComponent.tsx +61 -61
  400. package/src/lib/util/ensureArray.ts +3 -3
  401. package/src/lib/util/flattenAllOf.ts +72 -72
  402. package/src/lib/util/flattenAllOfProcessor.ts +74 -74
  403. package/src/lib/util/hastToJsx.tsx +67 -67
  404. package/src/lib/util/humanFileSize.ts +15 -15
  405. package/src/lib/util/invariant.ts +52 -52
  406. package/src/lib/util/joinUrl.ts +60 -60
  407. package/src/lib/util/logInit.ts +9 -9
  408. package/src/lib/util/objectEntries.ts +5 -5
  409. package/src/lib/util/os.ts +18 -18
  410. package/src/lib/util/pastellize.ts +25 -25
  411. package/src/lib/util/problemJson.ts +63 -63
  412. package/src/lib/util/readFrontmatter.ts +14 -14
  413. package/src/lib/util/renderIf.ts +4 -4
  414. package/src/lib/util/scrollIntoViewIfNeeded.ts +18 -18
  415. package/src/lib/util/slugify.ts +21 -21
  416. package/src/lib/util/syncZustandState.ts +22 -22
  417. package/src/lib/util/traverse.ts +70 -70
  418. package/src/lib/util/types.ts +7 -7
  419. package/src/lib/util/url.ts +18 -18
  420. package/src/lib/util/useCopyToClipboard.ts +17 -17
  421. package/src/lib/util/useExposedProps.tsx +27 -27
  422. package/src/lib/util/useIsomorphicLayoutEffect.ts +6 -6
  423. package/src/lib/util/useLatest.ts +18 -18
  424. package/src/lib/util/useOnScreen.ts +34 -34
  425. package/src/lib/util/useScrollToAnchor.ts +70 -70
  426. package/src/lib/util/useScrollToTop.ts +18 -18
  427. package/src/types.d.ts +57 -53
  428. package/src/vite/api/SchemaManager.ts +371 -371
  429. package/src/vite/api/schema-codegen.ts +163 -163
  430. package/src/vite/config.ts +5 -1
  431. package/src/vite/css/collect.ts +42 -42
  432. package/src/vite/css/plugin.ts +105 -105
  433. package/src/vite/debug.ts +18 -18
  434. package/src/vite/dev-portal-env.ts +93 -0
  435. package/src/vite/html.ts +54 -54
  436. package/src/vite/index.ts +2 -2
  437. package/src/vite/mdx/rehype-extract-toc-with-jsx-export.ts +19 -19
  438. package/src/vite/mdx/rehype-extract-toc-with-jsx.ts +70 -70
  439. package/src/vite/mdx/remark-code-tabs.ts +47 -47
  440. package/src/vite/mdx/remark-inject-filepath.ts +13 -13
  441. package/src/vite/mdx/remark-last-modified.ts +103 -103
  442. package/src/vite/mdx/remark-link-rewrite.ts +23 -23
  443. package/src/vite/mdx/remark-normalize-image-url.ts +15 -15
  444. package/src/vite/mdx/remark-static-generation.ts +149 -149
  445. package/src/vite/mdx/utils.ts +32 -32
  446. package/src/vite/output.ts +261 -261
  447. package/src/vite/package-root.ts +12 -12
  448. package/src/vite/pagefind-dev-index.ts +100 -100
  449. package/src/vite/plugin-api-keys.ts +6 -1
  450. package/src/vite/plugin-api.ts +4 -1
  451. package/src/vite/plugin-auth.ts +5 -1
  452. package/src/vite/plugin-component.ts +1 -1
  453. package/src/vite/plugin-config-reload.ts +49 -49
  454. package/src/vite/plugin-doc-metadata.ts +45 -45
  455. package/src/vite/plugin-docs.ts +4 -1
  456. package/src/vite/plugin-metadata.ts +30 -30
  457. package/src/vite/plugin-modules.ts +144 -0
  458. package/src/vite/plugin-shiki-register.ts +97 -97
  459. package/src/vite/plugin-theme.ts +399 -399
  460. package/src/vite/plugin.ts +2 -0
  461. package/src/vite/prerender/utils.ts +76 -76
  462. package/src/vite/prerender/worker.ts +118 -118
  463. package/src/vite/reporter.ts +34 -34
  464. package/src/vite/shadcn-registry.ts +48 -48
  465. package/src/vite/sitemap.ts +78 -78
  466. package/src/vite/ssr-templates/cloudflare.ts +19 -19
  467. package/src/vite/ssr-templates/node.ts +25 -25
  468. package/src/vite/ssr-templates/vercel.ts +22 -22
  469. package/src/vite/zuplo.ts +30 -30
  470. package/src/vite-env.d.ts +6 -6
  471. package/src/zuplo/enrich-with-zuplo-mcp.ts +168 -168
  472. package/src/zuplo/enrich-with-zuplo.ts +256 -256
  473. package/src/zuplo/policy-types.ts +46 -46
  474. package/src/zuplo/with-zuplo-processors.ts +36 -36
  475. package/src/zuplo/with-zuplo.ts +14 -14
  476. package/LICENSE.md +0 -18
  477. package/dist/declarations/lib/components/navigation/ZudokuLogo.d.ts +0 -6
@@ -0,0 +1,195 @@
1
+ ---
2
+ title: Tooltip
3
+ sidebar_icon: info
4
+ ---
5
+
6
+ import {
7
+ Tooltip,
8
+ TooltipContent,
9
+ TooltipProvider,
10
+ TooltipTrigger,
11
+ TooltipArrow,
12
+ } from "@lukoweb/apitogo/ui/Tooltip";
13
+ import { Button } from "@lukoweb/apitogo/ui/Button";
14
+
15
+ A tooltip component built on Radix UI primitives for displaying helpful information on hover or
16
+ focus.
17
+
18
+ ## Import
19
+
20
+ ```tsx
21
+ import {
22
+ Tooltip,
23
+ TooltipContent,
24
+ TooltipProvider,
25
+ TooltipTrigger,
26
+ TooltipArrow,
27
+ } from "@lukoweb/apitogo/ui/Tooltip";
28
+ ```
29
+
30
+ ## Components
31
+
32
+ The Tooltip component consists of several sub-components:
33
+
34
+ - `TooltipProvider` - Provides context for tooltip behavior
35
+ - `Tooltip` - The main container (root)
36
+ - `TooltipTrigger` - Element that triggers the tooltip
37
+ - `TooltipContent` - The tooltip content container
38
+ - `TooltipArrow` - Optional arrow pointing to the trigger
39
+
40
+ ## Basic Usage
41
+
42
+ <TooltipProvider>
43
+ <Tooltip>
44
+ <TooltipTrigger asChild>
45
+ <Button variant="outline">Hover</Button>
46
+ </TooltipTrigger>
47
+ <TooltipContent>
48
+ <p>Add to library</p>
49
+ </TooltipContent>
50
+ </Tooltip>
51
+ </TooltipProvider>
52
+
53
+ ```tsx
54
+ <TooltipProvider>
55
+ <Tooltip>
56
+ <TooltipTrigger asChild>
57
+ <Button variant="outline">Hover</Button>
58
+ </TooltipTrigger>
59
+ <TooltipContent>
60
+ <p>Add to library</p>
61
+ </TooltipContent>
62
+ </Tooltip>
63
+ </TooltipProvider>
64
+ ```
65
+
66
+ ## With Arrow
67
+
68
+ <TooltipProvider>
69
+ <Tooltip>
70
+ <TooltipTrigger asChild>
71
+ <Button variant="outline">Hover for tooltip with arrow</Button>
72
+ </TooltipTrigger>
73
+ <TooltipContent>
74
+ <p>Add to library</p>
75
+ <TooltipArrow />
76
+ </TooltipContent>
77
+ </Tooltip>
78
+ </TooltipProvider>
79
+
80
+ ```tsx
81
+ <TooltipProvider>
82
+ <Tooltip>
83
+ <TooltipTrigger asChild>
84
+ <Button variant="outline">Hover for tooltip with arrow</Button>
85
+ </TooltipTrigger>
86
+ <TooltipContent>
87
+ <p>Add to library</p>
88
+ <TooltipArrow />
89
+ </TooltipContent>
90
+ </Tooltip>
91
+ </TooltipProvider>
92
+ ```
93
+
94
+ ## Different Sides
95
+
96
+ <TooltipProvider>
97
+ <div className="flex gap-2">
98
+ <Tooltip>
99
+ <TooltipTrigger asChild>
100
+ <Button variant="outline">Top</Button>
101
+ </TooltipTrigger>
102
+ <TooltipContent side="top">
103
+ <p>Top tooltip</p>
104
+ </TooltipContent>
105
+ </Tooltip>
106
+
107
+ <Tooltip>
108
+ <TooltipTrigger asChild>
109
+ <Button variant="outline">Right</Button>
110
+ </TooltipTrigger>
111
+ <TooltipContent side="right">
112
+ <p>Right tooltip</p>
113
+ </TooltipContent>
114
+ </Tooltip>
115
+
116
+ <Tooltip>
117
+ <TooltipTrigger asChild>
118
+ <Button variant="outline">Bottom</Button>
119
+ </TooltipTrigger>
120
+ <TooltipContent side="bottom">
121
+ <p>Bottom tooltip</p>
122
+ </TooltipContent>
123
+ </Tooltip>
124
+
125
+ <Tooltip>
126
+ <TooltipTrigger asChild>
127
+ <Button variant="outline">Left</Button>
128
+ </TooltipTrigger>
129
+ <TooltipContent side="left">
130
+ <p>Left tooltip</p>
131
+ </TooltipContent>
132
+ </Tooltip>
133
+
134
+ </div>
135
+ </TooltipProvider>
136
+
137
+ ```tsx
138
+ <TooltipProvider>
139
+ <div className="flex gap-2">
140
+ <Tooltip>
141
+ <TooltipTrigger asChild>
142
+ <Button variant="outline">Top</Button>
143
+ </TooltipTrigger>
144
+ <TooltipContent side="top">
145
+ <p>Top tooltip</p>
146
+ </TooltipContent>
147
+ </Tooltip>
148
+
149
+ <Tooltip>
150
+ <TooltipTrigger asChild>
151
+ <Button variant="outline">Right</Button>
152
+ </TooltipTrigger>
153
+ <TooltipContent side="right">
154
+ <p>Right tooltip</p>
155
+ </TooltipContent>
156
+ </Tooltip>
157
+
158
+ <Tooltip>
159
+ <TooltipTrigger asChild>
160
+ <Button variant="outline">Bottom</Button>
161
+ </TooltipTrigger>
162
+ <TooltipContent side="bottom">
163
+ <p>Bottom tooltip</p>
164
+ </TooltipContent>
165
+ </Tooltip>
166
+
167
+ <Tooltip>
168
+ <TooltipTrigger asChild>
169
+ <Button variant="outline">Left</Button>
170
+ </TooltipTrigger>
171
+ <TooltipContent side="left">
172
+ <p>Left tooltip</p>
173
+ </TooltipContent>
174
+ </Tooltip>
175
+ </div>
176
+ </TooltipProvider>
177
+ ```
178
+
179
+ ## Global Provider
180
+
181
+ For multiple tooltips, wrap your app with `TooltipProvider`:
182
+
183
+ ```tsx
184
+ function App() {
185
+ return <TooltipProvider>{/* Your app content with tooltips */}</TooltipProvider>;
186
+ }
187
+ ```
188
+
189
+ ## Features
190
+
191
+ - **Keyboard Navigation**: Accessible via keyboard focus
192
+ - **Positioning**: Smart positioning to stay within viewport
193
+ - **Delay Control**: Configurable show/hide delays
194
+ - **Animation**: Smooth enter/exit animations
195
+ - **Accessibility**: Full screen reader and keyboard support
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: Typography
3
+ sidebar_icon: letter-text
4
+ ---
5
+
6
+ import { Typography } from "@lukoweb/apitogo/components";
7
+
8
+ The Typography component applies consistent prose styling to text content using
9
+ [Tailwind's typography plugin](https://github.com/tailwindlabs/tailwindcss-typography). It
10
+ automatically formats headings, paragraphs, lists, and other text elements with appropriate spacing,
11
+
12
+ ## Import
13
+
14
+ ```tsx
15
+ import { Typography } from "@lukoweb/apitogo/components";
16
+ ```
17
+
18
+ font sizes, and styling that adapts to both light and dark themes.
19
+
20
+ This component is particularly useful when rendering markdown content or when you need consistent
21
+ text formatting across your documentation.
22
+
23
+ ## Props
24
+
25
+ ```ts
26
+ type TypographyProps = {
27
+ children: React.ReactNode;
28
+ className?: string;
29
+ };
30
+ ```
31
+
32
+ ## Usage
33
+
34
+ Wrap any content that needs prose formatting with the Typography component. It will automatically
35
+ style headings, paragraphs, lists, and other text elements:
36
+
37
+ ```tsx
38
+ import { Typography } from "@lukoweb/apitogo/components";
39
+
40
+ <Typography>
41
+ <h1>Hello World</h1>
42
+ <p>This is a paragraph</p>
43
+ <ul>
44
+ <li>Item 1</li>
45
+ <li>Item 2</li>
46
+ <li>Item 3</li>
47
+ </ul>
48
+ </Typography>;
49
+ ```
50
+
51
+ ## Example
52
+
53
+ <Typography>
54
+ <h1>Hello World</h1>
55
+ <p>This is a paragraph</p>
56
+ <ul>
57
+ <li>Item 1</li>
58
+ <li>Item 2</li>
59
+ <li>Item 3</li>
60
+ </ul>
61
+ </Typography>
@@ -0,0 +1,109 @@
1
+ ---
2
+ title: Authentication Providers & API Identities
3
+ sidebar_label: Authentication and Identities
4
+ zuplo: false
5
+ ---
6
+
7
+ When building an API documentation portal, you often need to provide a way for users to authenticate
8
+ their API requests. This typically involves managing API keys and different authentication
9
+ identities. However, implementing a secure and user-friendly system for API key management can be
10
+ complex and time-consuming. APIToGo provides a powerful solution to this problem through its API
11
+ Keys and Identities system.
12
+
13
+ ## Authentication Providers and API Identities
14
+
15
+ :::tip
16
+
17
+ **Authentication providers** allow your users to sign in to your documentation portal. **API
18
+ Identities** allow your users to authenticate their API requests.
19
+
20
+ :::
21
+
22
+ Before diving into API Identities, it's important to understand that APIToGo separates user
23
+ authentication from API authentication. Authentication providers handle how users sign in to your
24
+ documentation portal, while API Identities manage how these users interact with your APIs.
25
+
26
+ Authentication providers (like Auth0 or custom JWT) handle:
27
+
28
+ - User authentication for the documentation portal
29
+ - Session management
30
+ - User authorization and access control
31
+
32
+ This separation allows you to:
33
+
34
+ - Use different authentication methods for your portal and APIs
35
+ - Manage API access independently of user authentication
36
+ - Support multiple API authentication schemes simultaneously
37
+
38
+ [Learn more about authentication providers](../configuration/authentication)
39
+
40
+ ## Understanding API Identities
41
+
42
+ API Identities in APIToGo represent different authentication contexts that can be used to make API
43
+ requests. These could be different environments (production, staging), different authentication
44
+ methods (API key, JWT), or different service accounts.
45
+
46
+ ### The API Identity Interface
47
+
48
+ ```typescript
49
+ interface ApiIdentity {
50
+ id: string;
51
+ label: string;
52
+ authorizeRequest: (request: Request) => Promise<Request> | Request;
53
+ }
54
+
55
+ interface ApiIdentityPlugin {
56
+ getIdentities: () => Promise<ApiIdentity[]> | ApiIdentity[];
57
+ }
58
+ ```
59
+
60
+ Each API Identity consists of:
61
+
62
+ - `id`: A unique identifier for the identity
63
+ - `label`: A human-readable name shown in the UI
64
+ - `authorizeRequest`: A function that modifies requests to include the necessary authentication
65
+
66
+ ## Implementing API Identities
67
+
68
+ In this example, we'll use Auth0 as our authentication provider and implement an API Identity for a
69
+ demo API.
70
+
71
+ :::note
72
+
73
+ This example shows how to implement API Identities in APIToGo. If you're using Zuplo and you are
74
+ using the built-in API Key management system, you don't need to implement this yourself. Zuplo will
75
+ handle API Identities for you.
76
+
77
+ :::
78
+
79
+ To add API Identities to your APIToGo configuration, you need to implement the `ApiIdentityPlugin`
80
+ interface. Here's an example:
81
+
82
+ ```typescript
83
+ import { createApiIdentityPlugin } from "@lukoweb/apitogo/plugins";
84
+
85
+ export default {
86
+ authentication: {
87
+ type: "auth0",
88
+ domain: "my-domain.auth0.com",
89
+ clientId: "my-client-id",
90
+ },
91
+ plugins: [
92
+ createApiIdentityPlugin({
93
+ getIdentities: async (context) => [
94
+ {
95
+ id: "api-key-one",
96
+ label: "My API Key",
97
+ authorizeRequest: (request) => {
98
+ // We get the access token from the
99
+ // authentication provider (Auth0) and add it to the request headers
100
+ return context.authentication?.signRequest(request);
101
+ },
102
+ },
103
+ ],
104
+ }),
105
+ ],
106
+ };
107
+ ```
108
+
109
+ When implemented, this identity will appear in the APIToGo playground.
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: AI Assistants
3
+ sidebar_icon: bot
4
+ description:
5
+ Configure which AI assistant integrations appear in dropdown menus across your APIToGo
6
+ documentation site, including built-in presets and custom providers.
7
+ ---
8
+
9
+ By default, APIToGo shows "Use in Claude" and "Use in ChatGPT" options in dropdown menus on both
10
+ [API reference](./api-reference.md) and [documentation](./docs.md) pages. You can customize this
11
+ behavior using the top-level `aiAssistants` configuration.
12
+
13
+ ## Disable AI Assistants
14
+
15
+ To remove all AI assistant options:
16
+
17
+ ```ts title=apitogo.config.ts
18
+ const config = {
19
+ aiAssistants: false,
20
+ // ...
21
+ };
22
+ ```
23
+
24
+ ## Use Only Specific Presets
25
+
26
+ ```ts title=apitogo.config.ts
27
+ const config = {
28
+ aiAssistants: ["claude"], // Only show Claude
29
+ // ...
30
+ };
31
+ ```
32
+
33
+ Available presets: `"claude"`, `"chatgpt"`
34
+
35
+ ## Add Custom AI Assistants
36
+
37
+ You can add custom entries with a label and URL. Use `{pageUrl}` as a placeholder in the URL string,
38
+ or provide a callback for full control:
39
+
40
+ ```ts title=apitogo.config.ts
41
+ const config = {
42
+ aiAssistants: [
43
+ "claude", // built-in preset
44
+ {
45
+ label: "Open in MyAI",
46
+ // Simple string with placeholder
47
+ url: "https://myai.com/?context={pageUrl}",
48
+ },
49
+ {
50
+ label: "Open in CustomAI",
51
+ // Callback for full control
52
+ url: ({ pageUrl, type }) => {
53
+ if (type === "openapi") {
54
+ return `https://custom.ai/?q=${encodeURIComponent("Explain this API: " + pageUrl)}`;
55
+ }
56
+ return `https://custom.ai/?q=${encodeURIComponent("Explain this page: " + pageUrl)}`;
57
+ },
58
+ },
59
+ ],
60
+ // ...
61
+ };
62
+ ```
63
+
64
+ The callback receives `{ pageUrl: string, type: "docs" | "openapi" }` so you can customize behavior
65
+ per context.
@@ -0,0 +1,109 @@
1
+ ---
2
+ title: API Catalog
3
+ sidebar_icon: book-open
4
+ ---
5
+
6
+ If you're dealing with multiple APIs and multiple OpenAPI files, the API Catalog comes in handy. It
7
+ creates an overview of all your APIs and lets you organize them into categories and tags.
8
+
9
+ ## Enable API Catalog
10
+
11
+ The first step to enable the API Catalog, you need to add a `catalogs` object to your APIToGo
12
+ configuration file.
13
+
14
+ ```js title=apitogo.config.ts
15
+ const config = {
16
+ // ...
17
+ catalogs: {
18
+ path: "/catalog",
19
+ label: "API Catalog",
20
+ },
21
+ // ...
22
+ };
23
+ ```
24
+
25
+ You can then add your APIs to the catalog by adding the `categories` property to your API
26
+ configuration.
27
+
28
+ ```js title=apitogo.config.ts
29
+ const config = {
30
+ // ...
31
+ apis: [
32
+ // ...
33
+ {
34
+ type: "file",
35
+ input: "./operational.json",
36
+ path: "/api-operational",
37
+ categories: [{ label: "General", tags: ["Operational"] }],
38
+ },
39
+ {
40
+ type: "file",
41
+ input: "./enduser.json",
42
+ path: "/api-enduser",
43
+ categories: [{ label: "General", tags: ["End-User"] }],
44
+ },
45
+ {
46
+ type: "file",
47
+ input: "./openapi.json",
48
+ path: "/api-auth",
49
+ categories: [{ label: "Other", tags: ["Authentication"] }],
50
+ },
51
+ // ...
52
+ ],
53
+ // ...
54
+ };
55
+ ```
56
+
57
+ ## Advanced Configuration
58
+
59
+ ### Select APIs to show in the catalog
60
+
61
+ You can select which APIs are shown in the catalog by using the `items` property. The `items`
62
+ property is an array of navigation IDs of the APIs you want to show in the catalog.
63
+
64
+ ```js title=apitogo.config.ts
65
+ const config = {
66
+ // ...
67
+ catalogs: {
68
+ path: "/catalog",
69
+ label: "API Catalog",
70
+ // Only show the operational API in the catalog
71
+ items: ["api-operational"],
72
+ },
73
+ apis: [
74
+ // ...
75
+ {
76
+ type: "file",
77
+ input: "./operational.json",
78
+ path: "/api-operational",
79
+ categories: [{ label: "General", tags: ["Operational"] }],
80
+ },
81
+ {
82
+ type: "file",
83
+ input: "./enduser.json",
84
+ path: "/api-enduser",
85
+ categories: [{ label: "General", tags: ["End-User"] }],
86
+ },
87
+ ],
88
+ // ...
89
+ };
90
+ ```
91
+
92
+ ### Filtering catalog items
93
+
94
+ You can filter which APIs are shown in the catalog by using the `filterItems` property. The function
95
+ receives the items and context as arguments.
96
+
97
+ ```js title=apitogo.config.ts
98
+ const config = {
99
+ // ...
100
+ catalogs: {
101
+ path: "/catalog",
102
+ label: "API Catalog",
103
+ filterItems: (items, { auth: AuthState }) => {
104
+ return items.filter((items) => items.tags.includes(auth));
105
+ },
106
+ },
107
+ // ...
108
+ };
109
+ ```