zudoku 0.51.0 → 0.52.1

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 (322) hide show
  1. package/dist/config/validators/InputNavigationSchema.d.ts +152 -0
  2. package/dist/config/validators/NavigationSchema.js +1 -1
  3. package/dist/config/validators/NavigationSchema.js.map +1 -1
  4. package/dist/config/validators/icon-types.d.ts +1 -1
  5. package/dist/config/validators/icon-types.js +38 -0
  6. package/dist/config/validators/icon-types.js.map +1 -1
  7. package/dist/config/validators/validate.d.ts +10 -0
  8. package/dist/config/validators/validate.js +7 -0
  9. package/dist/config/validators/validate.js.map +1 -1
  10. package/dist/lib/components/Autocomplete.js +1 -1
  11. package/dist/lib/components/Autocomplete.js.map +1 -1
  12. package/dist/lib/components/ErrorPage.js +2 -2
  13. package/dist/lib/components/ErrorPage.js.map +1 -1
  14. package/dist/lib/components/Markdown.d.ts +0 -1
  15. package/dist/lib/components/Markdown.js +2 -3
  16. package/dist/lib/components/Markdown.js.map +1 -1
  17. package/dist/lib/components/NotFoundPage.js +2 -2
  18. package/dist/lib/components/NotFoundPage.js.map +1 -1
  19. package/dist/lib/components/Pagination.js +1 -1
  20. package/dist/lib/components/Pagination.js.map +1 -1
  21. package/dist/lib/components/Typography.d.ts +5 -0
  22. package/dist/lib/components/Typography.js +8 -0
  23. package/dist/lib/components/Typography.js.map +1 -0
  24. package/dist/lib/components/index.d.ts +4 -0
  25. package/dist/lib/components/index.js +2 -0
  26. package/dist/lib/components/index.js.map +1 -1
  27. package/dist/lib/errors/ErrorAlert.js +2 -3
  28. package/dist/lib/errors/ErrorAlert.js.map +1 -1
  29. package/dist/lib/hooks/useHotkey.d.ts +4 -0
  30. package/dist/lib/hooks/useHotkey.js +58 -0
  31. package/dist/lib/hooks/useHotkey.js.map +1 -0
  32. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +4 -8
  33. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  34. package/dist/lib/plugins/custom-pages/index.d.ts +1 -4
  35. package/dist/lib/plugins/custom-pages/index.js +1 -3
  36. package/dist/lib/plugins/custom-pages/index.js.map +1 -1
  37. package/dist/lib/plugins/markdown/MdxPage.d.ts +1 -2
  38. package/dist/lib/plugins/markdown/MdxPage.js +22 -6
  39. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  40. package/dist/lib/plugins/markdown/index.d.ts +8 -1
  41. package/dist/lib/plugins/markdown/index.js +1 -1
  42. package/dist/lib/plugins/markdown/index.js.map +1 -1
  43. package/dist/lib/plugins/openapi/OperationList.js +2 -3
  44. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  45. package/dist/lib/plugins/openapi/OperationListItem.js +2 -2
  46. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  47. package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
  48. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  49. package/dist/lib/plugins/openapi/SchemaList.js +2 -3
  50. package/dist/lib/plugins/openapi/SchemaList.js.map +1 -1
  51. package/dist/lib/plugins/openapi/SidecarExamples.js +1 -1
  52. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  53. package/dist/lib/plugins/openapi/playground/BodyPanel.js +14 -11
  54. package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
  55. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.d.ts +8 -0
  56. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js +11 -0
  57. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js.map +1 -0
  58. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +2 -2
  59. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -1
  60. package/dist/lib/plugins/openapi/playground/Headers.d.ts +3 -2
  61. package/dist/lib/plugins/openapi/playground/Headers.js +52 -30
  62. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  63. package/dist/lib/plugins/openapi/playground/IdentityDialog.js +2 -1
  64. package/dist/lib/plugins/openapi/playground/IdentityDialog.js.map +1 -1
  65. package/dist/lib/plugins/openapi/playground/IdentitySelector.js +1 -2
  66. package/dist/lib/plugins/openapi/playground/IdentitySelector.js.map +1 -1
  67. package/dist/lib/plugins/openapi/playground/InlineInput.js +1 -1
  68. package/dist/lib/plugins/openapi/playground/InlineInput.js.map +1 -1
  69. package/dist/lib/plugins/openapi/playground/ParamsGrid.js +2 -2
  70. package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -1
  71. package/dist/lib/plugins/openapi/playground/PathParams.js +1 -2
  72. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  73. package/dist/lib/plugins/openapi/playground/Playground.js +52 -34
  74. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  75. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +1 -1
  76. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  77. package/dist/lib/plugins/openapi/playground/QueryParams.d.ts +2 -2
  78. package/dist/lib/plugins/openapi/playground/QueryParams.js +38 -23
  79. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  80. package/dist/lib/plugins/openapi/playground/Spinner.d.ts +2 -0
  81. package/dist/lib/plugins/openapi/playground/Spinner.js +63 -0
  82. package/dist/lib/plugins/openapi/playground/Spinner.js.map +1 -0
  83. package/dist/lib/plugins/openapi/playground/request-panel/UrlPath.d.ts +3 -0
  84. package/dist/lib/plugins/openapi/playground/request-panel/UrlPath.js +13 -0
  85. package/dist/lib/plugins/openapi/playground/request-panel/UrlPath.js.map +1 -0
  86. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.d.ts +1 -0
  87. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js +12 -0
  88. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js.map +1 -0
  89. package/dist/lib/plugins/openapi/playground/result-panel/Highlight.d.ts +12 -0
  90. package/dist/lib/plugins/openapi/playground/result-panel/Highlight.js +11 -0
  91. package/dist/lib/plugins/openapi/playground/result-panel/Highlight.js.map +1 -0
  92. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.d.ts +6 -0
  93. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js +66 -0
  94. package/dist/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.js.map +1 -0
  95. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.d.ts +7 -4
  96. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +23 -32
  97. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  98. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.d.ts +2 -2
  99. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +8 -10
  100. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -1
  101. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +3 -3
  102. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -1
  103. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +2 -3
  104. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
  105. package/dist/lib/plugins/openapi/schema/SchemaView.js +4 -4
  106. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  107. package/dist/lib/plugins/openapi/schema/utils.js +3 -2
  108. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
  109. package/dist/lib/ui/CodeBlock.js +5 -6
  110. package/dist/lib/ui/CodeBlock.js.map +1 -1
  111. package/dist/lib/ui/Dialog.js +1 -1
  112. package/dist/lib/ui/Dialog.js.map +1 -1
  113. package/dist/lib/ui/EmbeddedCodeBlock.js +1 -1
  114. package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  115. package/dist/lib/ui/Select.js +1 -1
  116. package/dist/lib/util/os.d.ts +2 -0
  117. package/dist/lib/util/os.js +21 -0
  118. package/dist/lib/util/os.js.map +1 -0
  119. package/dist/lib/util/useCopyToClipboard.d.ts +1 -0
  120. package/dist/lib/util/useCopyToClipboard.js +11 -0
  121. package/dist/lib/util/useCopyToClipboard.js.map +1 -0
  122. package/dist/vite/api/SchemaManager.js +6 -2
  123. package/dist/vite/api/SchemaManager.js.map +1 -1
  124. package/dist/vite/api/schema-codegen.js +42 -11
  125. package/dist/vite/api/schema-codegen.js.map +1 -1
  126. package/dist/vite/api/schema-codegen.test.js +82 -0
  127. package/dist/vite/api/schema-codegen.test.js.map +1 -1
  128. package/dist/vite/mdx/remark-last-modified.d.ts +3 -0
  129. package/dist/vite/mdx/remark-last-modified.js +56 -0
  130. package/dist/vite/mdx/remark-last-modified.js.map +1 -0
  131. package/dist/vite/mdx/utils.d.ts +2 -0
  132. package/dist/vite/mdx/utils.js +31 -0
  133. package/dist/vite/mdx/utils.js.map +1 -0
  134. package/dist/vite/plugin-frontmatter.js +4 -2
  135. package/dist/vite/plugin-frontmatter.js.map +1 -1
  136. package/dist/vite/plugin-mdx.js +11 -33
  137. package/dist/vite/plugin-mdx.js.map +1 -1
  138. package/dist/vite/plugin-theme.js +21 -9
  139. package/dist/vite/plugin-theme.js.map +1 -1
  140. package/dist/vite/plugin-theme.test.js +22 -1
  141. package/dist/vite/plugin-theme.test.js.map +1 -1
  142. package/lib/Alert-CT_ViLrJ.js +161 -0
  143. package/lib/Alert-CT_ViLrJ.js.map +1 -0
  144. package/lib/CodeBlock-DAKxs_Tu.js +85 -0
  145. package/lib/CodeBlock-DAKxs_Tu.js.map +1 -0
  146. package/lib/Command-CPtGTZAL.js +140 -0
  147. package/lib/Command-CPtGTZAL.js.map +1 -0
  148. package/lib/{Dialog-BxpuVLh9.js → Dialog-DGlrUTCS.js} +4 -4
  149. package/lib/Dialog-DGlrUTCS.js.map +1 -0
  150. package/lib/MdxPage-D-QSUlMf.js +110 -0
  151. package/lib/MdxPage-D-QSUlMf.js.map +1 -0
  152. package/lib/{OasProvider-BC0q5m3u.js → OasProvider-DKB2uJU-.js} +3 -3
  153. package/lib/{OasProvider-BC0q5m3u.js.map → OasProvider-DKB2uJU-.js.map} +1 -1
  154. package/lib/{OperationList-Dpip6ozi.js → OperationList-CccIt45w.js} +579 -567
  155. package/lib/OperationList-CccIt45w.js.map +1 -0
  156. package/lib/Pagination-ClHXydm9.js +36 -0
  157. package/lib/Pagination-ClHXydm9.js.map +1 -0
  158. package/lib/RouteGuard-Bd-ppFbi.js +737 -0
  159. package/lib/RouteGuard-Bd-ppFbi.js.map +1 -0
  160. package/lib/{SchemaList-t4BIfh6Z.js → SchemaList-DY3FBF2U.js} +26 -37
  161. package/lib/SchemaList-DY3FBF2U.js.map +1 -0
  162. package/lib/{SchemaView-CLxthVcA.js → SchemaView-matL2maR.js} +94 -103
  163. package/lib/SchemaView-matL2maR.js.map +1 -0
  164. package/lib/{SignUp-B6w5AwHM.js → SignUp-CfojO4Pb.js} +13 -13
  165. package/lib/{SignUp-B6w5AwHM.js.map → SignUp-CfojO4Pb.js.map} +1 -1
  166. package/lib/{Markdown-BQ8YqLsz.js → Slot-DwZlQ-vX.js} +3347 -3001
  167. package/lib/Slot-DwZlQ-vX.js.map +1 -0
  168. package/lib/{SyntaxHighlight-C5ja40ix.js → SyntaxHighlight-CrjhGEwT.js} +3 -3
  169. package/lib/{SyntaxHighlight-C5ja40ix.js.map → SyntaxHighlight-CrjhGEwT.js.map} +1 -1
  170. package/lib/{Toc-BS0f4GTe.js → Toc-WCmwFkX-.js} +2 -2
  171. package/lib/{Toc-BS0f4GTe.js.map → Toc-WCmwFkX-.js.map} +1 -1
  172. package/lib/{chunk-DQRVZFIR-BblmKnHy.js → chunk-DQRVZFIR-DHK7_Ilc.js} +7 -7
  173. package/lib/{chunk-DQRVZFIR-BblmKnHy.js.map → chunk-DQRVZFIR-DHK7_Ilc.js.map} +1 -1
  174. package/lib/{circular-DfOaDE_x.js → circular-CqHpo7-e.js} +2 -2
  175. package/lib/{circular-DfOaDE_x.js.map → circular-CqHpo7-e.js.map} +1 -1
  176. package/lib/clerk-BDZ31hjU.js +25190 -0
  177. package/lib/clerk-BDZ31hjU.js.map +1 -0
  178. package/lib/{createServer-DjOMygls.js → createServer-ByKo3XCG.js} +4 -4
  179. package/lib/{createServer-DjOMygls.js.map → createServer-ByKo3XCG.js.map} +1 -1
  180. package/lib/{errors-D_5vKvUq.js → errors-BsabiSKg.js} +5 -5
  181. package/lib/{errors-D_5vKvUq.js.map → errors-BsabiSKg.js.map} +1 -1
  182. package/lib/{hook-CHXroBFt.js → hook-Bd0yS8M0.js} +36 -36
  183. package/lib/{hook-CHXroBFt.js.map → hook-Bd0yS8M0.js.map} +1 -1
  184. package/lib/index-BIbCx5Fh.js +3919 -0
  185. package/lib/index-BIbCx5Fh.js.map +1 -0
  186. package/lib/index-CEfpz8vY.js +3458 -0
  187. package/lib/index-CEfpz8vY.js.map +1 -0
  188. package/lib/{index-BvvmIczU.js → index-CcV90rin.js} +2 -2
  189. package/lib/{index-BvvmIczU.js.map → index-CcV90rin.js.map} +1 -1
  190. package/lib/index-ClhS5TxS.js +107 -0
  191. package/lib/index-ClhS5TxS.js.map +1 -0
  192. package/lib/ui/CodeBlock.js +6 -73
  193. package/lib/ui/CodeBlock.js.map +1 -1
  194. package/lib/ui/Command.js +1 -1
  195. package/lib/ui/Dialog.js +1 -1
  196. package/lib/ui/Dialog.js.map +1 -1
  197. package/lib/ui/EmbeddedCodeBlock.js +1 -1
  198. package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  199. package/lib/ui/Select.js +1 -1
  200. package/lib/ui/Select.js.map +1 -1
  201. package/lib/ui/SyntaxHighlight.js +3 -3
  202. package/lib/{useExposedProps-BZQkZneR.js → useExposedProps-BIYjecPD.js} +2 -2
  203. package/lib/{useExposedProps-BZQkZneR.js.map → useExposedProps-BIYjecPD.js.map} +1 -1
  204. package/lib/zudoku.auth-auth0.js +1 -1
  205. package/lib/zudoku.auth-azureb2c.js +2 -2
  206. package/lib/zudoku.auth-clerk.js +3 -3
  207. package/lib/zudoku.auth-openid.js +2 -2
  208. package/lib/zudoku.components.js +33 -3534
  209. package/lib/zudoku.components.js.map +1 -1
  210. package/lib/zudoku.hooks.js +10 -11
  211. package/lib/zudoku.hooks.js.map +1 -1
  212. package/lib/zudoku.plugin-api-catalog.js +6 -6
  213. package/lib/zudoku.plugin-api-keys.js +268 -321
  214. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  215. package/lib/zudoku.plugin-custom-pages.js +8 -20
  216. package/lib/zudoku.plugin-custom-pages.js.map +1 -1
  217. package/lib/zudoku.plugin-markdown.js +4 -5
  218. package/lib/zudoku.plugin-markdown.js.map +1 -1
  219. package/lib/zudoku.plugin-openapi.js +3 -3
  220. package/lib/zudoku.plugin-redirect.js +1 -1
  221. package/lib/zudoku.plugin-search-pagefind.js +201 -111
  222. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  223. package/package.json +5 -4
  224. package/src/lib/components/Autocomplete.tsx +1 -0
  225. package/src/lib/components/ErrorPage.tsx +3 -3
  226. package/src/lib/components/Markdown.tsx +3 -5
  227. package/src/lib/components/NotFoundPage.tsx +3 -3
  228. package/src/lib/components/Pagination.tsx +4 -4
  229. package/src/lib/components/Typography.tsx +14 -0
  230. package/src/lib/components/index.ts +2 -0
  231. package/src/lib/errors/ErrorAlert.tsx +3 -9
  232. package/src/lib/hooks/useHotkey.ts +70 -0
  233. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +5 -9
  234. package/src/lib/plugins/custom-pages/index.tsx +2 -6
  235. package/src/lib/plugins/markdown/MdxPage.tsx +66 -15
  236. package/src/lib/plugins/markdown/index.tsx +10 -2
  237. package/src/lib/plugins/openapi/OperationList.tsx +7 -17
  238. package/src/lib/plugins/openapi/OperationListItem.tsx +2 -2
  239. package/src/lib/plugins/openapi/ParameterListItem.tsx +6 -0
  240. package/src/lib/plugins/openapi/SchemaList.tsx +3 -9
  241. package/src/lib/plugins/openapi/SidecarExamples.tsx +1 -0
  242. package/src/lib/plugins/openapi/playground/BodyPanel.tsx +36 -28
  243. package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +47 -0
  244. package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +7 -3
  245. package/src/lib/plugins/openapi/playground/Headers.tsx +187 -89
  246. package/src/lib/plugins/openapi/playground/IdentityDialog.tsx +3 -2
  247. package/src/lib/plugins/openapi/playground/IdentitySelector.tsx +7 -12
  248. package/src/lib/plugins/openapi/playground/InlineInput.tsx +1 -1
  249. package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +2 -2
  250. package/src/lib/plugins/openapi/playground/PathParams.tsx +3 -4
  251. package/src/lib/plugins/openapi/playground/Playground.tsx +196 -136
  252. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +1 -1
  253. package/src/lib/plugins/openapi/playground/QueryParams.tsx +102 -58
  254. package/src/lib/plugins/openapi/playground/Spinner.tsx +87 -0
  255. package/src/lib/plugins/openapi/playground/request-panel/UrlPath.tsx +31 -0
  256. package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +25 -0
  257. package/src/lib/plugins/openapi/playground/result-panel/Highlight.tsx +26 -0
  258. package/src/lib/plugins/openapi/playground/result-panel/ResponseStatusBar.tsx +104 -0
  259. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +98 -97
  260. package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +62 -92
  261. package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +3 -3
  262. package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +2 -3
  263. package/src/lib/plugins/openapi/schema/SchemaView.tsx +5 -10
  264. package/src/lib/plugins/openapi/schema/utils.ts +3 -2
  265. package/src/lib/ui/CodeBlock.tsx +5 -6
  266. package/src/lib/ui/Dialog.tsx +1 -1
  267. package/src/lib/ui/EmbeddedCodeBlock.tsx +1 -1
  268. package/src/lib/ui/Select.tsx +1 -1
  269. package/src/lib/util/os.ts +18 -0
  270. package/src/lib/util/useCopyToClipboard.ts +17 -0
  271. package/dist/flat-config.d.ts +0 -320
  272. package/dist/lib/plugins/custom-pages/CustomPage.d.ts +0 -2
  273. package/dist/lib/plugins/custom-pages/CustomPage.js +0 -11
  274. package/dist/lib/plugins/custom-pages/CustomPage.js.map +0 -1
  275. package/dist/lib/plugins/openapi/playground/UrlDisplay.d.ts +0 -4
  276. package/dist/lib/plugins/openapi/playground/UrlDisplay.js +0 -22
  277. package/dist/lib/plugins/openapi/playground/UrlDisplay.js.map +0 -1
  278. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.d.ts +0 -7
  279. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js +0 -11
  280. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js.map +0 -1
  281. package/lib/Callout-CoVxYafP.js +0 -231
  282. package/lib/Callout-CoVxYafP.js.map +0 -1
  283. package/lib/CategoryHeading-Cu2RwgjC.js +0 -10
  284. package/lib/CategoryHeading-Cu2RwgjC.js.map +0 -1
  285. package/lib/Dialog-BxpuVLh9.js.map +0 -1
  286. package/lib/Markdown-BQ8YqLsz.js.map +0 -1
  287. package/lib/MdxPage-DJvKmI-r.js +0 -84
  288. package/lib/MdxPage-DJvKmI-r.js.map +0 -1
  289. package/lib/OperationList-Dpip6ozi.js.map +0 -1
  290. package/lib/Pagination-CCxhL836.js +0 -36
  291. package/lib/Pagination-CCxhL836.js.map +0 -1
  292. package/lib/RouteGuard-gV7nvzi7.js +0 -55
  293. package/lib/RouteGuard-gV7nvzi7.js.map +0 -1
  294. package/lib/SchemaList-t4BIfh6Z.js.map +0 -1
  295. package/lib/SchemaView-CLxthVcA.js.map +0 -1
  296. package/lib/Slot-CSEIvwwO.js +0 -161
  297. package/lib/Slot-CSEIvwwO.js.map +0 -1
  298. package/lib/clerk-yAKDC3Qz.js +0 -24812
  299. package/lib/clerk-yAKDC3Qz.js.map +0 -1
  300. package/lib/index--oeBayMa.js +0 -86
  301. package/lib/index--oeBayMa.js.map +0 -1
  302. package/lib/index-Bn6Lc9tq.js +0 -9
  303. package/lib/index-Bn6Lc9tq.js.map +0 -1
  304. package/lib/index-DW2qmCJa.js +0 -3227
  305. package/lib/index-DW2qmCJa.js.map +0 -1
  306. package/lib/index-QzXzw_ra.js +0 -24
  307. package/lib/index-QzXzw_ra.js.map +0 -1
  308. package/lib/index.esm-BFcSKCe-.js +0 -683
  309. package/lib/index.esm-BFcSKCe-.js.map +0 -1
  310. package/lib/mutation-BpcyTgWI.js +0 -196
  311. package/lib/mutation-BpcyTgWI.js.map +0 -1
  312. package/lib/objectEntries-yMIkr2mI.js +0 -5
  313. package/lib/objectEntries-yMIkr2mI.js.map +0 -1
  314. package/lib/react-nprogress.esm-C2MPXjiJ.js +0 -389
  315. package/lib/react-nprogress.esm-C2MPXjiJ.js.map +0 -1
  316. package/lib/useLatest-hmRS46UF.js +0 -11
  317. package/lib/useLatest-hmRS46UF.js.map +0 -1
  318. package/lib/useMutation-N4ockVKi.js +0 -97
  319. package/lib/useMutation-N4ockVKi.js.map +0 -1
  320. package/src/lib/plugins/custom-pages/CustomPage.tsx +0 -18
  321. package/src/lib/plugins/openapi/playground/UrlDisplay.tsx +0 -32
  322. package/src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx +0 -73
@@ -0,0 +1,87 @@
1
+ import { motion } from "motion/react";
2
+
3
+ const ball = {
4
+ width: 5,
5
+ height: 5,
6
+ borderRadius: "50%",
7
+ };
8
+
9
+ const Spinner = () => {
10
+ return (
11
+ <motion.div
12
+ className="flex items-center gap-1"
13
+ initial="hidden"
14
+ animate="visible"
15
+ variants={{
16
+ visible: {
17
+ transition: {
18
+ staggerChildren: 0.2,
19
+ },
20
+ },
21
+ }}
22
+ >
23
+ <motion.div
24
+ className="bg-white/60"
25
+ variants={{
26
+ hidden: { opacity: 0, y: 3 },
27
+ visible: {
28
+ opacity: 1,
29
+ y: 0,
30
+ transition: {
31
+ y: {
32
+ type: "spring",
33
+ stiffness: 300,
34
+ damping: 10,
35
+ repeat: Infinity,
36
+ repeatType: "reverse",
37
+ },
38
+ },
39
+ },
40
+ }}
41
+ style={ball}
42
+ />
43
+ <motion.div
44
+ className="bg-white/60"
45
+ variants={{
46
+ hidden: { opacity: 0, y: 3 },
47
+ visible: {
48
+ opacity: 1,
49
+ y: 0,
50
+ transition: {
51
+ y: {
52
+ type: "spring",
53
+ stiffness: 300,
54
+ damping: 10,
55
+ repeat: Infinity,
56
+ repeatType: "reverse",
57
+ },
58
+ },
59
+ },
60
+ }}
61
+ style={ball}
62
+ />
63
+ <motion.div
64
+ className="bg-white/60"
65
+ variants={{
66
+ hidden: { opacity: 0, y: 3 },
67
+ visible: {
68
+ opacity: 1,
69
+ y: 0,
70
+ transition: {
71
+ y: {
72
+ type: "spring",
73
+ stiffness: 300,
74
+ damping: 10,
75
+ repeat: Infinity,
76
+ repeatType: "reverse",
77
+ },
78
+ },
79
+ },
80
+ }}
81
+ style={ball}
82
+ />
83
+ </motion.div>
84
+ );
85
+ };
86
+
87
+ export default Spinner;
@@ -0,0 +1,31 @@
1
+ import { useFormContext } from "react-hook-form";
2
+ import { PathRenderer } from "../../../../components/PathRenderer.js";
3
+ import { ColorizedParam } from "../../ColorizedParam.js";
4
+ import { type PlaygroundForm } from "../Playground.js";
5
+
6
+ export const UrlPath = ({ url }: { url: string }) => {
7
+ const { watch, setFocus } = useFormContext<PlaygroundForm>();
8
+ const [pathParams] = watch(["pathParams"]);
9
+
10
+ return (
11
+ <PathRenderer
12
+ path={url}
13
+ renderParam={({ name, originalValue, index }) => {
14
+ const formValue = pathParams.find(
15
+ (param) => param.name === name,
16
+ )?.value;
17
+
18
+ return (
19
+ <ColorizedParam
20
+ name={name}
21
+ backgroundOpacity="0"
22
+ slug={name}
23
+ onClick={() => setFocus(`pathParams.${index}.value`)}
24
+ >
25
+ {formValue || originalValue}
26
+ </ColorizedParam>
27
+ );
28
+ }}
29
+ />
30
+ );
31
+ };
@@ -0,0 +1,25 @@
1
+ import { Fragment } from "react";
2
+ import { useFormContext } from "react-hook-form";
3
+ import { type PlaygroundForm } from "../Playground.js";
4
+
5
+ export const UrlQueryParams = () => {
6
+ const { watch } = useFormContext<PlaygroundForm>();
7
+ const queryParams = watch("queryParams");
8
+
9
+ const urlQueryParams = queryParams
10
+ .filter((p) => p.active && p.name)
11
+ .map((p, i, arr) => (
12
+ <Fragment key={p.name}>
13
+ {p.name}={encodeURIComponent(p.value).replaceAll("%20", "+")}
14
+ {i < arr.length - 1 && "&"}
15
+ <wbr />
16
+ </Fragment>
17
+ ));
18
+
19
+ return (
20
+ <>
21
+ {urlQueryParams.length > 0 ? `?` : ""}
22
+ {urlQueryParams}
23
+ </>
24
+ );
25
+ };
@@ -0,0 +1,26 @@
1
+ import { useZudoku } from "../../../../components/context/ZudokuContext.js";
2
+ import { highlight } from "../../../../shiki.js";
3
+ import invariant from "../../../../util/invariant.js";
4
+
5
+ export const Highlight = ({
6
+ code,
7
+ language,
8
+ children,
9
+ }:
10
+ | { code?: string; children?: never; language?: string }
11
+ | { code?: never; children: string; language: string }) => {
12
+ const { syntaxHighlighting } = useZudoku().options;
13
+
14
+ invariant(syntaxHighlighting?.highlighter, "Highlighter not found");
15
+
16
+ const highlightedCode = highlight(
17
+ syntaxHighlighting.highlighter,
18
+ code ?? children ?? "",
19
+ language,
20
+ syntaxHighlighting.themes,
21
+ );
22
+
23
+ return highlightedCode;
24
+ };
25
+
26
+ Highlight.displayName = "Highlight";
@@ -0,0 +1,104 @@
1
+ import { useCallback, useLayoutEffect, useRef } from "react";
2
+ import { humanFileSize } from "../../../../util/humanFileSize.js";
3
+
4
+ const ResponseCodeCircle = ({ status }: { status?: number }) => {
5
+ if (!status) return <div className="w-2 h-2 rounded-full bg-gray-500" />;
6
+
7
+ switch (Number(status.toString().slice(0, 1))) {
8
+ case 2:
9
+ return <div className="w-2 h-2 rounded-full bg-green-500" />;
10
+ case 4:
11
+ return <div className="w-2 h-2 rounded-full bg-yellow-400" />;
12
+ case 5:
13
+ return <div className="w-2 h-2 rounded-full bg-red-500" />;
14
+ default:
15
+ return <div className="w-2 h-2 rounded-full bg-gray-500" />;
16
+ }
17
+ };
18
+
19
+ const RealTimeCounter = () => {
20
+ const spanRef = useRef<HTMLSpanElement>(null);
21
+ const textRef = useRef<Text | null>(null);
22
+ const startTimeRef = useRef<number>(Date.now());
23
+ const animationFrameRef = useRef<number>(null);
24
+
25
+ const updateTime = useCallback(() => {
26
+ if (textRef.current) {
27
+ const elapsed = Date.now() - startTimeRef.current;
28
+ textRef.current.nodeValue = elapsed.toFixed();
29
+ }
30
+ animationFrameRef.current = requestAnimationFrame(updateTime);
31
+ }, []);
32
+
33
+ useLayoutEffect(() => {
34
+ // Create a text node and attach it to the span
35
+ const textNode = document.createTextNode("0");
36
+ const currentSpanRef = spanRef.current!;
37
+
38
+ currentSpanRef.appendChild(textNode);
39
+ textRef.current = textNode;
40
+
41
+ // Start the real-time counter
42
+ startTimeRef.current = Date.now();
43
+ animationFrameRef.current = requestAnimationFrame(updateTime);
44
+
45
+ return () => {
46
+ if (animationFrameRef.current) {
47
+ cancelAnimationFrame(animationFrameRef.current);
48
+ }
49
+ if (textRef.current && currentSpanRef.contains(textNode)) {
50
+ currentSpanRef.removeChild(textNode);
51
+ }
52
+ };
53
+ }, [updateTime]);
54
+
55
+ return <span className="inline-block text-end w-[3ch]" ref={spanRef} />;
56
+ };
57
+
58
+ export const ResponseStatusBar = ({
59
+ status,
60
+ time,
61
+ size,
62
+ }: {
63
+ status?: number;
64
+ time?: number;
65
+ size?: number;
66
+ }) => {
67
+ const statusCodeMap: Record<number, string> = {
68
+ 200: "OK",
69
+ 201: "Created",
70
+ 202: "Accepted",
71
+ 204: "No Content",
72
+ 400: "Bad Request",
73
+ 401: "Unauthorized",
74
+ 403: "Forbidden",
75
+ 404: "Not Found",
76
+ 405: "Method Not Allowed",
77
+ 500: "Internal Server Error",
78
+ };
79
+
80
+ return (
81
+ <div className="flex h-10 text-xs gap-4 px-4 items-center justify-between font-mono border-b">
82
+ <div className="flex items-center gap-2">
83
+ <ResponseCodeCircle status={status} /> {status ?? "Sending Request..."}
84
+ {status ? ` ${statusCodeMap[status]}` : ""}
85
+ </div>
86
+ <div className="flex gap-2">
87
+ <div>
88
+ <span className="text-muted-foreground">Size</span>{" "}
89
+ <span className="inline-block text-end w-[5ch]">
90
+ {size ? humanFileSize(size) : "- B"}
91
+ </span>
92
+ </div>
93
+
94
+ <div>
95
+ <span className="text-muted-foreground">Time</span>{" "}
96
+ {time !== undefined ? `${time.toFixed(0)}` : <RealTimeCounter />}
97
+ ms
98
+ </div>
99
+ </div>
100
+ </div>
101
+ );
102
+ };
103
+
104
+ export default ResponseStatusBar;
@@ -1,8 +1,12 @@
1
1
  import { useQuery } from "@tanstack/react-query";
2
- import { ChevronRightIcon, DownloadIcon } from "lucide-react";
3
- import { Fragment, useState } from "react";
2
+ import {
3
+ CornerDownLeftIcon,
4
+ CornerDownRightIcon,
5
+ DownloadIcon,
6
+ PlusCircleIcon,
7
+ } from "lucide-react";
8
+ import { useState } from "react";
4
9
  import { Button } from "zudoku/ui/Button.js";
5
- import { Callout } from "zudoku/ui/Callout.js";
6
10
  import {
7
11
  Collapsible,
8
12
  CollapsibleContent,
@@ -15,23 +19,13 @@ import {
15
19
  SelectTrigger,
16
20
  SelectValue,
17
21
  } from "zudoku/ui/Select.js";
18
- import { Card } from "../../../../ui/Card.js";
19
- import { SyntaxHighlight } from "../../../../ui/SyntaxHighlight.js";
20
22
  import { humanFileSize } from "../../../../util/humanFileSize.js";
23
+ import {
24
+ CollapsibleHeader,
25
+ CollapsibleHeaderTrigger,
26
+ } from "../CollapsibleHeader.js";
21
27
  import { convertToTypes } from "./convertToTypes.js";
22
-
23
- const statusCodeMap: Record<number, string> = {
24
- 200: "OK",
25
- 201: "Created",
26
- 202: "Accepted",
27
- 204: "No Content",
28
- 400: "Bad Request",
29
- 401: "Unauthorized",
30
- 403: "Forbidden",
31
- 404: "Not Found",
32
- 405: "Method Not Allowed",
33
- 500: "Internal Server Error",
34
- };
28
+ import { Highlight } from "./Highlight.js";
35
29
 
36
30
  const mimeTypeToLanguage = (mimeType: string) => {
37
31
  const mimeTypeMapping = {
@@ -51,7 +45,7 @@ const mimeTypeToLanguage = (mimeType: string) => {
51
45
 
52
46
  const detectLanguage = (headers: Array<[string, string]>) => {
53
47
  const contentType =
54
- headers.find(([key, value]) => key === "Content-Type")?.[1] || "";
48
+ headers.find(([key]) => key.toLowerCase() === "content-type")?.[1] || "";
55
49
  return mimeTypeToLanguage(contentType);
56
50
  };
57
51
 
@@ -86,25 +80,26 @@ const sortHeadersByRelevance = (
86
80
  });
87
81
  };
88
82
 
89
- const SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD = 64_000;
83
+ const MAX_HEADERS_TO_SHOW = 3;
90
84
 
91
85
  export const ResponseTab = ({
92
86
  body = "",
93
87
  headers,
94
- status,
95
- time,
88
+ request,
96
89
  size,
97
- url,
98
90
  isBinary = false,
99
91
  fileName,
100
92
  blob,
101
93
  }: {
102
94
  body?: string;
103
95
  headers: Array<[string, string]>;
104
- status: number;
105
- time: number;
96
+ request: {
97
+ method: string;
98
+ url: string;
99
+ headers: Array<[string, string]>;
100
+ body?: string;
101
+ };
106
102
  size: number;
107
- url: string;
108
103
  isBinary?: boolean;
109
104
  fileName?: string;
110
105
  blob?: Blob;
@@ -138,36 +133,66 @@ export const ResponseTab = ({
138
133
  };
139
134
 
140
135
  const sortedHeaders = sortHeadersByRelevance([...headers]);
141
- const shouldDisableHighlighting = size > SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD;
136
+
137
+ const headerStyle =
138
+ "grid-cols-subgrid grid border-b col-span-full px-4 py-1.5 font-mono text-xs";
142
139
 
143
140
  return (
144
- <div className="flex flex-col gap-2 h-full overflow-auto max-h-[calc(100vh-220px)] ">
141
+ <>
142
+ <Collapsible defaultOpen>
143
+ <CollapsibleHeaderTrigger>
144
+ <CornerDownLeftIcon size={16} />
145
+ <CollapsibleHeader className="col-span-2">
146
+ Header Request
147
+ </CollapsibleHeader>
148
+ </CollapsibleHeaderTrigger>
149
+ <CollapsibleContent>
150
+ <div className="grid grid-cols-2 gap-x-6 text-sm">
151
+ {request.headers
152
+ .slice(0, MAX_HEADERS_TO_SHOW)
153
+ .map(([key, value]) => (
154
+ <div key={key} className={headerStyle}>
155
+ <div className="">{key}</div>
156
+ <div className="break-all">{value}</div>
157
+ </div>
158
+ ))}
159
+ </div>
160
+ </CollapsibleContent>
161
+ </Collapsible>
162
+
145
163
  <Collapsible defaultOpen>
146
- <CollapsibleTrigger className="flex items-center gap-2 hover:text-primary group">
147
- <ChevronRightIcon className="h-4 w-4 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]" />
148
- <span className="font-semibold">Headers</span>
149
- </CollapsibleTrigger>
164
+ <CollapsibleHeaderTrigger>
165
+ <CornerDownRightIcon size={16} />
166
+ <CollapsibleHeader className="col-span-2">
167
+ Header Response
168
+ </CollapsibleHeader>
169
+ </CollapsibleHeaderTrigger>
150
170
  <CollapsibleContent>
151
- <div className="grid grid-cols-[auto,1fr] gap-x-8 gap-y-1 ps-1.5 pt-2 font-mono text-xs">
152
- {sortedHeaders.slice(0, 5).map(([key, value]) => (
153
- <Fragment key={key}>
154
- <div className="text-primary whitespace-pre">{key}</div>
155
- <div className="break-all">{value}</div>
156
- </Fragment>
171
+ <div className="grid grid-cols-2 gap-x-6 text-sm">
172
+ {sortedHeaders.slice(0, MAX_HEADERS_TO_SHOW).map(([key, value]) => (
173
+ <div key={key} className={headerStyle}>
174
+ <div className="">{key}</div>
175
+ <div className="break-all line-clamp-1">{value}</div>
176
+ </div>
157
177
  ))}
158
- {sortedHeaders.length > 5 && (
159
- <Collapsible className="col-span-full grid-cols-subgrid grid">
160
- <CollapsibleTrigger className="col-span-2 text-xs text-muted-foreground hover:text-primary flex items-center gap-1 py-1">
161
- <ChevronRightIcon className="h-3 w-3 transition-transform duration-200 group-data-[state=open]:rotate-[90deg]" />
162
- Show {sortedHeaders.length - 5} more headers
178
+ {sortedHeaders.length > MAX_HEADERS_TO_SHOW && (
179
+ <Collapsible className="col-span-full grid-cols-subgrid grid group">
180
+ <CollapsibleTrigger className="data-[state=open]:hidden justify-center col-span-2 text-xs text-muted-foreground hover:text-primary border-b h-8 flex items-center gap-2">
181
+ <span>
182
+ Show {sortedHeaders.length - MAX_HEADERS_TO_SHOW} more
183
+ headers
184
+ </span>
185
+ <PlusCircleIcon size={12} className="text-muted-foreground" />
163
186
  </CollapsibleTrigger>
164
- <CollapsibleContent className="col-span-full grid grid-cols-subgrid gap-x-8 gap-y-1 ">
165
- {sortedHeaders.slice(5).map(([key, value]) => (
166
- <Fragment key={key}>
167
- <div className="text-primary whitespace-pre">{key}</div>
168
- <div className="break-all">{value}</div>
169
- </Fragment>
170
- ))}
187
+ <CollapsibleContent className="col-span-full grid grid-cols-subgrid">
188
+ {sortedHeaders
189
+ .slice(MAX_HEADERS_TO_SHOW)
190
+ .map(([key, value]) => (
191
+ <div key={key} className={headerStyle}>
192
+ <div className="">{key}</div>
193
+ <div className="break-all ">{value}</div>
194
+ </div>
195
+ ))}
171
196
  </CollapsibleContent>
172
197
  </Collapsible>
173
198
  )}
@@ -175,7 +200,26 @@ export const ResponseTab = ({
175
200
  </CollapsibleContent>
176
201
  </Collapsible>
177
202
 
178
- <Card className="shadow-none">
203
+ <div className="flex gap-2 justify-between items-center border-b h-10">
204
+ {jsonContent && !isBinary && (
205
+ <div className="px-2">
206
+ <Select
207
+ value={view}
208
+ onValueChange={(value) => setView(value as "formatted" | "raw")}
209
+ >
210
+ <SelectTrigger className="min-w-32 border-none h-8">
211
+ <SelectValue placeholder="View" />
212
+ </SelectTrigger>
213
+ <SelectContent>
214
+ <SelectItem value="formatted">Formatted</SelectItem>
215
+ <SelectItem value="raw">Raw</SelectItem>
216
+ <SelectItem value="types">Types</SelectItem>
217
+ </SelectContent>
218
+ </Select>
219
+ </div>
220
+ )}
221
+ </div>
222
+ <div>
179
223
  {isBinary ? (
180
224
  <div className="p-4 text-center">
181
225
  <div className="flex flex-col items-center gap-4">
@@ -195,14 +239,8 @@ export const ResponseTab = ({
195
239
  </div>
196
240
  </div>
197
241
  ) : (
198
- <>
199
- {shouldDisableHighlighting && (
200
- <Callout type="info" className="my-0 p-2">
201
- Code highlight is disabled for responses larger than{" "}
202
- {humanFileSize(SYNTAX_HIGHLIGHT_MAX_SIZE_THRESHOLD)}
203
- </Callout>
204
- )}
205
- <SyntaxHighlight
242
+ <div className="overflow-auto max-w-full p-4 text-xs max-h-[calc(83.333vh-180px)]">
243
+ <Highlight
206
244
  language={
207
245
  view === "types"
208
246
  ? "typescript"
@@ -212,10 +250,6 @@ export const ResponseTab = ({
212
250
  : detectedLanguage
213
251
  : "json"
214
252
  }
215
- showCopy="always"
216
- disabled={shouldDisableHighlighting}
217
- noBackground
218
- className="overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]"
219
253
  code={
220
254
  (view === "raw"
221
255
  ? body
@@ -224,42 +258,9 @@ export const ResponseTab = ({
224
258
  : beautifiedBody) ?? ""
225
259
  }
226
260
  />
227
- </>
228
- )}
229
- </Card>
230
- <div className="flex gap-2 justify-between items-center">
231
- <div className="flex text-xs gap-5 border bg-muted rounded-md p-2 items-center h-8 font-mono">
232
- <div>
233
- <span className="text-muted-foreground">Status</span> {status}{" "}
234
- {statusCodeMap[status] ?? ""}
235
- </div>
236
- <div>
237
- <span className="text-muted-foreground">Time</span>{" "}
238
- {time.toFixed(0)}ms
239
- </div>
240
- <div>
241
- <span className="text-muted-foreground">Size</span>{" "}
242
- {humanFileSize(size)}
243
- </div>
244
- </div>
245
- {jsonContent && !isBinary && (
246
- <div>
247
- <Select
248
- value={view}
249
- onValueChange={(value) => setView(value as "formatted" | "raw")}
250
- >
251
- <SelectTrigger className="min-w-32">
252
- <SelectValue placeholder="View" />
253
- </SelectTrigger>
254
- <SelectContent>
255
- <SelectItem value="formatted">Formatted</SelectItem>
256
- <SelectItem value="raw">Raw</SelectItem>
257
- <SelectItem value="types">Types</SelectItem>
258
- </SelectContent>
259
- </Select>
260
261
  </div>
261
262
  )}
262
263
  </div>
263
- </div>
264
+ </>
264
265
  );
265
266
  };