zudoku 0.25.2 → 0.26.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 (264) hide show
  1. package/dist/app/demo.js +0 -1
  2. package/dist/app/demo.js.map +1 -1
  3. package/dist/app/standalone.js +0 -1
  4. package/dist/app/standalone.js.map +1 -1
  5. package/dist/cli/dev/handler.js +2 -2
  6. package/dist/cli/dev/handler.js.map +1 -1
  7. package/dist/config/validators/InputSidebarSchema.d.ts +2 -2
  8. package/dist/config/validators/common.d.ts +28 -28
  9. package/dist/config/validators/icon-types.d.ts +1 -1
  10. package/dist/config/validators/validate.d.ts +16 -16
  11. package/dist/lib/components/navigation/SidebarCategory.js +1 -1
  12. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  13. package/dist/lib/oas/graphql/index.d.ts +3 -0
  14. package/dist/lib/oas/graphql/index.js +12 -13
  15. package/dist/lib/oas/graphql/index.js.map +1 -1
  16. package/dist/lib/plugins/openapi/ColorizedParam.d.ts +10 -2
  17. package/dist/lib/plugins/openapi/ColorizedParam.js +16 -7
  18. package/dist/lib/plugins/openapi/ColorizedParam.js.map +1 -1
  19. package/dist/lib/plugins/openapi/OperationList.js +3 -0
  20. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  21. package/dist/lib/plugins/openapi/ParameterListItem.js +3 -2
  22. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  23. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js +2 -0
  24. package/dist/lib/plugins/openapi/PlaygroundDialogWrapper.js.map +1 -1
  25. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +3 -2
  26. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +3 -6
  27. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  28. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +2 -6
  29. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  30. package/dist/lib/plugins/openapi/Sidecar.js +9 -6
  31. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  32. package/dist/lib/plugins/openapi/SidecarBox.js +1 -1
  33. package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
  34. package/dist/lib/plugins/openapi/{ExampleDisplay.d.ts → SidecarExamples.d.ts} +3 -6
  35. package/dist/lib/plugins/openapi/SidecarExamples.js +65 -0
  36. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -0
  37. package/dist/lib/plugins/openapi/client/GraphQLClient.d.ts +1 -1
  38. package/dist/lib/plugins/openapi/client/GraphQLClient.js +22 -93
  39. package/dist/lib/plugins/openapi/client/GraphQLClient.js.map +1 -1
  40. package/dist/lib/plugins/openapi/client/createServer.d.ts +2 -1
  41. package/dist/lib/plugins/openapi/client/createServer.js +5 -2
  42. package/dist/lib/plugins/openapi/client/createServer.js.map +1 -1
  43. package/dist/lib/plugins/openapi/client/useCreateQuery.d.ts +1 -1
  44. package/dist/lib/plugins/openapi/client/useCreateQuery.js +2 -13
  45. package/dist/lib/plugins/openapi/client/useCreateQuery.js.map +1 -1
  46. package/dist/lib/plugins/openapi/index.d.ts +2 -1
  47. package/dist/lib/plugins/openapi/index.js.map +1 -1
  48. package/dist/lib/plugins/openapi/playground/EnumSelector.d.ts +8 -0
  49. package/dist/lib/plugins/openapi/playground/EnumSelector.js +21 -0
  50. package/dist/lib/plugins/openapi/playground/EnumSelector.js.map +1 -0
  51. package/dist/lib/plugins/openapi/playground/PathParams.js +9 -4
  52. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  53. package/dist/lib/plugins/openapi/playground/Playground.d.ts +3 -0
  54. package/dist/lib/plugins/openapi/playground/Playground.js +5 -2
  55. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  56. package/dist/lib/plugins/openapi/playground/QueryParams.js +23 -8
  57. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  58. package/dist/lib/plugins/openapi/schema/SchemaComponents.js +2 -1
  59. package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +1 -1
  60. package/dist/lib/plugins/openapi/util/generateSchemaExample.js +19 -11
  61. package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
  62. package/dist/lib/ui/Badge.d.ts +1 -1
  63. package/dist/lib/ui/Badge.js +2 -1
  64. package/dist/lib/ui/Badge.js.map +1 -1
  65. package/dist/lib/ui/Button.d.ts +1 -1
  66. package/dist/lib/ui/Checkbox.d.ts +8 -2
  67. package/dist/lib/ui/Checkbox.js +13 -1
  68. package/dist/lib/ui/Checkbox.js.map +1 -1
  69. package/dist/lib/util/traverse.d.ts +8 -1
  70. package/dist/lib/util/traverse.js +7 -3
  71. package/dist/lib/util/traverse.js.map +1 -1
  72. package/dist/vite/api/schema-codegen.d.ts +12 -0
  73. package/dist/vite/api/schema-codegen.js +62 -0
  74. package/dist/vite/api/schema-codegen.js.map +1 -0
  75. package/dist/vite/api/schema-codegen.test.d.ts +1 -0
  76. package/dist/vite/api/schema-codegen.test.js +247 -0
  77. package/dist/vite/api/schema-codegen.test.js.map +1 -0
  78. package/dist/vite/config.js +0 -7
  79. package/dist/vite/config.js.map +1 -1
  80. package/dist/vite/config.test.js +5 -1
  81. package/dist/vite/config.test.js.map +1 -1
  82. package/dist/vite/plugin-api.js +110 -82
  83. package/dist/vite/plugin-api.js.map +1 -1
  84. package/dist/vite/plugin-component.js +0 -1
  85. package/dist/vite/plugin-component.js.map +1 -1
  86. package/lib/{AnchorLink-DFZZbmvr.js → AnchorLink-_Vu02ceN.js} +3 -3
  87. package/lib/{AnchorLink-DFZZbmvr.js.map → AnchorLink-_Vu02ceN.js.map} +1 -1
  88. package/lib/{AuthenticationPlugin-D7G3me8L.js → AuthenticationPlugin-DNXBcsVN.js} +4 -4
  89. package/lib/{AuthenticationPlugin-D7G3me8L.js.map → AuthenticationPlugin-DNXBcsVN.js.map} +1 -1
  90. package/lib/{Button-DeAoTouo.js → Button-oroWHXAy.js} +3 -3
  91. package/lib/{Button-DeAoTouo.js.map → Button-oroWHXAy.js.map} +1 -1
  92. package/lib/{CategoryHeading-CBconmtI.js → CategoryHeading-MYL1u_6K.js} +3 -3
  93. package/lib/{CategoryHeading-CBconmtI.js.map → CategoryHeading-MYL1u_6K.js.map} +1 -1
  94. package/lib/Command-D5DE0DD7.js +611 -0
  95. package/lib/Command-D5DE0DD7.js.map +1 -0
  96. package/lib/{Markdown-CZDLNOFc.js → Markdown-BrfrjEk_.js} +1041 -1041
  97. package/lib/{Markdown-CZDLNOFc.js.map → Markdown-BrfrjEk_.js.map} +1 -1
  98. package/lib/{MdxPage-DKMbBROv.js → MdxPage-LNZLj_A5.js} +24 -24
  99. package/lib/{MdxPage-DKMbBROv.js.map → MdxPage-LNZLj_A5.js.map} +1 -1
  100. package/lib/{OperationList-BLdHAQ39.js → OperationList-PCwzTp1r.js} +1899 -1877
  101. package/lib/OperationList-PCwzTp1r.js.map +1 -0
  102. package/lib/{Route-DYwKZ_c_.js → Route-Pzk6qwIk.js} +5 -5
  103. package/lib/{Route-DYwKZ_c_.js.map → Route-Pzk6qwIk.js.map} +1 -1
  104. package/lib/{Select-B_IxRUUC.js → Select-DkOpAG0c.js} +36 -36
  105. package/lib/{Select-B_IxRUUC.js.map → Select-DkOpAG0c.js.map} +1 -1
  106. package/lib/{SlotletProvider-pfc9oejW.js → SlotletProvider-DPbx9KdU.js} +53 -53
  107. package/lib/{SlotletProvider-pfc9oejW.js.map → SlotletProvider-DPbx9KdU.js.map} +1 -1
  108. package/lib/{Spinner-DuxJLLNE.js → Spinner-C5gHXrVz.js} +2 -2
  109. package/lib/{Spinner-DuxJLLNE.js.map → Spinner-C5gHXrVz.js.map} +1 -1
  110. package/lib/{SyntaxHighlight-Bz-lOJtH.js → SyntaxHighlight-CJCSPG1F.js} +297 -301
  111. package/lib/{SyntaxHighlight-Bz-lOJtH.js.map → SyntaxHighlight-CJCSPG1F.js.map} +1 -1
  112. package/lib/{ZudokuContext-hmLMUdf2.js → ZudokuContext-D3ayHjP-.js} +357 -356
  113. package/lib/ZudokuContext-D3ayHjP-.js.map +1 -0
  114. package/lib/{chunk-D52XG6IA-Dl7HLe6j.js → chunk-SYFQ2XB5-KWlHsT7t.js} +407 -410
  115. package/lib/chunk-SYFQ2XB5-KWlHsT7t.js.map +1 -0
  116. package/lib/context-rwLGh-6_.js +22 -0
  117. package/lib/{context-h_UkBLvr.js.map → context-rwLGh-6_.js.map} +1 -1
  118. package/lib/{createServer-Bf5_6o6G.js → createServer-BcaswoFO.js} +4363 -5302
  119. package/lib/createServer-BcaswoFO.js.map +1 -0
  120. package/lib/{hook-CHq7pFyz.js → hook-DUyACbIK.js} +17 -17
  121. package/lib/{hook-CHq7pFyz.js.map → hook-DUyACbIK.js.map} +1 -1
  122. package/lib/index-CaILD1AV.js +1292 -0
  123. package/lib/index-CaILD1AV.js.map +1 -0
  124. package/lib/index-Djenk2Hj.js +36 -0
  125. package/lib/{index-CPNSgwSb.js.map → index-Djenk2Hj.js.map} +1 -1
  126. package/lib/{index-CBXSgjaE.js → index-Dl3Yl0yb.js} +65 -69
  127. package/lib/index-Dl3Yl0yb.js.map +1 -0
  128. package/lib/index-TaRXY2w1.js +43 -0
  129. package/lib/index-TaRXY2w1.js.map +1 -0
  130. package/lib/{index.esm-BSV1C092.js → index.esm-9-TF9KQB.js} +52 -52
  131. package/lib/{index.esm-BSV1C092.js.map → index.esm-9-TF9KQB.js.map} +1 -1
  132. package/lib/index.esm-CrSoEshU.js +1207 -0
  133. package/lib/index.esm-CrSoEshU.js.map +1 -0
  134. package/lib/{jsx-runtime-Dx-03ztt.js → jsx-runtime-Bdg6XQ1m.js} +135 -135
  135. package/lib/{jsx-runtime-Dx-03ztt.js.map → jsx-runtime-Bdg6XQ1m.js.map} +1 -1
  136. package/lib/post-processors/removeExtensions.js +3 -3
  137. package/lib/post-processors/traverse.js +11 -8
  138. package/lib/post-processors/traverse.js.map +1 -1
  139. package/lib/{prism-bash.min-DadFsM4Z.js → prism-bash.min-HHIMdNJ_.js} +4 -4
  140. package/lib/{prism-bash.min-DadFsM4Z.js.map → prism-bash.min-HHIMdNJ_.js.map} +1 -1
  141. package/lib/{prism-csharp.min-DUwvItt4.js → prism-csharp.min-bQAo2pmx.js} +33 -33
  142. package/lib/{prism-csharp.min-DUwvItt4.js.map → prism-csharp.min-bQAo2pmx.js.map} +1 -1
  143. package/lib/{prism-java.min-BtgBR4yd.js → prism-java.min-BpvsOuIa.js} +12 -12
  144. package/lib/{prism-java.min-BtgBR4yd.js.map → prism-java.min-BpvsOuIa.js.map} +1 -1
  145. package/lib/{prism-markdown.min-F3U-vPBi.js → prism-markdown.min-C0Qn0m-5.js} +30 -30
  146. package/lib/{prism-markdown.min-F3U-vPBi.js.map → prism-markdown.min-C0Qn0m-5.js.map} +1 -1
  147. package/lib/{prism-ruby.min-DeDXCp1r.js → prism-ruby.min-Dx9KO9ds.js} +16 -16
  148. package/lib/{prism-ruby.min-DeDXCp1r.js.map → prism-ruby.min-Dx9KO9ds.js.map} +1 -1
  149. package/lib/prism-typescript.min-CD7H2IYQ.js.map +1 -1
  150. package/lib/state-mM7uaXTW.js +202 -0
  151. package/lib/state-mM7uaXTW.js.map +1 -0
  152. package/lib/ui/Accordion.js +1 -1
  153. package/lib/ui/ActionButton.js +3 -3
  154. package/lib/ui/Alert.js +2 -2
  155. package/lib/ui/AlertDialog.js +1 -1
  156. package/lib/ui/Badge.js +4 -3
  157. package/lib/ui/Badge.js.map +1 -1
  158. package/lib/ui/Breadcrumb.js +1 -1
  159. package/lib/ui/Button.js +2 -2
  160. package/lib/ui/Callout.js +1 -1
  161. package/lib/ui/Card.js +1 -1
  162. package/lib/ui/Carousel.js +3 -3
  163. package/lib/ui/Carousel.js.map +1 -1
  164. package/lib/ui/Checkbox.js +26 -15
  165. package/lib/ui/Checkbox.js.map +1 -1
  166. package/lib/ui/Command.js +14 -550
  167. package/lib/ui/Command.js.map +1 -1
  168. package/lib/ui/Dialog.js +1 -1
  169. package/lib/ui/Drawer.js +520 -519
  170. package/lib/ui/Drawer.js.map +1 -1
  171. package/lib/ui/DropdownMenu.js +1 -1
  172. package/lib/ui/Form.js +2 -2
  173. package/lib/ui/HoverCard.js +1 -1
  174. package/lib/ui/Input.js +1 -1
  175. package/lib/ui/Label.js +2 -2
  176. package/lib/ui/Pagination.js +7 -7
  177. package/lib/ui/Popover.js +1 -1
  178. package/lib/ui/Progress.js +1 -1
  179. package/lib/ui/RadioGroup.js +1 -1
  180. package/lib/ui/ScrollArea.js +1 -1
  181. package/lib/ui/Select.js +1 -1
  182. package/lib/ui/Skeleton.js +1 -1
  183. package/lib/ui/Slider.js +1 -1
  184. package/lib/ui/Switch.js +1 -1
  185. package/lib/ui/Tabs.js +1 -1
  186. package/lib/ui/Textarea.js +1 -1
  187. package/lib/ui/Toggle.js +2 -2
  188. package/lib/ui/ToggleGroup.js +1 -1
  189. package/lib/ui/Tooltip.js +1 -1
  190. package/lib/{useExposedProps-DE9lR6MF.js → useExposedProps-BBHR7aLM.js} +2 -2
  191. package/lib/{useExposedProps-DE9lR6MF.js.map → useExposedProps-BBHR7aLM.js.map} +1 -1
  192. package/lib/zudoku.auth-auth0.js +1 -1
  193. package/lib/zudoku.auth-clerk.js +18 -18
  194. package/lib/zudoku.auth-openid.js +5 -5
  195. package/lib/zudoku.components.js +492 -477
  196. package/lib/zudoku.components.js.map +1 -1
  197. package/lib/zudoku.plugin-api-catalog.js +5 -5
  198. package/lib/zudoku.plugin-api-keys.js +7 -7
  199. package/lib/zudoku.plugin-custom-pages.js +3 -3
  200. package/lib/zudoku.plugin-markdown.js +2 -2
  201. package/lib/zudoku.plugin-openapi.js +5 -5
  202. package/lib/zudoku.plugin-redirect.js +1 -1
  203. package/lib/zudoku.plugin-search-inkeep.js +9 -9
  204. package/package.json +48 -53
  205. package/src/app/demo.tsx +0 -1
  206. package/src/app/standalone.tsx +0 -1
  207. package/src/lib/components/navigation/SidebarCategory.tsx +2 -2
  208. package/src/lib/oas/graphql/index.ts +19 -15
  209. package/src/lib/plugins/openapi/ColorizedParam.tsx +29 -12
  210. package/src/lib/plugins/openapi/OperationList.tsx +4 -0
  211. package/src/lib/plugins/openapi/ParameterListItem.tsx +5 -7
  212. package/src/lib/plugins/openapi/PlaygroundDialogWrapper.tsx +2 -0
  213. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +9 -8
  214. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +5 -8
  215. package/src/lib/plugins/openapi/Sidecar.tsx +14 -7
  216. package/src/lib/plugins/openapi/SidecarBox.tsx +1 -1
  217. package/src/lib/plugins/openapi/SidecarExamples.tsx +163 -0
  218. package/src/lib/plugins/openapi/client/GraphQLClient.tsx +28 -120
  219. package/src/lib/plugins/openapi/client/createServer.ts +6 -2
  220. package/src/lib/plugins/openapi/client/useCreateQuery.ts +2 -17
  221. package/src/lib/plugins/openapi/index.tsx +2 -1
  222. package/src/lib/plugins/openapi/playground/EnumSelector.tsx +86 -0
  223. package/src/lib/plugins/openapi/playground/PathParams.tsx +72 -64
  224. package/src/lib/plugins/openapi/playground/Playground.tsx +26 -13
  225. package/src/lib/plugins/openapi/playground/QueryParams.tsx +102 -73
  226. package/src/lib/plugins/openapi/schema/SchemaComponents.tsx +4 -7
  227. package/src/lib/plugins/openapi/util/generateSchemaExample.ts +26 -11
  228. package/src/lib/ui/Badge.tsx +2 -1
  229. package/src/lib/ui/Checkbox.tsx +24 -7
  230. package/src/lib/util/traverse.ts +15 -5
  231. package/dist/lib/plugins/openapi/ExampleDisplay.js +0 -78
  232. package/dist/lib/plugins/openapi/ExampleDisplay.js.map +0 -1
  233. package/dist/lib/plugins/openapi/client/worker.d.ts +0 -4
  234. package/dist/lib/plugins/openapi/client/worker.js +0 -29
  235. package/dist/lib/plugins/openapi/client/worker.js.map +0 -1
  236. package/dist/lib/plugins/openapi-worker.d.ts +0 -1
  237. package/dist/lib/plugins/openapi-worker.js +0 -8
  238. package/dist/lib/plugins/openapi-worker.js.map +0 -1
  239. package/lib/Dialog-Bxv1yEIg.js +0 -67
  240. package/lib/Dialog-Bxv1yEIg.js.map +0 -1
  241. package/lib/OperationList-BLdHAQ39.js.map +0 -1
  242. package/lib/ZudokuContext-hmLMUdf2.js.map +0 -1
  243. package/lib/assets/index-C7jnHK4b.js +0 -4841
  244. package/lib/assets/index-C7jnHK4b.js.map +0 -1
  245. package/lib/assets/worker-Cbp2r2BQ.js +0 -18592
  246. package/lib/assets/worker-Cbp2r2BQ.js.map +0 -1
  247. package/lib/chunk-D52XG6IA-Dl7HLe6j.js.map +0 -1
  248. package/lib/context-h_UkBLvr.js +0 -22
  249. package/lib/createServer-Bf5_6o6G.js.map +0 -1
  250. package/lib/index-BNx95gkf.js +0 -1284
  251. package/lib/index-BNx95gkf.js.map +0 -1
  252. package/lib/index-CBXSgjaE.js.map +0 -1
  253. package/lib/index-CPNSgwSb.js +0 -36
  254. package/lib/index-DyBL--Kz.js +0 -826
  255. package/lib/index-DyBL--Kz.js.map +0 -1
  256. package/lib/index.esm-BnnBRKJX.js +0 -1214
  257. package/lib/index.esm-BnnBRKJX.js.map +0 -1
  258. package/lib/state-CFQsUZUP.js +0 -202
  259. package/lib/state-CFQsUZUP.js.map +0 -1
  260. package/lib/zudoku.openapi-worker.js +0 -15
  261. package/lib/zudoku.openapi-worker.js.map +0 -1
  262. package/src/lib/plugins/openapi/ExampleDisplay.tsx +0 -163
  263. package/src/lib/plugins/openapi/client/worker.ts +0 -44
  264. package/src/lib/plugins/openapi-worker.ts +0 -11
@@ -1,10 +1,10 @@
1
- import { j as e } from "./jsx-runtime-Dx-03ztt.js";
1
+ import { j as e } from "./jsx-runtime-Bdg6XQ1m.js";
2
2
  import { s as j } from "./index-LNp6rxyU.js";
3
- import { u as b } from "./ZudokuContext-hmLMUdf2.js";
4
- import { b as y } from "./chunk-D52XG6IA-Dl7HLe6j.js";
3
+ import { u as b } from "./ZudokuContext-D3ayHjP-.js";
4
+ import { b as y } from "./chunk-SYFQ2XB5-KWlHsT7t.js";
5
5
  import { Head as v, Link as N } from "./zudoku.components.js";
6
- import { u as w } from "./state-CFQsUZUP.js";
7
- import { M as C } from "./Markdown-CZDLNOFc.js";
6
+ import { u as w } from "./state-mM7uaXTW.js";
7
+ import { M as C } from "./Markdown-BrfrjEk_.js";
8
8
  import { c as h } from "./cn-qaFjX9_3.js";
9
9
  const f = (r, n) => j(`${r}-${n}`), k = ({
10
10
  items: r,
@@ -1,14 +1,14 @@
1
- import { j as e } from "./jsx-runtime-Dx-03ztt.js";
1
+ import { j as e } from "./jsx-runtime-Bdg6XQ1m.js";
2
2
  import { RotateCwIcon as g, TrashIcon as f, EyeOffIcon as j, EyeIcon as v, CheckIcon as w, CopyIcon as b, FileKey2Icon as K } from "lucide-react";
3
- import { D as k, S as m, R as N } from "./SlotletProvider-pfc9oejW.js";
3
+ import { D as k, S as m, R as N } from "./SlotletProvider-DPbx9KdU.js";
4
4
  import { i as c } from "./invariant-Caa8-XvF.js";
5
- import { u as d, S as I, a as S, b as A, c as C, d as E, e as x } from "./Select-B_IxRUUC.js";
6
- import { a as P } from "./index.esm-BnnBRKJX.js";
7
- import { a as D, L as u, O as R } from "./chunk-D52XG6IA-Dl7HLe6j.js";
8
- import { a as y, e as q, u as O } from "./ZudokuContext-hmLMUdf2.js";
5
+ import { u as d, S as I, a as S, b as A, c as C, d as E, e as x } from "./Select-DkOpAG0c.js";
6
+ import { a as P } from "./index.esm-CrSoEshU.js";
7
+ import { a as D, L as u, O as R } from "./chunk-SYFQ2XB5-KWlHsT7t.js";
8
+ import { a as y, e as q, u as O } from "./ZudokuContext-D3ayHjP-.js";
9
9
  import { Button as l } from "./ui/Button.js";
10
10
  import { Input as z } from "./ui/Input.js";
11
- import { u as F } from "./hook-CHq7pFyz.js";
11
+ import { u as F } from "./hook-DUyACbIK.js";
12
12
  import { useState as p } from "react";
13
13
  import { c as T } from "./cn-qaFjX9_3.js";
14
14
  const L = ({ service: t }) => {
@@ -1,8 +1,8 @@
1
- import { j as o } from "./jsx-runtime-Dx-03ztt.js";
1
+ import { j as o } from "./jsx-runtime-Bdg6XQ1m.js";
2
2
  import a from "react";
3
- import { P as n } from "./Markdown-CZDLNOFc.js";
3
+ import { P as n } from "./Markdown-BrfrjEk_.js";
4
4
  import { c } from "./cn-qaFjX9_3.js";
5
- import { u as p } from "./useExposedProps-DE9lR6MF.js";
5
+ import { u as p } from "./useExposedProps-BBHR7aLM.js";
6
6
  const u = ({
7
7
  element: t,
8
8
  render: s,
@@ -1,7 +1,7 @@
1
1
  var d = Object.defineProperty;
2
2
  var m = (n, t, o) => t in n ? d(n, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : n[t] = o;
3
3
  var f = (n, t, o) => m(n, typeof t != "symbol" ? t + "" : t, o);
4
- import { j as P } from "./jsx-runtime-Dx-03ztt.js";
4
+ import { j as P } from "./jsx-runtime-Bdg6XQ1m.js";
5
5
  import { f as u } from "./__vite-browser-external-BYRIRx8p.js";
6
6
  const x = "/pages/**/*.{md,mdx}", D = [".md", ".mdx"];
7
7
  class c {
@@ -74,7 +74,7 @@ const C = (n) => ({
74
74
  const h = {
75
75
  path: r,
76
76
  lazy: async () => {
77
- const { MdxPage: l } = await import("./MdxPage-DKMbBROv.js"), { default: p, ...g } = await a();
77
+ const { MdxPage: l } = await import("./MdxPage-LNZLj_A5.js"), { default: p, ...g } = await a();
78
78
  return {
79
79
  element: /* @__PURE__ */ P.jsx(
80
80
  l,
@@ -1,9 +1,9 @@
1
- import "./jsx-runtime-Dx-03ztt.js";
2
- import "./chunk-D52XG6IA-Dl7HLe6j.js";
3
- import { o as a } from "./index-BNx95gkf.js";
4
- import "./ZudokuContext-hmLMUdf2.js";
1
+ import "./jsx-runtime-Bdg6XQ1m.js";
2
+ import "./chunk-SYFQ2XB5-KWlHsT7t.js";
3
+ import { o as a } from "./index-CaILD1AV.js";
4
+ import "./ZudokuContext-D3ayHjP-.js";
5
5
  import "lucide-react";
6
- import "./hook-CHq7pFyz.js";
6
+ import "./hook-DUyACbIK.js";
7
7
  import "./ui/Button.js";
8
8
  export {
9
9
  a as openApiPlugin
@@ -1,4 +1,4 @@
1
- import { r as o } from "./chunk-D52XG6IA-Dl7HLe6j.js";
1
+ import { r as o } from "./chunk-SYFQ2XB5-KWlHsT7t.js";
2
2
  const a = (r) => ({
3
3
  getRoutes: () => r.redirects.map(({ from: e, to: t }) => ({
4
4
  path: e,
@@ -1,5 +1,5 @@
1
- import { j as i } from "./jsx-runtime-Dx-03ztt.js";
2
- import { useRef as l, useState as f, useMemo as m, useEffect as u } from "react";
1
+ import { j as i } from "./jsx-runtime-Bdg6XQ1m.js";
2
+ import { useRef as d, useState as f, useMemo as m, useEffect as c } from "react";
3
3
  import { C as g } from "./ClientOnly-E7hGysn1.js";
4
4
  const h = {
5
5
  theme: {
@@ -25,7 +25,7 @@ const h = {
25
25
  onClose: n,
26
26
  settings: p
27
27
  }) => {
28
- const o = l(null), c = l(null), [s, d] = f(
28
+ const o = d(null), u = d(null), [s, l] = f(
29
29
  typeof Inkeep < "u"
30
30
  ), a = m(
31
31
  () => ({
@@ -44,17 +44,17 @@ const h = {
44
44
  }),
45
45
  [e, n, r, p, o]
46
46
  );
47
- return u(() => {
47
+ return c(() => {
48
48
  if (s) return;
49
49
  const t = setInterval(() => {
50
- typeof Inkeep < "u" && (d(!0), clearInterval(t));
50
+ typeof Inkeep < "u" && (l(!0), clearInterval(t));
51
51
  }, 100);
52
52
  return () => clearInterval(t);
53
- }, [s]), u(() => {
54
- !s || c.current || (c.current = Inkeep().embed(a));
55
- }, [a, s]), u(() => {
53
+ }, [s]), c(() => {
54
+ !s || u.current || (u.current = Inkeep().embed(a));
55
+ }, [a, s]), c(() => {
56
56
  var t;
57
- (t = c.current) == null || t.render({ ...a, isOpen: e });
57
+ (t = u.current) == null || t.render({ ...a, isOpen: e });
58
58
  }, [a, e]), /* @__PURE__ */ i.jsx("div", { ref: o });
59
59
  }, x = (r) => ({
60
60
  getHead: () => /* @__PURE__ */ i.jsx(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zudoku",
3
- "version": "0.25.2",
3
+ "version": "0.26.0",
4
4
  "type": "module",
5
5
  "homepage": "https://zudoku.dev",
6
6
  "repository": {
@@ -78,10 +78,6 @@
78
78
  "import": "./lib/zudoku.plugin-search-inkeep.js",
79
79
  "types": "./dist/lib/plugins/search-inkeep/index.d.ts"
80
80
  },
81
- "./openapi-worker": {
82
- "import": "./lib/zudoku.openapi-worker.js",
83
- "types": "./dist/lib/plugins/openapi-worker.d.ts"
84
- },
85
81
  "./components": {
86
82
  "import": "./lib/zudoku.components.js",
87
83
  "types": "./dist/lib/components/index.d.ts"
@@ -115,42 +111,42 @@
115
111
  }
116
112
  },
117
113
  "dependencies": {
118
- "@envelop/core": "5.0.2",
114
+ "@envelop/core": "5.0.3",
119
115
  "@graphql-typed-document-node/core": "3.2.0",
120
- "@hookform/resolvers": "3.9.1",
121
- "@lekoarts/rehype-meta-as-attributes": "3.0.1",
116
+ "@hookform/resolvers": "3.10.0",
117
+ "@lekoarts/rehype-meta-as-attributes": "3.0.2",
122
118
  "@mdx-js/react": "3.1.0",
123
119
  "@mdx-js/rollup": "3.1.0",
124
120
  "@pothos/core": "3.41.0",
125
121
  "@radix-ui/react-accordion": "1.2.2",
126
122
  "@radix-ui/react-alert-dialog": "1.1.4",
127
123
  "@radix-ui/react-aspect-ratio": "1.1.1",
128
- "@radix-ui/react-checkbox": "1.1.2",
129
- "@radix-ui/react-collapsible": "1.1.1",
130
- "@radix-ui/react-dialog": "1.1.2",
131
- "@radix-ui/react-dropdown-menu": "2.1.2",
132
- "@radix-ui/react-hover-card": "1.1.2",
133
- "@radix-ui/react-label": "2.1.0",
134
- "@radix-ui/react-popover": "1.1.2",
135
- "@radix-ui/react-progress": "1.1.0",
136
- "@radix-ui/react-radio-group": "1.2.1",
137
- "@radix-ui/react-scroll-area": "1.2.1",
138
- "@radix-ui/react-select": "2.1.2",
139
- "@radix-ui/react-slider": "1.2.1",
140
- "@radix-ui/react-slot": "1.1.0",
141
- "@radix-ui/react-switch": "1.1.1",
142
- "@radix-ui/react-tabs": "1.1.1",
143
- "@radix-ui/react-toggle": "1.1.0",
124
+ "@radix-ui/react-checkbox": "1.1.3",
125
+ "@radix-ui/react-collapsible": "1.1.2",
126
+ "@radix-ui/react-dialog": "1.1.4",
127
+ "@radix-ui/react-dropdown-menu": "2.1.4",
128
+ "@radix-ui/react-hover-card": "1.1.4",
129
+ "@radix-ui/react-label": "2.1.1",
130
+ "@radix-ui/react-popover": "1.1.4",
131
+ "@radix-ui/react-progress": "1.1.1",
132
+ "@radix-ui/react-radio-group": "1.2.2",
133
+ "@radix-ui/react-scroll-area": "1.2.2",
134
+ "@radix-ui/react-select": "2.1.4",
135
+ "@radix-ui/react-slider": "1.2.2",
136
+ "@radix-ui/react-slot": "1.1.1",
137
+ "@radix-ui/react-switch": "1.1.2",
138
+ "@radix-ui/react-tabs": "1.1.2",
139
+ "@radix-ui/react-toggle": "1.1.1",
144
140
  "@radix-ui/react-toggle-group": "1.1.1",
145
- "@radix-ui/react-tooltip": "1.1.4",
146
- "@radix-ui/react-visually-hidden": "1",
147
- "@sentry/node": "8.42.0",
141
+ "@radix-ui/react-tooltip": "1.1.6",
142
+ "@radix-ui/react-visually-hidden": "1.1.1",
143
+ "@sentry/node": "8.50.0",
148
144
  "@sindresorhus/slugify": "2.2.1",
149
- "@stefanprobst/rehype-extract-toc": "2.2.0",
145
+ "@stefanprobst/rehype-extract-toc": "2.2.1",
150
146
  "@tailwindcss/typography": "0.5.16",
151
- "@tanstack/react-query": "5.62.3",
152
- "@types/react": "19.0.1",
153
- "@types/react-dom": "19.0.1",
147
+ "@tanstack/react-query": "5.64.2",
148
+ "@types/react": "19.0.7",
149
+ "@types/react-dom": "19.0.3",
154
150
  "@vitejs/plugin-react": "4.3.4",
155
151
  "@zudoku/httpsnippet": "10.0.9",
156
152
  "@zudoku/react-helmet-async": "2.0.5",
@@ -161,13 +157,13 @@
161
157
  "cmdk": "1.0.4",
162
158
  "devlop": "^1.1.0",
163
159
  "dotenv": "16.4.7",
164
- "embla-carousel-react": "8.5.1",
160
+ "embla-carousel-react": "8.5.2",
165
161
  "estree-util-value-to-estree": "3.2.1",
166
162
  "express": "4.21.2",
167
- "glob": "11.0.0",
163
+ "glob": "11.0.1",
168
164
  "graphql": "16.10.0",
169
165
  "graphql-type-json": "0.3.2",
170
- "graphql-yoga": "5.10.4",
166
+ "graphql-yoga": "5.10.10",
171
167
  "gray-matter": "4.0.3",
172
168
  "hast-util-to-jsx-runtime": "^2.3.2",
173
169
  "hast-util-to-string": "3.0.1",
@@ -175,20 +171,20 @@
175
171
  "http-terminator": "3.2.0",
176
172
  "loglevel": "1.9.2",
177
173
  "lru-cache": "11.0.2",
178
- "lucide-react": "0.468.0",
174
+ "lucide-react": "0.473.0",
179
175
  "next-themes": "0.4.4",
180
176
  "oauth4webapi": "2.17.0",
181
177
  "object-hash": "3.0.0",
182
178
  "openapi-types": "12.1.3",
183
179
  "picocolors": "1.1.1",
184
- "postcss": "8.4.49",
185
- "posthog-node": "4.3.1",
186
- "prism-react-renderer": "2.4.0",
180
+ "postcss": "8.5.1",
181
+ "posthog-node": "4.4.1",
182
+ "prism-react-renderer": "2.4.1",
187
183
  "prismjs": "1.29.0",
188
- "react-error-boundary": "4.1.2",
189
- "react-hook-form": "7.54.0",
184
+ "react-error-boundary": "5.0.0",
185
+ "react-hook-form": "7.54.2",
190
186
  "react-is": "19.0.0",
191
- "react-router": "7.0.2",
187
+ "react-router": "7.1.3",
192
188
  "rehype-raw": "7.0.0",
193
189
  "rehype-slug": "6.0.0",
194
190
  "remark-comment": "1.0.0",
@@ -199,26 +195,26 @@
199
195
  "remark-mdx-frontmatter": "5.0.0",
200
196
  "remark-parse": "^11.0.0",
201
197
  "remark-rehype": "^11.1.1",
202
- "rollup": "4.28.1",
198
+ "rollup": "4.31.0",
203
199
  "semver": "7.6.3",
204
200
  "sitemap": "8.0.0",
205
201
  "spin-delay": "2.0.1",
206
202
  "strip-ansi": "7.1.0",
207
203
  "tailwind-merge": "2.6.0",
208
- "tailwindcss": "3.4.16",
204
+ "tailwindcss": "3.4.17",
209
205
  "tsx": "^4.19.2",
210
206
  "ulidx": "2.4.1",
211
207
  "unified": "^11.0.5",
212
208
  "unist-util-visit": "5.0.0",
213
209
  "urql": "4.2.1",
214
- "vaul": "1.1.1",
210
+ "vaul": "1.1.2",
215
211
  "vfile": "6.0.3",
216
- "vite": "6.0.3",
217
- "yaml": "2.6.1",
212
+ "vite": "6.0.11",
213
+ "yaml": "2.7.0",
218
214
  "yargs": "17.7.2",
219
- "zod": "3.23.8",
215
+ "zod": "3.24.1",
220
216
  "zod-validation-error": "3.4.0",
221
- "zustand": "5.0.2"
217
+ "zustand": "5.0.3"
222
218
  },
223
219
  "devDependencies": {
224
220
  "@graphql-codegen/cli": "5.0.3",
@@ -236,13 +232,13 @@
236
232
  "@types/semver": "7.5.8",
237
233
  "@types/unist": "^3.0.3",
238
234
  "@types/yargs": "17.0.33",
239
- "@vitest/coverage-v8": "2.1.8",
235
+ "@vitest/coverage-v8": "3.0.2",
240
236
  "mdast-util-mdx": "3.0.0",
241
237
  "react": "19.0.0",
242
238
  "react-dom": "19.0.0",
243
239
  "rollup-plugin-visualizer": "5.14.0",
244
- "typescript": "5.7.2",
245
- "vitest": "2.1.8"
240
+ "typescript": "5.7.3",
241
+ "vitest": "3.0.2"
246
242
  },
247
243
  "peerDependencies": {
248
244
  "react": ">=19",
@@ -253,12 +249,11 @@
253
249
  "@sentry/react": "^8.50.0"
254
250
  },
255
251
  "scripts": {
256
- "build": "tsc --project tsconfig.json",
252
+ "build": "tsc --project tsconfig.app.json",
257
253
  "build:vite": "vite build",
258
254
  "generate:icon-types": "tsx ./scripts/generate-icon-types.ts",
259
255
  "build:standalone:vite": "vite build --mode standalone --config vite.standalone.config.ts",
260
256
  "build:standalone:html": "cp ./src/app/standalone.html ./standalone/standalone.html && cp ./src/app/demo.html ./standalone/demo.html && cp ./src/app/demo-cdn.html ./standalone/index.html",
261
- "hack:fix-worker-paths": "node ./scripts/hack-worker.mjs",
262
257
  "clean": "tsc --build --clean",
263
258
  "codegen": "graphql-codegen --config ./src/codegen.ts",
264
259
  "test": "vitest run"
package/src/app/demo.tsx CHANGED
@@ -48,7 +48,6 @@ const config = {
48
48
  type: "url",
49
49
  input: apiUrl,
50
50
  navigationId: "/",
51
- inMemory: true,
52
51
  }),
53
52
  ],
54
53
  } satisfies ZudokuConfig;
@@ -43,7 +43,6 @@ const config = {
43
43
  type: "url",
44
44
  input: apiUrl!,
45
45
  navigationId: "/",
46
- inMemory: true,
47
46
  }),
48
47
  ],
49
48
  } satisfies ZudokuConfig;
@@ -112,10 +112,10 @@ export const SidebarCategory = ({
112
112
  className={cn(
113
113
  // CollapsibleContent class is used to animate and it should only be applied when the user has triggered the toggle
114
114
  hasInteracted && "CollapsibleContent",
115
- "my-1",
115
+ "ms-6 my-1",
116
116
  )}
117
117
  >
118
- <ul className={"relative"}>
118
+ <ul className="relative after:absolute after:-left-[--padding-nav-item] after:translate-x-[1.5px] after:top-0 after:bottom-0 after:w-px after:bg-border">
119
119
  {category.items.map((item) => (
120
120
  <SidebarItem
121
121
  key={
@@ -6,8 +6,6 @@ import {
6
6
  } from "@sindresorhus/slugify";
7
7
  import { GraphQLJSON, GraphQLJSONObject } from "graphql-type-json";
8
8
  import { createYoga, type YogaServerOptions } from "graphql-yoga";
9
- import { LRUCache } from "lru-cache";
10
- import hashit from "object-hash";
11
9
  import {
12
10
  HttpMethods,
13
11
  validate,
@@ -58,11 +56,10 @@ export const createOperationSlug = (
58
56
  );
59
57
  };
60
58
 
61
- const cache = new LRUCache<string, OpenAPIDocument>({
62
- ttl: 60 * 10 * 1000,
63
- ttlAutopurge: true,
64
- fetchMethod: (_key, _oldValue, { context }) => validate(context as string),
65
- });
59
+ export type SchemaImports = Record<
60
+ string,
61
+ () => Promise<{ schema: OpenAPIDocument }>
62
+ >;
66
63
 
67
64
  const builder = new SchemaBuilder<{
68
65
  Scalars: {
@@ -71,6 +68,7 @@ const builder = new SchemaBuilder<{
71
68
  };
72
69
  Context: {
73
70
  schema: OpenAPIDocument;
71
+ schemaImports?: SchemaImports;
74
72
  };
75
73
  }>({});
76
74
 
@@ -441,11 +439,6 @@ const Schema = builder.objectRef<OpenAPIDocument>("Schema").implement({
441
439
  }),
442
440
  });
443
441
 
444
- const loadOpenAPISchema = async (input: NonNullable<unknown>) => {
445
- const hash = hashit(input);
446
- return await cache.forceFetch(hash, { context: input });
447
- };
448
-
449
442
  const SchemaSource = builder.enumType("SchemaType", {
450
443
  values: ["url", "file", "raw"] as const,
451
444
  });
@@ -459,10 +452,21 @@ builder.queryType({
459
452
  input: t.arg({ type: JSONScalar, required: true }),
460
453
  },
461
454
  resolve: async (_, args, ctx) => {
462
- const schema = await loadOpenAPISchema(args.input!);
463
- // for easier access of the whole schema in children resolvers
464
- ctx.schema = schema;
455
+ let schema: OpenAPIDocument;
465
456
 
457
+ if (args.type === "file" && typeof args.input === "string") {
458
+ const loadSchema = ctx.schemaImports?.[args.input];
459
+
460
+ if (!loadSchema) {
461
+ throw new Error(`No schema loader found for path: ${args.input}`);
462
+ }
463
+ const module = await loadSchema();
464
+ schema = module.schema;
465
+ } else {
466
+ schema = await validate(args.input as string);
467
+ }
468
+
469
+ ctx.schema = schema;
466
470
  return schema;
467
471
  },
468
472
  }),
@@ -7,18 +7,29 @@ export const DATA_ATTR = "data-linked-param";
7
7
 
8
8
  export const usePastellizedColor = (name: string) => {
9
9
  const { resolvedTheme } = useTheme();
10
- return pastellize(
11
- name,
12
- resolvedTheme === "light" ? { saturation: 85, lightness: 50 } : undefined,
13
- );
10
+
11
+ return {
12
+ text: pastellize(
13
+ name,
14
+ resolvedTheme === "light" ? { saturation: 95, lightness: 38 } : {},
15
+ ),
16
+ background: pastellize(
17
+ name,
18
+ resolvedTheme === "light" ? { saturation: 85, lightness: 40 } : {},
19
+ ),
20
+ };
21
+ };
22
+
23
+ export const useParamColor = (name: string) => {
24
+ const normalized = name.replace(/[{}]/g, "");
25
+ return usePastellizedColor(normalized);
14
26
  };
15
27
 
16
28
  export const ColorizedParam = ({
17
29
  name,
18
30
  className,
19
- backgroundOpacity = "100%",
20
- borderOpacity = "100%",
21
31
  slug,
32
+ title,
22
33
  children,
23
34
  onClick,
24
35
  }: {
@@ -28,15 +39,17 @@ export const ColorizedParam = ({
28
39
  borderOpacity?: string;
29
40
  slug?: string;
30
41
  children?: ReactNode;
42
+ title?: string;
31
43
  onClick?: () => void;
32
44
  }) => {
33
45
  const ref = useRef<HTMLSpanElement>(null);
34
- const normalized = name.replace(/[{}]/g, "");
35
46
  const normalizedSlug = slug?.replace(/[{}]/g, "");
36
- const color = usePastellizedColor(normalized);
47
+ const normalized = name.replace(/[{}]/g, "");
48
+ const { text, background } = usePastellizedColor(normalized);
37
49
 
38
- const borderColor = `hsl(${color} / ${borderOpacity})`;
39
- const backgroundColor = `hsl(${color} / ${backgroundOpacity})`;
50
+ const textColor = `hsl(${text} / 100%)`;
51
+ const backgroundColor = `hsl(${background} / 10%)`;
52
+ const borderColor = `hsl(${background} / 50%)`;
40
53
 
41
54
  useEffect(() => {
42
55
  if (!normalizedSlug) return;
@@ -76,15 +89,19 @@ export const ColorizedParam = ({
76
89
  <span
77
90
  {...{ [DATA_ATTR]: normalizedSlug }}
78
91
  className={cn(
79
- "relative after:rounded after:absolute after:inset-0 after:-bottom-0.5 after:border-b-2 after:transition-opacity after:duration-200",
80
- "after:pointer-events-none after:border-[--border-color] after:opacity-30 after:data-[active=true]:opacity-100",
92
+ "relative inline-block rounded transition-all duration-100",
93
+ "rounded-lg",
94
+ "border border-[--border-color] p-0.5 text-[--param-color] bg-[--background-color]",
95
+ "data-[active=true]:border-[--param-color] data-[active=true]:shadow data-[active=true]:-translate-y-px",
81
96
  className,
82
97
  )}
98
+ title={title}
83
99
  suppressHydrationWarning
84
100
  ref={ref}
85
101
  onClick={onClick}
86
102
  style={
87
103
  {
104
+ "--param-color": textColor,
88
105
  "--border-color": borderColor,
89
106
  "--background-color": backgroundColor,
90
107
  } as CSSProperties
@@ -13,6 +13,7 @@ import { useSelectedServerStore } from "../../authentication/state.js";
13
13
  import { CategoryHeading } from "../../components/CategoryHeading.js";
14
14
  import { Heading } from "../../components/Heading.js";
15
15
  import { Markdown, ProseClasses } from "../../components/Markdown.js";
16
+ import { useApiIdentities } from "../../components/context/ZudokuContext.js";
16
17
  import { cn } from "../../util/cn.js";
17
18
  import { Endpoint } from "./Endpoint.js";
18
19
  import { OperationListItem } from "./OperationListItem.js";
@@ -118,6 +119,9 @@ export const OperationList = () => {
118
119
  const description = result.data.schema.description;
119
120
  const navigate = useNavigate();
120
121
 
122
+ // Prefetch for Playground
123
+ useApiIdentities();
124
+
121
125
  // The summary property is preferable here as it is a short description of
122
126
  // the API, whereas the description property is typically longer and supports
123
127
  // commonmark formatting, making it ill-suited for use in the meta description
@@ -1,3 +1,4 @@
1
+ import { Badge } from "zudoku/ui/Badge.js";
1
2
  import { Markdown } from "../../components/Markdown.js";
2
3
  import { type SchemaObject } from "../../oas/graphql/index.js";
3
4
  import { ColorizedParam } from "./ColorizedParam.js";
@@ -38,24 +39,21 @@ export const ParameterListItem = ({
38
39
  <ColorizedParam
39
40
  name={parameter.name}
40
41
  backgroundOpacity="15%"
42
+ className="px-1"
41
43
  slug={id + "-" + parameter.name.toLocaleLowerCase()}
42
44
  />
43
45
  ) : (
44
46
  parameter.name
45
47
  )}
46
48
  </code>
47
- {parameter.required && (
48
- <span className="py-px px-1.5 font-medium bg-primary/75 text-primary-foreground rounded-lg">
49
- required
50
- </span>
51
- )}
52
49
  {paramSchema.type && (
53
- <span className="text-muted-foreground">
50
+ <Badge variant="muted">
54
51
  {paramSchema.type === "array"
55
52
  ? `${paramSchema.items.type}[]`
56
53
  : paramSchema.type}
57
- </span>
54
+ </Badge>
58
55
  )}
56
+ {parameter.required && <Badge variant="outline">required</Badge>}
59
57
  </div>
60
58
  {parameter.description && (
61
59
  <Markdown
@@ -23,6 +23,8 @@ export const PlaygroundDialogWrapper = ({
23
23
  name: p.name,
24
24
  defaultActive: p.required ?? false,
25
25
  isRequired: p.required ?? false,
26
+ enum: p.schema?.type == "array" ? p.schema?.items?.enum : p.schema?.enum,
27
+ type: p.schema?.type ?? "string",
26
28
  }));
27
29
  const pathParams = operation.parameters
28
30
  ?.filter((p) => p.in === "path")
@@ -1,18 +1,19 @@
1
- import { Content, useSidecarExamples } from "./ExampleDisplay.js";
2
1
  import * as SidecarBox from "./SidecarBox.js";
2
+ import { type Content, SidecarExamples } from "./SidecarExamples.js";
3
3
 
4
- export const RequestBodySidecarBox = ({ content }: { content: Content }) => {
5
- const { SidecarBody, SidebarFooter, hasContent } = useSidecarExamples({
6
- content,
7
- });
8
-
4
+ export const RequestBodySidecarBox = ({
5
+ content,
6
+ onExampleChange,
7
+ }: {
8
+ content: Content;
9
+ onExampleChange?: (example: unknown) => void;
10
+ }) => {
9
11
  return (
10
12
  <SidecarBox.Root>
11
13
  <SidecarBox.Head className="text-xs flex justify-between items-center">
12
14
  <span className="font-mono">Request Body Example</span>
13
15
  </SidecarBox.Head>
14
- <SidecarBody />
15
- {hasContent && <SidebarFooter />}
16
+ <SidecarExamples content={content} onExampleChange={onExampleChange} />
16
17
  </SidecarBox.Root>
17
18
  );
18
19
  };
@@ -1,21 +1,18 @@
1
1
  import * as Tabs from "@radix-ui/react-tabs";
2
2
  import { cn } from "../../util/cn.js";
3
- import { useSidecarExamples } from "./ExampleDisplay.js";
4
3
  import type { OperationListItemResult } from "./OperationList.js";
5
4
  import * as SidecarBox from "./SidecarBox.js";
5
+ import { SidecarExamples } from "./SidecarExamples.js";
6
6
 
7
7
  type Responses = OperationListItemResult["responses"];
8
8
 
9
9
  const ResponseContent = ({ response }: { response: Responses[number] }) => {
10
- const { SidecarBody, SidebarFooter, hasContent } = useSidecarExamples({
11
- content: response.content ?? [],
12
- description: response.description ?? undefined,
13
- });
14
-
15
10
  return (
16
11
  <Tabs.Content value={response.statusCode}>
17
- <SidecarBody />
18
- {hasContent && <SidebarFooter />}
12
+ <SidecarExamples
13
+ content={response.content ?? []}
14
+ description={response.description ?? undefined}
15
+ />
19
16
  </Tabs.Content>
20
17
  );
21
18
  };