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
@@ -1,57 +1,28 @@
1
- import {
2
- CircleAlertIcon,
3
- LockIcon,
4
- PlusCircleIcon,
5
- TableOfContentsIcon,
6
- XIcon,
7
- } from "lucide-react";
8
- import { useCallback, useEffect, useRef } from "react";
9
- import {
10
- type Control,
11
- Controller,
12
- useFieldArray,
13
- useFormContext,
14
- } from "react-hook-form";
1
+ import { CircleAlertIcon, LockIcon, TableOfContentsIcon } from "lucide-react";
2
+ import { type Control, useFormContext } from "react-hook-form";
15
3
  import { Checkbox } from "zudoku/ui/Checkbox.js";
16
4
  import { Collapsible, CollapsibleContent } from "zudoku/ui/Collapsible.js";
17
5
  import { Tooltip, TooltipContent, TooltipTrigger } from "zudoku/ui/Tooltip.js";
18
6
  import { Autocomplete } from "../../../components/Autocomplete.js";
19
- import { Button } from "../../../ui/Button.js";
20
- import { Input } from "../../../ui/Input.js";
21
7
  import { cn } from "../../../util/cn.js";
22
8
  import {
23
9
  CollapsibleHeader,
24
10
  CollapsibleHeaderTrigger,
25
11
  } from "./CollapsibleHeader.js";
26
- import ParamsGrid, { ParamsGridItem } from "./ParamsGrid.js";
12
+ import ParamsGrid, {
13
+ ParamsGridInput,
14
+ ParamsGridItem,
15
+ ParamsGridRemoveButton,
16
+ } from "./ParamsGrid.js";
27
17
  import type { Header, PlaygroundForm } from "./Playground.js";
18
+ import { useKeyValueFieldManager } from "./request-panel/useKeyValueFieldManager.js";
28
19
 
20
+ // biome-ignore format: Easier to read
29
21
  const headerOptions = Object.freeze([
30
- "Accept",
31
- "Accept-Encoding",
32
- "Accept-Language",
33
- "Authorization",
34
- "Cache-Control",
35
- "Connection",
36
- "Content-Disposition",
37
- "Content-Encoding",
38
- "Content-Language",
39
- "Content-Length",
40
- "Content-Range",
41
- "Content-Security-Policy",
42
- "Content-Type",
43
- "Cookie",
44
- "Date",
45
- "ETag",
46
- "Expires",
47
- "Host",
48
- "If-Modified-Since",
49
- "Location",
50
- "Origin",
51
- "Pragma",
52
- "Referer",
53
- "Set-Cookie",
54
- "User-Agent",
22
+ "Accept", "Accept-Encoding", "Accept-Language", "Authorization", "Cache-Control", "Connection",
23
+ "Content-Disposition", "Content-Encoding", "Content-Language", "Content-Length", "Content-Range",
24
+ "Content-Security-Policy", "Content-Type", "Cookie", "Date", "ETag", "Expires", "Host",
25
+ "If-Modified-Since", "Location", "Origin", "Pragma", "Referer", "Set-Cookie", "User-Agent",
55
26
  "X-Requested-With",
56
27
  ]);
57
28
 
@@ -64,43 +35,20 @@ export const Headers = ({
64
35
  schemaHeaders: Header[];
65
36
  lockedHeaders?: string[];
66
37
  }) => {
67
- const { fields, append, remove } = useFieldArray<PlaygroundForm, "headers">({
38
+ const { watch, formState } = useFormContext<PlaygroundForm>();
39
+ const watchedHeaders = watch("headers");
40
+
41
+ const manager = useKeyValueFieldManager<PlaygroundForm, "headers">({
68
42
  control,
69
43
  name: "headers",
44
+ defaultValue: { name: "", value: "", active: false },
70
45
  });
71
- const { setValue, watch, formState } = useFormContext<PlaygroundForm>();
72
- const valueRefs = useRef<Array<HTMLInputElement | null>>([]);
73
- const nameRefs = useRef<Array<HTMLInputElement | null>>([]);
74
- const watchedHeaders = watch("headers");
75
-
76
- const addNewHeader = useCallback(
77
- (e?: React.MouseEvent<HTMLButtonElement>) => {
78
- e?.stopPropagation();
79
- append({ name: "", value: "", active: false }, { shouldFocus: true });
80
- },
81
- [append],
82
- );
83
-
84
- useEffect(() => {
85
- if (watchedHeaders.length === 0) {
86
- addNewHeader();
87
- }
88
- }, [watchedHeaders, addNewHeader]);
89
-
90
- const handleHeaderEnter = (index: number) => {
91
- valueRefs.current[index]?.focus();
92
- };
93
-
94
- const handleValueEnter = (index: number) => {
95
- addNewHeader();
96
- requestAnimationFrame(() => nameRefs.current[index + 1]?.focus());
97
- };
98
46
 
99
47
  const missingHeaders = schemaHeaders
100
48
  .filter((h) => !watchedHeaders.some((f) => f.name === h.name))
101
49
  .map(({ name }) => name);
102
50
 
103
- const hiddenHeadersIndex = fields.flatMap((f, index) => {
51
+ const hiddenHeadersIndex = manager.fields.flatMap((f, index) => {
104
52
  const keep = !lockedHeaders
105
53
  ?.map((h) => h.toLowerCase())
106
54
  .includes(f.name.toLowerCase());
@@ -120,176 +68,112 @@ export const Headers = ({
120
68
  return (
121
69
  <Collapsible defaultOpen>
122
70
  <CollapsibleHeaderTrigger>
123
- <TableOfContentsIcon size={16} />
71
+ <TableOfContentsIcon size={14} />
124
72
  <CollapsibleHeader>Headers</CollapsibleHeader>
125
- <Button
126
- onClick={addNewHeader}
127
- type="button"
128
- size="sm"
129
- variant="ghost"
130
- className="hover:bg-accent hover:brightness-95 flex gap-2"
131
- >
132
- Add header <PlusCircleIcon size={16} />
133
- </Button>
134
73
  </CollapsibleHeaderTrigger>
135
74
  <CollapsibleContent className="CollapsibleContent">
136
75
  <div className="flex flex-col gap-2">
137
76
  <div className="overflow-hidden">
138
77
  <ParamsGrid>
139
- {lockedHeaderFields.map((field) => {
140
- return (
141
- <Tooltip key={field.id}>
142
- <TooltipTrigger asChild>
143
- <ParamsGridItem
144
- key={field.id}
145
- className="opacity-50 cursor-not-allowed font-mono text-xs min-h-10"
146
- >
147
- <LockIcon size={16} />
148
- <Input
149
- value={field.name}
150
- disabled
151
- className="w-full border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono"
152
- />
153
- <div>{field.value}</div>
154
- </ParamsGridItem>
155
- </TooltipTrigger>
156
- <TooltipContent
157
- alignOffset={10}
158
- side="bottom"
159
- align="start"
78
+ {lockedHeaderFields.map((field) => (
79
+ <Tooltip key={field.id}>
80
+ <TooltipTrigger asChild>
81
+ <ParamsGridItem
82
+ key={field.id}
83
+ className="opacity-50 cursor-not-allowed font-mono text-xs min-h-10"
160
84
  >
161
- <p>This header is set by the selected authentication.</p>
162
- </TooltipContent>
163
- </Tooltip>
164
- );
165
- })}
166
- {fields.map((field, i) => {
85
+ <LockIcon size={16} />
86
+ <ParamsGridInput value={field.name} disabled />
87
+ <div>{field.value}</div>
88
+ </ParamsGridItem>
89
+ </TooltipTrigger>
90
+ <TooltipContent alignOffset={10} side="bottom" align="start">
91
+ <p>This header is set by the selected authentication.</p>
92
+ </TooltipContent>
93
+ </Tooltip>
94
+ ))}
95
+ {manager.fields.map((field, i) => {
167
96
  const currentSchemaHeader = schemaHeaders.find(
168
97
  (h) => h.name === watchedHeaders.at(i)?.name,
169
98
  );
99
+ const hasEnum =
100
+ currentSchemaHeader?.enum &&
101
+ currentSchemaHeader.enum.length > 0;
102
+ const isHidden = hiddenHeadersIndex.includes(i);
103
+ const nameInputProps = manager.getNameInputProps(i);
104
+ const valueInputProps = manager.getValueInputProps(i);
105
+
170
106
  return (
171
107
  <ParamsGridItem
172
108
  key={field.id}
173
109
  className={cn(
174
- hiddenHeadersIndex.includes(i) && "text-amber-600",
175
- hiddenHeadersIndex.includes(i) &&
110
+ isHidden && "text-amber-600",
111
+ isHidden &&
176
112
  !formState.dirtyFields.headers?.[i]?.value &&
177
113
  "hidden",
178
114
  )}
179
115
  >
180
- <Controller
181
- control={control}
182
- name={`headers.${i}.active`}
183
- render={({ field }) => (
184
- <>
185
- <Checkbox
186
- id={`headers.${i}.active`}
187
- className={cn(
188
- hiddenHeadersIndex.includes(i) && "hidden",
189
- )}
190
- checked={field.value}
191
- onCheckedChange={(checked) => {
192
- field.onChange(checked);
193
- }}
194
- />
195
- <Tooltip>
196
- <TooltipTrigger asChild>
197
- <CircleAlertIcon
198
- className={cn(
199
- "text-amber-600",
200
- !hiddenHeadersIndex.includes(i) && "hidden",
201
- )}
202
- size={16}
203
- />
204
- </TooltipTrigger>
205
- <TooltipContent
206
- alignOffset={10}
207
- side="bottom"
208
- align="start"
209
- >
210
- <p>
211
- This header will be overwritten by the selected
212
- authentication.
213
- </p>
214
- </TooltipContent>
215
- </Tooltip>
216
- </>
217
- )}
116
+ <Checkbox
117
+ className={cn(isHidden && "hidden")}
118
+ {...manager.getCheckboxProps(i)}
218
119
  />
219
- <Controller
220
- control={control}
221
- name={`headers.${i}.name`}
222
- render={({ field }) => (
223
- <Autocomplete
224
- {...field}
225
- placeholder="Name"
226
- className="border-0 p-0 m-0 shadow-none focus-visible:ring-0 bg-transparent hover:bg-transparent text-xs font-mono"
227
- options={[...missingHeaders, ...headerOptions]}
228
- onEnterPress={() => handleHeaderEnter(i)}
229
- onChange={(e) => {
230
- field.onChange(e);
231
- setValue(`headers.${i}.active`, true);
232
- }}
233
- ref={(el) => {
234
- nameRefs.current[i] = el;
235
- }}
120
+ <Tooltip>
121
+ <TooltipTrigger asChild>
122
+ <CircleAlertIcon
123
+ className={cn(
124
+ "text-amber-600",
125
+ !isHidden && "hidden",
126
+ )}
127
+ size={16}
236
128
  />
237
- )}
238
- />
129
+ </TooltipTrigger>
130
+ <TooltipContent
131
+ alignOffset={10}
132
+ side="bottom"
133
+ align="start"
134
+ >
135
+ <p>
136
+ This header will be overwritten by the selected
137
+ authentication.
138
+ </p>
139
+ </TooltipContent>
140
+ </Tooltip>
141
+ <ParamsGridInput asChild>
142
+ <Autocomplete
143
+ {...nameInputProps}
144
+ value={String(manager.getValue(i, "name"))}
145
+ placeholder="Name"
146
+ options={[...missingHeaders, ...headerOptions]}
147
+ onChange={(v) => manager.setValue(i, "name", v)}
148
+ onSelect={(v) =>
149
+ manager.setValue(i, "name", v, { focus: "next" })
150
+ }
151
+ />
152
+ </ParamsGridInput>
239
153
  <div className="flex items-center gap-2">
240
- <Controller
241
- control={control}
242
- name={`headers.${i}.value`}
243
- render={({ field }) => {
244
- const hasEnum =
245
- currentSchemaHeader?.enum &&
246
- currentSchemaHeader.enum.length > 0;
247
-
248
- if (!hasEnum) {
249
- return (
250
- <Input
251
- placeholder="Value"
252
- className="w-full truncate border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono"
253
- autoComplete="off"
254
- {...field}
255
- ref={(el) => {
256
- valueRefs.current[i] = el;
257
- }}
258
- onKeyDown={(e) => {
259
- if (
260
- e.key === "Enter" &&
261
- e.currentTarget.value.trim()
262
- ) {
263
- handleValueEnter(i);
264
- }
265
- }}
266
- />
267
- );
268
- }
269
-
270
- return (
271
- <Autocomplete
272
- shouldFilter={false}
273
- value={field.value}
274
- options={currentSchemaHeader.enum ?? []}
275
- onChange={(e) => {
276
- field.onChange(e);
277
- setValue(`headers.${i}.active`, true);
278
- }}
279
- className="border-0 p-0 m-0 shadow-none focus-visible:ring-0 bg-transparent hover:bg-transparent text-xs font-mono"
280
- />
281
- );
282
- }}
154
+ {!hasEnum ? (
155
+ <ParamsGridInput
156
+ placeholder="Value"
157
+ autoComplete="off"
158
+ {...valueInputProps}
159
+ />
160
+ ) : (
161
+ <ParamsGridInput asChild>
162
+ <Autocomplete
163
+ {...valueInputProps}
164
+ value={String(manager.getValue(i, "value"))}
165
+ shouldFilter={false}
166
+ options={currentSchemaHeader.enum ?? []}
167
+ onChange={(v) => manager.setValue(i, "value", v)}
168
+ onSelect={(v) =>
169
+ manager.setValue(i, "value", v, { focus: "next" })
170
+ }
171
+ />
172
+ </ParamsGridInput>
173
+ )}
174
+ <ParamsGridRemoveButton
175
+ {...manager.getRemoveButtonProps(i)}
283
176
  />
284
- <Button
285
- size="icon-xs"
286
- variant="ghost"
287
- className="text-muted-foreground opacity-0 group-hover:brightness-95 group-hover:opacity-100"
288
- onClick={() => remove(i)}
289
- type="button"
290
- >
291
- <XIcon size={16} />
292
- </Button>
293
177
  </div>
294
178
  </ParamsGridItem>
295
179
  );
@@ -1,8 +1,12 @@
1
+ import { XIcon } from "lucide-react";
2
+ import { Button } from "zudoku/components";
3
+ import { Input } from "zudoku/ui/Input.js";
4
+ import { cn } from "../../../util/cn.js";
1
5
  import createVariantComponent from "../../../util/createVariantComponent.js";
2
6
 
3
7
  const ParamsGrid = createVariantComponent(
4
8
  "div",
5
- "grid grid-cols-[min-content_2fr_3fr] items-center gap-x-5",
9
+ "grid grid-cols-[min-content_2fr_3fr] items-center gap-x-5 [&>*:last-child_[data-slot=remove-button]]:invisible",
6
10
  );
7
11
 
8
12
  export const ParamsGridItem = createVariantComponent(
@@ -10,4 +14,32 @@ export const ParamsGridItem = createVariantComponent(
10
14
  "group h-9 hover:bg-accent/75 ps-4 pe-2 grid col-span-full grid-cols-subgrid items-center border-b",
11
15
  );
12
16
 
17
+ export const ParamsGridInput = createVariantComponent(
18
+ Input,
19
+ "w-full truncate border-0 p-0 m-0 shadow-none text-xs focus-visible:ring-0 font-mono",
20
+ );
21
+
22
+ export const ParamsGridRemoveButton = ({
23
+ onClick,
24
+ className,
25
+ }: {
26
+ onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;
27
+ className?: string;
28
+ }) => (
29
+ <Button
30
+ size="icon-xs"
31
+ variant="ghost"
32
+ className={cn(
33
+ "text-muted-foreground opacity-0 group-hover:brightness-95 focus-visible:opacity-100 group-hover:opacity-100",
34
+ className,
35
+ )}
36
+ onClick={onClick}
37
+ type="button"
38
+ // In the last row the remove button will be hidden by the ParamsGridItem selector
39
+ data-slot="remove-button"
40
+ >
41
+ <XIcon size={14} />
42
+ </Button>
43
+ );
44
+
13
45
  export default ParamsGrid;
@@ -1,7 +1,6 @@
1
1
  import { type Control, Controller, useFieldArray } from "react-hook-form";
2
- import { Input } from "../../../ui/Input.js";
3
2
  import { ColorizedParam } from "../ColorizedParam.js";
4
- import ParamsGrid, { ParamsGridItem } from "./ParamsGrid.js";
3
+ import ParamsGrid, { ParamsGridInput, ParamsGridItem } from "./ParamsGrid.js";
5
4
  import type { PlaygroundForm } from "./Playground.js";
6
5
 
7
6
  export const PathParams = ({
@@ -21,41 +20,34 @@ export const PathParams = ({
21
20
  );
22
21
 
23
22
  return (
24
- <div className="overflow-hidden">
25
- <ParamsGrid>
26
- {sortedFields.map((field, i) => (
27
- <ParamsGridItem key={field.id}>
23
+ <ParamsGrid>
24
+ {sortedFields.map((field, i) => (
25
+ <ParamsGridItem key={field.id}>
26
+ <Controller
27
+ control={control}
28
+ name={`pathParams.${i}.name`}
29
+ render={() => (
30
+ <div className="flex items-center">
31
+ <ColorizedParam
32
+ slug={field.name}
33
+ name={field.name}
34
+ className="font-mono text-xs px-2"
35
+ />
36
+ </div>
37
+ )}
38
+ />
39
+
40
+ <div className="flex justify-between items-center col-span-2">
28
41
  <Controller
29
42
  control={control}
30
- name={`pathParams.${i}.name`}
31
- render={() => (
32
- <div className="flex items-center">
33
- <ColorizedParam
34
- slug={field.name}
35
- name={field.name}
36
- className="font-mono text-xs px-2"
37
- />
38
- </div>
43
+ name={`pathParams.${i}.value`}
44
+ render={({ field }) => (
45
+ <ParamsGridInput {...field} required placeholder="Value" />
39
46
  )}
40
47
  />
41
-
42
- <div className="flex justify-between items-center col-span-2">
43
- <Controller
44
- control={control}
45
- name={`pathParams.${i}.value`}
46
- render={({ field }) => (
47
- <Input
48
- {...field}
49
- required
50
- placeholder="Value"
51
- className="w-full truncate border-0 p-0 m-0 shadow-none text-xs font-mono focus-visible:ring-0"
52
- />
53
- )}
54
- />
55
- </div>
56
- </ParamsGridItem>
57
- ))}
58
- </ParamsGrid>
59
- </div>
48
+ </div>
49
+ </ParamsGridItem>
50
+ ))}
51
+ </ParamsGrid>
60
52
  );
61
53
  };