zudoku 0.64.1 → 0.65.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 (402) hide show
  1. package/dist/app/main.d.ts +91 -1
  2. package/dist/app/main.js +5 -1
  3. package/dist/app/main.js.map +1 -1
  4. package/dist/config/config.d.ts +15 -46
  5. package/dist/config/validators/InputNavigationSchema.d.ts +61 -61
  6. package/dist/config/validators/NavigationSchema.js +2 -4
  7. package/dist/config/validators/NavigationSchema.js.map +1 -1
  8. package/dist/config/validators/ProtectedRoutesSchema.d.ts +1 -1
  9. package/dist/config/validators/validate.d.ts +158 -2
  10. package/dist/config/validators/validate.js +37 -0
  11. package/dist/config/validators/validate.js.map +1 -1
  12. package/dist/config/validators/validate.test.js +43 -0
  13. package/dist/config/validators/validate.test.js.map +1 -1
  14. package/dist/flat-config.d.ts +22 -0
  15. package/dist/lib/auth/issuer.js +3 -0
  16. package/dist/lib/auth/issuer.js.map +1 -1
  17. package/dist/lib/authentication/authentication.d.ts +1 -1
  18. package/dist/lib/authentication/providers/auth0.js +6 -1
  19. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  20. package/dist/lib/authentication/providers/firebase.d.ts +4 -0
  21. package/dist/lib/authentication/providers/firebase.js +215 -0
  22. package/dist/lib/authentication/providers/firebase.js.map +1 -0
  23. package/dist/lib/authentication/providers/supabase.js +1 -6
  24. package/dist/lib/authentication/providers/supabase.js.map +1 -1
  25. package/dist/lib/authentication/ui/ZudokuAuthUi.d.ts +24 -0
  26. package/dist/lib/authentication/ui/ZudokuAuthUi.js +124 -0
  27. package/dist/lib/authentication/ui/ZudokuAuthUi.js.map +1 -0
  28. package/dist/lib/authentication/ui/icons/Apple.d.ts +3 -0
  29. package/dist/lib/authentication/ui/icons/Apple.js +4 -0
  30. package/dist/lib/authentication/ui/icons/Apple.js.map +1 -0
  31. package/dist/lib/authentication/ui/icons/Facebook.d.ts +3 -0
  32. package/dist/lib/authentication/ui/icons/Facebook.js +4 -0
  33. package/dist/lib/authentication/ui/icons/Facebook.js.map +1 -0
  34. package/dist/lib/authentication/ui/icons/Github.d.ts +3 -0
  35. package/dist/lib/authentication/ui/icons/Github.js +4 -0
  36. package/dist/lib/authentication/ui/icons/Github.js.map +1 -0
  37. package/dist/lib/authentication/ui/icons/Google.d.ts +3 -0
  38. package/dist/lib/authentication/ui/icons/Google.js +4 -0
  39. package/dist/lib/authentication/ui/icons/Google.js.map +1 -0
  40. package/dist/lib/authentication/ui/icons/Microsoft.d.ts +3 -0
  41. package/dist/lib/authentication/ui/icons/Microsoft.js +4 -0
  42. package/dist/lib/authentication/ui/icons/Microsoft.js.map +1 -0
  43. package/dist/lib/authentication/ui/icons/X.d.ts +3 -0
  44. package/dist/lib/authentication/ui/icons/X.js +4 -0
  45. package/dist/lib/authentication/ui/icons/X.js.map +1 -0
  46. package/dist/lib/components/Autocomplete.d.ts +3 -1
  47. package/dist/lib/components/Autocomplete.js +6 -2
  48. package/dist/lib/components/Autocomplete.js.map +1 -1
  49. package/dist/lib/components/Heading.d.ts +1 -1
  50. package/dist/lib/components/Layout.js +3 -2
  51. package/dist/lib/components/Layout.js.map +1 -1
  52. package/dist/lib/components/navigation/NavigationItem.js +2 -2
  53. package/dist/lib/components/navigation/NavigationItem.js.map +1 -1
  54. package/dist/lib/core/RouteGuard.js +6 -6
  55. package/dist/lib/core/RouteGuard.js.map +1 -1
  56. package/dist/lib/errors/ErrorAlert.js +1 -1
  57. package/dist/lib/errors/RouterError.d.ts +3 -1
  58. package/dist/lib/errors/RouterError.js +3 -2
  59. package/dist/lib/errors/RouterError.js.map +1 -1
  60. package/dist/lib/oas/parser/index.js +7 -3
  61. package/dist/lib/oas/parser/index.js.map +1 -1
  62. package/dist/lib/plugins/api-keys/ProtectedRoute.js +4 -1
  63. package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -1
  64. package/dist/lib/plugins/openapi/CollapsibleCode.d.ts +1 -0
  65. package/dist/lib/plugins/openapi/CollapsibleCode.js +2 -1
  66. package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -1
  67. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.d.ts +5 -0
  68. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js +10 -0
  69. package/dist/lib/plugins/openapi/GeneratedExampleSidecarBox.js.map +1 -0
  70. package/dist/lib/plugins/openapi/OperationList.js +5 -1
  71. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  72. package/dist/lib/plugins/openapi/OperationListItem.d.ts +2 -1
  73. package/dist/lib/plugins/openapi/OperationListItem.js +3 -2
  74. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  75. package/dist/lib/plugins/openapi/ParameterList.js +7 -4
  76. package/dist/lib/plugins/openapi/ParameterList.js.map +1 -1
  77. package/dist/lib/plugins/openapi/ParameterListItem.js +17 -6
  78. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  79. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +9 -2
  80. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +5 -2
  81. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  82. package/dist/lib/plugins/openapi/ResponsesSidecarBox.d.ts +3 -2
  83. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js +25 -4
  84. package/dist/lib/plugins/openapi/ResponsesSidecarBox.js.map +1 -1
  85. package/dist/lib/plugins/openapi/Sidecar.d.ts +2 -2
  86. package/dist/lib/plugins/openapi/Sidecar.js +53 -26
  87. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  88. package/dist/lib/plugins/openapi/SidecarBox.js +4 -4
  89. package/dist/lib/plugins/openapi/SidecarBox.js.map +1 -1
  90. package/dist/lib/plugins/openapi/SidecarExamples.d.ts +9 -2
  91. package/dist/lib/plugins/openapi/SidecarExamples.js +24 -43
  92. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  93. package/dist/lib/plugins/openapi/components/ConstValue.js +1 -1
  94. package/dist/lib/plugins/openapi/components/ConstValue.js.map +1 -1
  95. package/dist/lib/plugins/openapi/components/EnumValues.js +1 -1
  96. package/dist/lib/plugins/openapi/components/EnumValues.js.map +1 -1
  97. package/dist/lib/plugins/openapi/components/NonHighlightedCode.d.ts +4 -0
  98. package/dist/lib/plugins/openapi/components/NonHighlightedCode.js +5 -0
  99. package/dist/lib/plugins/openapi/components/NonHighlightedCode.js.map +1 -0
  100. package/dist/lib/plugins/openapi/components/ResponseContent.js +5 -6
  101. package/dist/lib/plugins/openapi/components/ResponseContent.js.map +1 -1
  102. package/dist/lib/plugins/openapi/interfaces.d.ts +13 -0
  103. package/dist/lib/plugins/openapi/playground/BodyPanel.js +67 -15
  104. package/dist/lib/plugins/openapi/playground/BodyPanel.js.map +1 -1
  105. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js +2 -2
  106. package/dist/lib/plugins/openapi/playground/CollapsibleHeader.js.map +1 -1
  107. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +1 -1
  108. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -1
  109. package/dist/lib/plugins/openapi/playground/Headers.js +23 -83
  110. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  111. package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +10 -2
  112. package/dist/lib/plugins/openapi/playground/ParamsGrid.js +8 -1
  113. package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -1
  114. package/dist/lib/plugins/openapi/playground/PathParams.js +2 -3
  115. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  116. package/dist/lib/plugins/openapi/playground/Playground.d.ts +7 -0
  117. package/dist/lib/plugins/openapi/playground/Playground.js +56 -28
  118. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  119. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +3 -2
  120. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  121. package/dist/lib/plugins/openapi/playground/QueryParams.js +16 -40
  122. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  123. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.d.ts +8 -0
  124. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js +19 -0
  125. package/dist/lib/plugins/openapi/playground/request-panel/MultipartField.js.map +1 -0
  126. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js +1 -1
  127. package/dist/lib/plugins/openapi/playground/request-panel/UrlQueryParams.js.map +1 -1
  128. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.d.ts +1 -0
  129. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js +540 -0
  130. package/dist/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.js.map +1 -0
  131. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.d.ts +40 -0
  132. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js +205 -0
  133. package/dist/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.js.map +1 -0
  134. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +2 -2
  135. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -1
  136. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js +1 -1
  137. package/dist/lib/plugins/openapi/schema/SchemaExampleAndDefault.js.map +1 -1
  138. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +17 -8
  139. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
  140. package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +1 -1
  141. package/dist/lib/plugins/openapi/schema/SchemaView.js +20 -13
  142. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  143. package/dist/lib/plugins/openapi/schema/UnionView.js +2 -5
  144. package/dist/lib/plugins/openapi/schema/UnionView.js.map +1 -1
  145. package/dist/lib/plugins/openapi/schema/union-helpers.js +0 -1
  146. package/dist/lib/plugins/openapi/schema/union-helpers.js.map +1 -1
  147. package/dist/lib/plugins/openapi/util/generateSchemaExample.js +5 -14
  148. package/dist/lib/plugins/openapi/util/generateSchemaExample.js.map +1 -1
  149. package/dist/lib/ui/Badge.d.ts +3 -3
  150. package/dist/lib/ui/Badge.js +9 -7
  151. package/dist/lib/ui/Badge.js.map +1 -1
  152. package/dist/lib/ui/Button.d.ts +1 -1
  153. package/dist/lib/ui/Button.js +1 -0
  154. package/dist/lib/ui/Button.js.map +1 -1
  155. package/dist/lib/ui/Checkbox.d.ts +2 -2
  156. package/dist/lib/ui/Checkbox.js +4 -4
  157. package/dist/lib/ui/Checkbox.js.map +1 -1
  158. package/dist/lib/ui/CodeBlock.d.ts +0 -1
  159. package/dist/lib/ui/CodeBlock.js +1 -1
  160. package/dist/lib/ui/CodeBlock.js.map +1 -1
  161. package/dist/lib/ui/Collapsible.d.ts +4 -4
  162. package/dist/lib/ui/Collapsible.js +11 -4
  163. package/dist/lib/ui/Collapsible.js.map +1 -1
  164. package/dist/lib/ui/Command.d.ts +3 -3
  165. package/dist/lib/ui/EmbeddedCodeBlock.d.ts +0 -1
  166. package/dist/lib/ui/EmbeddedCodeBlock.js +3 -2
  167. package/dist/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  168. package/dist/lib/ui/Frame.d.ts +8 -0
  169. package/dist/lib/ui/Frame.js +22 -0
  170. package/dist/lib/ui/Frame.js.map +1 -0
  171. package/dist/lib/ui/Item.d.ts +23 -0
  172. package/dist/lib/ui/Item.js +67 -0
  173. package/dist/lib/ui/Item.js.map +1 -0
  174. package/dist/lib/ui/NativeSelect.d.ts +5 -0
  175. package/dist/lib/ui/NativeSelect.js +14 -0
  176. package/dist/lib/ui/NativeSelect.js.map +1 -0
  177. package/dist/lib/ui/Select.d.ts +13 -11
  178. package/dist/lib/ui/Select.js +34 -23
  179. package/dist/lib/ui/Select.js.map +1 -1
  180. package/dist/lib/ui/Separator.d.ts +4 -0
  181. package/dist/lib/ui/Separator.js +8 -0
  182. package/dist/lib/ui/Separator.js.map +1 -0
  183. package/dist/lib/ui/Tooltip.d.ts +7 -7
  184. package/dist/lib/ui/Tooltip.js +16 -10
  185. package/dist/lib/ui/Tooltip.js.map +1 -1
  186. package/dist/lib/util/createVariantComponent.d.ts +5 -2
  187. package/dist/lib/util/createVariantComponent.js +5 -2
  188. package/dist/lib/util/createVariantComponent.js.map +1 -1
  189. package/dist/lib/util/flattenAllOf.d.ts +4 -0
  190. package/dist/lib/util/flattenAllOf.js +65 -0
  191. package/dist/lib/util/flattenAllOf.js.map +1 -0
  192. package/dist/lib/util/flattenAllOf.test.d.ts +1 -0
  193. package/dist/lib/util/flattenAllOf.test.js +532 -0
  194. package/dist/lib/util/flattenAllOf.test.js.map +1 -0
  195. package/dist/lib/util/readFrontmatter.d.ts +6 -0
  196. package/dist/lib/util/readFrontmatter.js +12 -0
  197. package/dist/lib/util/readFrontmatter.js.map +1 -0
  198. package/dist/vite/api/SchemaManager.js +6 -18
  199. package/dist/vite/api/SchemaManager.js.map +1 -1
  200. package/dist/vite/mdx/remark-last-modified.js +57 -3
  201. package/dist/vite/mdx/remark-last-modified.js.map +1 -1
  202. package/dist/vite/plugin-api.js +2 -2
  203. package/dist/vite/plugin-api.js.map +1 -1
  204. package/dist/vite/plugin-frontmatter.js +3 -5
  205. package/dist/vite/plugin-frontmatter.js.map +1 -1
  206. package/dist/vite/plugin-markdown-export.js +3 -4
  207. package/dist/vite/plugin-markdown-export.js.map +1 -1
  208. package/dist/vite/plugin-theme.js +10 -1
  209. package/dist/vite/plugin-theme.js.map +1 -1
  210. package/lib/{Button-DmS4u8Lj.js → Button-B3ucvvQw.js} +7 -6
  211. package/lib/Button-B3ucvvQw.js.map +1 -0
  212. package/lib/{ErrorAlert-DE3Sf66a.js → ErrorAlert-BOVgwTRP.js} +2832 -2857
  213. package/lib/ErrorAlert-BOVgwTRP.js.map +1 -0
  214. package/lib/{MdxPage-DZfeC0QY.js → MdxPage-CBYFyqUs.js} +6 -6
  215. package/lib/{MdxPage-DZfeC0QY.js.map → MdxPage-CBYFyqUs.js.map} +1 -1
  216. package/lib/{OAuthErrorPage-BycMozgn.js → OAuthErrorPage-DlTYnbLO.js} +4 -4
  217. package/lib/{OAuthErrorPage-BycMozgn.js.map → OAuthErrorPage-DlTYnbLO.js.map} +1 -1
  218. package/lib/{OasProvider-1XEOsIiW.js → OasProvider-DIPAQ79S.js} +2 -2
  219. package/lib/{OasProvider-1XEOsIiW.js.map → OasProvider-DIPAQ79S.js.map} +1 -1
  220. package/lib/OperationList-BOTFIfda.js +5688 -0
  221. package/lib/OperationList-BOTFIfda.js.map +1 -0
  222. package/lib/{Pagination-CJszmeSA.js → Pagination-BOZ9Pxcw.js} +2 -2
  223. package/lib/{Pagination-CJszmeSA.js.map → Pagination-BOZ9Pxcw.js.map} +1 -1
  224. package/lib/RouteGuard-Brz95MSt.js +77 -0
  225. package/lib/RouteGuard-Brz95MSt.js.map +1 -0
  226. package/lib/RouterError-DQS_bMwf.js +42 -0
  227. package/lib/RouterError-DQS_bMwf.js.map +1 -0
  228. package/lib/{SchemaList-qOHkDzSz.js → SchemaList-Bu95q_q2.js} +7 -7
  229. package/lib/{SchemaList-qOHkDzSz.js.map → SchemaList-Bu95q_q2.js.map} +1 -1
  230. package/lib/SchemaView-CaxK_HV4.js +586 -0
  231. package/lib/SchemaView-CaxK_HV4.js.map +1 -0
  232. package/lib/Select-DFRCS31-.js +399 -0
  233. package/lib/Select-DFRCS31-.js.map +1 -0
  234. package/lib/{SignUp-6SGx9Yyq.js → SignUp-CfB278ao.js} +2 -2
  235. package/lib/{SignUp-6SGx9Yyq.js.map → SignUp-CfB278ao.js.map} +1 -1
  236. package/lib/{SyntaxHighlight-zvlnSnHB.js → SyntaxHighlight-C19vH0V_.js} +525 -509
  237. package/lib/SyntaxHighlight-C19vH0V_.js.map +1 -0
  238. package/lib/{Toc-Da9yp7lo.js → Toc-DQIqdghO.js} +2 -2
  239. package/lib/{Toc-Da9yp7lo.js.map → Toc-DQIqdghO.js.map} +1 -1
  240. package/lib/{circular-CSSuz-LS.js → circular-B-_VyILZ.js} +6360 -5953
  241. package/lib/circular-B-_VyILZ.js.map +1 -0
  242. package/lib/{createServer-CLbcVLbK.js → createServer-C5lXk4ba.js} +4732 -4273
  243. package/lib/createServer-C5lXk4ba.js.map +1 -0
  244. package/lib/{errors-CuGgh3hf.js → errors-DqoyOKev.js} +2 -2
  245. package/lib/{errors-CuGgh3hf.js.map → errors-DqoyOKev.js.map} +1 -1
  246. package/lib/index-B7yD7ZUk.js +3680 -0
  247. package/lib/index-B7yD7ZUk.js.map +1 -0
  248. package/lib/{index-rYHsvtTo.js → index-BG79m3lF.js} +2 -2
  249. package/lib/{index-rYHsvtTo.js.map → index-BG79m3lF.js.map} +1 -1
  250. package/lib/{index-B1rmok4X.js → index-DHDtI9H5.js} +3 -3
  251. package/lib/{index-B1rmok4X.js.map → index-DHDtI9H5.js.map} +1 -1
  252. package/lib/ui/ActionButton.js +1 -1
  253. package/lib/ui/Badge.js +27 -13
  254. package/lib/ui/Badge.js.map +1 -1
  255. package/lib/ui/Button.js +6 -5
  256. package/lib/ui/Button.js.map +1 -1
  257. package/lib/ui/Checkbox.js +29 -26
  258. package/lib/ui/Checkbox.js.map +1 -1
  259. package/lib/ui/CodeBlock.js +7 -7
  260. package/lib/ui/CodeBlock.js.map +1 -1
  261. package/lib/ui/Collapsible.js +32 -5
  262. package/lib/ui/Collapsible.js.map +1 -1
  263. package/lib/ui/EmbeddedCodeBlock.js +26 -25
  264. package/lib/ui/EmbeddedCodeBlock.js.map +1 -1
  265. package/lib/ui/Frame.js +81 -0
  266. package/lib/ui/Frame.js.map +1 -0
  267. package/lib/ui/Item.js +188 -0
  268. package/lib/ui/Item.js.map +1 -0
  269. package/lib/ui/NativeSelect.js +57 -0
  270. package/lib/ui/NativeSelect.js.map +1 -0
  271. package/lib/ui/Select.js +166 -116
  272. package/lib/ui/Select.js.map +1 -1
  273. package/lib/ui/Separator.js +27 -0
  274. package/lib/ui/Separator.js.map +1 -0
  275. package/lib/ui/SyntaxHighlight.js +1 -1
  276. package/lib/ui/Tabs.js +10 -10
  277. package/lib/ui/Tooltip.js +55 -28
  278. package/lib/ui/Tooltip.js.map +1 -1
  279. package/lib/zudoku.__internal.js +345 -345
  280. package/lib/zudoku.__internal.js.map +1 -1
  281. package/lib/zudoku.auth-auth0.js +7 -7
  282. package/lib/zudoku.auth-auth0.js.map +1 -1
  283. package/lib/zudoku.auth-azureb2c.js +3 -3
  284. package/lib/zudoku.auth-clerk.js +1 -1
  285. package/lib/zudoku.auth-openid.js +3 -3
  286. package/lib/zudoku.auth-supabase.js +30 -33
  287. package/lib/zudoku.auth-supabase.js.map +1 -1
  288. package/lib/zudoku.components.js +2 -2
  289. package/lib/zudoku.plugin-api-catalog.js +3 -3
  290. package/lib/zudoku.plugin-api-keys.js +5 -5
  291. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  292. package/lib/zudoku.plugin-markdown.js +1 -1
  293. package/lib/zudoku.plugin-openapi.js +1 -1
  294. package/lib/zudoku.plugin-search-pagefind.js +2 -2
  295. package/package.json +18 -13
  296. package/src/app/main.css +1 -1
  297. package/src/app/main.tsx +5 -1
  298. package/src/lib/auth/issuer.ts +3 -0
  299. package/src/lib/authentication/authentication.ts +1 -1
  300. package/src/lib/authentication/providers/auth0.tsx +6 -1
  301. package/src/lib/authentication/providers/firebase.tsx +284 -0
  302. package/src/lib/authentication/providers/supabase.tsx +2 -7
  303. package/src/lib/authentication/ui/ZudokuAuthUi.tsx +335 -0
  304. package/src/lib/authentication/ui/icons/Apple.tsx +10 -0
  305. package/src/lib/authentication/ui/icons/Facebook.tsx +15 -0
  306. package/src/lib/authentication/ui/icons/Github.tsx +16 -0
  307. package/src/lib/authentication/ui/icons/Google.tsx +16 -0
  308. package/src/lib/authentication/ui/icons/Microsoft.tsx +12 -0
  309. package/src/lib/authentication/ui/icons/X.tsx +10 -0
  310. package/src/lib/components/Autocomplete.tsx +11 -2
  311. package/src/lib/components/Layout.tsx +3 -2
  312. package/src/lib/components/navigation/NavigationItem.tsx +7 -20
  313. package/src/lib/core/RouteGuard.tsx +8 -8
  314. package/src/lib/errors/ErrorAlert.tsx +1 -1
  315. package/src/lib/errors/RouterError.tsx +7 -2
  316. package/src/lib/oas/parser/index.ts +8 -3
  317. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +11 -7
  318. package/src/lib/plugins/openapi/CollapsibleCode.tsx +5 -3
  319. package/src/lib/plugins/openapi/GeneratedExampleSidecarBox.tsx +52 -0
  320. package/src/lib/plugins/openapi/OperationList.tsx +7 -0
  321. package/src/lib/plugins/openapi/OperationListItem.tsx +10 -7
  322. package/src/lib/plugins/openapi/ParameterList.tsx +37 -23
  323. package/src/lib/plugins/openapi/ParameterListItem.tsx +105 -54
  324. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +48 -7
  325. package/src/lib/plugins/openapi/ResponsesSidecarBox.tsx +81 -33
  326. package/src/lib/plugins/openapi/Sidecar.tsx +129 -65
  327. package/src/lib/plugins/openapi/SidecarBox.tsx +26 -4
  328. package/src/lib/plugins/openapi/SidecarExamples.tsx +91 -79
  329. package/src/lib/plugins/openapi/components/ConstValue.tsx +1 -1
  330. package/src/lib/plugins/openapi/components/EnumValues.tsx +2 -2
  331. package/src/lib/plugins/openapi/components/NonHighlightedCode.tsx +22 -0
  332. package/src/lib/plugins/openapi/components/ResponseContent.tsx +63 -53
  333. package/src/lib/plugins/openapi/interfaces.ts +12 -0
  334. package/src/lib/plugins/openapi/playground/BodyPanel.tsx +246 -30
  335. package/src/lib/plugins/openapi/playground/CollapsibleHeader.tsx +10 -6
  336. package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +3 -2
  337. package/src/lib/plugins/openapi/playground/Headers.tsx +103 -219
  338. package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +33 -1
  339. package/src/lib/plugins/openapi/playground/PathParams.tsx +26 -34
  340. package/src/lib/plugins/openapi/playground/Playground.tsx +73 -35
  341. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +9 -30
  342. package/src/lib/plugins/openapi/playground/QueryParams.tsx +82 -136
  343. package/src/lib/plugins/openapi/playground/request-panel/MultipartField.tsx +91 -0
  344. package/src/lib/plugins/openapi/playground/request-panel/UrlQueryParams.tsx +1 -1
  345. package/src/lib/plugins/openapi/playground/request-panel/fieldManager/useKeyValueFieldManager.test.tsx +872 -0
  346. package/src/lib/plugins/openapi/playground/request-panel/useKeyValueFieldManager.ts +349 -0
  347. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +2 -6
  348. package/src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx +1 -1
  349. package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +89 -55
  350. package/src/lib/plugins/openapi/schema/SchemaView.tsx +82 -53
  351. package/src/lib/plugins/openapi/schema/UnionView.tsx +6 -17
  352. package/src/lib/plugins/openapi/schema/union-helpers.ts +0 -1
  353. package/src/lib/plugins/openapi/util/generateSchemaExample.ts +5 -15
  354. package/src/lib/ui/Badge.tsx +21 -12
  355. package/src/lib/ui/Button.tsx +1 -0
  356. package/src/lib/ui/Checkbox.tsx +23 -24
  357. package/src/lib/ui/CodeBlock.tsx +3 -4
  358. package/src/lib/ui/Collapsible.tsx +26 -4
  359. package/src/lib/ui/EmbeddedCodeBlock.tsx +21 -19
  360. package/src/lib/ui/Frame.tsx +81 -0
  361. package/src/lib/ui/Item.tsx +192 -0
  362. package/src/lib/ui/NativeSelect.tsx +47 -0
  363. package/src/lib/ui/Select.tsx +153 -126
  364. package/src/lib/ui/Separator.tsx +25 -0
  365. package/src/lib/ui/Tooltip.tsx +54 -32
  366. package/src/lib/util/createVariantComponent.tsx +31 -5
  367. package/src/lib/util/flattenAllOf.test.ts +637 -0
  368. package/src/lib/util/flattenAllOf.ts +101 -0
  369. package/src/lib/util/readFrontmatter.ts +13 -0
  370. package/dist/lib/plugins/openapi/playground/InlineInput.d.ts +0 -4
  371. package/dist/lib/plugins/openapi/playground/InlineInput.js +0 -3
  372. package/dist/lib/plugins/openapi/playground/InlineInput.js.map +0 -1
  373. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.d.ts +0 -5
  374. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js +0 -7
  375. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.js.map +0 -1
  376. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.d.ts +0 -4
  377. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js +0 -10
  378. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.js.map +0 -1
  379. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.d.ts +0 -5
  380. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js +0 -16
  381. package/dist/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.js.map +0 -1
  382. package/lib/Button-DmS4u8Lj.js.map +0 -1
  383. package/lib/ErrorAlert-DE3Sf66a.js.map +0 -1
  384. package/lib/OperationList-DCJw6wXL.js +0 -5450
  385. package/lib/OperationList-DCJw6wXL.js.map +0 -1
  386. package/lib/RouteGuard-DhU3LRr1.js +0 -81
  387. package/lib/RouteGuard-DhU3LRr1.js.map +0 -1
  388. package/lib/RouterError-VDLnrFqF.js +0 -41
  389. package/lib/RouterError-VDLnrFqF.js.map +0 -1
  390. package/lib/SchemaView-D3hm65cc.js +0 -458
  391. package/lib/SchemaView-D3hm65cc.js.map +0 -1
  392. package/lib/Select-C1DeCqKv.js +0 -372
  393. package/lib/Select-C1DeCqKv.js.map +0 -1
  394. package/lib/SyntaxHighlight-zvlnSnHB.js.map +0 -1
  395. package/lib/circular-CSSuz-LS.js.map +0 -1
  396. package/lib/createServer-CLbcVLbK.js.map +0 -1
  397. package/lib/index-RNAxx6IF.js +0 -3364
  398. package/lib/index-RNAxx6IF.js.map +0 -1
  399. package/src/lib/plugins/openapi/playground/InlineInput.tsx +0 -6
  400. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.tsx +0 -36
  401. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.tsx +0 -25
  402. package/src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.tsx +0 -42
@@ -0,0 +1,4 @@
1
+ export declare const NonHighlightedCode: ({ code, className, }: {
2
+ code: string;
3
+ className?: string;
4
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../../util/cn.js";
3
+ import { OverflowOverlay } from "../CollapsibleCode.js";
4
+ export const NonHighlightedCode = ({ code, className, }) => (_jsx("pre", { className: cn("relative text-(--shiki-light) dark:text-(--shiki-dark) p-2 text-xs font-mono max-h-[250px] leading-4.5 bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg) overflow-hidden", className), children: _jsxs("code", { children: [code.split("\n").length > 13 && _jsx(OverflowOverlay, {}), code] }) }));
5
+ //# sourceMappingURL=NonHighlightedCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NonHighlightedCode.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/components/NonHighlightedCode.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,IAAI,EACJ,SAAS,GAIV,EAAE,EAAE,CAAC,CACJ,cACE,SAAS,EAAE,EAAE,CACX,wKAAwK,EACxK,SAAS,CACV,YAED,2BACG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,KAAC,eAAe,KAAG,EACnD,IAAI,IACA,GACH,CACP,CAAC"}
@@ -2,20 +2,19 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as Tabs from "@radix-ui/react-tabs";
3
3
  import { useState } from "react";
4
4
  import { Markdown } from "zudoku/components";
5
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "zudoku/ui/Select.js";
5
+ import { Badge } from "zudoku/ui/Badge.js";
6
+ import { NativeSelect, NativeSelectOption } from "zudoku/ui/NativeSelect.js";
6
7
  import { cn } from "zudoku/ui/util.js";
7
8
  import { SchemaView } from "../schema/SchemaView.js";
8
9
  export const ResponseContent = ({ responses, selectedResponse, onSelectResponse, }) => {
9
10
  const [selectedMediaType, setSelectedMediaType] = useState(responses[0]?.content?.[0]?.mediaType ?? "");
10
11
  const currentResponse = responses.find((r) => r.statusCode === selectedResponse) ?? responses[0];
11
- const cardHeader = (_jsxs("div", { className: "flex flex-col bg-muted text-muted-foreground", children: [_jsxs("div", { className: "flex flex-row items-center gap-2 justify-between px-4 py-2", children: [_jsx(Tabs.List, { className: "flex flex-row font-medium text-sm gap-4", children: responses.map((response) => (_jsx(Tabs.Trigger, { value: response.statusCode, className: cn("py-1 -mx-2 px-2 rounded-md", "data-[state=active]:dark:ring-1 data-[state=active]:dark:ring-border data-[state=active]:bg-background data-[state=active]:drop-shadow", "data-[state=active]:font-semibold data-[state=active]:text-foreground"), children: response.statusCode }, response.statusCode))) }), currentResponse?.content && currentResponse.content.length > 1 && (_jsxs(Select, { value: selectedMediaType, onValueChange: setSelectedMediaType, children: [_jsx(SelectTrigger, { className: "h-8 mt-0 max-w-48 text-xs truncate", children: _jsx(SelectValue, { placeholder: "Select a type" }) }), _jsx(SelectContent, { children: currentResponse.content.map((c) => (_jsx(SelectItem, { value: c.mediaType, children: c.mediaType }, c.mediaType))) })] }))] }), currentResponse?.description && (_jsx(Markdown, { className: "text-sm border-t px-4 py-2 text-muted-foreground", content: currentResponse.description }))] }));
12
+ const hideTabs = responses.length === 1 && responses.at(0)?.statusCode === "200";
13
+ const cardHeader = (_jsxs("div", { className: "flex flex-col text-muted-foreground", children: [_jsxs("div", { className: cn("flex flex-row items-center gap-2 justify-between", !hideTabs && "px-4 py-1.5 border-b"), children: [!hideTabs && (_jsx(Tabs.List, { className: "flex flex-row font-medium text-sm gap-4", children: responses.map((response) => (_jsx(Tabs.Trigger, { value: response.statusCode, className: cn("py-0.5 h-fit -mx-2 px-2 rounded-md", "data-[state=active]:dark:ring-1 data-[state=active]:dark:ring-border data-[state=active]:bg-background data-[state=active]:drop-shadow", "data-[state=active]:font-semibold data-[state=active]:text-foreground"), children: response.statusCode }, response.statusCode))) })), currentResponse?.content && currentResponse.content.length > 1 && (_jsx(NativeSelect, { value: selectedMediaType, onChange: (e) => setSelectedMediaType(e.target.value), className: "text-xs h-fit py-1 bg-background", children: currentResponse.content.map((c) => (_jsx(NativeSelectOption, { value: c.mediaType, children: c.mediaType }, c.mediaType))) }))] }), _jsxs("div", { className: "p-2 clear-both", children: [hideTabs && (_jsx(Badge, { variant: "outline", className: "float-start me-2", children: currentResponse?.statusCode })), currentResponse?.description && (_jsx(Markdown, { className: "text-sm text-muted-foreground max-w-none", content: currentResponse.description }))] })] }));
12
14
  return (_jsx("div", { className: "flex flex-col gap-2", children: _jsx(Tabs.Root, { value: selectedResponse, onValueChange: (value) => {
13
15
  onSelectResponse?.(value);
14
16
  const newResponse = responses.find((r) => r.statusCode === value);
15
17
  setSelectedMediaType(newResponse?.content?.[0]?.mediaType ?? "");
16
- }, children: responses.map((response) => {
17
- const content = response.content?.find((c) => c.mediaType === selectedMediaType);
18
- return (_jsx(Tabs.Content, { value: response.statusCode, children: _jsx(SchemaView, { schema: content?.schema, cardHeader: cardHeader }) }, response.statusCode));
19
- }) }) }));
18
+ }, children: responses.map((response) => (_jsx(Tabs.Content, { value: response.statusCode, children: _jsx(SchemaView, { schema: response.content?.find((content) => content.mediaType === selectedMediaType)?.schema, cardHeader: cardHeader }) }, response.statusCode))) }) }));
20
19
  };
21
20
  //# sourceMappingURL=ResponseContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResponseContent.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/components/ResponseContent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResponseContent.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/components/ResponseContent.tsx"],"names":[],"mappings":"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"}
@@ -47,6 +47,14 @@ export type TransformExamplesFn = (options: {
47
47
  operation: OperationsFragmentFragment;
48
48
  type: "request" | "response";
49
49
  }) => Content[];
50
+ export type GenerateCodeSnippetFn = (options: {
51
+ selectedLang: string;
52
+ selectedServer: string;
53
+ context: ZudokuContext;
54
+ auth: AuthState;
55
+ operation: OperationsFragmentFragment;
56
+ example?: any | null;
57
+ }) => string | false;
50
58
  type BaseOasConfig = {
51
59
  server?: string;
52
60
  path?: string;
@@ -55,12 +63,17 @@ type BaseOasConfig = {
55
63
  schemaImports?: SchemaImports;
56
64
  options?: {
57
65
  examplesLanguage?: string;
66
+ supportedLanguages?: {
67
+ value: string;
68
+ label: string;
69
+ }[];
58
70
  disablePlayground?: boolean;
59
71
  disableSidecar?: boolean;
60
72
  showVersionSelect?: "always" | "if-available" | "hide";
61
73
  expandAllTags?: boolean;
62
74
  expandApiInformation?: boolean;
63
75
  transformExamples?: TransformExamplesFn;
76
+ generateCodeSnippet?: GenerateCodeSnippetFn;
64
77
  };
65
78
  };
66
79
  export type OasPluginConfig = BaseOasConfig & OasSource;
@@ -1,26 +1,78 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { FileInput } from "lucide-react";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronDownIcon, FileInput, Grid2x2PlusIcon, PaperclipIcon, ScanTextIcon, XIcon, } from "lucide-react";
3
+ import { useRef, useState } from "react";
3
4
  import { useFormContext } from "react-hook-form";
5
+ import { Button } from "zudoku/components";
4
6
  import { Collapsible, CollapsibleContent } from "zudoku/ui/Collapsible.js";
7
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "zudoku/ui/DropdownMenu.js";
5
8
  import { Textarea } from "zudoku/ui/Textarea.js";
6
9
  import { cn } from "../../../util/cn.js";
10
+ import { humanFileSize } from "../../../util/humanFileSize.js";
7
11
  import { CollapsibleHeader, CollapsibleHeaderTrigger, } from "./CollapsibleHeader.js";
8
12
  import ExamplesDropdown from "./ExamplesDropdown.js";
13
+ import ParamsGrid from "./ParamsGrid.js";
14
+ import { MultipartField } from "./request-panel/MultipartField.js";
15
+ import { useKeyValueFieldManager } from "./request-panel/useKeyValueFieldManager.js";
9
16
  export const BodyPanel = ({ content }) => {
10
- const { register, setValue, watch } = useFormContext();
17
+ const { register, setValue, watch, control } = useFormContext();
11
18
  const examples = (content ?? []).flatMap((e) => e.examples);
12
- const headers = watch("headers");
13
- return (_jsxs(Collapsible, { defaultOpen: true, children: [_jsxs(CollapsibleHeaderTrigger, { children: [_jsx(FileInput, { size: 16 }), _jsx(CollapsibleHeader, { children: "Body" }), content && examples.length > 0 ? (_jsx(ExamplesDropdown, { examples: content, onSelect: (example, mediaType) => {
14
- setValue("body", JSON.stringify(example.value, null, 2));
15
- setValue("headers", [
16
- ...headers.filter((h) => h.name !== "Content-Type"),
17
- {
18
- name: "Content-Type",
19
- value: mediaType,
20
- active: true,
21
- },
22
- ]);
23
- } })) : (_jsx("div", {}))] }), _jsx(CollapsibleContent, { className: "flex flex-col gap-2 ", children: _jsx(Textarea, { ...register("body"), className: cn("w-full p-2 h-64 font-mono md:text-xs border-none rounded-none focus-visible:ring-0"), placeholder: "Your body here..." }) })] }));
19
+ const [headers, file, bodyMode, body, multipartFormFields] = watch([
20
+ "headers",
21
+ "file",
22
+ "bodyMode",
23
+ "body",
24
+ "multipartFormFields",
25
+ ]);
26
+ const fileInputRef = useRef(null);
27
+ const [isDragging, setIsDragging] = useState(false);
28
+ const handleFileSelect = (selectedFile) => {
29
+ setValue("file", selectedFile);
30
+ if (!selectedFile)
31
+ return;
32
+ setValue("headers", headers.filter((h) => h.name.toLowerCase() !== "content-type" || !h.active));
33
+ };
34
+ const handleFileInputChange = (e) => {
35
+ const selectedFile = e.target.files?.[0] ?? null;
36
+ handleFileSelect(selectedFile);
37
+ };
38
+ const handleDragOver = (e) => {
39
+ e.preventDefault();
40
+ e.stopPropagation();
41
+ setIsDragging(true);
42
+ };
43
+ const handleDragLeave = (e) => {
44
+ e.preventDefault();
45
+ e.stopPropagation();
46
+ setIsDragging(false);
47
+ };
48
+ const handleDrop = (e) => {
49
+ e.preventDefault();
50
+ e.stopPropagation();
51
+ setIsDragging(false);
52
+ const droppedFile = e.dataTransfer.files?.[0] ?? null;
53
+ handleFileSelect(droppedFile);
54
+ };
55
+ const manager = useKeyValueFieldManager({
56
+ control,
57
+ name: "multipartFormFields",
58
+ defaultValue: { name: "", value: "", active: false },
59
+ isEmpty: (item) => {
60
+ if (item.value instanceof File)
61
+ return false;
62
+ return !item.name && !item.value;
63
+ },
64
+ });
65
+ return (_jsxs(Collapsible, { defaultOpen: true, children: [_jsxs(CollapsibleHeaderTrigger, { className: "items-center", children: [_jsx(FileInput, { size: 16 }), _jsxs(CollapsibleHeader, { className: "flex items-center justify-between", children: ["Body", _jsxs("div", { className: "flex items-center", children: [_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", className: "hover:bg-accent hover:brightness-95 gap-2", children: [bodyMode === "text" ? (_jsxs(_Fragment, { children: [_jsx(ScanTextIcon, { size: 14 }), "Text"] })) : bodyMode === "file" ? (_jsxs(_Fragment, { children: [_jsx(PaperclipIcon, { size: 14 }), "File"] })) : (_jsxs(_Fragment, { children: [_jsx(Grid2x2PlusIcon, { size: 14 }), "Multipart"] })), _jsx(ChevronDownIcon, { size: 14 })] }) }), _jsxs(DropdownMenuContent, { className: "min-w-40", children: [_jsxs(DropdownMenuItem, { onSelect: () => setValue("bodyMode", "text"), className: "gap-2", children: [_jsx(ScanTextIcon, { size: 14 }), _jsx("span", { className: "flex-1", children: "Text" }), _jsx("span", { children: body.length > 0 && (_jsx("div", { className: "w-1.5 h-1.5 bg-primary rounded-full" })) })] }), _jsxs(DropdownMenuItem, { onSelect: () => setValue("bodyMode", "file"), className: "gap-2", children: [_jsx(PaperclipIcon, { size: 14 }), _jsx("span", { className: "flex-1", children: "File" }), _jsx("span", { children: file && (_jsx("div", { className: "w-1.5 h-1.5 bg-primary rounded-full" })) })] }), _jsxs(DropdownMenuItem, { onSelect: () => setValue("bodyMode", "multipart"), className: "gap-2", children: [_jsx(Grid2x2PlusIcon, { size: 14, strokeWidth: 1.5 }), _jsx("span", { className: "flex-1", children: "Multipart" }), _jsx("span", { children: multipartFormFields?.some((field) => field.active) && (_jsx("div", { className: "w-1.5 h-1.5 bg-primary rounded-full" })) })] })] })] }), _jsx("input", { ref: fileInputRef, type: "file", className: "hidden", onChange: handleFileInputChange }), _jsx("div", { className: "w-px mx-1 h-5 bg-border" }), content && examples.length > 0 ? (_jsx(ExamplesDropdown, { examples: content, onSelect: (example, mediaType) => {
66
+ setValue("body", JSON.stringify(example.value, null, 2));
67
+ setValue("headers", [
68
+ ...headers.filter((h) => h.name !== "Content-Type"),
69
+ {
70
+ name: "Content-Type",
71
+ value: mediaType,
72
+ active: true,
73
+ },
74
+ ]);
75
+ } })) : (_jsx("div", {}))] })] })] }), _jsxs(CollapsibleContent, { className: "CollapsibleContent flex flex-col gap-2", children: [bodyMode === "text" && (_jsx(Textarea, { ...register("body"), className: cn("w-full px-4 py-2.5 h-64 font-mono md:text-xs border-none rounded-none focus-visible:ring-0 transition-colors"), placeholder: "Body content" })), bodyMode === "file" && (_jsxs("div", { role: "region", "aria-label": "File upload drop zone", className: cn("flex flex-col items-center justify-center gap-4 min-h-[300px]"), onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDrop: handleDrop, children: [_jsx("button", { type: "button", onClick: () => fileInputRef.current?.click(), className: cn("flex items-center justify-center gap-2 rounded-full size-20 p-0 border border-dashed border-muted-foreground/50 hover:bg-accent/75 transition-colors", (file || isDragging) && "border-solid", isDragging && "bg-accent border-primary"), children: _jsx(PaperclipIcon, { className: cn("text-muted-foreground", isDragging && "text-primary"), size: 30 }) }), file ? (_jsxs("div", { className: "flex items-center justify-between gap-2 px-2 py-1.5 rounded-md border", children: [_jsxs("span", { className: "text-sm truncate", title: file.name, children: [file.name, " ", _jsxs("span", { className: "text-muted-foreground", children: ["(", humanFileSize(file.size), ")"] })] }), _jsx(Button, { type: "button", variant: "ghost", size: "icon-xxs", onClick: () => handleFileSelect(null), children: _jsx(XIcon, { size: 14 }) })] })) : (_jsx("span", { className: "text-lg font-semibold text-muted-foreground", children: "Select or drop a file" }))] })), bodyMode === "multipart" && (_jsx(ParamsGrid, { children: manager.fields.map((field, index) => (_jsx(MultipartField, { index: index, manager: manager }, field.id))) }))] })] }));
24
76
  };
25
77
  export default BodyPanel;
26
78
  //# sourceMappingURL=BodyPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BodyPanel.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/BodyPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAEzC,OAAO,EACL,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAGrD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,OAAO,EAAmC,EAAE,EAAE;IACxE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,cAAc,EAAkB,CAAC;IACvE,MAAM,QAAQ,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,CACL,MAAC,WAAW,IAAC,WAAW,mBACtB,MAAC,wBAAwB,eACvB,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,EACvB,KAAC,iBAAiB,uBAAyB,EAC1C,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAChC,KAAC,gBAAgB,IACf,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;4BAC/B,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;4BACzD,QAAQ,CAAC,SAAS,EAAE;gCAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC;gCACnD;oCACE,IAAI,EAAE,cAAc;oCACpB,KAAK,EAAE,SAAS;oCAChB,MAAM,EAAE,IAAI;iCACb;6BACF,CAAC,CAAC;wBACL,CAAC,GACD,CACH,CAAC,CAAC,CAAC,CACF,eAAO,CACR,IACwB,EAC3B,KAAC,kBAAkB,IAAC,SAAS,EAAC,sBAAsB,YAClD,KAAC,QAAQ,OACH,QAAQ,CAAC,MAAM,CAAC,EACpB,SAAS,EAAE,EAAE,CACX,oFAAoF,CACrF,EACD,WAAW,EAAC,mBAAmB,GAC/B,GACiB,IACT,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"BodyPanel.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/BodyPanel.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ChevronUpIcon } from "lucide-react";
2
+ import { ChevronsDownUpIcon, ChevronsUpDownIcon } from "lucide-react";
3
3
  import { CollapsibleTrigger } from "zudoku/ui/Collapsible.js";
4
4
  import { cn } from "../../../util/cn.js";
5
5
  export const CollapsibleHeaderTrigger = ({ children, className, }) => {
6
- return (_jsxs("div", { className: cn("grid grid-cols-[max-content_1fr_min-content_max-content] items-center gap-2 group bg-muted w-full h-10 ps-4 pe-2 border-b", className), children: [children, _jsx(CollapsibleTrigger, { className: cn("flex items-center gap-4 group bg-muted w-full p-2 hover:bg-accent hover:brightness-95 rounded-md", className), children: _jsx(ChevronUpIcon, { className: "group-data-[state=open]:rotate-180 transition-transform shrink-0", size: 16 }) })] }));
6
+ return (_jsxs("div", { className: cn("grid grid-cols-[max-content_1fr_max-content] items-center gap-2 group bg-muted w-full h-10 ps-4 pe-2 border-b", className), children: [children, _jsxs(CollapsibleTrigger, { className: cn("flex items-center gap-4 group bg-muted w-full p-2 hover:bg-accent hover:brightness-95 opacity-75 rounded-md", className), children: [_jsx(ChevronsDownUpIcon, { className: "group-data-[state=closed]:hidden shrink-0", size: 14 }), _jsx(ChevronsUpDownIcon, { className: "group-data-[state=open]:hidden shrink-0", size: 14 })] })] }));
7
7
  };
8
8
  export const CollapsibleHeader = ({ children, className, }) => {
9
9
  return (_jsx("span", { className: cn("font-semibold w-full text-start", className), children: children }));
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleHeader.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/CollapsibleHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAEzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACvC,QAAQ,EACR,SAAS,GAIV,EAAE,EAAE;IACH,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,2HAA2H,EAC3H,SAAS,CACV,aAEA,QAAQ,EACT,KAAC,kBAAkB,IACjB,SAAS,EAAE,EAAE,CACX,kGAAkG,EAClG,SAAS,CACV,YAED,KAAC,aAAa,IACZ,SAAS,EAAC,kEAAkE,EAC5E,IAAI,EAAE,EAAE,GACR,GACiB,IACjB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,QAAQ,EACR,SAAS,GAIV,EAAE,EAAE;IACH,OAAO,CACL,eAAM,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,YAC9D,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"CollapsibleHeader.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/CollapsibleHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAEzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACvC,QAAQ,EACR,SAAS,GAIV,EAAE,EAAE;IACH,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,+GAA+G,EAC/G,SAAS,CACV,aAEA,QAAQ,EACT,MAAC,kBAAkB,IACjB,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,SAAS,CACV,aAED,KAAC,kBAAkB,IACjB,SAAS,EAAC,2CAA2C,EACrD,IAAI,EAAE,EAAE,GACR,EACF,KAAC,kBAAkB,IACjB,SAAS,EAAC,yCAAyC,EACnD,IAAI,EAAE,EAAE,GACR,IACiB,IACjB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,QAAQ,EACR,SAAS,GAIV,EAAE,EAAE;IACH,OAAO,CACL,eAAM,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,YAC9D,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -3,7 +3,7 @@ import { PlusCircleIcon } from "lucide-react";
3
3
  import { Button } from "zudoku/ui/Button.js";
4
4
  import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "zudoku/ui/DropdownMenu.js";
5
5
  const ExamplesDropdown = ({ examples, onSelect, }) => {
6
- return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", className: "hover:bg-accent hover:brightness-95", children: ["Use Example ", _jsx(PlusCircleIcon, { size: 16, className: "ml-2" })] }) }), _jsx(DropdownMenuContent, { className: "max-w-72", children: examples.map((mediaTypeObject) => (_jsxs("div", { children: [_jsx(DropdownMenuLabel, { children: mediaTypeObject.mediaType }), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuGroup, { children: mediaTypeObject.examples?.map((example) => (_jsx(DropdownMenuItem, { onSelect: () => onSelect(example, mediaTypeObject.mediaType), children: _jsx("span", { className: "line-clamp-1", title: example.summary ?? example.name, children: example.summary ?? example.name }) }, example.name))) })] }, mediaTypeObject.mediaType))) })] }));
6
+ return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", className: "hover:bg-accent hover:brightness-95 gap-2", children: ["Use Example", _jsx(PlusCircleIcon, { size: 14 })] }) }), _jsx(DropdownMenuContent, { className: "max-w-72", children: examples.map((mediaTypeObject) => (_jsxs("div", { children: [_jsx(DropdownMenuLabel, { children: mediaTypeObject.mediaType }), _jsx(DropdownMenuSeparator, {}), _jsx(DropdownMenuGroup, { children: mediaTypeObject.examples?.map((example) => (_jsx(DropdownMenuItem, { onSelect: () => onSelect(example, mediaTypeObject.mediaType), children: _jsx("span", { className: "line-clamp-1", title: example.summary ?? example.name, children: example.summary ?? example.name }) }, example.name))) })] }, mediaTypeObject.mediaType))) })] }));
7
7
  };
8
8
  export default ExamplesDropdown;
9
9
  //# sourceMappingURL=ExamplesDropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExamplesDropdown.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/ExamplesDropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,gBAAgB,GAAG,CAAC,EACxB,QAAQ,EACR,QAAQ,GAIT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,qCAAqC,6BAEnC,KAAC,cAAc,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,MAAM,GAAG,IAClD,GACW,EACtB,KAAC,mBAAmB,IAAC,SAAS,EAAC,UAAU,YACtC,QAAQ,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CACjC,0BACE,KAAC,iBAAiB,cAAE,eAAe,CAAC,SAAS,GAAqB,EAClE,KAAC,qBAAqB,KAAG,EACzB,KAAC,iBAAiB,cACf,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC1C,KAAC,gBAAgB,IAEf,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,YAE5D,eACE,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,YAErC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,GAC3B,IARF,OAAO,CAAC,IAAI,CASA,CACpB,CAAC,GACgB,KAjBZ,eAAe,CAAC,SAAS,CAkB7B,CACP,CAAC,GACkB,IACT,CAChB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"ExamplesDropdown.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/ExamplesDropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,gBAAgB,GAAG,CAAC,EACxB,QAAQ,EACR,QAAQ,GAIT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,2CAA2C,4BAGrD,KAAC,cAAc,IAAC,IAAI,EAAE,EAAE,GAAI,IACrB,GACW,EACtB,KAAC,mBAAmB,IAAC,SAAS,EAAC,UAAU,YACtC,QAAQ,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CACjC,0BACE,KAAC,iBAAiB,cAAE,eAAe,CAAC,SAAS,GAAqB,EAClE,KAAC,qBAAqB,KAAG,EACzB,KAAC,iBAAiB,cACf,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC1C,KAAC,gBAAgB,IAEf,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,YAE5D,eACE,SAAS,EAAC,cAAc,EACxB,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,YAErC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,GAC3B,IARF,OAAO,CAAC,IAAI,CASA,CACpB,CAAC,GACgB,KAjBZ,eAAe,CAAC,SAAS,CAkB7B,CACP,CAAC,GACkB,IACT,CAChB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,73 +1,34 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { CircleAlertIcon, LockIcon, PlusCircleIcon, TableOfContentsIcon, XIcon, } from "lucide-react";
3
- import { useCallback, useEffect, useRef } from "react";
4
- import { Controller, useFieldArray, useFormContext, } from "react-hook-form";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CircleAlertIcon, LockIcon, TableOfContentsIcon } from "lucide-react";
3
+ import { useFormContext } from "react-hook-form";
5
4
  import { Checkbox } from "zudoku/ui/Checkbox.js";
6
5
  import { Collapsible, CollapsibleContent } from "zudoku/ui/Collapsible.js";
7
6
  import { Tooltip, TooltipContent, TooltipTrigger } from "zudoku/ui/Tooltip.js";
8
7
  import { Autocomplete } from "../../../components/Autocomplete.js";
9
- import { Button } from "../../../ui/Button.js";
10
- import { Input } from "../../../ui/Input.js";
11
8
  import { cn } from "../../../util/cn.js";
12
9
  import { CollapsibleHeader, CollapsibleHeaderTrigger, } from "./CollapsibleHeader.js";
13
- import ParamsGrid, { ParamsGridItem } from "./ParamsGrid.js";
10
+ import ParamsGrid, { ParamsGridInput, ParamsGridItem, ParamsGridRemoveButton, } from "./ParamsGrid.js";
11
+ import { useKeyValueFieldManager } from "./request-panel/useKeyValueFieldManager.js";
12
+ // biome-ignore format: Easier to read
14
13
  const headerOptions = Object.freeze([
15
- "Accept",
16
- "Accept-Encoding",
17
- "Accept-Language",
18
- "Authorization",
19
- "Cache-Control",
20
- "Connection",
21
- "Content-Disposition",
22
- "Content-Encoding",
23
- "Content-Language",
24
- "Content-Length",
25
- "Content-Range",
26
- "Content-Security-Policy",
27
- "Content-Type",
28
- "Cookie",
29
- "Date",
30
- "ETag",
31
- "Expires",
32
- "Host",
33
- "If-Modified-Since",
34
- "Location",
35
- "Origin",
36
- "Pragma",
37
- "Referer",
38
- "Set-Cookie",
39
- "User-Agent",
14
+ "Accept", "Accept-Encoding", "Accept-Language", "Authorization", "Cache-Control", "Connection",
15
+ "Content-Disposition", "Content-Encoding", "Content-Language", "Content-Length", "Content-Range",
16
+ "Content-Security-Policy", "Content-Type", "Cookie", "Date", "ETag", "Expires", "Host",
17
+ "If-Modified-Since", "Location", "Origin", "Pragma", "Referer", "Set-Cookie", "User-Agent",
40
18
  "X-Requested-With",
41
19
  ]);
42
20
  export const Headers = ({ control, schemaHeaders, lockedHeaders, }) => {
43
- const { fields, append, remove } = useFieldArray({
21
+ const { watch, formState } = useFormContext();
22
+ const watchedHeaders = watch("headers");
23
+ const manager = useKeyValueFieldManager({
44
24
  control,
45
25
  name: "headers",
26
+ defaultValue: { name: "", value: "", active: false },
46
27
  });
47
- const { setValue, watch, formState } = useFormContext();
48
- const valueRefs = useRef([]);
49
- const nameRefs = useRef([]);
50
- const watchedHeaders = watch("headers");
51
- const addNewHeader = useCallback((e) => {
52
- e?.stopPropagation();
53
- append({ name: "", value: "", active: false }, { shouldFocus: true });
54
- }, [append]);
55
- useEffect(() => {
56
- if (watchedHeaders.length === 0) {
57
- addNewHeader();
58
- }
59
- }, [watchedHeaders, addNewHeader]);
60
- const handleHeaderEnter = (index) => {
61
- valueRefs.current[index]?.focus();
62
- };
63
- const handleValueEnter = (index) => {
64
- addNewHeader();
65
- requestAnimationFrame(() => nameRefs.current[index + 1]?.focus());
66
- };
67
28
  const missingHeaders = schemaHeaders
68
29
  .filter((h) => !watchedHeaders.some((f) => f.name === h.name))
69
30
  .map(({ name }) => name);
70
- const hiddenHeadersIndex = fields.flatMap((f, index) => {
31
+ const hiddenHeadersIndex = manager.fields.flatMap((f, index) => {
71
32
  const keep = !lockedHeaders
72
33
  ?.map((h) => h.toLowerCase())
73
34
  .includes(f.name.toLowerCase());
@@ -80,37 +41,16 @@ export const Headers = ({ control, schemaHeaders, lockedHeaders, }) => {
80
41
  active: true,
81
42
  locked: true,
82
43
  })) ?? [];
83
- return (_jsxs(Collapsible, { defaultOpen: true, children: [_jsxs(CollapsibleHeaderTrigger, { children: [_jsx(TableOfContentsIcon, { size: 16 }), _jsx(CollapsibleHeader, { children: "Headers" }), _jsxs(Button, { onClick: addNewHeader, type: "button", size: "sm", variant: "ghost", className: "hover:bg-accent hover:brightness-95 flex gap-2", children: ["Add header ", _jsx(PlusCircleIcon, { size: 16 })] })] }), _jsx(CollapsibleContent, { className: "CollapsibleContent", children: _jsx("div", { className: "flex flex-col gap-2", children: _jsx("div", { className: "overflow-hidden", children: _jsxs(ParamsGrid, { children: [lockedHeaderFields.map((field) => {
84
- return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(ParamsGridItem, { className: "opacity-50 cursor-not-allowed font-mono text-xs min-h-10", children: [_jsx(LockIcon, { size: 16 }), _jsx(Input, { value: field.name, disabled: true, className: "w-full border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono" }), _jsx("div", { children: field.value })] }, field.id) }), _jsx(TooltipContent, { alignOffset: 10, side: "bottom", align: "start", children: _jsx("p", { children: "This header is set by the selected authentication." }) })] }, field.id));
85
- }), fields.map((field, i) => {
44
+ return (_jsxs(Collapsible, { defaultOpen: true, children: [_jsxs(CollapsibleHeaderTrigger, { children: [_jsx(TableOfContentsIcon, { size: 14 }), _jsx(CollapsibleHeader, { children: "Headers" })] }), _jsx(CollapsibleContent, { className: "CollapsibleContent", children: _jsx("div", { className: "flex flex-col gap-2", children: _jsx("div", { className: "overflow-hidden", children: _jsxs(ParamsGrid, { children: [lockedHeaderFields.map((field) => (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(ParamsGridItem, { className: "opacity-50 cursor-not-allowed font-mono text-xs min-h-10", children: [_jsx(LockIcon, { size: 16 }), _jsx(ParamsGridInput, { value: field.name, disabled: true }), _jsx("div", { children: field.value })] }, field.id) }), _jsx(TooltipContent, { alignOffset: 10, side: "bottom", align: "start", children: _jsx("p", { children: "This header is set by the selected authentication." }) })] }, field.id))), manager.fields.map((field, i) => {
86
45
  const currentSchemaHeader = schemaHeaders.find((h) => h.name === watchedHeaders.at(i)?.name);
87
- return (_jsxs(ParamsGridItem, { className: cn(hiddenHeadersIndex.includes(i) && "text-amber-600", hiddenHeadersIndex.includes(i) &&
46
+ const hasEnum = currentSchemaHeader?.enum &&
47
+ currentSchemaHeader.enum.length > 0;
48
+ const isHidden = hiddenHeadersIndex.includes(i);
49
+ const nameInputProps = manager.getNameInputProps(i);
50
+ const valueInputProps = manager.getValueInputProps(i);
51
+ return (_jsxs(ParamsGridItem, { className: cn(isHidden && "text-amber-600", isHidden &&
88
52
  !formState.dirtyFields.headers?.[i]?.value &&
89
- "hidden"), children: [_jsx(Controller, { control: control, name: `headers.${i}.active`, render: ({ field }) => (_jsxs(_Fragment, { children: [_jsx(Checkbox, { id: `headers.${i}.active`, className: cn(hiddenHeadersIndex.includes(i) && "hidden"), checked: field.value, onCheckedChange: (checked) => {
90
- field.onChange(checked);
91
- } }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(CircleAlertIcon, { className: cn("text-amber-600", !hiddenHeadersIndex.includes(i) && "hidden"), size: 16 }) }), _jsx(TooltipContent, { alignOffset: 10, side: "bottom", align: "start", children: _jsx("p", { children: "This header will be overwritten by the selected authentication." }) })] })] })) }), _jsx(Controller, { control: control, name: `headers.${i}.name`, render: ({ field }) => (_jsx(Autocomplete, { ...field, placeholder: "Name", className: "border-0 p-0 m-0 shadow-none focus-visible:ring-0 bg-transparent hover:bg-transparent text-xs font-mono", options: [...missingHeaders, ...headerOptions], onEnterPress: () => handleHeaderEnter(i), onChange: (e) => {
92
- field.onChange(e);
93
- setValue(`headers.${i}.active`, true);
94
- }, ref: (el) => {
95
- nameRefs.current[i] = el;
96
- } })) }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Controller, { control: control, name: `headers.${i}.value`, render: ({ field }) => {
97
- const hasEnum = currentSchemaHeader?.enum &&
98
- currentSchemaHeader.enum.length > 0;
99
- if (!hasEnum) {
100
- return (_jsx(Input, { placeholder: "Value", className: "w-full truncate border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono", autoComplete: "off", ...field, ref: (el) => {
101
- valueRefs.current[i] = el;
102
- }, onKeyDown: (e) => {
103
- if (e.key === "Enter" &&
104
- e.currentTarget.value.trim()) {
105
- handleValueEnter(i);
106
- }
107
- } }));
108
- }
109
- return (_jsx(Autocomplete, { shouldFilter: false, value: field.value, options: currentSchemaHeader.enum ?? [], onChange: (e) => {
110
- field.onChange(e);
111
- setValue(`headers.${i}.active`, true);
112
- }, className: "border-0 p-0 m-0 shadow-none focus-visible:ring-0 bg-transparent hover:bg-transparent text-xs font-mono" }));
113
- } }), _jsx(Button, { size: "icon-xs", variant: "ghost", className: "text-muted-foreground opacity-0 group-hover:brightness-95 group-hover:opacity-100", onClick: () => remove(i), type: "button", children: _jsx(XIcon, { size: 16 }) })] })] }, field.id));
53
+ "hidden"), children: [_jsx(Checkbox, { className: cn(isHidden && "hidden"), ...manager.getCheckboxProps(i) }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(CircleAlertIcon, { className: cn("text-amber-600", !isHidden && "hidden"), size: 16 }) }), _jsx(TooltipContent, { alignOffset: 10, side: "bottom", align: "start", children: _jsx("p", { children: "This header will be overwritten by the selected authentication." }) })] }), _jsx(ParamsGridInput, { asChild: true, children: _jsx(Autocomplete, { ...nameInputProps, value: String(manager.getValue(i, "name")), placeholder: "Name", options: [...missingHeaders, ...headerOptions], onChange: (v) => manager.setValue(i, "name", v), onSelect: (v) => manager.setValue(i, "name", v, { focus: "next" }) }) }), _jsxs("div", { className: "flex items-center gap-2", children: [!hasEnum ? (_jsx(ParamsGridInput, { placeholder: "Value", autoComplete: "off", ...valueInputProps })) : (_jsx(ParamsGridInput, { asChild: true, children: _jsx(Autocomplete, { ...valueInputProps, value: String(manager.getValue(i, "value")), shouldFilter: false, options: currentSchemaHeader.enum ?? [], onChange: (v) => manager.setValue(i, "value", v), onSelect: (v) => manager.setValue(i, "value", v, { focus: "next" }) }) })), _jsx(ParamsGridRemoveButton, { ...manager.getRemoveButtonProps(i) })] })] }, field.id));
114
54
  })] }) }) }) })] }));
115
55
  };
116
56
  //# sourceMappingURL=Headers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/Headers.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Headers.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/Headers.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,17 @@
1
1
  declare const ParamsGrid: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
2
2
  className?: import("clsx").ClassValue;
3
3
  asChild?: boolean;
4
- }, "ref"> & import("react").RefAttributes<HTMLElement>>;
4
+ }, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
5
5
  export declare const ParamsGridItem: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
6
6
  className?: import("clsx").ClassValue;
7
7
  asChild?: boolean;
8
- }, "ref"> & import("react").RefAttributes<HTMLElement>>;
8
+ }, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
9
+ export declare const ParamsGridInput: import("react").ForwardRefExoticComponent<Omit<import("react").InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement> & {
10
+ className?: import("clsx").ClassValue;
11
+ asChild?: boolean;
12
+ }, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
13
+ export declare const ParamsGridRemoveButton: ({ onClick, className, }: {
14
+ onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;
15
+ className?: string;
16
+ }) => import("react/jsx-runtime").JSX.Element;
9
17
  export default ParamsGrid;
@@ -1,5 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { XIcon } from "lucide-react";
3
+ import { Button } from "zudoku/components";
4
+ import { Input } from "zudoku/ui/Input.js";
5
+ import { cn } from "../../../util/cn.js";
1
6
  import createVariantComponent from "../../../util/createVariantComponent.js";
2
- const ParamsGrid = createVariantComponent("div", "grid grid-cols-[min-content_2fr_3fr] items-center gap-x-5");
7
+ const ParamsGrid = createVariantComponent("div", "grid grid-cols-[min-content_2fr_3fr] items-center gap-x-5 [&>*:last-child_[data-slot=remove-button]]:invisible");
3
8
  export const ParamsGridItem = createVariantComponent("div", "group h-9 hover:bg-accent/75 ps-4 pe-2 grid col-span-full grid-cols-subgrid items-center border-b");
9
+ export const ParamsGridInput = createVariantComponent(Input, "w-full truncate border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono");
10
+ export const ParamsGridRemoveButton = ({ onClick, className, }) => (_jsx(Button, { size: "icon-xs", variant: "ghost", className: cn("text-muted-foreground opacity-0 group-hover:brightness-95 focus-visible:opacity-100 group-hover:opacity-100", className), onClick: onClick, type: "button", "data-slot": "remove-button", children: _jsx(XIcon, { size: 14 }) }));
4
11
  export default ParamsGrid;
5
12
  //# sourceMappingURL=ParamsGrid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParamsGrid.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/ParamsGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,yCAAyC,CAAC;AAE7E,MAAM,UAAU,GAAG,sBAAsB,CACvC,KAAK,EACL,2DAA2D,CAC5D,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAClD,KAAK,EACL,mGAAmG,CACpG,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"ParamsGrid.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/ParamsGrid.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,sBAAsB,MAAM,yCAAyC,CAAC;AAE7E,MAAM,UAAU,GAAG,sBAAsB,CACvC,KAAK,EACL,gHAAgH,CACjH,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAClD,KAAK,EACL,mGAAmG,CACpG,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CACnD,KAAK,EACL,qFAAqF,CACtF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,OAAO,EACP,SAAS,GAIV,EAAE,EAAE,CAAC,CACJ,KAAC,MAAM,IACL,IAAI,EAAC,SAAS,EACd,OAAO,EAAC,OAAO,EACf,SAAS,EAAE,EAAE,CACX,6GAA6G,EAC7G,SAAS,CACV,EACD,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,QAAQ,eAEH,eAAe,YAEzB,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,GACZ,CACV,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,14 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Controller, useFieldArray } from "react-hook-form";
3
- import { Input } from "../../../ui/Input.js";
4
3
  import { ColorizedParam } from "../ColorizedParam.js";
5
- import ParamsGrid, { ParamsGridItem } from "./ParamsGrid.js";
4
+ import ParamsGrid, { ParamsGridInput, ParamsGridItem } from "./ParamsGrid.js";
6
5
  export const PathParams = ({ control, url, }) => {
7
6
  const { fields } = useFieldArray({
8
7
  control,
9
8
  name: "pathParams",
10
9
  });
11
10
  const sortedFields = [...fields].sort((a, b) => url.indexOf(`{${a.name}}`) - url.indexOf(`{${b.name}}`));
12
- return (_jsx("div", { className: "overflow-hidden", children: _jsx(ParamsGrid, { children: sortedFields.map((field, i) => (_jsxs(ParamsGridItem, { children: [_jsx(Controller, { control: control, name: `pathParams.${i}.name`, render: () => (_jsx("div", { className: "flex items-center", children: _jsx(ColorizedParam, { slug: field.name, name: field.name, className: "font-mono text-xs px-2" }) })) }), _jsx("div", { className: "flex justify-between items-center col-span-2", children: _jsx(Controller, { control: control, name: `pathParams.${i}.value`, render: ({ field }) => (_jsx(Input, { ...field, required: true, placeholder: "Value", className: "w-full truncate border-0 p-0 m-0 shadow-none text-xs font-mono focus-visible:ring-0" })) }) })] }, field.id))) }) }));
11
+ return (_jsx(ParamsGrid, { children: sortedFields.map((field, i) => (_jsxs(ParamsGridItem, { children: [_jsx(Controller, { control: control, name: `pathParams.${i}.name`, render: () => (_jsx("div", { className: "flex items-center", children: _jsx(ColorizedParam, { slug: field.name, name: field.name, className: "font-mono text-xs px-2" }) })) }), _jsx("div", { className: "flex justify-between items-center col-span-2", children: _jsx(Controller, { control: control, name: `pathParams.${i}.value`, render: ({ field }) => (_jsx(ParamsGridInput, { ...field, required: true, placeholder: "Value" })) }) })] }, field.id))) }));
13
12
  };
14
13
  //# sourceMappingURL=PathParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PathParams.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/PathParams.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,UAAU,EAAE,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG7D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,OAAO,EACP,GAAG,GAIJ,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAA+B;QAC7D,OAAO;QACP,IAAI,EAAE,YAAY;KACnB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAClE,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,iBAAiB,YAC9B,KAAC,UAAU,cACR,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9B,MAAC,cAAc,eACb,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,CAAC,OAAO,EAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,cAAc,IACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAC,wBAAwB,GAClC,GACE,CACP,GACD,EAEF,cAAK,SAAS,EAAC,8CAA8C,YAC3D,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,CAAC,QAAQ,EAC7B,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrB,KAAC,KAAK,OACA,KAAK,EACT,QAAQ,QACR,WAAW,EAAC,OAAO,EACnB,SAAS,EAAC,qFAAqF,GAC/F,CACH,GACD,GACE,KA5Ba,KAAK,CAAC,EAAE,CA6BZ,CAClB,CAAC,GACS,GACT,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"PathParams.js","sourceRoot":"","sources":["../../../../../src/lib/plugins/openapi/playground/PathParams.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,UAAU,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACzB,OAAO,EACP,GAAG,GAIJ,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAA+B;QAC7D,OAAO;QACP,IAAI,EAAE,YAAY;KACnB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAClE,CAAC;IAEF,OAAO,CACL,KAAC,UAAU,cACR,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAC9B,MAAC,cAAc,eACb,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,CAAC,OAAO,EAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,cAAK,SAAS,EAAC,mBAAmB,YAChC,KAAC,cAAc,IACb,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,SAAS,EAAC,wBAAwB,GAClC,GACE,CACP,GACD,EAEF,cAAK,SAAS,EAAC,8CAA8C,YAC3D,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,CAAC,QAAQ,EAC7B,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CACrB,KAAC,eAAe,OAAK,KAAK,EAAE,QAAQ,QAAC,WAAW,EAAC,OAAO,GAAG,CAC5D,GACD,GACE,KAvBa,KAAK,CAAC,EAAE,CAwBZ,CAClB,CAAC,GACS,CACd,CAAC;AACJ,CAAC,CAAC"}
@@ -23,6 +23,13 @@ export type PathParam = {
23
23
  };
24
24
  export type PlaygroundForm = {
25
25
  body: string;
26
+ bodyMode?: "text" | "file" | "multipart";
27
+ file?: File | null;
28
+ multipartFormFields: Array<{
29
+ name: string;
30
+ value: File | string;
31
+ active: boolean;
32
+ }>;
26
33
  queryParams: Array<{
27
34
  name: string;
28
35
  value: string;