zudoku 0.0.0-fix-create-zudoku-run-build.fefccf58 → 0.0.0-reset-hash-value.ac516c6d

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 (613) hide show
  1. package/README.md +32 -12
  2. package/dist/cli/cli.d.ts +9 -0
  3. package/dist/cli/cli.js +4 -10
  4. package/dist/cli/cli.js.map +1 -1
  5. package/dist/cli/common/version-check.d.ts +2 -0
  6. package/dist/cli/common/version-check.js +58 -0
  7. package/dist/cli/common/version-check.js.map +1 -0
  8. package/dist/config/config.d.ts +3 -0
  9. package/dist/config/validators/BuildSchema.d.ts +10 -3
  10. package/dist/config/validators/BuildSchema.js +14 -0
  11. package/dist/config/validators/BuildSchema.js.map +1 -1
  12. package/dist/config/validators/InputNavigationSchema.d.ts +192 -32
  13. package/dist/config/validators/InputNavigationSchema.js +1 -0
  14. package/dist/config/validators/InputNavigationSchema.js.map +1 -1
  15. package/dist/config/validators/icon-types.d.ts +1 -1
  16. package/dist/config/validators/icon-types.js +39 -0
  17. package/dist/config/validators/icon-types.js.map +1 -1
  18. package/dist/config/validators/validate.d.ts +39 -9
  19. package/dist/config/validators/validate.js +23 -0
  20. package/dist/config/validators/validate.js.map +1 -1
  21. package/dist/flat-config.d.ts +352 -0
  22. package/dist/lib/assets/language-icons/c.d.ts +3 -0
  23. package/dist/lib/assets/language-icons/c.js +4 -0
  24. package/dist/lib/assets/language-icons/c.js.map +1 -0
  25. package/dist/lib/assets/language-icons/commonlisp.d.ts +3 -0
  26. package/dist/lib/assets/language-icons/commonlisp.js +4 -0
  27. package/dist/lib/assets/language-icons/commonlisp.js.map +1 -0
  28. package/dist/lib/assets/language-icons/cpp.d.ts +3 -0
  29. package/dist/lib/assets/language-icons/cpp.js +4 -0
  30. package/dist/lib/assets/language-icons/cpp.js.map +1 -0
  31. package/dist/lib/assets/language-icons/csharp.d.ts +3 -0
  32. package/dist/lib/assets/language-icons/csharp.js +4 -0
  33. package/dist/lib/assets/language-icons/csharp.js.map +1 -0
  34. package/dist/lib/assets/language-icons/css.d.ts +3 -0
  35. package/dist/lib/assets/language-icons/css.js +4 -0
  36. package/dist/lib/assets/language-icons/css.js.map +1 -0
  37. package/dist/lib/assets/language-icons/dart.d.ts +3 -0
  38. package/dist/lib/assets/language-icons/dart.js +4 -0
  39. package/dist/lib/assets/language-icons/dart.js.map +1 -0
  40. package/dist/lib/assets/language-icons/elixir.d.ts +3 -0
  41. package/dist/lib/assets/language-icons/elixir.js +4 -0
  42. package/dist/lib/assets/language-icons/elixir.js.map +1 -0
  43. package/dist/lib/assets/language-icons/go.d.ts +3 -0
  44. package/dist/lib/assets/language-icons/go.js +4 -0
  45. package/dist/lib/assets/language-icons/go.js.map +1 -0
  46. package/dist/lib/assets/language-icons/graphql.d.ts +3 -0
  47. package/dist/lib/assets/language-icons/graphql.js +4 -0
  48. package/dist/lib/assets/language-icons/graphql.js.map +1 -0
  49. package/dist/lib/assets/language-icons/html.d.ts +3 -0
  50. package/dist/lib/assets/language-icons/html.js +4 -0
  51. package/dist/lib/assets/language-icons/html.js.map +1 -0
  52. package/dist/lib/assets/language-icons/java.d.ts +3 -0
  53. package/dist/lib/assets/language-icons/java.js +4 -0
  54. package/dist/lib/assets/language-icons/java.js.map +1 -0
  55. package/dist/lib/assets/language-icons/javascript.d.ts +3 -0
  56. package/dist/lib/assets/language-icons/javascript.js +4 -0
  57. package/dist/lib/assets/language-icons/javascript.js.map +1 -0
  58. package/dist/lib/assets/language-icons/json.d.ts +3 -0
  59. package/dist/lib/assets/language-icons/json.js +4 -0
  60. package/dist/lib/assets/language-icons/json.js.map +1 -0
  61. package/dist/lib/assets/language-icons/kotlin.d.ts +3 -0
  62. package/dist/lib/assets/language-icons/kotlin.js +4 -0
  63. package/dist/lib/assets/language-icons/kotlin.js.map +1 -0
  64. package/dist/lib/assets/language-icons/markdown.d.ts +3 -0
  65. package/dist/lib/assets/language-icons/markdown.js +4 -0
  66. package/dist/lib/assets/language-icons/markdown.js.map +1 -0
  67. package/dist/lib/assets/language-icons/mdx.d.ts +3 -0
  68. package/dist/lib/assets/language-icons/mdx.js +4 -0
  69. package/dist/lib/assets/language-icons/mdx.js.map +1 -0
  70. package/dist/lib/assets/language-icons/objectivec.d.ts +3 -0
  71. package/dist/lib/assets/language-icons/objectivec.js +4 -0
  72. package/dist/lib/assets/language-icons/objectivec.js.map +1 -0
  73. package/dist/lib/assets/language-icons/ocaml.d.ts +3 -0
  74. package/dist/lib/assets/language-icons/ocaml.js +4 -0
  75. package/dist/lib/assets/language-icons/ocaml.js.map +1 -0
  76. package/dist/lib/assets/language-icons/php.d.ts +3 -0
  77. package/dist/lib/assets/language-icons/php.js +4 -0
  78. package/dist/lib/assets/language-icons/php.js.map +1 -0
  79. package/dist/lib/assets/language-icons/powershell.d.ts +3 -0
  80. package/dist/lib/assets/language-icons/powershell.js +4 -0
  81. package/dist/lib/assets/language-icons/powershell.js.map +1 -0
  82. package/dist/lib/assets/language-icons/python.d.ts +3 -0
  83. package/dist/lib/assets/language-icons/python.js +4 -0
  84. package/dist/lib/assets/language-icons/python.js.map +1 -0
  85. package/dist/lib/assets/language-icons/react.d.ts +3 -0
  86. package/dist/lib/assets/language-icons/react.js +4 -0
  87. package/dist/lib/assets/language-icons/react.js.map +1 -0
  88. package/dist/lib/assets/language-icons/ruby.d.ts +3 -0
  89. package/dist/lib/assets/language-icons/ruby.js +4 -0
  90. package/dist/lib/assets/language-icons/ruby.js.map +1 -0
  91. package/dist/lib/assets/language-icons/rust.d.ts +3 -0
  92. package/dist/lib/assets/language-icons/rust.js +4 -0
  93. package/dist/lib/assets/language-icons/rust.js.map +1 -0
  94. package/dist/lib/assets/language-icons/scala.d.ts +3 -0
  95. package/dist/lib/assets/language-icons/scala.js +4 -0
  96. package/dist/lib/assets/language-icons/scala.js.map +1 -0
  97. package/dist/lib/assets/language-icons/shell.d.ts +3 -0
  98. package/dist/lib/assets/language-icons/shell.js +4 -0
  99. package/dist/lib/assets/language-icons/shell.js.map +1 -0
  100. package/dist/lib/assets/language-icons/swift.d.ts +3 -0
  101. package/dist/lib/assets/language-icons/swift.js +4 -0
  102. package/dist/lib/assets/language-icons/swift.js.map +1 -0
  103. package/dist/lib/assets/language-icons/toml.d.ts +3 -0
  104. package/dist/lib/assets/language-icons/toml.js +4 -0
  105. package/dist/lib/assets/language-icons/toml.js.map +1 -0
  106. package/dist/lib/assets/language-icons/typescript.d.ts +3 -0
  107. package/dist/lib/assets/language-icons/typescript.js +4 -0
  108. package/dist/lib/assets/language-icons/typescript.js.map +1 -0
  109. package/dist/lib/assets/language-icons/xml.d.ts +3 -0
  110. package/dist/lib/assets/language-icons/xml.js +4 -0
  111. package/dist/lib/assets/language-icons/xml.js.map +1 -0
  112. package/dist/lib/assets/language-icons/yaml.d.ts +3 -0
  113. package/dist/lib/assets/language-icons/yaml.js +4 -0
  114. package/dist/lib/assets/language-icons/yaml.js.map +1 -0
  115. package/dist/lib/assets/language-icons/zig.d.ts +3 -0
  116. package/dist/lib/assets/language-icons/zig.js +4 -0
  117. package/dist/lib/assets/language-icons/zig.js.map +1 -0
  118. package/dist/lib/authentication/providers/auth0.js +7 -3
  119. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  120. package/dist/lib/authentication/providers/openid.js +2 -0
  121. package/dist/lib/authentication/providers/openid.js.map +1 -1
  122. package/dist/lib/authentication/state.d.ts +5 -3
  123. package/dist/lib/components/BuildCheck.js +2 -2
  124. package/dist/lib/components/BuildCheck.js.map +1 -1
  125. package/dist/lib/components/Heading.js +1 -5
  126. package/dist/lib/components/Heading.js.map +1 -1
  127. package/dist/lib/components/LanguageIcon.d.ts +3 -0
  128. package/dist/lib/components/LanguageIcon.js +163 -0
  129. package/dist/lib/components/LanguageIcon.js.map +1 -0
  130. package/dist/lib/components/Main.js +1 -1
  131. package/dist/lib/components/Main.js.map +1 -1
  132. package/dist/lib/components/Meta.js +1 -1
  133. package/dist/lib/components/Meta.js.map +1 -1
  134. package/dist/lib/components/cache.d.ts +3 -1
  135. package/dist/lib/components/cache.js +3 -5
  136. package/dist/lib/components/cache.js.map +1 -1
  137. package/dist/lib/components/context/ZudokuContext.js +10 -2
  138. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  139. package/dist/lib/components/index.d.ts +12 -2
  140. package/dist/lib/components/index.js +2 -0
  141. package/dist/lib/components/index.js.map +1 -1
  142. package/dist/lib/components/navigation/NavigationItem.js +1 -1
  143. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  144. package/dist/lib/hooks/index.d.ts +1 -1
  145. package/dist/lib/oas/graphql/index.js +37 -2
  146. package/dist/lib/oas/graphql/index.js.map +1 -1
  147. package/dist/lib/plugins/api-catalog/Catalog.js +7 -1
  148. package/dist/lib/plugins/api-catalog/Catalog.js.map +1 -1
  149. package/dist/lib/plugins/api-keys/CreateApiKeyDialog.d.ts +11 -0
  150. package/dist/lib/plugins/api-keys/CreateApiKeyDialog.js +9 -0
  151. package/dist/lib/plugins/api-keys/CreateApiKeyDialog.js.map +1 -0
  152. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +5 -10
  153. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  154. package/dist/lib/plugins/markdown/MdxPage.js +27 -4
  155. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  156. package/dist/lib/plugins/markdown/assets/ChatGPTLogo.d.ts +2 -0
  157. package/dist/lib/plugins/markdown/assets/ChatGPTLogo.js +3 -0
  158. package/dist/lib/plugins/markdown/assets/ChatGPTLogo.js.map +1 -0
  159. package/dist/lib/plugins/markdown/assets/ClaudeLogo.d.ts +2 -0
  160. package/dist/lib/plugins/markdown/assets/ClaudeLogo.js +3 -0
  161. package/dist/lib/plugins/markdown/assets/ClaudeLogo.js.map +1 -0
  162. package/dist/lib/plugins/markdown/index.d.ts +2 -1
  163. package/dist/lib/plugins/markdown/index.js.map +1 -1
  164. package/dist/lib/plugins/openapi/MCPEndpoint.d.ts +5 -0
  165. package/dist/lib/plugins/openapi/MCPEndpoint.js +56 -0
  166. package/dist/lib/plugins/openapi/MCPEndpoint.js.map +1 -0
  167. package/dist/lib/plugins/openapi/OperationList.d.ts +0 -2
  168. package/dist/lib/plugins/openapi/OperationList.js +22 -6
  169. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  170. package/dist/lib/plugins/openapi/OperationListItem.d.ts +2 -2
  171. package/dist/lib/plugins/openapi/OperationListItem.js +8 -3
  172. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  173. package/dist/lib/plugins/openapi/ParameterList.d.ts +2 -2
  174. package/dist/lib/plugins/openapi/ParameterList.js +1 -1
  175. package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
  176. package/dist/lib/plugins/openapi/ParameterListItem.d.ts +2 -3
  177. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  178. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.d.ts +3 -4
  179. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js +1 -3
  180. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js.map +1 -1
  181. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +2 -2
  182. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  183. package/dist/lib/plugins/openapi/Sidecar.d.ts +4 -3
  184. package/dist/lib/plugins/openapi/Sidecar.js +6 -9
  185. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  186. package/dist/lib/plugins/openapi/SidecarExamples.d.ts +2 -4
  187. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  188. package/dist/lib/plugins/openapi/graphql/fragment-masking.d.ts +1 -1
  189. package/dist/lib/plugins/openapi/graphql/fragment-masking.js.map +1 -1
  190. package/dist/lib/plugins/openapi/graphql/gql.d.ts +2 -2
  191. package/dist/lib/plugins/openapi/graphql/gql.js +3 -2
  192. package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
  193. package/dist/lib/plugins/openapi/graphql/graphql.d.ts +11 -2
  194. package/dist/lib/plugins/openapi/graphql/graphql.js +11 -0
  195. package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
  196. package/dist/lib/plugins/openapi/index.js +1 -1
  197. package/dist/lib/plugins/openapi/index.js.map +1 -1
  198. package/dist/lib/plugins/openapi/interfaces.d.ts +3 -2
  199. package/dist/lib/plugins/openapi/playground/BodyPanel.d.ts +2 -2
  200. package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
  201. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.d.ts +3 -3
  202. package/dist/lib/plugins/openapi/playground/Playground.d.ts +2 -2
  203. package/dist/lib/plugins/openapi/playground/Playground.js +1 -1
  204. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  205. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -1
  206. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  207. package/dist/lib/plugins/openapi/playground/rememberedIdentity.d.ts +5 -3
  208. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +15 -3
  209. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  210. package/dist/lib/plugins/openapi/playground/useRememberSkipLoginDialog.d.ts +5 -3
  211. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.d.ts +2 -1
  212. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js +2 -2
  213. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js.map +1 -1
  214. package/dist/lib/plugins/openapi/schema/SchemaView.js +5 -5
  215. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  216. package/dist/lib/plugins/openapi/schema/UnionView.d.ts +2 -1
  217. package/dist/lib/plugins/openapi/schema/UnionView.js +13 -7
  218. package/dist/lib/plugins/openapi/schema/UnionView.js.map +1 -1
  219. package/dist/lib/plugins/openapi/schema/union-helpers.js +25 -1
  220. package/dist/lib/plugins/openapi/schema/union-helpers.js.map +1 -1
  221. package/dist/lib/plugins/openapi/state.d.ts +5 -3
  222. package/dist/lib/shiki.js +13 -0
  223. package/dist/lib/shiki.js.map +1 -1
  224. package/dist/lib/ui/Carousel.js.map +1 -1
  225. package/dist/lib/ui/CodeBlock.d.ts +1 -1
  226. package/dist/lib/ui/CodeBlock.js +3 -28
  227. package/dist/lib/ui/CodeBlock.js.map +1 -1
  228. package/dist/lib/ui/EmbeddedCodeBlock.js +1 -1
  229. package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  230. package/dist/lib/ui/ReactComponentDoc.d.ts +20 -0
  231. package/dist/lib/ui/ReactComponentDoc.js +10 -0
  232. package/dist/lib/ui/ReactComponentDoc.js.map +1 -0
  233. package/dist/lib/ui/Secret.d.ts +18 -0
  234. package/dist/lib/ui/Secret.js +26 -0
  235. package/dist/lib/ui/Secret.js.map +1 -0
  236. package/dist/lib/ui/Value.d.ts +5 -0
  237. package/dist/lib/ui/Value.js +13 -0
  238. package/dist/lib/ui/Value.js.map +1 -0
  239. package/dist/lib/util/MdxComponents.js +1 -1
  240. package/dist/lib/util/MdxComponents.js.map +1 -1
  241. package/dist/lib/util/pastellize.js +4 -4
  242. package/dist/lib/util/pastellize.js.map +1 -1
  243. package/dist/lib/util/traverse.d.ts +1 -0
  244. package/dist/lib/util/traverse.js +25 -0
  245. package/dist/lib/util/traverse.js.map +1 -1
  246. package/dist/vite/api/SchemaManager.js +10 -6
  247. package/dist/vite/api/SchemaManager.js.map +1 -1
  248. package/dist/vite/api/schema-codegen.js +60 -41
  249. package/dist/vite/api/schema-codegen.js.map +1 -1
  250. package/dist/vite/api/schema-codegen.test.js +75 -2
  251. package/dist/vite/api/schema-codegen.test.js.map +1 -1
  252. package/dist/vite/llms.d.ts +12 -0
  253. package/dist/vite/llms.js +66 -0
  254. package/dist/vite/llms.js.map +1 -0
  255. package/dist/vite/plugin-api.js +4 -12
  256. package/dist/vite/plugin-api.js.map +1 -1
  257. package/dist/vite/plugin-docs.d.ts +9 -0
  258. package/dist/vite/plugin-docs.js +67 -44
  259. package/dist/vite/plugin-docs.js.map +1 -1
  260. package/dist/vite/plugin-markdown-export.d.ts +21 -0
  261. package/dist/vite/plugin-markdown-export.js +139 -0
  262. package/dist/vite/plugin-markdown-export.js.map +1 -0
  263. package/dist/vite/plugin-mdx.d.ts +1 -1
  264. package/dist/vite/plugin-mdx.js +7 -4
  265. package/dist/vite/plugin-mdx.js.map +1 -1
  266. package/dist/vite/plugin-navigation.js +4 -0
  267. package/dist/vite/plugin-navigation.js.map +1 -1
  268. package/dist/vite/plugin.js +2 -0
  269. package/dist/vite/plugin.js.map +1 -1
  270. package/dist/vite/prerender/prerender.js +37 -4
  271. package/dist/vite/prerender/prerender.js.map +1 -1
  272. package/dist/zuplo/enrich-with-zuplo-mcp.d.ts +4 -0
  273. package/dist/zuplo/enrich-with-zuplo-mcp.js +117 -0
  274. package/dist/zuplo/enrich-with-zuplo-mcp.js.map +1 -0
  275. package/dist/zuplo/enrich-with-zuplo.d.ts +1 -0
  276. package/dist/zuplo/enrich-with-zuplo.js +1 -1
  277. package/dist/zuplo/enrich-with-zuplo.js.map +1 -1
  278. package/dist/zuplo/with-zuplo-processors.js +2 -0
  279. package/dist/zuplo/with-zuplo-processors.js.map +1 -1
  280. package/lib/{Button-B3o-2Xdf.js → Button-DmS4u8Lj.js} +2 -2
  281. package/lib/{Button-B3o-2Xdf.js.map → Button-DmS4u8Lj.js.map} +1 -1
  282. package/lib/{Card-CMDQUPM4.js → Card-KFniaZn5.js} +2 -2
  283. package/lib/{Card-CMDQUPM4.js.map → Card-KFniaZn5.js.map} +1 -1
  284. package/lib/{CategoryHeading-DCpZu3yG.js → CategoryHeading-DhmodDcq.js} +2 -2
  285. package/lib/{CategoryHeading-DCpZu3yG.js.map → CategoryHeading-DhmodDcq.js.map} +1 -1
  286. package/lib/CodeBlock-CanTUJLl.js +221 -0
  287. package/lib/CodeBlock-CanTUJLl.js.map +1 -0
  288. package/lib/{Command-CUSlH0gJ.js → Command-CJY6q3PF.js} +3 -3
  289. package/lib/{Command-CUSlH0gJ.js.map → Command-CJY6q3PF.js.map} +1 -1
  290. package/lib/{Dialog-BmgXWOaz.js → Dialog-BOl0QB3n.js} +2 -2
  291. package/lib/{Dialog-BmgXWOaz.js.map → Dialog-BOl0QB3n.js.map} +1 -1
  292. package/lib/{Drawer-DJ05s2pH.js → Drawer-Ci7XwhqT.js} +2 -2
  293. package/lib/{Drawer-DJ05s2pH.js.map → Drawer-Ci7XwhqT.js.map} +1 -1
  294. package/lib/DropdownMenu-BZ2NKQ3K.js +126 -0
  295. package/lib/DropdownMenu-BZ2NKQ3K.js.map +1 -0
  296. package/lib/{Slot-BbdqiRXo.js → ErrorAlert-VBJ8aHH7.js} +1865 -1879
  297. package/lib/ErrorAlert-VBJ8aHH7.js.map +1 -0
  298. package/lib/MdxPage-DFRNwSsc.js +239 -0
  299. package/lib/MdxPage-DFRNwSsc.js.map +1 -0
  300. package/lib/{OAuthErrorPage-rAKHHveX.js → OAuthErrorPage-DJUOdr6Q.js} +8 -8
  301. package/lib/{OAuthErrorPage-rAKHHveX.js.map → OAuthErrorPage-DJUOdr6Q.js.map} +1 -1
  302. package/lib/{OasProvider-BW4OzAuR.js → OasProvider-BMUgPYQU.js} +4 -4
  303. package/lib/{OasProvider-BW4OzAuR.js.map → OasProvider-BMUgPYQU.js.map} +1 -1
  304. package/lib/OperationList-DVig5I94.js +5446 -0
  305. package/lib/OperationList-DVig5I94.js.map +1 -0
  306. package/lib/{Pagination-ZI2yyuxj.js → Pagination-CT4VUR6u.js} +4 -4
  307. package/lib/{Pagination-ZI2yyuxj.js.map → Pagination-CT4VUR6u.js.map} +1 -1
  308. package/lib/{RouteGuard-BIksrt_C.js → RouteGuard-BPWQlxy5.js} +9 -9
  309. package/lib/{RouteGuard-BIksrt_C.js.map → RouteGuard-BPWQlxy5.js.map} +1 -1
  310. package/lib/{RouterError-BYHrbLtD.js → RouterError-fm21cqlj.js} +5 -5
  311. package/lib/{RouterError-BYHrbLtD.js.map → RouterError-fm21cqlj.js.map} +1 -1
  312. package/lib/{SchemaList-C4Sk-tLI.js → SchemaList-1eLKXqn8.js} +10 -10
  313. package/lib/{SchemaList-C4Sk-tLI.js.map → SchemaList-1eLKXqn8.js.map} +1 -1
  314. package/lib/SchemaView-fq3uKfOA.js +458 -0
  315. package/lib/SchemaView-fq3uKfOA.js.map +1 -0
  316. package/lib/Select-CPoGZU_V.js +372 -0
  317. package/lib/Select-CPoGZU_V.js.map +1 -0
  318. package/lib/{SignUp-CznaQsRx.js → SignUp-BraHuRN_.js} +12 -12
  319. package/lib/{SignUp-CznaQsRx.js.map → SignUp-BraHuRN_.js.map} +1 -1
  320. package/lib/{Spinner-mNLZ6awP.js → Spinner-CI6bRyZw.js} +2 -2
  321. package/lib/{Spinner-mNLZ6awP.js.map → Spinner-CI6bRyZw.js.map} +1 -1
  322. package/lib/{SyntaxHighlight-CvzJ7DNa.js → SyntaxHighlight-B0laqAqK.js} +293 -273
  323. package/lib/SyntaxHighlight-B0laqAqK.js.map +1 -0
  324. package/lib/{Toc-BAa-kpqN.js → Toc-KzXCRqrX.js} +3 -3
  325. package/lib/{Toc-BAa-kpqN.js.map → Toc-KzXCRqrX.js.map} +1 -1
  326. package/lib/ZudokuContext-BXTZApgy.js +1506 -0
  327. package/lib/ZudokuContext-BXTZApgy.js.map +1 -0
  328. package/lib/c-B-NUhs61.js +46 -0
  329. package/lib/c-B-NUhs61.js.map +1 -0
  330. package/lib/chunk-PVWAREVJ-BO6B-RAk.js +7965 -0
  331. package/lib/chunk-PVWAREVJ-BO6B-RAk.js.map +1 -0
  332. package/lib/{circular-BFte5TUt.js → circular-D6wbrxuf.js} +30 -30
  333. package/lib/{circular-BFte5TUt.js.map → circular-D6wbrxuf.js.map} +1 -1
  334. package/lib/commonlisp-De080z23.js +28 -0
  335. package/lib/commonlisp-De080z23.js.map +1 -0
  336. package/lib/cpp-79Paht7T.js +53 -0
  337. package/lib/cpp-79Paht7T.js.map +1 -0
  338. package/lib/{createServer-B4giw6jv.js → createServer-C5aY10Bc.js} +3411 -3342
  339. package/lib/createServer-C5aY10Bc.js.map +1 -0
  340. package/lib/csharp-D8MIL50B.js +53 -0
  341. package/lib/csharp-D8MIL50B.js.map +1 -0
  342. package/lib/css-Bt6hr1td.js +54 -0
  343. package/lib/css-Bt6hr1td.js.map +1 -0
  344. package/lib/dart-B0vy1jWB.js +60 -0
  345. package/lib/dart-B0vy1jWB.js.map +1 -0
  346. package/lib/elixir-Ds8r0sF8.js +25 -0
  347. package/lib/elixir-Ds8r0sF8.js.map +1 -0
  348. package/lib/{errors-CjmCml50.js → errors-XqO6MsfU.js} +3 -3
  349. package/lib/{errors-CjmCml50.js.map → errors-XqO6MsfU.js.map} +1 -1
  350. package/lib/go-D2VsmIOS.js +25 -0
  351. package/lib/go-D2VsmIOS.js.map +1 -0
  352. package/lib/graphql-BtA6M4m5.js +25 -0
  353. package/lib/graphql-BtA6M4m5.js.map +1 -0
  354. package/lib/hook-CAebs2rv.js +31 -0
  355. package/lib/hook-CAebs2rv.js.map +1 -0
  356. package/lib/html-MGnI2uzP.js +33 -0
  357. package/lib/html-MGnI2uzP.js.map +1 -0
  358. package/lib/{index-BuKx9nrj.js → index-BPSpOxTK.js} +103 -102
  359. package/lib/index-BPSpOxTK.js.map +1 -0
  360. package/lib/{index-Dp3Fmnfq.js → index-Bb9AsFlk.js} +702 -778
  361. package/lib/index-Bb9AsFlk.js.map +1 -0
  362. package/lib/{index-CQGi1b3U.js → index-C5L4favO.js} +166 -50
  363. package/lib/index-C5L4favO.js.map +1 -0
  364. package/lib/index-CrcNWbel.js.map +1 -1
  365. package/lib/{index-DmNq2fbN.js → index-nGbmHh_A.js} +2 -2
  366. package/lib/index-nGbmHh_A.js.map +1 -0
  367. package/lib/index.esm-BYObtETB.js +1294 -0
  368. package/lib/index.esm-BYObtETB.js.map +1 -0
  369. package/lib/index.esm-BnYHxCYC.js.map +1 -1
  370. package/lib/java-CVLzHfb1.js +53 -0
  371. package/lib/java-CVLzHfb1.js.map +1 -0
  372. package/lib/javascript-CcmIpL4G.js +10 -0
  373. package/lib/javascript-CcmIpL4G.js.map +1 -0
  374. package/lib/json-4AyP4uiY.js +25 -0
  375. package/lib/json-4AyP4uiY.js.map +1 -0
  376. package/lib/{jsx-runtime-C5mzlN2N.js → jsx-runtime-BzflLqGi.js} +110 -112
  377. package/lib/jsx-runtime-BzflLqGi.js.map +1 -0
  378. package/lib/kotlin-v2plddBQ.js +37 -0
  379. package/lib/kotlin-v2plddBQ.js.map +1 -0
  380. package/lib/markdown-DYGWCmGQ.js +25 -0
  381. package/lib/markdown-DYGWCmGQ.js.map +1 -0
  382. package/lib/mdx-CHwYvXd4.js +32 -0
  383. package/lib/mdx-CHwYvXd4.js.map +1 -0
  384. package/lib/{mutation-CiMUdKRU.js → mutation-CdGPxHNX.js} +2 -2
  385. package/lib/{mutation-CiMUdKRU.js.map → mutation-CdGPxHNX.js.map} +1 -1
  386. package/lib/objectivec-HZY8shkd.js +32 -0
  387. package/lib/objectivec-HZY8shkd.js.map +1 -0
  388. package/lib/ocaml-DqsdDdwb.js +52 -0
  389. package/lib/ocaml-DqsdDdwb.js.map +1 -0
  390. package/lib/php-rQXzo7K_.js +25 -0
  391. package/lib/php-rQXzo7K_.js.map +1 -0
  392. package/lib/powershell-CQje9pm1.js +39 -0
  393. package/lib/powershell-CQje9pm1.js.map +1 -0
  394. package/lib/processors/traverse.js.map +1 -1
  395. package/lib/python-QIQAE5Ei.js +32 -0
  396. package/lib/python-QIQAE5Ei.js.map +1 -0
  397. package/lib/react-DHpVpxRv.js +24 -0
  398. package/lib/react-DHpVpxRv.js.map +1 -0
  399. package/lib/ruby-B2dU8Ny5.js +25 -0
  400. package/lib/ruby-B2dU8Ny5.js.map +1 -0
  401. package/lib/rust-DYnLHAi2.js +25 -0
  402. package/lib/rust-DYnLHAi2.js.map +1 -0
  403. package/lib/scala-CeKInBR8.js +25 -0
  404. package/lib/scala-CeKInBR8.js.map +1 -0
  405. package/lib/shell-HUv9oVtp.js +25 -0
  406. package/lib/shell-HUv9oVtp.js.map +1 -0
  407. package/lib/swift-B4z6ig1Z.js +25 -0
  408. package/lib/swift-B4z6ig1Z.js.map +1 -0
  409. package/lib/toml-Co9mpdct.js +32 -0
  410. package/lib/toml-Co9mpdct.js.map +1 -0
  411. package/lib/typescript-C26xdBDC.js +32 -0
  412. package/lib/typescript-C26xdBDC.js.map +1 -0
  413. package/lib/ui/Accordion.js +1 -1
  414. package/lib/ui/ActionButton.js +3 -3
  415. package/lib/ui/Alert.js +1 -1
  416. package/lib/ui/AlertDialog.js +1 -1
  417. package/lib/ui/Badge.js +1 -1
  418. package/lib/ui/Breadcrumb.js +1 -1
  419. package/lib/ui/Button.js +1 -1
  420. package/lib/ui/Callout.js +1 -1
  421. package/lib/ui/Card.js +1 -1
  422. package/lib/ui/Carousel.js +1 -1
  423. package/lib/ui/Carousel.js.map +1 -1
  424. package/lib/ui/Checkbox.js +1 -1
  425. package/lib/ui/CodeBlock.js +4 -3
  426. package/lib/ui/CodeBlock.js.map +1 -1
  427. package/lib/ui/Command.js +2 -2
  428. package/lib/ui/Dialog.js +1 -1
  429. package/lib/ui/Drawer.js +2 -2
  430. package/lib/ui/DropdownMenu.js +1 -1
  431. package/lib/ui/EmbeddedCodeBlock.js +4 -4
  432. package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  433. package/lib/ui/Form.js +2 -2
  434. package/lib/ui/HoverCard.js +1 -1
  435. package/lib/ui/Input.js +1 -1
  436. package/lib/ui/Label.js +1 -1
  437. package/lib/ui/Pagination.js +1 -1
  438. package/lib/ui/Popover.js +1 -1
  439. package/lib/ui/Progress.js +1 -1
  440. package/lib/ui/RadioGroup.js +1 -1
  441. package/lib/ui/ReactComponentDoc.js +28 -0
  442. package/lib/ui/ReactComponentDoc.js.map +1 -0
  443. package/lib/ui/ScrollArea.js +1 -1
  444. package/lib/ui/Secret.js +106 -0
  445. package/lib/ui/Secret.js.map +1 -0
  446. package/lib/ui/Select.js +1 -1
  447. package/lib/ui/Skeleton.js +1 -1
  448. package/lib/ui/Slider.js +1 -1
  449. package/lib/ui/Stepper.js +1 -1
  450. package/lib/ui/Switch.js +1 -1
  451. package/lib/ui/SyntaxHighlight.js +4 -4
  452. package/lib/ui/Tabs.js +1 -1
  453. package/lib/ui/Textarea.js +1 -1
  454. package/lib/ui/Toggle.js +1 -1
  455. package/lib/ui/ToggleGroup.js +1 -1
  456. package/lib/ui/Tooltip.js +1 -1
  457. package/lib/ui/Value.js +39 -0
  458. package/lib/ui/Value.js.map +1 -0
  459. package/lib/useCopyToClipboard-B_085nfO.js +14 -0
  460. package/lib/useCopyToClipboard-B_085nfO.js.map +1 -0
  461. package/lib/{useExposedProps-BH9aq4MD.js → useExposedProps-Cd7Yg_uG.js} +34 -34
  462. package/lib/{useExposedProps-BH9aq4MD.js.map → useExposedProps-Cd7Yg_uG.js.map} +1 -1
  463. package/lib/xml-BQOOC04j.js +25 -0
  464. package/lib/xml-BQOOC04j.js.map +1 -0
  465. package/lib/yaml-BGsJItKv.js +32 -0
  466. package/lib/yaml-BGsJItKv.js.map +1 -0
  467. package/lib/zig-CUV2sTct.js +35 -0
  468. package/lib/zig-CUV2sTct.js.map +1 -0
  469. package/lib/zudoku.__internal.js +1050 -940
  470. package/lib/zudoku.__internal.js.map +1 -1
  471. package/lib/zudoku.auth-auth0.js +22 -21
  472. package/lib/zudoku.auth-auth0.js.map +1 -1
  473. package/lib/zudoku.auth-azureb2c.js +14 -15
  474. package/lib/zudoku.auth-azureb2c.js.map +1 -1
  475. package/lib/zudoku.auth-clerk.js +3 -3
  476. package/lib/zudoku.auth-openid.js +59 -60
  477. package/lib/zudoku.auth-openid.js.map +1 -1
  478. package/lib/zudoku.auth-supabase.js +2 -2
  479. package/lib/zudoku.components.js +21 -20
  480. package/lib/zudoku.hooks.js +6 -6
  481. package/lib/zudoku.hooks.js.map +1 -1
  482. package/lib/zudoku.icons.js +1 -1
  483. package/lib/zudoku.plugin-api-catalog.js +34 -28
  484. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  485. package/lib/zudoku.plugin-api-keys.js +255 -280
  486. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  487. package/lib/zudoku.plugin-custom-pages.js +1 -1
  488. package/lib/zudoku.plugin-markdown.js +2 -2
  489. package/lib/zudoku.plugin-markdown.js.map +1 -1
  490. package/lib/zudoku.plugin-openapi.js +5 -5
  491. package/lib/zudoku.plugin-redirect.js +3 -3
  492. package/lib/zudoku.plugin-search-inkeep.js +1 -1
  493. package/lib/zudoku.plugin-search-pagefind.js +28 -29
  494. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  495. package/lib/zudoku.router.js +2502 -118
  496. package/lib/zudoku.router.js.map +1 -1
  497. package/package.json +67 -64
  498. package/src/app/main.css +10 -10
  499. package/src/lib/assets/language-icons/c.tsx +31 -0
  500. package/src/lib/assets/language-icons/commonlisp.tsx +22 -0
  501. package/src/lib/assets/language-icons/cpp.tsx +35 -0
  502. package/src/lib/assets/language-icons/csharp.tsx +35 -0
  503. package/src/lib/assets/language-icons/css.tsx +36 -0
  504. package/src/lib/assets/language-icons/dart.tsx +39 -0
  505. package/src/lib/assets/language-icons/elixir.tsx +19 -0
  506. package/src/lib/assets/language-icons/go.tsx +19 -0
  507. package/src/lib/assets/language-icons/graphql.tsx +19 -0
  508. package/src/lib/assets/language-icons/html.tsx +24 -0
  509. package/src/lib/assets/language-icons/java.tsx +35 -0
  510. package/src/lib/assets/language-icons/javascript.tsx +11 -0
  511. package/src/lib/assets/language-icons/json.tsx +19 -0
  512. package/src/lib/assets/language-icons/kotlin.tsx +30 -0
  513. package/src/lib/assets/language-icons/markdown.tsx +19 -0
  514. package/src/lib/assets/language-icons/mdx.tsx +23 -0
  515. package/src/lib/assets/language-icons/objectivec.tsx +23 -0
  516. package/src/lib/assets/language-icons/ocaml.tsx +34 -0
  517. package/src/lib/assets/language-icons/php.tsx +19 -0
  518. package/src/lib/assets/language-icons/powershell.tsx +27 -0
  519. package/src/lib/assets/language-icons/python.tsx +23 -0
  520. package/src/lib/assets/language-icons/react.tsx +21 -0
  521. package/src/lib/assets/language-icons/ruby.tsx +19 -0
  522. package/src/lib/assets/language-icons/rust.tsx +19 -0
  523. package/src/lib/assets/language-icons/scala.tsx +19 -0
  524. package/src/lib/assets/language-icons/shell.tsx +19 -0
  525. package/src/lib/assets/language-icons/swift.tsx +19 -0
  526. package/src/lib/assets/language-icons/toml.tsx +23 -0
  527. package/src/lib/assets/language-icons/typescript.tsx +23 -0
  528. package/src/lib/assets/language-icons/xml.tsx +19 -0
  529. package/src/lib/assets/language-icons/yaml.tsx +23 -0
  530. package/src/lib/assets/language-icons/zig.tsx +32 -0
  531. package/src/lib/authentication/providers/auth0.tsx +7 -3
  532. package/src/lib/authentication/providers/openid.tsx +2 -0
  533. package/src/lib/authentication/use-broadcast/LICENSE.md +12 -3
  534. package/src/lib/components/BuildCheck.tsx +12 -10
  535. package/src/lib/components/Heading.tsx +2 -6
  536. package/src/lib/components/LanguageIcon.tsx +181 -0
  537. package/src/lib/components/Main.tsx +1 -1
  538. package/src/lib/components/Meta.tsx +13 -0
  539. package/src/lib/components/cache.ts +9 -5
  540. package/src/lib/components/context/ZudokuContext.ts +11 -2
  541. package/src/lib/components/index.ts +2 -0
  542. package/src/lib/components/navigation/NavigationItem.tsx +1 -1
  543. package/src/lib/oas/graphql/index.ts +37 -2
  544. package/src/lib/plugins/api-catalog/Catalog.tsx +7 -0
  545. package/src/lib/plugins/api-keys/CreateApiKeyDialog.tsx +49 -0
  546. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +18 -64
  547. package/src/lib/plugins/markdown/MdxPage.tsx +123 -9
  548. package/src/lib/plugins/markdown/assets/ChatGPTLogo.tsx +11 -0
  549. package/src/lib/plugins/markdown/assets/ClaudeLogo.tsx +19 -0
  550. package/src/lib/plugins/markdown/index.tsx +3 -7
  551. package/src/lib/plugins/openapi/MCPEndpoint.tsx +273 -0
  552. package/src/lib/plugins/openapi/OperationList.tsx +30 -10
  553. package/src/lib/plugins/openapi/OperationListItem.tsx +107 -81
  554. package/src/lib/plugins/openapi/ParameterList.tsx +3 -5
  555. package/src/lib/plugins/openapi/ParameterListItem.tsx +3 -9
  556. package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +6 -11
  557. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +3 -2
  558. package/src/lib/plugins/openapi/Sidecar.tsx +10 -10
  559. package/src/lib/plugins/openapi/SidecarExamples.tsx +2 -9
  560. package/src/lib/plugins/openapi/graphql/fragment-masking.ts +2 -1
  561. package/src/lib/plugins/openapi/graphql/gql.ts +7 -6
  562. package/src/lib/plugins/openapi/graphql/graphql.ts +26 -3
  563. package/src/lib/plugins/openapi/index.tsx +1 -1
  564. package/src/lib/plugins/openapi/interfaces.ts +3 -2
  565. package/src/lib/plugins/openapi/playground/BodyPanel.tsx +2 -2
  566. package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +3 -3
  567. package/src/lib/plugins/openapi/playground/Playground.tsx +3 -3
  568. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +12 -1
  569. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +31 -3
  570. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.tsx +11 -4
  571. package/src/lib/plugins/openapi/schema/SchemaView.tsx +18 -12
  572. package/src/lib/plugins/openapi/schema/UnionView.tsx +56 -36
  573. package/src/lib/plugins/openapi/schema/union-helpers.ts +30 -2
  574. package/src/lib/shiki.ts +13 -0
  575. package/src/lib/ui/Carousel.tsx +0 -1
  576. package/src/lib/ui/CodeBlock.tsx +7 -42
  577. package/src/lib/ui/EmbeddedCodeBlock.tsx +1 -1
  578. package/src/lib/ui/ReactComponentDoc.tsx +68 -0
  579. package/src/lib/ui/Secret.tsx +123 -0
  580. package/src/lib/ui/Value.tsx +42 -0
  581. package/src/lib/util/MdxComponents.tsx +4 -1
  582. package/src/lib/util/pastellize.ts +4 -4
  583. package/src/lib/util/traverse.ts +36 -0
  584. package/src/shiki/langs/hurl.js +1 -0
  585. package/src/shiki/langs/kdl.js +1 -0
  586. package/src/shiki/langs/pkl.js +1 -0
  587. package/src/shiki/langs/rosmsg.js +1 -0
  588. package/lib/CodeBlock-CX_J17Hf.js +0 -98
  589. package/lib/CodeBlock-CX_J17Hf.js.map +0 -1
  590. package/lib/MdxPage-yXbTtcWf.js +0 -111
  591. package/lib/MdxPage-yXbTtcWf.js.map +0 -1
  592. package/lib/OperationList-CWxpdIbO.js +0 -5165
  593. package/lib/OperationList-CWxpdIbO.js.map +0 -1
  594. package/lib/SchemaView-B2BeAuci.js +0 -429
  595. package/lib/SchemaView-B2BeAuci.js.map +0 -1
  596. package/lib/Select-DWh0wSay.js +0 -273
  597. package/lib/Select-DWh0wSay.js.map +0 -1
  598. package/lib/Slot-BbdqiRXo.js.map +0 -1
  599. package/lib/SyntaxHighlight-CvzJ7DNa.js.map +0 -1
  600. package/lib/ZudokuContext-BR-lnR7O.js +0 -1285
  601. package/lib/ZudokuContext-BR-lnR7O.js.map +0 -1
  602. package/lib/chunk-QMGIS6GS-DqecZ6nq.js +0 -9204
  603. package/lib/chunk-QMGIS6GS-DqecZ6nq.js.map +0 -1
  604. package/lib/createServer-B4giw6jv.js.map +0 -1
  605. package/lib/hook-B4Q30zMI.js +0 -247
  606. package/lib/hook-B4Q30zMI.js.map +0 -1
  607. package/lib/index-BuKx9nrj.js.map +0 -1
  608. package/lib/index-CQGi1b3U.js.map +0 -1
  609. package/lib/index-DmNq2fbN.js.map +0 -1
  610. package/lib/index-Dp3Fmnfq.js.map +0 -1
  611. package/lib/index.esm-CdzlRw50.js +0 -1254
  612. package/lib/index.esm-CdzlRw50.js.map +0 -1
  613. package/lib/jsx-runtime-C5mzlN2N.js.map +0 -1
@@ -0,0 +1,181 @@
1
+ import {
2
+ type ComponentType,
3
+ type LazyExoticComponent,
4
+ lazy,
5
+ Suspense,
6
+ type SVGProps,
7
+ } from "react";
8
+
9
+ type Language = {
10
+ pattern: RegExp;
11
+ icon: LazyExoticComponent<ComponentType<SVGProps<SVGSVGElement>>>;
12
+ width?: number;
13
+ };
14
+
15
+ const Languages: Record<string, Language> = {
16
+ typescript: {
17
+ pattern: /^(ts|typescript)$/,
18
+ icon: lazy(() => import("../assets/language-icons/typescript.js")),
19
+ width: 15,
20
+ },
21
+ javascript: {
22
+ pattern: /^(js|javascript)$/,
23
+ icon: lazy(() => import("../assets/language-icons/javascript.js")),
24
+ },
25
+ react: {
26
+ pattern: /^(react|tsx|jsx)$/,
27
+ icon: lazy(() => import("../assets/language-icons/react.js")),
28
+ width: 22,
29
+ },
30
+ markdown: {
31
+ pattern: /^(md|markdown)$/,
32
+ icon: lazy(() => import("../assets/language-icons/markdown.js")),
33
+ width: 22,
34
+ },
35
+ mdx: {
36
+ pattern: /^mdx$/,
37
+ icon: lazy(() => import("../assets/language-icons/mdx.js")),
38
+ width: 28,
39
+ },
40
+ java: {
41
+ pattern: /^(java)$/,
42
+ icon: lazy(() => import("../assets/language-icons/java.js")),
43
+ width: 22,
44
+ },
45
+ json: {
46
+ pattern: /^jsonc?$/,
47
+ icon: lazy(() => import("../assets/language-icons/json.js")),
48
+ },
49
+ yaml: {
50
+ pattern: /^yaml$/,
51
+ icon: lazy(() => import("../assets/language-icons/yaml.js")),
52
+ },
53
+ toml: {
54
+ pattern: /^toml$/,
55
+ icon: lazy(() => import("../assets/language-icons/toml.js")),
56
+ },
57
+ shell: {
58
+ pattern: /^(shell|bash|sh|zsh|term|terminal|ansi)$/,
59
+ icon: lazy(() => import("../assets/language-icons/shell.js")),
60
+ },
61
+ python: {
62
+ pattern: /^(py|python)$/,
63
+ icon: lazy(() => import("../assets/language-icons/python.js")),
64
+ },
65
+ csharp: {
66
+ pattern: /^(cs|csharp|vb)$/,
67
+ icon: lazy(() => import("../assets/language-icons/csharp.js")),
68
+ width: 20,
69
+ },
70
+ rust: {
71
+ pattern: /^(rs|rust)$/,
72
+ icon: lazy(() => import("../assets/language-icons/rust.js")),
73
+ width: 20,
74
+ },
75
+ ruby: {
76
+ pattern: /^(rb|ruby)$/,
77
+ icon: lazy(() => import("../assets/language-icons/ruby.js")),
78
+ },
79
+ php: {
80
+ pattern: /^php$/,
81
+ icon: lazy(() => import("../assets/language-icons/php.js")),
82
+ width: 24,
83
+ },
84
+ html: {
85
+ pattern: /^html?$/,
86
+ icon: lazy(() => import("../assets/language-icons/html.js")),
87
+ width: 15,
88
+ },
89
+ css: {
90
+ pattern: /^css$/,
91
+ icon: lazy(() => import("../assets/language-icons/css.js")),
92
+ },
93
+ objectivec: {
94
+ pattern: /^(objc|objectivec)$/,
95
+ icon: lazy(() => import("../assets/language-icons/objectivec.js")),
96
+ width: 16,
97
+ },
98
+ swift: {
99
+ pattern: /^swift$/,
100
+ icon: lazy(() => import("../assets/language-icons/swift.js")),
101
+ },
102
+ go: {
103
+ pattern: /^go$/,
104
+ icon: lazy(() => import("../assets/language-icons/go.js")),
105
+ width: 28,
106
+ },
107
+ xml: {
108
+ pattern: /^xml$/,
109
+ icon: lazy(() => import("../assets/language-icons/xml.js")),
110
+ },
111
+ kotlin: {
112
+ pattern: /^(kt|kotlin)$/,
113
+ icon: lazy(() => import("../assets/language-icons/kotlin.js")),
114
+ width: 14,
115
+ },
116
+ graphql: {
117
+ pattern: /^(gql|graphql)$/,
118
+ icon: lazy(() => import("../assets/language-icons/graphql.js")),
119
+ },
120
+ zig: {
121
+ pattern: /^zig$/,
122
+ icon: lazy(() => import("../assets/language-icons/zig.js")),
123
+ width: 28,
124
+ },
125
+ scala: {
126
+ pattern: /^scala$/,
127
+ icon: lazy(() => import("../assets/language-icons/scala.js")),
128
+ width: 18,
129
+ },
130
+ dart: {
131
+ pattern: /^dart$/,
132
+ icon: lazy(() => import("../assets/language-icons/dart.js")),
133
+ width: 20,
134
+ },
135
+ ocaml: {
136
+ pattern: /^ocaml$/,
137
+ icon: lazy(() => import("../assets/language-icons/ocaml.js")),
138
+ width: 20,
139
+ },
140
+ c: {
141
+ pattern: /^c$/,
142
+ icon: lazy(() => import("../assets/language-icons/c.js")),
143
+ width: 20,
144
+ },
145
+ cpp: {
146
+ pattern: /^(cpp|c\+\+)$/,
147
+ icon: lazy(() => import("../assets/language-icons/cpp.js")),
148
+ width: 20,
149
+ },
150
+ commonlisp: {
151
+ pattern: /^(clisp|common-lisp|lisp|cl|commonlisp)$/,
152
+ icon: lazy(() => import("../assets/language-icons/commonlisp.js")),
153
+ width: 18,
154
+ },
155
+ elixir: {
156
+ pattern: /^elixir$/,
157
+ icon: lazy(() => import("../assets/language-icons/elixir.js")),
158
+ width: 18,
159
+ },
160
+ powershell: {
161
+ pattern: /^(pshell|powershell|ps1)$/,
162
+ icon: lazy(() => import("../assets/language-icons/powershell.js")),
163
+ width: 18,
164
+ },
165
+ };
166
+
167
+ export const LanguageIcon = ({ language }: { language?: string }) => {
168
+ if (!language) return null;
169
+
170
+ const Lang = Object.values(Languages).find((l) => l.pattern.test(language));
171
+
172
+ if (!Lang) return null;
173
+
174
+ const size = Lang.width ?? 18;
175
+
176
+ return (
177
+ <Suspense fallback={<div style={{ width: size, height: "1em" }} />}>
178
+ <Lang.icon className="h-auto" style={{ width: size }} />
179
+ </Suspense>
180
+ );
181
+ };
@@ -27,7 +27,7 @@ export const Main = ({ children }: PropsWithChildren) => {
27
27
  />
28
28
  )}
29
29
  {hasNavigation && (
30
- <div className="lg:hidden -mx-4 px-4 py-2 sticky bg-background/80 backdrop-blur-xs z-10 top-0 start-0 end-0 border-b">
30
+ <div className="lg:hidden m-0 p-0 md:-mx-4 md:px-4 py-2 sticky bg-background/80 backdrop-blur-xs z-10 top-0 start-0 end-0 border-b">
31
31
  <DrawerTrigger className="flex items-center gap-2 px-4">
32
32
  <PanelLeftIcon size={16} strokeWidth={1.5} />
33
33
  <span className="text-sm">Menu</span>
@@ -25,6 +25,19 @@ export const Meta = ({ children }: PropsWithChildren) => {
25
25
  <meta name="description" content={meta.description} />
26
26
  )}
27
27
  {meta?.favicon && <link rel="icon" href={meta.favicon} />}
28
+ {meta?.generator && <meta name="generator" content={meta.generator} />}
29
+ {meta?.applicationName && (
30
+ <meta name="application-name" content={meta.applicationName} />
31
+ )}
32
+ {meta?.referrer && <meta name="referrer" content={meta.referrer} />}
33
+ {meta?.keywords && meta.keywords.length > 0 && (
34
+ <meta name="keywords" content={meta.keywords.join(", ")} />
35
+ )}
36
+ {meta?.authors?.map((author) => (
37
+ <meta key={author} name="author" content={author} />
38
+ ))}
39
+ {meta?.creator && <meta name="creator" content={meta.creator} />}
40
+ {meta?.publisher && <meta name="publisher" content={meta.publisher} />}
28
41
  </Helmet>
29
42
  {children}
30
43
  </>
@@ -1,17 +1,21 @@
1
1
  import { useQueryClient } from "@tanstack/react-query";
2
+ import { useCallback } from "react";
2
3
 
3
4
  export const CACHE_KEYS = Object.freeze({
4
5
  API_IDENTITIES: ["api-identities"],
5
6
  });
6
7
 
8
+ type CacheKey = keyof typeof CACHE_KEYS;
9
+
7
10
  export const useCache = () => {
8
11
  const queryClient = useQueryClient();
12
+ const invalidateCache = useCallback(
13
+ (key: CacheKey) =>
14
+ queryClient.invalidateQueries({ queryKey: CACHE_KEYS[key] }),
15
+ [queryClient],
16
+ );
9
17
 
10
- return {
11
- invalidateCache: async (key: keyof typeof CACHE_KEYS) => {
12
- await queryClient.invalidateQueries({ queryKey: CACHE_KEYS[key] });
13
- },
14
- };
18
+ return { invalidateCache };
15
19
  };
16
20
 
17
21
  /**
@@ -1,10 +1,11 @@
1
1
  import { useQuery, useSuspenseQuery } from "@tanstack/react-query";
2
- import { createContext, useContext } from "react";
2
+ import { createContext, useContext, useEffect } from "react";
3
3
  import { matchPath, useLocation } from "react-router";
4
4
  import type { NavigationItem } from "../../../config/validators/NavigationSchema.js";
5
+ import { useAuthState } from "../../authentication/state.js";
5
6
  import type { ZudokuContext } from "../../core/ZudokuContext.js";
6
7
  import { joinUrl } from "../../util/joinUrl.js";
7
- import { CACHE_KEYS } from "../cache.js";
8
+ import { CACHE_KEYS, useCache } from "../cache.js";
8
9
  import { traverseNavigation } from "../navigation/utils.js";
9
10
 
10
11
  export const ZudokuReactContext = createContext<ZudokuContext | undefined>(
@@ -23,6 +24,14 @@ export const useZudoku = () => {
23
24
 
24
25
  export const useApiIdentities = () => {
25
26
  const { getApiIdentities } = useZudoku();
27
+ const { isAuthenticated } = useAuthState();
28
+ const { invalidateCache } = useCache();
29
+
30
+ useEffect(() => {
31
+ if (!isAuthenticated) {
32
+ invalidateCache("API_IDENTITIES");
33
+ }
34
+ }, [isAuthenticated, invalidateCache]);
26
35
 
27
36
  return useQuery({
28
37
  queryFn: getApiIdentities,
@@ -12,6 +12,7 @@ import {
12
12
  } from "./cache.js";
13
13
  import { useZudoku as useZudokuImport } from "./context/ZudokuContext.js";
14
14
  import { Markdown as MarkdownImport } from "./Markdown.js";
15
+ import { Slot as SlotImport } from "./Slot.js";
15
16
  import { Spinner as SpinnerImport } from "./Spinner.js";
16
17
  import { Typography as TypographyImport } from "./Typography.js";
17
18
  import { Zudoku as ZudokuImport } from "./Zudoku.js";
@@ -25,6 +26,7 @@ export const Button = /*@__PURE__*/ ButtonImport;
25
26
  export const Link = /*@__PURE__*/ LinkImport;
26
27
  export const Zudoku = /*@__PURE__*/ ZudokuImport;
27
28
  export const Typography = /*@__PURE__*/ TypographyImport;
29
+ export const Slot = /*@__PURE__*/ SlotImport;
28
30
 
29
31
  /** @deprecated Import from `zudoku/hooks` instead */
30
32
  export const useMDXComponents = /*@__PURE__*/ useMDXComponentsImport;
@@ -144,7 +144,7 @@ export const NavigationItem = ({
144
144
  <a
145
145
  className={navigationListItem()}
146
146
  href={href}
147
- target="_blank"
147
+ target={"target" in item ? item.target : "_blank"}
148
148
  rel="noopener noreferrer"
149
149
  onClick={onRequestClose}
150
150
  >
@@ -111,18 +111,34 @@ export const getAllTags = (
111
111
  ),
112
112
  );
113
113
 
114
- return [
114
+ const result = [
115
115
  // Keep root tags that are actually used in operations
116
116
  ...rootTags
117
117
  .filter((tag) => operationTags.has(tag.name))
118
118
  .map((tag) => ({ ...tag, slug: slugs[tag.name] })),
119
119
  // Add tags found in operations but not defined in root tags
120
- ...[...operationTags]
120
+ ...Array.from(operationTags)
121
121
  .filter((tag) => !rootTags.some((rt) => rt.name === tag))
122
122
  .map((tag) => ({ name: tag, slug: slugs[tag] })),
123
123
  // Add untagged operations if there are any
124
124
  ...(hasUntaggedOperations ? [{ name: undefined, slug: undefined }] : []),
125
125
  ];
126
+
127
+ // Apply x-tagGroups ordering if present
128
+ const tagGroups = (schema as any)["x-tagGroups"] ?? [];
129
+
130
+ if (tagGroups.length === 0) return result;
131
+
132
+ const groupOrder = tagGroups.flatMap((group: any) => group.tags);
133
+ return result.sort((a, b) => {
134
+ if (!a.name || !b.name) return 0; // Keep untagged at end
135
+ const indexA = groupOrder.indexOf(a.name);
136
+ const indexB = groupOrder.indexOf(b.name);
137
+ if (indexA === -1 && indexB === -1) return 0; // Keep original order for ungrouped
138
+ if (indexA === -1) return 1; // Ungrouped after grouped
139
+ if (indexB === -1) return -1; // Grouped before ungrouped
140
+ return indexA - indexB;
141
+ });
126
142
  };
127
143
 
128
144
  export const getAllSlugs = (
@@ -176,11 +192,21 @@ export const getAllOperations = (
176
192
  ...operationParameters,
177
193
  ];
178
194
 
195
+ // servers follow the OpenAPI 3.0 resolution hierarchy:
196
+ // 1. Operation-level servers (highest precedence)
197
+ // 2. Path-level servers
198
+ // 3. Global servers (handled at query time, lowest precedence)
199
+ const pathServers = value.servers ?? [];
200
+ const operationServers = operation.servers ?? [];
201
+ const servers =
202
+ operationServers.length > 0 ? operationServers : pathServers;
203
+
179
204
  return {
180
205
  ...operation,
181
206
  method,
182
207
  path,
183
208
  parameters,
209
+ servers,
184
210
  tags: operation.tags ?? [],
185
211
  } satisfies GraphQLOperationObject;
186
212
  }),
@@ -424,6 +450,15 @@ const OperationItem = builder
424
450
  type: [ParameterItem],
425
451
  nullable: true,
426
452
  }),
453
+ servers: t.field({
454
+ type: [ServerItem],
455
+ resolve: (parent, _, ctx) => {
456
+ // Return operation/path-level servers if defined, otherwise fall back to global servers
457
+ return parent.servers && parent.servers.length > 0
458
+ ? parent.servers
459
+ : (ctx.schema.servers ?? []);
460
+ },
461
+ }),
427
462
  requestBody: t.field({
428
463
  type: RequestBodyObject,
429
464
  resolve: (parent) => ({
@@ -62,6 +62,13 @@ export const Catalog = ({
62
62
  <Markdown
63
63
  className="text-sm whitespace-pre-wrap mb-6 line-clamp-2"
64
64
  content={api.description}
65
+ components={{
66
+ // Because we're wrapping the description in a Link already,
67
+ // we need to strip out other links to not get a hydration error, like:
68
+ // > In HTML, <a> cannot be a descendant of <a>.
69
+ // > This will cause a hydration error.
70
+ a: (props) => <span {...props} />,
71
+ }}
65
72
  />
66
73
  </div>
67
74
  </Link>
@@ -0,0 +1,49 @@
1
+ import type { ReactNode } from "react";
2
+ import {
3
+ Dialog,
4
+ DialogContent,
5
+ DialogHeader,
6
+ DialogTitle,
7
+ DialogTrigger,
8
+ } from "zudoku/ui/Dialog.js";
9
+ import { Button } from "../../ui/Button.js";
10
+ import { CreateApiKey } from "./CreateApiKey.js";
11
+ import type { ApiKeyService } from "./index.js";
12
+
13
+ interface CreateApiKeyDialogProps {
14
+ service: ApiKeyService;
15
+ isOpen: boolean;
16
+ onOpenChange: (open: boolean) => void;
17
+ trigger?: ReactNode;
18
+ buttonVariant?:
19
+ | "default"
20
+ | "destructive"
21
+ | "outline"
22
+ | "secondary"
23
+ | "ghost"
24
+ | "link";
25
+ }
26
+
27
+ export const CreateApiKeyDialog = ({
28
+ service,
29
+ isOpen,
30
+ onOpenChange,
31
+ trigger,
32
+ buttonVariant = "outline",
33
+ }: CreateApiKeyDialogProps) => {
34
+ const defaultTrigger = (
35
+ <Button variant={buttonVariant}>Create API Key</Button>
36
+ );
37
+
38
+ return (
39
+ <Dialog open={isOpen} onOpenChange={onOpenChange}>
40
+ <DialogTrigger asChild>{trigger ?? defaultTrigger}</DialogTrigger>
41
+ <DialogContent>
42
+ <DialogHeader>
43
+ <DialogTitle>Create API Key</DialogTitle>
44
+ </DialogHeader>
45
+ <CreateApiKey service={service} onOpenChange={onOpenChange} />
46
+ </DialogContent>
47
+ </Dialog>
48
+ );
49
+ };
@@ -6,9 +6,6 @@ import {
6
6
  import {
7
7
  CheckIcon,
8
8
  CircleSlashIcon,
9
- CopyIcon,
10
- EyeIcon,
11
- EyeOffIcon,
12
9
  PencilLineIcon,
13
10
  RefreshCwIcon,
14
11
  TrashIcon,
@@ -16,7 +13,6 @@ import {
16
13
  } from "lucide-react";
17
14
  import { AnimatePresence } from "motion/react";
18
15
  import React, { useState } from "react";
19
- import { Link } from "react-router";
20
16
  import { Alert, AlertTitle } from "zudoku/ui/Alert.js";
21
17
  import { Card, CardHeader } from "zudoku/ui/Card.js";
22
18
  import {
@@ -29,13 +25,13 @@ import {
29
25
  DialogTitle,
30
26
  DialogTrigger,
31
27
  } from "zudoku/ui/Dialog.js";
28
+ import { Secret } from "zudoku/ui/Secret.js";
32
29
  import { useZudoku } from "../../components/context/ZudokuContext.js";
33
30
  import { Slot } from "../../components/Slot.js";
34
31
  import { Button } from "../../ui/Button.js";
35
32
  import { Input } from "../../ui/Input.js";
36
33
  import { cn } from "../../util/cn.js";
37
- import { useCopyToClipboard } from "../../util/useCopyToClipboard.js";
38
- import { CreateApiKey } from "./CreateApiKey.js";
34
+ import { CreateApiKeyDialog } from "./CreateApiKeyDialog.js";
39
35
  import type { ApiConsumer, ApiKey, ApiKeyService } from "./index.js";
40
36
 
41
37
  export const SettingsApiKeys = ({ service }: { service: ApiKeyService }) => {
@@ -186,23 +182,11 @@ export const SettingsApiKeys = ({ service }: { service: ApiKeyService }) => {
186
182
  <h1 className="font-medium text-2xl">API Keys</h1>
187
183
 
188
184
  {service.createKey && (
189
- <Dialog
190
- open={isCreateApiKeyOpen}
185
+ <CreateApiKeyDialog
186
+ service={service}
187
+ isOpen={isCreateApiKeyOpen}
191
188
  onOpenChange={setIsCreateApiKeyOpen}
192
- >
193
- <DialogTrigger asChild>
194
- <Button variant="outline">Create API Key</Button>
195
- </DialogTrigger>
196
- <DialogContent>
197
- <DialogHeader>
198
- <DialogTitle>Create API Key</DialogTitle>
199
- </DialogHeader>
200
- <CreateApiKey
201
- service={service}
202
- onOpenChange={setIsCreateApiKeyOpen}
203
- />
204
- </DialogContent>
205
- </Dialog>
189
+ />
206
190
  )}
207
191
  </div>
208
192
  <p>Create, manage, and monitor your API keys</p>
@@ -236,9 +220,11 @@ export const SettingsApiKeys = ({ service }: { service: ApiKeyService }) => {
236
220
  {service.createKey && "Get started and create your first key."}
237
221
  </p>
238
222
  {service.createKey && (
239
- <Button asChild variant="outline">
240
- <Link to="/settings/api-keys/new">Create API Key</Link>
241
- </Button>
223
+ <CreateApiKeyDialog
224
+ service={service}
225
+ isOpen={isCreateApiKeyOpen}
226
+ onOpenChange={setIsCreateApiKeyOpen}
227
+ />
242
228
  )}
243
229
  </div>
244
230
  ) : (
@@ -438,7 +424,6 @@ const RevealApiKey = ({
438
424
  className?: string;
439
425
  }) => {
440
426
  const [revealed, setRevealed] = useState(false);
441
- const [isCopied, copyToClipboard] = useCopyToClipboard();
442
427
 
443
428
  const { key, createdOn, expiresOn } = apiKey;
444
429
  const isExpired = expiresOn && new Date(expiresOn) < new Date();
@@ -452,44 +437,13 @@ const RevealApiKey = ({
452
437
  return (
453
438
  <div className={cn("grid col-span-full grid-cols-subgrid p-6", className)}>
454
439
  <div className="flex flex-col gap-1">
455
- <div className="flex gap-2 items-center text-sm border rounded-md w-full max-w-fit px-1">
456
- <div className="font-mono w-full h-9 items-center flex px-2 text-xs gap-2">
457
- <div
458
- className={cn(
459
- "rounded-full w-2 h-2 bg-emerald-400 mr-2",
460
- (expiresSoon || isExpired) && "bg-neutral-200",
461
- )}
462
- ></div>
463
- <span className="w-full truncate">
464
- <div
465
- className={cn(
466
- "w-40 inline-block md:w-full truncate",
467
- revealed ? "" : "opacity-20",
468
- )}
469
- >
470
- {revealed
471
- ? key.slice(0, -5)
472
- : "**** ".repeat(key.slice(0, -5).length / 5) +
473
- "*".repeat(key.slice(0, -5).length % 5)}
474
- </div>
475
- <span>{key.slice(-5)}</span>
476
- </span>
477
- </div>
478
- <Button
479
- variant="ghost"
480
- onClick={() => setRevealed((prev) => !prev)}
481
- size="icon"
482
- >
483
- {revealed ? <EyeOffIcon size={16} /> : <EyeIcon size={16} />}
484
- </Button>
485
- <Button
486
- variant="ghost"
487
- onClick={() => copyToClipboard(key)}
488
- size="icon"
489
- >
490
- {isCopied ? <CheckIcon size={16} /> : <CopyIcon size={16} />}
491
- </Button>
492
- </div>
440
+ <Secret
441
+ className="max-w-fit w-full"
442
+ secret={key}
443
+ status={isExpired ? "expired" : expiresSoon ? "expiring" : "active"}
444
+ revealed={revealed}
445
+ onReveal={setRevealed}
446
+ />
493
447
  <div className="flex gap-1 mt-0.5 text-nowrap">
494
448
  {createdOn && (
495
449
  <span className="text-xs text-muted-foreground">