zuplo 6.67.32 → 6.68.0

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 (644) hide show
  1. package/README.md +9 -0
  2. package/docs/_index.md +44 -0
  3. package/docs/ai-gateway/apps.mdx +28 -0
  4. package/docs/ai-gateway/custom-providers.mdx +54 -0
  5. package/docs/ai-gateway/getting-started.mdx +224 -0
  6. package/docs/ai-gateway/guardrails.mdx +65 -0
  7. package/docs/ai-gateway/integrations/ai-sdk.mdx +109 -0
  8. package/docs/ai-gateway/integrations/claude-code.mdx +49 -0
  9. package/docs/ai-gateway/integrations/codex.mdx +78 -0
  10. package/docs/ai-gateway/integrations/goose.mdx +104 -0
  11. package/docs/ai-gateway/integrations/langchain.mdx +66 -0
  12. package/docs/ai-gateway/integrations/openai.mdx +99 -0
  13. package/docs/ai-gateway/introduction.mdx +85 -0
  14. package/docs/ai-gateway/managing-apps.mdx +46 -0
  15. package/docs/ai-gateway/managing-providers.mdx +66 -0
  16. package/docs/ai-gateway/managing-teams.mdx +63 -0
  17. package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +125 -0
  18. package/docs/ai-gateway/policies/comet-opik-tracing.mdx +139 -0
  19. package/docs/ai-gateway/policies/galileo-tracing.mdx +147 -0
  20. package/docs/ai-gateway/providers.mdx +32 -0
  21. package/docs/ai-gateway/teams.mdx +38 -0
  22. package/docs/ai-gateway/universal-api.mdx +43 -0
  23. package/docs/ai-gateway/usage-limits.mdx +89 -0
  24. package/docs/api-management/introduction.md +127 -0
  25. package/docs/articles/accounts/audit-logs.mdx +227 -0
  26. package/docs/articles/accounts/billing.mdx +25 -0
  27. package/docs/articles/accounts/default-api-key.mdx +30 -0
  28. package/docs/articles/accounts/delete-account.mdx +36 -0
  29. package/docs/articles/accounts/enterprise-sso.mdx +116 -0
  30. package/docs/articles/accounts/managing-account-members.mdx +45 -0
  31. package/docs/articles/accounts/managing-project-members.mdx +37 -0
  32. package/docs/articles/accounts/members-and-roles.mdx +21 -0
  33. package/docs/articles/accounts/roles-and-permissions.mdx +115 -0
  34. package/docs/articles/accounts/zuplo-api-keys.mdx +94 -0
  35. package/docs/articles/add-api-to-backstage.mdx +216 -0
  36. package/docs/articles/advanced-path-matching.mdx +139 -0
  37. package/docs/articles/api-key-administration.mdx +47 -0
  38. package/docs/articles/api-key-api.mdx +220 -0
  39. package/docs/articles/api-key-authentication.mdx +195 -0
  40. package/docs/articles/api-key-buckets.mdx +61 -0
  41. package/docs/articles/api-key-end-users.mdx +52 -0
  42. package/docs/articles/api-key-leak-detection.mdx +75 -0
  43. package/docs/articles/api-key-management.mdx +100 -0
  44. package/docs/articles/api-key-react-component.mdx +90 -0
  45. package/docs/articles/api-key-service-limits.mdx +14 -0
  46. package/docs/articles/archiving-requests-to-storage.mdx +119 -0
  47. package/docs/articles/branch-based-deployments.mdx +184 -0
  48. package/docs/articles/bypass-policy-for-testing.mdx +117 -0
  49. package/docs/articles/check-ip-address.mdx +17 -0
  50. package/docs/articles/ci-cd-azure/basic-deployment.mdx +49 -0
  51. package/docs/articles/ci-cd-azure/deploy-and-test.mdx +47 -0
  52. package/docs/articles/ci-cd-azure/local-testing.mdx +59 -0
  53. package/docs/articles/ci-cd-azure/multi-stage-deployment.mdx +88 -0
  54. package/docs/articles/ci-cd-azure/pr-preview-environments.mdx +50 -0
  55. package/docs/articles/ci-cd-azure/tag-based-releases.mdx +37 -0
  56. package/docs/articles/ci-cd-bitbucket/basic-deployment.mdx +27 -0
  57. package/docs/articles/ci-cd-bitbucket/deploy-and-test.mdx +41 -0
  58. package/docs/articles/ci-cd-bitbucket/local-testing.mdx +34 -0
  59. package/docs/articles/ci-cd-bitbucket/multi-stage-deployment.mdx +52 -0
  60. package/docs/articles/ci-cd-bitbucket/pr-preview-environments.mdx +46 -0
  61. package/docs/articles/ci-cd-bitbucket/tag-based-releases.mdx +27 -0
  62. package/docs/articles/ci-cd-circleci/basic-deployment.mdx +34 -0
  63. package/docs/articles/ci-cd-circleci/deploy-and-test.mdx +44 -0
  64. package/docs/articles/ci-cd-circleci/local-testing.mdx +50 -0
  65. package/docs/articles/ci-cd-circleci/multi-stage-deployment.mdx +82 -0
  66. package/docs/articles/ci-cd-circleci/pr-preview-environments.mdx +47 -0
  67. package/docs/articles/ci-cd-circleci/tag-based-releases.mdx +38 -0
  68. package/docs/articles/ci-cd-github/basic-deployment.mdx +48 -0
  69. package/docs/articles/ci-cd-github/cleanup-on-branch-delete.mdx +123 -0
  70. package/docs/articles/ci-cd-github/deploy-and-test.mdx +82 -0
  71. package/docs/articles/ci-cd-github/local-testing.mdx +102 -0
  72. package/docs/articles/ci-cd-github/multi-stage-deployment.mdx +136 -0
  73. package/docs/articles/ci-cd-github/pr-preview-environments.mdx +106 -0
  74. package/docs/articles/ci-cd-github/tag-based-releases.mdx +99 -0
  75. package/docs/articles/ci-cd-gitlab/basic-deployment.mdx +28 -0
  76. package/docs/articles/ci-cd-gitlab/deploy-and-test.mdx +44 -0
  77. package/docs/articles/ci-cd-gitlab/local-testing.mdx +39 -0
  78. package/docs/articles/ci-cd-gitlab/mr-preview-environments.mdx +52 -0
  79. package/docs/articles/ci-cd-gitlab/multi-stage-deployment.mdx +64 -0
  80. package/docs/articles/ci-cd-gitlab/tag-based-releases.mdx +28 -0
  81. package/docs/articles/composite-policy-reference.mdx +284 -0
  82. package/docs/articles/configuring-auth0-for-mcp-auth.mdx +186 -0
  83. package/docs/articles/configuring-okta-for-mcp-auth.mdx +208 -0
  84. package/docs/articles/convert-urls-to-openapi.mdx +62 -0
  85. package/docs/articles/cors.mdx +447 -0
  86. package/docs/articles/custom-audit-log-policy.mdx +95 -0
  87. package/docs/articles/custom-ci-cd-azure.mdx +81 -0
  88. package/docs/articles/custom-ci-cd-bitbucket.mdx +80 -0
  89. package/docs/articles/custom-ci-cd-circleci.mdx +78 -0
  90. package/docs/articles/custom-ci-cd-github.mdx +99 -0
  91. package/docs/articles/custom-ci-cd-gitlab.mdx +79 -0
  92. package/docs/articles/custom-ci-cd.mdx +82 -0
  93. package/docs/articles/custom-code-patterns.md +418 -0
  94. package/docs/articles/custom-domains.mdx +258 -0
  95. package/docs/articles/custom-logging-example.mdx +139 -0
  96. package/docs/articles/ddos-protection.mdx +138 -0
  97. package/docs/articles/development-options.mdx +49 -0
  98. package/docs/articles/environment-variables.mdx +134 -0
  99. package/docs/articles/environments.mdx +143 -0
  100. package/docs/articles/fastly-zuplo-host-setup.mdx +41 -0
  101. package/docs/articles/github-deployment-testing.mdx +101 -0
  102. package/docs/articles/gke-with-upstream-auth-policy.mdx +192 -0
  103. package/docs/articles/graphql-security.mdx +180 -0
  104. package/docs/articles/handling-form-data.mdx +61 -0
  105. package/docs/articles/health-checks.mdx +109 -0
  106. package/docs/articles/hosting-options.mdx +70 -0
  107. package/docs/articles/lazy-load-configuration-into-cache.mdx +92 -0
  108. package/docs/articles/limits.mdx +98 -0
  109. package/docs/articles/local-development-debugging.mdx +44 -0
  110. package/docs/articles/local-development-env-variables.mdx +23 -0
  111. package/docs/articles/local-development-installing-packages.mdx +23 -0
  112. package/docs/articles/local-development-routes-designer.mdx +27 -0
  113. package/docs/articles/local-development-services.mdx +40 -0
  114. package/docs/articles/local-development-troubleshooting.mdx +56 -0
  115. package/docs/articles/local-development.mdx +81 -0
  116. package/docs/articles/log-plugin-aws-cloudwatch.mdx +83 -0
  117. package/docs/articles/log-plugin-datadog.mdx +84 -0
  118. package/docs/articles/log-plugin-dynatrace.mdx +75 -0
  119. package/docs/articles/log-plugin-gcp.mdx +75 -0
  120. package/docs/articles/log-plugin-loki.mdx +136 -0
  121. package/docs/articles/log-plugin-new-relic.mdx +84 -0
  122. package/docs/articles/log-plugin-splunk.mdx +104 -0
  123. package/docs/articles/log-plugin-sumo.mdx +73 -0
  124. package/docs/articles/log-plugin-vmware-log-insight.mdx +154 -0
  125. package/docs/articles/log-request-response-data.mdx +398 -0
  126. package/docs/articles/logging.mdx +115 -0
  127. package/docs/articles/manual-mcp-oauth-testing.mdx +193 -0
  128. package/docs/articles/mcp-quickstart.mdx +135 -0
  129. package/docs/articles/metrics-plugins.mdx +371 -0
  130. package/docs/articles/migrate-from-apigee.md +408 -0
  131. package/docs/articles/migrate-from-aws-api-gateway.md +248 -0
  132. package/docs/articles/migrate-from-azure-apim.md +292 -0
  133. package/docs/articles/migrate-from-kong.md +300 -0
  134. package/docs/articles/migration-overview.md +81 -0
  135. package/docs/articles/monetization/api-access.mdx +69 -0
  136. package/docs/articles/monetization/billing-models.md +520 -0
  137. package/docs/articles/monetization/developer-portal.md +167 -0
  138. package/docs/articles/monetization/features.mdx +98 -0
  139. package/docs/articles/monetization/index.mdx +113 -0
  140. package/docs/articles/monetization/meters.mdx +135 -0
  141. package/docs/articles/monetization/monetization-policy.md +314 -0
  142. package/docs/articles/monetization/plan-examples.mdx +366 -0
  143. package/docs/articles/monetization/plans.mdx +266 -0
  144. package/docs/articles/monetization/pricing-models.mdx +225 -0
  145. package/docs/articles/monetization/private-plans.md +154 -0
  146. package/docs/articles/monetization/quickstart.md +355 -0
  147. package/docs/articles/monetization/rate-cards.mdx +171 -0
  148. package/docs/articles/monetization/stripe-integration.md +195 -0
  149. package/docs/articles/monetization/subscription-lifecycle.md +298 -0
  150. package/docs/articles/monetization/tax-collection.md +166 -0
  151. package/docs/articles/monetization/troubleshooting.md +272 -0
  152. package/docs/articles/monetization-custom.mdx +71 -0
  153. package/docs/articles/monetization-integrations.mdx +104 -0
  154. package/docs/articles/monitoring-your-gateway.mdx +53 -0
  155. package/docs/articles/monorepo-deployment.mdx +350 -0
  156. package/docs/articles/multiple-auth-policies.mdx +81 -0
  157. package/docs/articles/non-standard-ports.mdx +30 -0
  158. package/docs/articles/oauth-authentication.mdx +54 -0
  159. package/docs/articles/openapi-server-urls.mdx +60 -0
  160. package/docs/articles/openapi.mdx +130 -0
  161. package/docs/articles/opentelemetry.mdx +250 -0
  162. package/docs/articles/per-user-rate-limits-using-db.mdx +112 -0
  163. package/docs/articles/performance-testing.mdx +304 -0
  164. package/docs/articles/plugin-akamai-api-security.mdx +76 -0
  165. package/docs/articles/plugin-azure-blob.mdx +73 -0
  166. package/docs/articles/plugin-azure-event-hubs.mdx +64 -0
  167. package/docs/articles/plugin-hydrolix-traffic-peak.mdx +147 -0
  168. package/docs/articles/policies.mdx +33 -0
  169. package/docs/articles/rename-or-move-project.mdx +39 -0
  170. package/docs/articles/rick-and-morty-api-developer-portal-example.mdx +23 -0
  171. package/docs/articles/routing.mdx +193 -0
  172. package/docs/articles/s3-signed-url-uploads.mdx +521 -0
  173. package/docs/articles/secure-tunnel.mdx +84 -0
  174. package/docs/articles/securing-backend-mtls.mdx +268 -0
  175. package/docs/articles/securing-your-backend.mdx +148 -0
  176. package/docs/articles/security.mdx +105 -0
  177. package/docs/articles/sharing-code-across-projects.mdx +412 -0
  178. package/docs/articles/source-control-setup-azure.mdx +13 -0
  179. package/docs/articles/source-control-setup-bitbucket.mdx +43 -0
  180. package/docs/articles/source-control-setup-github.mdx +172 -0
  181. package/docs/articles/source-control-setup-gitlab.mdx +12 -0
  182. package/docs/articles/source-control.mdx +80 -0
  183. package/docs/articles/step-1-setup-basic-gateway-local.mdx +136 -0
  184. package/docs/articles/step-1-setup-basic-gateway.mdx +118 -0
  185. package/docs/articles/step-2-add-rate-limiting-local.mdx +126 -0
  186. package/docs/articles/step-2-add-rate-limiting.mdx +82 -0
  187. package/docs/articles/step-3-add-api-key-auth-local.mdx +199 -0
  188. package/docs/articles/step-3-add-api-key-auth.mdx +166 -0
  189. package/docs/articles/step-4-deploying-to-the-edge.mdx +220 -0
  190. package/docs/articles/step-5-dynamic-rate-limiting.mdx +167 -0
  191. package/docs/articles/support.mdx +144 -0
  192. package/docs/articles/terraform.mdx +114 -0
  193. package/docs/articles/testing-graphql.mdx +34 -0
  194. package/docs/articles/testing.mdx +522 -0
  195. package/docs/articles/troubleshooting-slow-responses.mdx +301 -0
  196. package/docs/articles/troubleshooting.md +302 -0
  197. package/docs/articles/tsconfig.mdx +105 -0
  198. package/docs/articles/tunnel-setup.mdx +195 -0
  199. package/docs/articles/tunnel-troubleshooting.mdx +50 -0
  200. package/docs/articles/update-zup-in-github-action.mdx +110 -0
  201. package/docs/articles/use-openapi-extension-data.mdx +79 -0
  202. package/docs/articles/users/multifactor-authentication.mdx +64 -0
  203. package/docs/articles/users/profile.mdx +13 -0
  204. package/docs/articles/versioning-on-zuplo.mdx +89 -0
  205. package/docs/articles/waf-ddos-akamai.md +133 -0
  206. package/docs/articles/waf-ddos-aws-waf-shield.mdx +85 -0
  207. package/docs/articles/waf-ddos-fastly.mdx +251 -0
  208. package/docs/articles/waf-ddos.mdx +140 -0
  209. package/docs/articles/zuplo-waf.mdx +156 -0
  210. package/docs/ask.mdx +3 -0
  211. package/docs/cli/authentication.mdx +56 -0
  212. package/docs/cli/connectivity.mdx +38 -0
  213. package/docs/cli/create-zuplo-api.mdx +80 -0
  214. package/docs/cli/delete.mdx +79 -0
  215. package/docs/cli/deploy.mdx +156 -0
  216. package/docs/cli/deploy.partial.mdx +46 -0
  217. package/docs/cli/dev.mdx +115 -0
  218. package/docs/cli/docs.mdx +66 -0
  219. package/docs/cli/editor.mdx +50 -0
  220. package/docs/cli/global-options.mdx +19 -0
  221. package/docs/cli/init.mdx +74 -0
  222. package/docs/cli/link.mdx +74 -0
  223. package/docs/cli/list.mdx +55 -0
  224. package/docs/cli/mtls-certificate-create.mdx +94 -0
  225. package/docs/cli/mtls-certificate-delete.mdx +55 -0
  226. package/docs/cli/mtls-certificate-describe.mdx +55 -0
  227. package/docs/cli/mtls-certificate-disable.mdx +55 -0
  228. package/docs/cli/mtls-certificate-list.mdx +47 -0
  229. package/docs/cli/mtls-certificate-update.mdx +72 -0
  230. package/docs/cli/openapi-convert.mdx +111 -0
  231. package/docs/cli/openapi-merge.mdx +138 -0
  232. package/docs/cli/openapi-merge.partial.mdx +29 -0
  233. package/docs/cli/openapi-overlay.mdx +123 -0
  234. package/docs/cli/overview.mdx +78 -0
  235. package/docs/cli/project-create.mdx +43 -0
  236. package/docs/cli/source-migrate.mdx +18 -0
  237. package/docs/cli/source-upgrade.mdx +41 -0
  238. package/docs/cli/test.mdx +70 -0
  239. package/docs/cli/test.partial.mdx +7 -0
  240. package/docs/cli/tunnel-create.mdx +53 -0
  241. package/docs/cli/tunnel-create.partial.mdx +9 -0
  242. package/docs/cli/tunnel-delete.mdx +35 -0
  243. package/docs/cli/tunnel-delete.partial.mdx +9 -0
  244. package/docs/cli/tunnel-describe.mdx +45 -0
  245. package/docs/cli/tunnel-describe.partial.mdx +5 -0
  246. package/docs/cli/tunnel-list.mdx +35 -0
  247. package/docs/cli/tunnel-list.partial.mdx +9 -0
  248. package/docs/cli/tunnel-rate-token.partial.mdx +9 -0
  249. package/docs/cli/tunnel-rotate-token.mdx +39 -0
  250. package/docs/cli/tunnel-services-describe.mdx +45 -0
  251. package/docs/cli/tunnel-services-describe.partial.mdx +9 -0
  252. package/docs/cli/tunnel-services-update.mdx +48 -0
  253. package/docs/cli/variable-create.mdx +91 -0
  254. package/docs/cli/variable-create.partial.mdx +5 -0
  255. package/docs/cli/variable-update.mdx +75 -0
  256. package/docs/cli/variable-update.partial.mdx +5 -0
  257. package/docs/concepts/api-keys.md +146 -0
  258. package/docs/concepts/authentication.mdx +109 -0
  259. package/docs/concepts/how-zuplo-works.mdx +120 -0
  260. package/docs/concepts/project-structure.mdx +174 -0
  261. package/docs/concepts/rate-limiting.md +246 -0
  262. package/docs/concepts/request-lifecycle.mdx +56 -0
  263. package/docs/concepts/source-control-and-deployment.mdx +229 -0
  264. package/docs/conferences/conference-prize-terms.mdx +80 -0
  265. package/docs/dedicated/akamai/ai-powered-applications.mdx +223 -0
  266. package/docs/dedicated/akamai/architecture.mdx +280 -0
  267. package/docs/dedicated/akamai/caching.mdx +212 -0
  268. package/docs/dedicated/akamai/cdn.mdx +156 -0
  269. package/docs/dedicated/architecture.mdx +208 -0
  270. package/docs/dedicated/custom-domains.mdx +31 -0
  271. package/docs/dedicated/federated-gateways.mdx +80 -0
  272. package/docs/dedicated/networking.mdx +69 -0
  273. package/docs/dedicated/overview.mdx +80 -0
  274. package/docs/dedicated/source-control.mdx +63 -0
  275. package/docs/dev-portal/dev-portal-create-consumer-on-auth.mdx +134 -0
  276. package/docs/dev-portal/introduction.mdx +65 -0
  277. package/docs/dev-portal/local-development.mdx +72 -0
  278. package/docs/dev-portal/migration.mdx +526 -0
  279. package/docs/dev-portal/node-modules.mdx +45 -0
  280. package/docs/dev-portal/updating.mdx +28 -0
  281. package/docs/dev-portal/zudoku/components/alert.mdx +130 -0
  282. package/docs/dev-portal/zudoku/components/badge.mdx +70 -0
  283. package/docs/dev-portal/zudoku/components/button.mdx +132 -0
  284. package/docs/dev-portal/zudoku/components/callout.mdx +112 -0
  285. package/docs/dev-portal/zudoku/components/card.mdx +104 -0
  286. package/docs/dev-portal/zudoku/components/checkbox.mdx +72 -0
  287. package/docs/dev-portal/zudoku/components/client-only.mdx +79 -0
  288. package/docs/dev-portal/zudoku/components/code-tabs.mdx +179 -0
  289. package/docs/dev-portal/zudoku/components/dialog.mdx +167 -0
  290. package/docs/dev-portal/zudoku/components/head.mdx +199 -0
  291. package/docs/dev-portal/zudoku/components/icons.mdx +27 -0
  292. package/docs/dev-portal/zudoku/components/input.mdx +96 -0
  293. package/docs/dev-portal/zudoku/components/label.mdx +86 -0
  294. package/docs/dev-portal/zudoku/components/link.mdx +242 -0
  295. package/docs/dev-portal/zudoku/components/markdown.mdx +151 -0
  296. package/docs/dev-portal/zudoku/components/mermaid.mdx +81 -0
  297. package/docs/dev-portal/zudoku/components/playground.mdx +87 -0
  298. package/docs/dev-portal/zudoku/components/secret.mdx +78 -0
  299. package/docs/dev-portal/zudoku/components/select.mdx +176 -0
  300. package/docs/dev-portal/zudoku/components/shadcn.mdx +73 -0
  301. package/docs/dev-portal/zudoku/components/slider.mdx +108 -0
  302. package/docs/dev-portal/zudoku/components/slot.mdx +119 -0
  303. package/docs/dev-portal/zudoku/components/stepper.mdx +138 -0
  304. package/docs/dev-portal/zudoku/components/switch.mdx +96 -0
  305. package/docs/dev-portal/zudoku/components/syntax-highlight.mdx +602 -0
  306. package/docs/dev-portal/zudoku/components/textarea.mdx +78 -0
  307. package/docs/dev-portal/zudoku/components/tooltip.mdx +195 -0
  308. package/docs/dev-portal/zudoku/components/typography.mdx +61 -0
  309. package/docs/dev-portal/zudoku/configuration/ai-assistants.md +64 -0
  310. package/docs/dev-portal/zudoku/configuration/api-catalog.md +108 -0
  311. package/docs/dev-portal/zudoku/configuration/api-reference.md +397 -0
  312. package/docs/dev-portal/zudoku/configuration/authentication-auth0.md +173 -0
  313. package/docs/dev-portal/zudoku/configuration/authentication-azure-ad.md +238 -0
  314. package/docs/dev-portal/zudoku/configuration/authentication-clerk.md +110 -0
  315. package/docs/dev-portal/zudoku/configuration/authentication-firebase.md +61 -0
  316. package/docs/dev-portal/zudoku/configuration/authentication-pingfederate.md +136 -0
  317. package/docs/dev-portal/zudoku/configuration/authentication-supabase.md +225 -0
  318. package/docs/dev-portal/zudoku/configuration/authentication.md +199 -0
  319. package/docs/dev-portal/zudoku/configuration/build-configuration.mdx +147 -0
  320. package/docs/dev-portal/zudoku/configuration/docs.md +282 -0
  321. package/docs/dev-portal/zudoku/configuration/footer.mdx +214 -0
  322. package/docs/dev-portal/zudoku/configuration/llms.md +89 -0
  323. package/docs/dev-portal/zudoku/configuration/navigation.mdx +408 -0
  324. package/docs/dev-portal/zudoku/configuration/overview.md +380 -0
  325. package/docs/dev-portal/zudoku/configuration/protected-routes.md +149 -0
  326. package/docs/dev-portal/zudoku/configuration/search.md +169 -0
  327. package/docs/dev-portal/zudoku/configuration/sentry.mdx +44 -0
  328. package/docs/dev-portal/zudoku/configuration/site.md +124 -0
  329. package/docs/dev-portal/zudoku/configuration/slots.mdx +124 -0
  330. package/docs/dev-portal/zudoku/configuration/vite-config.md +18 -0
  331. package/docs/dev-portal/zudoku/custom-plugins.md +287 -0
  332. package/docs/dev-portal/zudoku/customization/colors-theme.mdx +275 -0
  333. package/docs/dev-portal/zudoku/customization/fonts.md +110 -0
  334. package/docs/dev-portal/zudoku/extending/events.md +124 -0
  335. package/docs/dev-portal/zudoku/guides/custom-pages.md +106 -0
  336. package/docs/dev-portal/zudoku/guides/environment-variables.md +99 -0
  337. package/docs/dev-portal/zudoku/guides/mermaid.mdx +70 -0
  338. package/docs/dev-portal/zudoku/guides/navigation-migration.md +87 -0
  339. package/docs/dev-portal/zudoku/guides/navigation-rules.mdx +197 -0
  340. package/docs/dev-portal/zudoku/guides/processors.mdx +234 -0
  341. package/docs/dev-portal/zudoku/guides/static-files.md +55 -0
  342. package/docs/dev-portal/zudoku/guides/transforming-examples.md +156 -0
  343. package/docs/dev-portal/zudoku/guides/using-multiple-apis.md +87 -0
  344. package/docs/dev-portal/zudoku/markdown/admonitions.md +128 -0
  345. package/docs/dev-portal/zudoku/markdown/code-blocks.md +196 -0
  346. package/docs/dev-portal/zudoku/markdown/frontmatter.md +172 -0
  347. package/docs/dev-portal/zudoku/markdown/mdx.md +68 -0
  348. package/docs/dev-portal/zudoku/markdown/overview.md +275 -0
  349. package/docs/dev-portal/zudoku/plugins.md +5 -0
  350. package/docs/dev-portal/zudoku/writing.mdx +72 -0
  351. package/docs/errors/bad-request.mdx +39 -0
  352. package/docs/errors/build-error.mdx +45 -0
  353. package/docs/errors/fatal-project-error.mdx +39 -0
  354. package/docs/errors/gateway-timeout.mdx +33 -0
  355. package/docs/errors/get-head-body-error.mdx +41 -0
  356. package/docs/errors/main-mod-error.mdx +40 -0
  357. package/docs/errors/no-project-set.mdx +41 -0
  358. package/docs/errors/not-found.mdx +43 -0
  359. package/docs/errors/rate-limit-exceeded.mdx +31 -0
  360. package/docs/errors/schema-validation-failed.mdx +51 -0
  361. package/docs/errors/system-configuration-error.mdx +44 -0
  362. package/docs/errors/unauthorized.mdx +50 -0
  363. package/docs/errors/unknown-error.mdx +42 -0
  364. package/docs/errors.mdx +14 -0
  365. package/docs/guides/canary-routing-for-employees.mdx +385 -0
  366. package/docs/guides/geolocation-backend-routing.mdx +404 -0
  367. package/docs/guides/modify-openapi-paths.mdx +371 -0
  368. package/docs/guides/openapi-overlays.mdx +492 -0
  369. package/docs/guides/overview.mdx +12 -0
  370. package/docs/guides/user-based-backend-routing.mdx +437 -0
  371. package/docs/handlers/aws-lambda.mdx +201 -0
  372. package/docs/handlers/custom-handler.mdx +112 -0
  373. package/docs/handlers/legacy-dev-portal-handler.mdx +135 -0
  374. package/docs/handlers/mcp-server.mdx +730 -0
  375. package/docs/handlers/openapi.mdx +78 -0
  376. package/docs/handlers/redirect.mdx +115 -0
  377. package/docs/handlers/system-handlers.mdx +41 -0
  378. package/docs/handlers/url-forward.mdx +204 -0
  379. package/docs/handlers/url-rewrite.mdx +224 -0
  380. package/docs/handlers/websocket-handler.mdx +154 -0
  381. package/docs/home.mdx +6 -0
  382. package/docs/managed-edge/overview.md +78 -0
  383. package/docs/mcp-server/configuration-migration-guide.mdx +344 -0
  384. package/docs/mcp-server/custom-tools.mdx +487 -0
  385. package/docs/mcp-server/graphql.mdx +241 -0
  386. package/docs/mcp-server/introduction.mdx +122 -0
  387. package/docs/mcp-server/openai-apps-sdk.mdx +160 -0
  388. package/docs/mcp-server/prompts.mdx +283 -0
  389. package/docs/mcp-server/resources.mdx +288 -0
  390. package/docs/mcp-server/testing.mdx +53 -0
  391. package/docs/mcp-server/tools.mdx +306 -0
  392. package/docs/policies/_index.md +92 -0
  393. package/docs/policies/ab-test-inbound/intro.md +8 -0
  394. package/docs/policies/ab-test-inbound/policy.ts +14 -0
  395. package/docs/policies/ab-test-inbound/schema.json +27 -0
  396. package/docs/policies/ab-test-outbound/intro.md +8 -0
  397. package/docs/policies/ab-test-outbound/policy.ts +26 -0
  398. package/docs/policies/ab-test-outbound/schema.json +27 -0
  399. package/docs/policies/acl-policy-inbound/intro.md +5 -0
  400. package/docs/policies/acl-policy-inbound/policy.ts +32 -0
  401. package/docs/policies/acl-policy-inbound/schema.json +52 -0
  402. package/docs/policies/akamai-ai-firewall/schema.json +98 -0
  403. package/docs/policies/amberflo-metering-inbound/doc.md +183 -0
  404. package/docs/policies/amberflo-metering-inbound/intro.md +20 -0
  405. package/docs/policies/amberflo-metering-inbound/schema.json +108 -0
  406. package/docs/policies/api-key-inbound/doc.md +77 -0
  407. package/docs/policies/api-key-inbound/intro.md +30 -0
  408. package/docs/policies/api-key-inbound/schema.json +84 -0
  409. package/docs/policies/archive-request-aws-s3-inbound/intro.md +4 -0
  410. package/docs/policies/archive-request-aws-s3-inbound/policy.ts +58 -0
  411. package/docs/policies/archive-request-aws-s3-inbound/schema.json +68 -0
  412. package/docs/policies/archive-request-azure-storage-inbound/doc.md +31 -0
  413. package/docs/policies/archive-request-azure-storage-inbound/intro.md +4 -0
  414. package/docs/policies/archive-request-azure-storage-inbound/policy.ts +54 -0
  415. package/docs/policies/archive-request-azure-storage-inbound/schema.json +53 -0
  416. package/docs/policies/archive-request-gcp-storage-inbound/doc.md +63 -0
  417. package/docs/policies/archive-request-gcp-storage-inbound/intro.md +4 -0
  418. package/docs/policies/archive-request-gcp-storage-inbound/policy.ts +68 -0
  419. package/docs/policies/archive-request-gcp-storage-inbound/schema.json +47 -0
  420. package/docs/policies/archive-response-aws-s3-outbound/intro.md +2 -0
  421. package/docs/policies/archive-response-aws-s3-outbound/policy.ts +59 -0
  422. package/docs/policies/archive-response-aws-s3-outbound/schema.json +68 -0
  423. package/docs/policies/archive-response-azure-storage-outbound/doc.md +31 -0
  424. package/docs/policies/archive-response-azure-storage-outbound/intro.md +3 -0
  425. package/docs/policies/archive-response-azure-storage-outbound/policy.ts +54 -0
  426. package/docs/policies/archive-response-azure-storage-outbound/schema.json +53 -0
  427. package/docs/policies/audit-log-inbound/doc.md +78 -0
  428. package/docs/policies/audit-log-inbound/intro.md +10 -0
  429. package/docs/policies/audit-log-inbound/schema.json +81 -0
  430. package/docs/policies/auth0-jwt-auth-inbound/doc.md +125 -0
  431. package/docs/policies/auth0-jwt-auth-inbound/intro.md +17 -0
  432. package/docs/policies/auth0-jwt-auth-inbound/schema.json +74 -0
  433. package/docs/policies/authzen-inbound/doc.md +24 -0
  434. package/docs/policies/authzen-inbound/intro.md +31 -0
  435. package/docs/policies/authzen-inbound/schema.json +126 -0
  436. package/docs/policies/axiomatics-authz-inbound/doc.md +144 -0
  437. package/docs/policies/axiomatics-authz-inbound/intro.md +11 -0
  438. package/docs/policies/axiomatics-authz-inbound/schema.json +161 -0
  439. package/docs/policies/basic-auth-inbound/intro.md +9 -0
  440. package/docs/policies/basic-auth-inbound/schema.json +99 -0
  441. package/docs/policies/bot-detection-inbound/intro.md +4 -0
  442. package/docs/policies/bot-detection-inbound/schema.json +56 -0
  443. package/docs/policies/brownout-inbound/doc.md +55 -0
  444. package/docs/policies/brownout-inbound/intro.md +12 -0
  445. package/docs/policies/brownout-inbound/schema.json +115 -0
  446. package/docs/policies/caching-inbound/doc.md +209 -0
  447. package/docs/policies/caching-inbound/intro.md +23 -0
  448. package/docs/policies/caching-inbound/schema.json +98 -0
  449. package/docs/policies/change-method-inbound/schema.json +56 -0
  450. package/docs/policies/clear-headers-inbound/schema.json +59 -0
  451. package/docs/policies/clear-headers-outbound/schema.json +59 -0
  452. package/docs/policies/clerk-jwt-auth-inbound/doc.md +85 -0
  453. package/docs/policies/clerk-jwt-auth-inbound/intro.md +4 -0
  454. package/docs/policies/clerk-jwt-auth-inbound/schema.json +68 -0
  455. package/docs/policies/cognito-jwt-auth-inbound/intro.md +7 -0
  456. package/docs/policies/cognito-jwt-auth-inbound/schema.json +74 -0
  457. package/docs/policies/comet-opik-tracing-inbound/schema.json +65 -0
  458. package/docs/policies/complex-rate-limit-inbound/doc.md +20 -0
  459. package/docs/policies/complex-rate-limit-inbound/intro.md +23 -0
  460. package/docs/policies/complex-rate-limit-inbound/schema.json +142 -0
  461. package/docs/policies/composite-inbound/doc.md +69 -0
  462. package/docs/policies/composite-inbound/intro.md +15 -0
  463. package/docs/policies/composite-inbound/schema.json +59 -0
  464. package/docs/policies/composite-outbound/intro.md +6 -0
  465. package/docs/policies/composite-outbound/schema.json +59 -0
  466. package/docs/policies/curity-phantom-token-inbound/doc.md +109 -0
  467. package/docs/policies/curity-phantom-token-inbound/intro.md +3 -0
  468. package/docs/policies/curity-phantom-token-inbound/schema.json +68 -0
  469. package/docs/policies/custom-code-inbound/doc.md +267 -0
  470. package/docs/policies/custom-code-inbound/intro.md +2 -0
  471. package/docs/policies/custom-code-inbound/schema.json +48 -0
  472. package/docs/policies/custom-code-outbound/doc.md +235 -0
  473. package/docs/policies/custom-code-outbound/intro.md +2 -0
  474. package/docs/policies/custom-code-outbound/schema.json +43 -0
  475. package/docs/policies/firebase-jwt-inbound/intro.md +6 -0
  476. package/docs/policies/firebase-jwt-inbound/schema.json +68 -0
  477. package/docs/policies/formdata-to-json-inbound/schema.json +60 -0
  478. package/docs/policies/galileo-tracing-inbound/schema.json +65 -0
  479. package/docs/policies/geo-filter-inbound/doc.md +33 -0
  480. package/docs/policies/geo-filter-inbound/schema.json +108 -0
  481. package/docs/policies/graphql-complexity-limit-inbound/doc.md +48 -0
  482. package/docs/policies/graphql-complexity-limit-inbound/intro.md +2 -0
  483. package/docs/policies/graphql-complexity-limit-inbound/schema.json +90 -0
  484. package/docs/policies/graphql-disable-introspection-inbound/doc.md +66 -0
  485. package/docs/policies/graphql-disable-introspection-inbound/intro.md +15 -0
  486. package/docs/policies/graphql-disable-introspection-inbound/schema.json +48 -0
  487. package/docs/policies/graphql-introspection-filter-outbound/doc.md +148 -0
  488. package/docs/policies/graphql-introspection-filter-outbound/schema.json +79 -0
  489. package/docs/policies/hmac-auth-inbound/doc.md +30 -0
  490. package/docs/policies/hmac-auth-inbound/intro.md +10 -0
  491. package/docs/policies/hmac-auth-inbound/policy.ts +70 -0
  492. package/docs/policies/hmac-auth-inbound/schema.json +53 -0
  493. package/docs/policies/http-deprecation-outbound/doc.md +73 -0
  494. package/docs/policies/http-deprecation-outbound/schema.json +83 -0
  495. package/docs/policies/ip-restriction-inbound/intro.md +8 -0
  496. package/docs/policies/ip-restriction-inbound/policy.ts +40 -0
  497. package/docs/policies/ip-restriction-inbound/schema.json +58 -0
  498. package/docs/policies/jwt-scopes-inbound/schema.json +59 -0
  499. package/docs/policies/ldap-auth-inbound/schema.json +56 -0
  500. package/docs/policies/mock-api-inbound/schema.json +72 -0
  501. package/docs/policies/moesif-inbound/doc.md +44 -0
  502. package/docs/policies/moesif-inbound/intro.md +6 -0
  503. package/docs/policies/moesif-inbound/schema.json +68 -0
  504. package/docs/policies/monetization-inbound/doc.md +87 -0
  505. package/docs/policies/monetization-inbound/intro.md +6 -0
  506. package/docs/policies/monetization-inbound/schema.json +102 -0
  507. package/docs/policies/mtls-auth-inbound/intro.md +6 -0
  508. package/docs/policies/mtls-auth-inbound/schema.json +68 -0
  509. package/docs/policies/okta-fga-authz-inbound/doc.md +181 -0
  510. package/docs/policies/okta-fga-authz-inbound/intro.md +20 -0
  511. package/docs/policies/okta-fga-authz-inbound/schema.json +104 -0
  512. package/docs/policies/okta-jwt-auth-inbound/intro.md +7 -0
  513. package/docs/policies/okta-jwt-auth-inbound/schema.json +74 -0
  514. package/docs/policies/open-id-jwt-auth-inbound/doc.md +58 -0
  515. package/docs/policies/open-id-jwt-auth-inbound/intro.md +30 -0
  516. package/docs/policies/open-id-jwt-auth-inbound/schema.json +128 -0
  517. package/docs/policies/openfga-authz-inbound/doc.md +207 -0
  518. package/docs/policies/openfga-authz-inbound/intro.md +17 -0
  519. package/docs/policies/openfga-authz-inbound/schema.json +191 -0
  520. package/docs/policies/openmeter-inbound/doc.md +163 -0
  521. package/docs/policies/openmeter-inbound/intro.md +18 -0
  522. package/docs/policies/openmeter-inbound/schema.json +183 -0
  523. package/docs/policies/prompt-injection-outbound/doc.md +106 -0
  524. package/docs/policies/prompt-injection-outbound/intro.md +4 -0
  525. package/docs/policies/prompt-injection-outbound/schema.json +74 -0
  526. package/docs/policies/propel-auth-jwt-inbound/doc.md +88 -0
  527. package/docs/policies/propel-auth-jwt-inbound/intro.md +4 -0
  528. package/docs/policies/propel-auth-jwt-inbound/schema.json +74 -0
  529. package/docs/policies/query-param-to-header-inbound/doc.md +70 -0
  530. package/docs/policies/query-param-to-header-inbound/intro.md +5 -0
  531. package/docs/policies/query-param-to-header-inbound/schema.json +74 -0
  532. package/docs/policies/quota-inbound/doc.md +235 -0
  533. package/docs/policies/quota-inbound/intro.md +7 -0
  534. package/docs/policies/quota-inbound/schema.json +133 -0
  535. package/docs/policies/rate-limit-inbound/doc.md +78 -0
  536. package/docs/policies/rate-limit-inbound/intro.md +30 -0
  537. package/docs/policies/rate-limit-inbound/schema.json +134 -0
  538. package/docs/policies/rbac-policy-inbound/intro.md +3 -0
  539. package/docs/policies/rbac-policy-inbound/policy.ts +42 -0
  540. package/docs/policies/rbac-policy-inbound/schema.json +52 -0
  541. package/docs/policies/readme-metrics-inbound/doc.md +1 -0
  542. package/docs/policies/readme-metrics-inbound/intro.md +3 -0
  543. package/docs/policies/readme-metrics-inbound/schema.json +84 -0
  544. package/docs/policies/remove-headers-inbound/schema.json +59 -0
  545. package/docs/policies/remove-headers-outbound/schema.json +59 -0
  546. package/docs/policies/remove-query-params-inbound/schema.json +59 -0
  547. package/docs/policies/replace-string-outbound/schema.json +69 -0
  548. package/docs/policies/request-size-limit-inbound/schema.json +60 -0
  549. package/docs/policies/request-validation-inbound/doc.md +72 -0
  550. package/docs/policies/request-validation-inbound/intro.md +24 -0
  551. package/docs/policies/request-validation-inbound/schema.json +98 -0
  552. package/docs/policies/require-origin-inbound/intro.md +12 -0
  553. package/docs/policies/require-origin-inbound/schema.json +65 -0
  554. package/docs/policies/secret-masking-outbound/doc.md +41 -0
  555. package/docs/policies/secret-masking-outbound/intro.md +13 -0
  556. package/docs/policies/secret-masking-outbound/schema.json +65 -0
  557. package/docs/policies/semantic-cache-inbound/doc.md +63 -0
  558. package/docs/policies/semantic-cache-inbound/intro.md +4 -0
  559. package/docs/policies/semantic-cache-inbound/schema.json +179 -0
  560. package/docs/policies/set-body-inbound/intro.md +7 -0
  561. package/docs/policies/set-body-inbound/schema.json +56 -0
  562. package/docs/policies/set-headers-inbound/doc.md +41 -0
  563. package/docs/policies/set-headers-inbound/intro.md +2 -0
  564. package/docs/policies/set-headers-inbound/schema.json +83 -0
  565. package/docs/policies/set-headers-outbound/schema.json +83 -0
  566. package/docs/policies/set-query-params-inbound/schema.json +83 -0
  567. package/docs/policies/set-status-outbound/schema.json +62 -0
  568. package/docs/policies/sleep-inbound/schema.json +56 -0
  569. package/docs/policies/stripe-webhook-verification-inbound/intro.md +2 -0
  570. package/docs/policies/stripe-webhook-verification-inbound/schema.json +60 -0
  571. package/docs/policies/supabase-jwt-auth-inbound/doc.md +29 -0
  572. package/docs/policies/supabase-jwt-auth-inbound/intro.md +12 -0
  573. package/docs/policies/supabase-jwt-auth-inbound/schema.json +86 -0
  574. package/docs/policies/transform-body-inbound/intro.md +8 -0
  575. package/docs/policies/transform-body-inbound/policy.ts +16 -0
  576. package/docs/policies/transform-body-inbound/schema.json +27 -0
  577. package/docs/policies/transform-body-outbound/intro.md +8 -0
  578. package/docs/policies/transform-body-outbound/policy.ts +19 -0
  579. package/docs/policies/transform-body-outbound/schema.json +27 -0
  580. package/docs/policies/upstream-azure-ad-service-auth-inbound/doc.md +82 -0
  581. package/docs/policies/upstream-azure-ad-service-auth-inbound/intro.md +20 -0
  582. package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +84 -0
  583. package/docs/policies/upstream-firebase-admin-auth-inbound/intro.md +10 -0
  584. package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +68 -0
  585. package/docs/policies/upstream-firebase-user-auth-inbound/intro.md +2 -0
  586. package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +113 -0
  587. package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +139 -0
  588. package/docs/policies/upstream-gcp-federated-auth-inbound/intro.md +21 -0
  589. package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +96 -0
  590. package/docs/policies/upstream-gcp-jwt-inbound/intro.md +10 -0
  591. package/docs/policies/upstream-gcp-jwt-inbound/schema.json +62 -0
  592. package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +132 -0
  593. package/docs/policies/upstream-gcp-service-auth-inbound/intro.md +25 -0
  594. package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +95 -0
  595. package/docs/policies/upstream-zuplo-jwt-auth-inbound/doc.md +213 -0
  596. package/docs/policies/upstream-zuplo-jwt-auth-inbound/intro.md +16 -0
  597. package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +101 -0
  598. package/docs/policies/validate-json-schema-inbound/doc.md +129 -0
  599. package/docs/policies/validate-json-schema-inbound/intro.md +7 -0
  600. package/docs/policies/validate-json-schema-inbound/schema.json +56 -0
  601. package/docs/policies/web-bot-auth-inbound/doc.md +104 -0
  602. package/docs/policies/web-bot-auth-inbound/intro.md +16 -0
  603. package/docs/policies/web-bot-auth-inbound/schema.json +76 -0
  604. package/docs/policies/xml-to-json-outbound/doc.md +71 -0
  605. package/docs/policies/xml-to-json-outbound/intro.md +4 -0
  606. package/docs/policies/xml-to-json-outbound/schema.json +117 -0
  607. package/docs/programmable-api/audit-log.mdx +74 -0
  608. package/docs/programmable-api/background-dispatcher.mdx +124 -0
  609. package/docs/programmable-api/background-loader.mdx +104 -0
  610. package/docs/programmable-api/cache.mdx +186 -0
  611. package/docs/programmable-api/compatibility-dates.mdx +201 -0
  612. package/docs/programmable-api/console-logging.mdx +48 -0
  613. package/docs/programmable-api/context-data.mdx +127 -0
  614. package/docs/programmable-api/custom-cors-policy.mdx +64 -0
  615. package/docs/programmable-api/environment.mdx +328 -0
  616. package/docs/programmable-api/hooks.mdx +569 -0
  617. package/docs/programmable-api/http-problems.mdx +385 -0
  618. package/docs/programmable-api/jwt-service-plugin.mdx +420 -0
  619. package/docs/programmable-api/logger.mdx +223 -0
  620. package/docs/programmable-api/memory-zone-read-through-cache.mdx +96 -0
  621. package/docs/programmable-api/node-modules.mdx +67 -0
  622. package/docs/programmable-api/not-found-handler.mdx +47 -0
  623. package/docs/programmable-api/oauth-protected-resource-plugin.mdx +46 -0
  624. package/docs/programmable-api/overview.mdx +213 -0
  625. package/docs/programmable-api/problem-response-formatter.mdx +183 -0
  626. package/docs/programmable-api/request-user.mdx +289 -0
  627. package/docs/programmable-api/reusing-code.mdx +26 -0
  628. package/docs/programmable-api/route-raw.mdx +55 -0
  629. package/docs/programmable-api/runtime-behaviors.mdx +25 -0
  630. package/docs/programmable-api/runtime-errors.mdx +246 -0
  631. package/docs/programmable-api/runtime-extensions.mdx +340 -0
  632. package/docs/programmable-api/safely-clone-a-request-or-response.mdx +57 -0
  633. package/docs/programmable-api/streaming-zone-cache.mdx +155 -0
  634. package/docs/programmable-api/web-crypto-apis.mdx +219 -0
  635. package/docs/programmable-api/web-standard-apis.mdx +109 -0
  636. package/docs/programmable-api/zone-cache.mdx +131 -0
  637. package/docs/programmable-api/zp-body-removed.mdx +32 -0
  638. package/docs/programmable-api/zuplo-context.mdx +414 -0
  639. package/docs/programmable-api/zuplo-id-token.mdx +90 -0
  640. package/docs/programmable-api/zuplo-json.mdx +91 -0
  641. package/docs/programmable-api/zuplo-request.mdx +200 -0
  642. package/docs/sample-apis.mdx +78 -0
  643. package/docs/self-hosted/overview.md +60 -0
  644. package/package.json +6 -5
@@ -0,0 +1,275 @@
1
+ ---
2
+ sidebar_icon: paintbrush
3
+ title: Colors & Theme
4
+ description:
5
+ Customize your Dev Portal site's colors and theme with flexible options, including light/dark modes,
6
+ custom CSS, and shadcn registry integration.
7
+ ---
8
+
9
+ Dev Portal provides flexible theming options allowing you to customize colors, import themes from
10
+ [shadcn registries](https://ui.shadcn.com/docs/registry), and add custom CSS. You can create
11
+ cohesive light and dark mode experiences that match your brand.
12
+
13
+ :::tip
14
+
15
+ Try out the interactive [Theme Playground](https://zudoku.dev/docs/theme-playground) to experiment with colors and see
16
+ real-time previews of your theme changes.
17
+
18
+ :::
19
+
20
+ The theme system is built on [shadcn/ui theming](https://ui.shadcn.com/docs/theming) and
21
+ [Tailwind v4](https://tailwindcss.com), giving us a great foundation to build upon:
22
+
23
+ - **CSS variables** match `shadcn/ui` conventions
24
+ - **Tailwind v4** CSS variable system for modern styling
25
+ - **Theme editors** like [tweakcn](https://tweakcn.com/) work out of the box
26
+ - **Shadcn registries** are supported
27
+
28
+ ## Custom Colors
29
+
30
+ You can manually define colors for both light and dark modes, either by extending the
31
+ [default theme](#default-theme) or creating a completely custom theme. Colors can be specified as
32
+ hex values, RGB, HSL, OKLCH, etc. - basically anything that is supported by
33
+ [Tailwind CSS](https://tailwindcss.com):
34
+
35
+ ```ts title=zudoku.config.ts
36
+ const config = {
37
+ theme: {
38
+ light: {
39
+ background: "#ffffff",
40
+ foreground: "#020817",
41
+ card: "#ffffff",
42
+ cardForeground: "#020817",
43
+ popover: "#ffffff",
44
+ popoverForeground: "#020817",
45
+ primary: "#0284c7",
46
+ primaryForeground: "#ffffff",
47
+ secondary: "#f1f5f9",
48
+ secondaryForeground: "#020817",
49
+ muted: "#f1f5f9",
50
+ mutedForeground: "#64748b",
51
+ accent: "#f1f5f9",
52
+ accentForeground: "#020817",
53
+ destructive: "#ef4444",
54
+ destructiveForeground: "#ffffff",
55
+ border: "#e2e8f0",
56
+ input: "#e2e8f0",
57
+ ring: "#0284c7",
58
+ radius: "0.5rem",
59
+ },
60
+ dark: {
61
+ background: "#020817",
62
+ foreground: "#f8fafc",
63
+ card: "#020817",
64
+ cardForeground: "#f8fafc",
65
+ popover: "#020817",
66
+ popoverForeground: "#f8fafc",
67
+ primary: "#0ea5e9",
68
+ primaryForeground: "#f8fafc",
69
+ secondary: "#1e293b",
70
+ secondaryForeground: "#f8fafc",
71
+ muted: "#1e293b",
72
+ mutedForeground: "#94a3b8",
73
+ accent: "#1e293b",
74
+ accentForeground: "#f8fafc",
75
+ destructive: "#ef4444",
76
+ destructiveForeground: "#f8fafc",
77
+ border: "#1e293b",
78
+ input: "#1e293b",
79
+ ring: "#0ea5e9",
80
+ radius: "0.5rem",
81
+ },
82
+ },
83
+ };
84
+ ```
85
+
86
+ ## Available Theme Variables
87
+
88
+ | Variable | Description |
89
+ | ----------------------- | ------------------------------------- |
90
+ | `background` | Main background color |
91
+ | `foreground` | Main text color |
92
+ | `card` | Card background color |
93
+ | `cardForeground` | Card text color |
94
+ | `popover` | Popover background color |
95
+ | `popoverForeground` | Popover text color |
96
+ | `primary` | Primary action color |
97
+ | `primaryForeground` | Text color on primary backgrounds |
98
+ | `secondary` | Secondary action color |
99
+ | `secondaryForeground` | Text color on secondary backgrounds |
100
+ | `muted` | Muted/subtle background color |
101
+ | `mutedForeground` | Text color for muted elements |
102
+ | `accent` | Accent color for highlights |
103
+ | `accentForeground` | Text color on accent backgrounds |
104
+ | `destructive` | Color for destructive actions |
105
+ | `destructiveForeground` | Text color on destructive backgrounds |
106
+ | `border` | Border color |
107
+ | `input` | Input field border color |
108
+ | `ring` | Focus ring color |
109
+ | `radius` | Border radius value |
110
+
111
+ :::note
112
+
113
+ While shadcn/ui defines additional theme variables, Dev Portal currently uses only these core variables.
114
+
115
+ :::
116
+
117
+ ## shadcn Registry Integration
118
+
119
+ The easiest way to customize your theme is by using a Shadcn registry theme. For example you can use
120
+ the great [tweakcn](https://tweakcn.com/) visual theme editor.
121
+
122
+ ### Using tweakcn Themes
123
+
124
+ <Stepper>
125
+
126
+ 1. Visit [tweakcn.com](https://tweakcn.com/) to select a preset or customize your theme visually
127
+
128
+ <Framed align="start">![](./tweakcn0.webp)</Framed>
129
+ <Framed align="start">![](./tweakcn1.webp)</Framed>
130
+
131
+ 1. Copy the registry URL from the "Copy" section
132
+
133
+ <Framed align="start">![](./tweakcn2.webp)</Framed>
134
+
135
+ 1. Add it to your configuration:
136
+ ```ts title=zudoku.config.ts
137
+ const config = {
138
+ theme: {
139
+ registryUrl: "https://tweakcn.com/r/themes/northern-lights.json",
140
+ },
141
+ };
142
+ ```
143
+ 1. The theme will then be automatically imported with all color variables, fonts, and styling
144
+ configured for you 🚀
145
+
146
+ <Framed align="start">![](./tweakcn3.webp)</Framed>
147
+
148
+ </Stepper>
149
+
150
+ You can still override specific values if needed:
151
+
152
+ ```ts title=zudoku.config.ts
153
+ const config = {
154
+ theme: {
155
+ registryUrl: "https://tweakcn.com/api/registry/theme/xyz123",
156
+ // Override specific colors
157
+ light: {
158
+ primary: "#0066cc",
159
+ },
160
+ dark: {
161
+ primary: "#3399ff",
162
+ },
163
+ },
164
+ };
165
+ ```
166
+
167
+ Alternatively, you can copy the CSS code and paste it into your `customCss` configuration:
168
+
169
+ ```ts title=zudoku.config.ts
170
+ const config = {
171
+ theme: {
172
+ customCss: `
173
+ /* Copied CSS code */
174
+ `,
175
+ },
176
+ };
177
+ ```
178
+
179
+ ## Custom CSS
180
+
181
+ For advanced styling, you can add custom CSS either as a string or structured object:
182
+
183
+ :::note
184
+
185
+ Changes to `customCss` require restarting the development server to take effect.
186
+
187
+ :::
188
+
189
+ ### CSS String
190
+
191
+ ```ts title=zudoku.config.ts
192
+ const config = {
193
+ theme: {
194
+ customCss: `
195
+ .custom {
196
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
197
+ }
198
+ `,
199
+ },
200
+ };
201
+ ```
202
+
203
+ ### CSS Object
204
+
205
+ ```ts title=zudoku.config.ts
206
+ const config = {
207
+ theme: {
208
+ customCss: {
209
+ ".custom": {
210
+ background: "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
211
+ },
212
+ },
213
+ },
214
+ };
215
+ ```
216
+
217
+ ## Default Theme
218
+
219
+ Dev Portal comes with a built-in default theme based on
220
+ [shadcn/ui zinc base colors](https://ui.shadcn.com/docs/theming#zinc). If you want to start
221
+ completely from scratch without any default styling, you can disable the default theme:
222
+
223
+ ```ts title=zudoku.config.ts
224
+ const config = {
225
+ theme: {
226
+ noDefaultTheme: true,
227
+ // Your custom theme configuration
228
+ },
229
+ };
230
+ ```
231
+
232
+ When `noDefaultTheme` is set to `true`, no default colors or styling will be applied, giving you
233
+ complete control over your theme. Changing this requires to restart the development server.
234
+
235
+ ## Complete Example
236
+
237
+ Here's a comprehensive example combining multiple theming approaches:
238
+
239
+ ```ts title=zudoku.config.ts
240
+ const config = {
241
+ theme: {
242
+ // Import base theme from registry
243
+ registryUrl: "https://tweakcn.com/api/registry/theme/modern-blue",
244
+
245
+ // Override specific colors
246
+ light: {
247
+ primary: "#0066cc",
248
+ accent: "#f0f9ff",
249
+ },
250
+ dark: {
251
+ primary: "#3399ff",
252
+ accent: "#0c1b2e",
253
+ },
254
+
255
+ // Custom fonts
256
+ fonts: {
257
+ sans: "Inter",
258
+ mono: "JetBrains Mono",
259
+ },
260
+
261
+ // Additional custom styling
262
+ customCss: {
263
+ ".hero-section": {
264
+ background: "var(--primary)",
265
+ color: "var(--primary-foreground)",
266
+ padding: "2rem",
267
+ "border-radius": "var(--radius)",
268
+ },
269
+ },
270
+ },
271
+ };
272
+ ```
273
+
274
+ This configuration imports a base theme, customizes colors for both light and dark modes, sets
275
+ fonts, and adds custom component styling.
@@ -0,0 +1,110 @@
1
+ ---
2
+ sidebar_icon: baseline
3
+ title: Font & Typography
4
+ sidebar_label: Font & Typography
5
+ description:
6
+ Learn how to customize fonts and typography in Dev Portal using predefined Google Fonts, custom font
7
+ URLs, or local fonts for sans, serif, and monospace text.
8
+ ---
9
+
10
+ Dev Portal allows you to customize fonts for text (`sans`), serif content (`serif`), and code (`mono`).
11
+ You can use predefined Google Fonts, external sources, or local fonts.
12
+
13
+ ## Predefined Google Fonts
14
+
15
+ The easiest way to use fonts is with predefined Google Fonts. Simply specify the font name as a
16
+ string:
17
+
18
+ ```ts title=zudoku.config.ts
19
+ const config = {
20
+ theme: {
21
+ fonts: {
22
+ sans: "Inter",
23
+ serif: "Merriweather",
24
+ mono: "JetBrains Mono",
25
+ },
26
+ },
27
+ };
28
+ ```
29
+
30
+ ### Available Google Fonts
31
+
32
+ The following fonts are available as predefined options:
33
+
34
+ **Sans Serif:** Inter, Roboto, Open Sans, Poppins, Montserrat, Outfit, Plus Jakarta Sans, DM Sans,
35
+ IBM Plex Sans, Geist, Oxanium, Space Grotesk
36
+
37
+ **Serif:** Architects Daughter, Merriweather, Playfair Display, Lora, Source Serif Pro, Libre
38
+ Baskerville
39
+
40
+ **Monospace:** JetBrains Mono, Fira Code, Source Code Pro, IBM Plex Mono, Roboto Mono, Space Mono,
41
+ Geist Mono
42
+
43
+ ## Custom Font URLs
44
+
45
+ For more control or to use fonts not in the predefined list, you can specify a custom font URL:
46
+
47
+ ```ts title=zudoku.config.ts
48
+ const config = {
49
+ theme: {
50
+ fonts: {
51
+ sans: {
52
+ url: "https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap",
53
+ fontFamily: "Roboto, sans-serif",
54
+ },
55
+ mono: {
56
+ url: "https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;700&display=swap",
57
+ fontFamily: "Roboto Mono, monospace",
58
+ },
59
+ },
60
+ },
61
+ };
62
+ ```
63
+
64
+ ## Local Fonts
65
+
66
+ To use local fonts, add them to the `public` folder and create a `fonts.css` file:
67
+
68
+ ```css
69
+ @font-face {
70
+ font-family: "CustomFont";
71
+ font-style: normal;
72
+ font-weight: 400;
73
+ src: url("/custom-font-400.woff2") format("woff2");
74
+ }
75
+ ```
76
+
77
+ Then reference the local CSS file:
78
+
79
+ ```ts title=zudoku.config.ts
80
+ const config = {
81
+ theme: {
82
+ fonts: {
83
+ sans: {
84
+ url: "/fonts.css",
85
+ fontFamily: "CustomFont, sans-serif",
86
+ },
87
+ },
88
+ },
89
+ };
90
+ ```
91
+
92
+ ## Mixed Configuration
93
+
94
+ You can mix predefined fonts with custom fonts:
95
+
96
+ ```ts title=zudoku.config.ts
97
+ const config = {
98
+ theme: {
99
+ fonts: {
100
+ sans: "Inter", // Predefined Google Font
101
+ serif: {
102
+ // Custom font
103
+ url: "/custom-serif.css",
104
+ fontFamily: "CustomSerif, serif",
105
+ },
106
+ mono: "Fira Code", // Predefined Google Font
107
+ },
108
+ },
109
+ };
110
+ ```
@@ -0,0 +1,124 @@
1
+ ---
2
+ title: Events
3
+ sidebar_icon: shuffle
4
+ ---
5
+
6
+ Dev Portal provides an events system that allows plugins to react to various application events. This
7
+ system enables you to build dynamic features that respond to user interactions and application state
8
+ changes.
9
+
10
+ ## Available Events
11
+
12
+ Currently, Dev Portal supports the following events:
13
+
14
+ ### location
15
+
16
+ ```typescript
17
+ type LocationEvent = (e: { from?: Location; to: Location }) => void;
18
+ ```
19
+
20
+ Emitted when the user navigates to a different route. Provides both the previous (`from`) and
21
+ current (`to`)
22
+ [Location objects](https://api.reactrouter.com/v7/interfaces/react_router.Location.html) from
23
+ react-router.
24
+
25
+ Note that the `from` location will be undefined on the initial page load.
26
+
27
+ ## Consuming Events in Plugins
28
+
29
+ To consume events in your plugin, you can implement the events property in your plugin. This is
30
+ useful for performing actions like sending analytics events or anything else that's not directly
31
+ related to the UI.
32
+
33
+ ```typescript
34
+ import { ZudokuPlugin, ZudokuEvents } from "zudoku";
35
+
36
+ const navigationLoggerPlugin: ZudokuPlugin = {
37
+ events: {
38
+ location: ({ from, to }) => {
39
+ if (!from) {
40
+ console.log(`Initial navigation to: ${to.pathname}`);
41
+ } else {
42
+ console.log(`User navigated from: ${from.pathname} to: ${to.pathname}`);
43
+ }
44
+ },
45
+ },
46
+ };
47
+ ```
48
+
49
+ ### Example in Dev Portal Config
50
+
51
+ In your `zudoku.config.ts`, you can define the events like this:
52
+
53
+ ```typescript
54
+ export default {
55
+ plugins: [
56
+ {
57
+ events: {
58
+ location: ({ from, to }) => {
59
+ if (!from) return;
60
+
61
+ // E.g. send an analytics event
62
+ sendAnalyticsEvent({
63
+ from: from.pathname,
64
+ to: to.pathname,
65
+ });
66
+ },
67
+ },
68
+ },
69
+ ],
70
+ };
71
+ ```
72
+
73
+ ## Using Events in Components
74
+
75
+ Dev Portal provides a convenient `useEvent` hook to subscribe to events in your React components. The
76
+ hook can be used in three different ways:
77
+
78
+ ### 1. Getting the Latest Event Data
79
+
80
+ If you just want to access the latest event data without a callback:
81
+
82
+ ```typescript
83
+ import { useEvent } from "zudoku/hooks";
84
+
85
+ function MyComponent() {
86
+ const locationEvent = useEvent("location");
87
+ return <div>Current path: {locationEvent?.to.pathname}</div>;
88
+ }
89
+ ```
90
+
91
+ ### 2. Using Event Data in a Component
92
+
93
+ If you want to transform the event data, return a value from the callback:
94
+
95
+ ```typescript
96
+ import { useEvent } from "zudoku/hooks";
97
+
98
+ function MyComponent() {
99
+ const pathname = useEvent("location", ({ to }) => to.pathname);
100
+ return <div>Current path: {pathname}</div>;
101
+ }
102
+ ```
103
+
104
+ ### 3. Using a Callback for Side Effects
105
+
106
+ If you just want to perform side effects when the event occurs:
107
+
108
+ ```typescript
109
+ import { useEvent } from "zudoku/hooks";
110
+
111
+ function MyComponent() {
112
+ useEvent("location", ({ from, to }) => {
113
+ if (from) {
114
+ console.log(`Navigation: ${from.pathname} → ${to.pathname}`);
115
+ }
116
+ // No return value needed for side effects
117
+ });
118
+
119
+ return <div>My Component</div>;
120
+ }
121
+ ```
122
+
123
+ The `useEvent` hook automatically handles subscription and cleanup in the React lifecycle, making it
124
+ easy to work with events in your components.
@@ -0,0 +1,106 @@
1
+ ---
2
+ title: Custom pages
3
+ sidebar_icon: layers-3
4
+ ---
5
+
6
+ If you want to include pages in your documentation that have greater flexibility than MDX pages, it
7
+ is possible to include custom pages of your own.
8
+
9
+ These pages are typically built using standard React markup and can borrow from a set of prebuilt
10
+ components that Dev Portal already has such as buttons, links and headers.
11
+
12
+ Start by creating the page you want to add.
13
+
14
+ ## Setup a custom page
15
+
16
+ Each custom page is a page component of its own and lives in a `src` directory at the root of your
17
+ project. Let's create the `<MyCustomPage />` component as an example.
18
+
19
+ From the root of your project run this command:
20
+
21
+ ```bash
22
+ touch src/MyCustomPage.tsx
23
+ ```
24
+
25
+ You can now open `/src/MyCustomPage.tsx` in the editor of your choice. It will be empty.
26
+
27
+ Copy and paste this code to implement the page:
28
+
29
+ ```tsx
30
+ import { Button, Head, Link } from "zudoku/components";
31
+
32
+ export const MyCustomPage = () => {
33
+ return (
34
+ <section className="">
35
+ <Head>
36
+ <title>My Custom Page</title>
37
+ </Head>
38
+ <div>
39
+ <p>Welcome to MyCustomPage</p>
40
+ </div>
41
+ </section>
42
+ );
43
+ };
44
+ ```
45
+
46
+ ## Configuration
47
+
48
+ In the [Dev Portal Configuration](../configuration/overview.md) you will need to do the following:
49
+
50
+ ### Change Your Config Extension
51
+
52
+ In order to embed `jsx`/`tsx` components into your Dev Portal config, you will need to change your file
53
+ extension from `ts` to `tsx` (or `js` to `jsx` if not using TypeScript).
54
+
55
+ ```
56
+ zudoku.config.ts -> zudoku.config.tsx
57
+ ```
58
+
59
+ ### Import Your Module
60
+
61
+ Import the `<MyCustomPage />` component that you created.
62
+
63
+ ```typescript
64
+ import { MyCustomPage } from "./src/MyCustomPage";
65
+ ```
66
+
67
+ ### Add a navigation entry
68
+
69
+ Add a `custom-page` item to the `navigation` configuration. Each page you want to add to the site
70
+ must be its own object.
71
+
72
+ The `path` key can be set to whatever you like. This will appear as part of the URL in the address
73
+ bar of the browser.
74
+
75
+ The `element` key references the name of the custom page component that you want to load.
76
+
77
+ ```typescript
78
+ {
79
+ // ...
80
+ navigation: [
81
+ {
82
+ type: "custom-page",
83
+ path: "/a-custom-page",
84
+ element: <MyCustomPage />,
85
+ },
86
+ ]
87
+ // ...
88
+ }
89
+ ```
90
+
91
+ This configuration will allow Dev Portal to load the contents of the `<MyCustomPage />` component when a
92
+ user clicks on a link that points to `/a-custom-page`.
93
+
94
+ ## Troubleshooting
95
+
96
+ ### Updating Your `tsconfig.json`
97
+
98
+ Your `include` property in `tsconfig.json` should automatically be updated to reflect the new custom
99
+ pages, but in case it isn't, it should look like this:
100
+
101
+ ```json
102
+ {
103
+ ...
104
+ "include": ["src", "zudoku.config.tsx", "src/MyCustomPage.tsx"]
105
+ }
106
+ ```
@@ -0,0 +1,99 @@
1
+ ---
2
+ title: Environment Variables
3
+ sidebar_icon: table
4
+ ---
5
+
6
+ Dev Portal is built on top of Vite and uses [their approach](https://vite.dev/guide/env-and-mode) for
7
+ managing environment variables.
8
+
9
+ Dev Portal exposes environment variables under the `import.meta.env` object as strings automatically.
10
+
11
+ To prevent accidentally leaking environment variables to the client, only variables prefixed with
12
+ `ZUDOKU_PUBLIC_` are exposed to your Zudoku-processed code.
13
+
14
+ :::warning{title="Security Notice"}
15
+
16
+ Environment variables prefixed with `ZUDOKU_PUBLIC_` will be exposed to the client-side code and
17
+ visible in the browser. Never use this prefix for sensitive information like API keys, passwords, or
18
+ other secrets.
19
+
20
+ :::
21
+
22
+ ## Local Env Files
23
+
24
+ When developing locally, you can create a `.env` file in the root of your project and add
25
+ environment-specific variables. See the
26
+ [Vite documentation](https://vite.dev/guide/env-and-mode.html#env-files) for more information on
27
+ supported files.
28
+
29
+ Here is an example of a `.env.local` file:
30
+
31
+ ```sh
32
+ ZUDOKU_PUBLIC_PAGE_TITLE=My Page Title
33
+ ```
34
+
35
+ You can access this variable in your application like this:
36
+
37
+ ```ts
38
+ const title = import.meta.env.ZUDOKU_PUBLIC_PAGE_TITLE;
39
+ ```
40
+
41
+ ## Configuration Files
42
+
43
+ Environment variables can also be used in your configuration files. When referencing environment
44
+ variables in your configuration files, you can use `process.env` directly.
45
+
46
+ ```ts
47
+ import type { ZudokuConfig } from "zudoku";
48
+
49
+ const config: ZudokuConfig = {
50
+ authentication: {
51
+ type: "auth0",
52
+ clientId: process.env.ZUDOKU_PUBLIC_AUTH_CLIENT_ID,
53
+ domain: process.env.ZUDOKU_PUBLIC_AUTH_DOMAIN,
54
+ },
55
+ };
56
+ ```
57
+
58
+ ## React Components
59
+
60
+ If you need to access environment variables inside a custom react component, you can access them via
61
+ `import.meta.env`. Public environment variables are inlined during the build process.
62
+
63
+ ```tsx
64
+ import React from "react";
65
+
66
+ export const MyComponent = () => {
67
+ return <h1>{import.meta.env.ZUDOKU_PUBLIC_PAGE_TITLE}</h1>;
68
+ };
69
+ ```
70
+
71
+ ## IntelliSense for TypeScript
72
+
73
+ By default, Dev Portal provides type definitions for `import.meta.env` in `zudoku/client.d.ts`. While
74
+ you can define more custom env variables in `.env.[mode]` files, you may want to get TypeScript
75
+ IntelliSense for user-defined env variables that are prefixed with `ZUDOKU_PUBLIC_`.
76
+
77
+ To achieve this, you can create a `zudoku-env.d.ts` in the src directory, then augment
78
+ `ImportMetaEnv` like this:
79
+
80
+ ```typescript
81
+ /// <reference types="zudoku/client" />
82
+
83
+ interface ImportMetaEnv {
84
+ readonly ZUDOKU_PUBLIC_APP_TITLE: string;
85
+ // more env variables...
86
+ }
87
+
88
+ interface ImportMeta {
89
+ readonly env: ImportMetaEnv;
90
+ }
91
+ ```
92
+
93
+ :::warning{title="Imports will break type augmentation"}
94
+
95
+ If the `ImportMetaEnv` augmentation does not work, make sure you do not have any import statements
96
+ in `vite-env.d.ts`. A helpful explanation can be found on
97
+ [this StackOverflow reply](https://stackoverflow.com/a/51114250).
98
+
99
+ :::