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
@@ -4,9 +4,10 @@ import { useState } from "react";
4
4
  import { Markdown } from "../../components/Markdown.js";
5
5
  import type { SchemaObject } from "../../oas/graphql/index.js";
6
6
  import { Button } from "../../ui/Button.js";
7
+ import { Item, ItemActions, ItemContent, ItemTitle } from "../../ui/Item.js";
8
+ import { cn } from "../../util/cn.js";
7
9
  import { ColorizedParam } from "./ColorizedParam.js";
8
10
  import { EnumValues } from "./components/EnumValues.js";
9
- import { SelectOnClick } from "./components/SelectOnClick.js";
10
11
  import type { ParameterItem } from "./graphql/graphql.js";
11
12
  import type { ParameterGroup } from "./OperationListItem.js";
12
13
  import { ParamInfos } from "./ParamInfos.js";
@@ -35,75 +36,125 @@ export const ParameterListItem = ({
35
36
  const paramSchema = getParameterSchema(parameter);
36
37
  const [isOpen, setIsOpen] = useState(false);
37
38
 
39
+ const isCollapsible =
40
+ paramSchema.type === "object" ||
41
+ (isArrayType(paramSchema) &&
42
+ "items" in paramSchema &&
43
+ paramSchema.items?.type === "object");
44
+
45
+ const shouldRenderDescription = Boolean(
46
+ parameter.description ||
47
+ paramSchema.description ||
48
+ (paramSchema.type === "array" && paramSchema.items?.enum) ||
49
+ paramSchema.enum ||
50
+ paramSchema.example !== undefined ||
51
+ paramSchema.default !== undefined,
52
+ );
53
+
38
54
  return (
39
- <li className="p-4 bg-border/20 text-sm flex flex-col gap-1.5">
40
- <div className="flex items-center gap-2">
41
- <SelectOnClick asChild>
42
- <code>
43
- {group === "path" ? (
44
- <ColorizedParam
45
- name={parameter.name}
46
- backgroundOpacity="15%"
47
- className="px-2"
48
- slug={`${id}-${parameter.name}`}
55
+ <Item>
56
+ <ItemContent className="gap-y-2">
57
+ <div>
58
+ <ItemTitle className="inline me-2">
59
+ {isCollapsible ? (
60
+ <button
61
+ onClick={() => setIsOpen(!isOpen)}
62
+ type="button"
63
+ className="hover:underline"
64
+ >
65
+ <code>
66
+ {group === "path" ? (
67
+ <ColorizedParam
68
+ name={parameter.name}
69
+ backgroundOpacity="15%"
70
+ className="px-2"
71
+ slug={`${id}-${parameter.name}`}
72
+ />
73
+ ) : (
74
+ parameter.name
75
+ )}
76
+ </code>
77
+ </button>
78
+ ) : (
79
+ <code>
80
+ {group === "path" ? (
81
+ <ColorizedParam
82
+ name={parameter.name}
83
+ backgroundOpacity="15%"
84
+ className="px-2"
85
+ slug={`${id}-${parameter.name}`}
86
+ />
87
+ ) : (
88
+ parameter.name
89
+ )}
90
+ </code>
91
+ )}
92
+ </ItemTitle>
93
+ <ParamInfos
94
+ className="inline"
95
+ schema={paramSchema}
96
+ extraItems={[
97
+ parameter.required && (
98
+ <span className="text-primary">required</span>
99
+ ),
100
+ parameter.style && `style: ${parameter.style}`,
101
+ parameter.explode && `explode: ${parameter.explode}`,
102
+ ]}
103
+ />
104
+ </div>
105
+ {shouldRenderDescription && (
106
+ <div className="flex flex-col gap-1.5">
107
+ {parameter.description && (
108
+ <Markdown content={parameter.description} className="prose-sm" />
109
+ )}
110
+ {paramSchema.description && (
111
+ <Markdown
112
+ content={paramSchema.description}
113
+ className="prose-sm"
49
114
  />
115
+ )}
116
+ {paramSchema.type === "array" && paramSchema.items?.enum ? (
117
+ <EnumValues values={paramSchema.items.enum} />
50
118
  ) : (
51
- parameter.name
119
+ paramSchema.enum && <EnumValues values={paramSchema.enum} />
52
120
  )}
53
- </code>
54
- </SelectOnClick>
55
- <ParamInfos
56
- schema={paramSchema}
57
- extraItems={[
58
- parameter.required && (
59
- <span className="text-primary">required</span>
60
- ),
61
- parameter.style && `style: ${parameter.style}`,
62
- parameter.explode && `explode: ${parameter.explode}`,
63
- ]}
64
- />
65
- </div>
66
- {parameter.description && (
67
- <Markdown
68
- content={parameter.description}
69
- className="text-sm prose prose-p:my-1 prose-code:whitespace-pre-line"
70
- />
71
- )}
72
- {paramSchema.description && (
73
- <Markdown
74
- content={paramSchema.description}
75
- className="text-sm prose-p:my-1 prose-code:whitespace-pre-line"
76
- />
77
- )}
78
- {paramSchema.type === "array" && paramSchema.items.enum ? (
79
- <EnumValues values={paramSchema.items.enum} />
80
- ) : (
81
- paramSchema.enum && <EnumValues values={paramSchema.enum} />
121
+ <SchemaExampleAndDefault schema={paramSchema} />
122
+ </div>
123
+ )}
124
+ </ItemContent>
125
+
126
+ {isCollapsible && (
127
+ <ItemActions className="self-start">
128
+ <Button
129
+ variant="ghost"
130
+ size="icon"
131
+ className="rounded-full"
132
+ onClick={() => setIsOpen(!isOpen)}
133
+ aria-label="Toggle parameter"
134
+ >
135
+ {isOpen ? <MinusIcon size={16} /> : <PlusIcon size={16} />}
136
+ </Button>
137
+ </ItemActions>
82
138
  )}
83
- <SchemaExampleAndDefault schema={paramSchema} />
84
- {(paramSchema.type === "object" || isArrayType(paramSchema)) && (
139
+
140
+ {isCollapsible && (
85
141
  <Collapsible.Root
86
142
  defaultOpen={false}
87
- onOpenChange={setIsOpen}
88
143
  open={isOpen}
144
+ onOpenChange={setIsOpen}
145
+ className={cn("w-full", !isOpen && "contents")}
89
146
  >
90
- <Collapsible.Trigger asChild>
91
- <Button variant="expand" size="sm">
92
- {isOpen ? <MinusIcon size={12} /> : <PlusIcon size={12} />}
93
- {isOpen ? "Hide properties" : "Show properties"}
94
- </Button>
95
- </Collapsible.Trigger>
96
- <Collapsible.Content>
97
- <div className="mt-2">
147
+ <Collapsible.Content asChild>
148
+ <ItemContent>
98
149
  <SchemaView
99
150
  schema={
100
151
  "items" in paramSchema ? paramSchema.items : paramSchema
101
152
  }
102
153
  />
103
- </div>
154
+ </ItemContent>
104
155
  </Collapsible.Content>
105
156
  </Collapsible.Root>
106
157
  )}
107
- </li>
158
+ </Item>
108
159
  );
109
160
  };
@@ -1,3 +1,10 @@
1
+ import { ChevronsDownUpIcon, ChevronsUpDownIcon } from "lucide-react";
2
+ import { Button } from "zudoku/components";
3
+ import {
4
+ Collapsible,
5
+ CollapsibleContent,
6
+ CollapsibleTrigger,
7
+ } from "zudoku/ui/Collapsible.js";
1
8
  import type { MediaTypeObject } from "./graphql/graphql.js";
2
9
  import * as SidecarBox from "./SidecarBox.js";
3
10
  import { SidecarExamples } from "./SidecarExamples.js";
@@ -5,18 +12,52 @@ import { SidecarExamples } from "./SidecarExamples.js";
5
12
  export const RequestBodySidecarBox = ({
6
13
  content,
7
14
  onExampleChange,
15
+ isOnScreen,
16
+ shouldLazyHighlight,
17
+ selectedContentIndex,
18
+ selectedExampleIndex,
8
19
  }: {
9
20
  content: MediaTypeObject[];
10
- onExampleChange?: (example: unknown) => void;
21
+ onExampleChange?: (selected: {
22
+ contentTypeIndex: number;
23
+ exampleIndex: number;
24
+ }) => void;
25
+ isOnScreen: boolean;
26
+ shouldLazyHighlight?: boolean;
27
+ selectedContentIndex: number;
28
+ selectedExampleIndex: number;
11
29
  }) => {
12
30
  if (content.length === 0) return null;
13
31
 
14
32
  return (
15
- <SidecarBox.Root>
16
- <SidecarBox.Head className="text-xs flex justify-between items-center">
17
- <span className="font-mono">Request Body Example</span>
18
- </SidecarBox.Head>
19
- <SidecarExamples content={content} onExampleChange={onExampleChange} />
20
- </SidecarBox.Root>
33
+ <Collapsible className="group/collapsible" defaultOpen>
34
+ <SidecarBox.Root>
35
+ <SidecarBox.Head className="text-xs flex justify-between items-center">
36
+ <span className="flex items-center gap-1 font-medium">
37
+ <CollapsibleTrigger asChild>
38
+ <Button
39
+ variant="ghost"
40
+ className="size-fit px-1 py-1 -my-1"
41
+ aria-label="Toggle request body examples"
42
+ >
43
+ <ChevronsDownUpIcon className="size-[1em] group-data-[state=closed]/collapsible:hidden" />
44
+ <ChevronsUpDownIcon className="size-[1em] group-data-[state=open]/collapsible:hidden" />
45
+ </Button>
46
+ </CollapsibleTrigger>
47
+ Example Request Body
48
+ </span>
49
+ </SidecarBox.Head>
50
+ <CollapsibleContent>
51
+ <SidecarExamples
52
+ selectedContentIndex={selectedContentIndex}
53
+ selectedExampleIndex={selectedExampleIndex}
54
+ content={content}
55
+ onExampleChange={onExampleChange}
56
+ isOnScreen={isOnScreen}
57
+ shouldLazyHighlight={shouldLazyHighlight}
58
+ />
59
+ </CollapsibleContent>
60
+ </SidecarBox.Root>
61
+ </Collapsible>
21
62
  );
22
63
  };
@@ -1,5 +1,12 @@
1
- import * as Tabs from "@radix-ui/react-tabs";
2
- import { cn } from "../../util/cn.js";
1
+ import { ChevronsDownUpIcon, ChevronsUpDownIcon } from "lucide-react";
2
+ import { useEffect, useState } from "react";
3
+ import { Button } from "zudoku/components";
4
+ import {
5
+ Collapsible,
6
+ CollapsibleContent,
7
+ CollapsibleTrigger,
8
+ } from "zudoku/ui/Collapsible.js";
9
+ import { NativeSelect, NativeSelectOption } from "zudoku/ui/NativeSelect.js";
3
10
  import type { ResponseItem } from "./graphql/graphql.js";
4
11
  import * as SidecarBox from "./SidecarBox.js";
5
12
  import { SidecarExamples } from "./SidecarExamples.js";
@@ -7,43 +14,84 @@ import { SidecarExamples } from "./SidecarExamples.js";
7
14
  export const ResponsesSidecarBox = ({
8
15
  responses,
9
16
  selectedResponse,
10
- onSelectResponse,
17
+ isOnScreen,
18
+ shouldLazyHighlight,
11
19
  }: {
12
20
  responses: ResponseItem[];
13
21
  selectedResponse?: string;
14
- onSelectResponse: (response: string) => void;
22
+ isOnScreen: boolean;
23
+ shouldLazyHighlight?: boolean;
15
24
  }) => {
25
+ const [internalSelectedResponse, setInternalSelectedResponse] = useState(
26
+ selectedResponse ?? responses[0]?.statusCode,
27
+ );
28
+ const [selectedContentIndex, setSelectedContentIndex] = useState(0);
29
+ const [selectedExampleIndex, setSelectedExampleIndex] = useState(0);
30
+
31
+ useEffect(() => {
32
+ if (!selectedResponse) return;
33
+
34
+ setInternalSelectedResponse(selectedResponse);
35
+ }, [selectedResponse]);
36
+
37
+ useEffect(() => {
38
+ if (!internalSelectedResponse) return;
39
+
40
+ setSelectedContentIndex(0);
41
+ setSelectedExampleIndex(0);
42
+ }, [internalSelectedResponse]);
43
+
16
44
  return (
17
- <SidecarBox.Root>
18
- <Tabs.Root
19
- defaultValue={responses[0]?.statusCode}
20
- value={selectedResponse}
21
- onValueChange={(value) => onSelectResponse(value)}
22
- >
23
- <SidecarBox.Head className="text-xs flex flex-col gap-2 pb-0">
24
- <span className="font-mono">Example Responses</span>
25
- <Tabs.List className="flex gap-2">
26
- {responses.map((response) => (
27
- <Tabs.Trigger
28
- key={response.statusCode}
29
- value={response.statusCode}
30
- className={cn(
31
- "text-xs font-mono px-1.5 py-1 pb-px translate-y-px border-b-2 border-transparent rounded-t cursor-pointer",
32
- "data-[state=active]:text-primary data-[state=active]:dark:text-inherit data-[state=active]:border-primary",
33
- "hover:border-accent-foreground/25",
34
- )}
45
+ <Collapsible className="group/collapsible" defaultOpen>
46
+ <SidecarBox.Root>
47
+ <SidecarBox.Head className="text-xs flex justify-between items-center">
48
+ <div className="flex items-center gap-1 font-medium shrink-0">
49
+ <CollapsibleTrigger asChild>
50
+ <Button
51
+ variant="ghost"
52
+ className="size-fit px-1 py-1 -my-1"
53
+ aria-label="Toggle response examples"
35
54
  >
36
- {response.statusCode}
37
- </Tabs.Trigger>
38
- ))}
39
- </Tabs.List>
55
+ <ChevronsDownUpIcon className="size-[1em] group-data-[state=closed]/collapsible:hidden" />
56
+ <ChevronsUpDownIcon className="size-[1em] group-data-[state=open]/collapsible:hidden" />
57
+ </Button>
58
+ </CollapsibleTrigger>
59
+ Example Responses
60
+ </div>
61
+ <div className="group-data-[state=closed]/collapsible:hidden">
62
+ <NativeSelect
63
+ className="text-xs h-fit py-1 -my-1 bg-background"
64
+ value={internalSelectedResponse}
65
+ onChange={(e) => setInternalSelectedResponse(e.target.value)}
66
+ >
67
+ {responses.map((response) => (
68
+ <NativeSelectOption
69
+ key={response.statusCode}
70
+ value={response.statusCode}
71
+ >
72
+ {response.statusCode}
73
+ </NativeSelectOption>
74
+ ))}
75
+ </NativeSelect>
76
+ </div>
40
77
  </SidecarBox.Head>
41
- {responses.map((response) => (
42
- <Tabs.Content key={response.statusCode} value={response.statusCode}>
43
- <SidecarExamples content={response.content ?? []} />
44
- </Tabs.Content>
45
- ))}
46
- </Tabs.Root>
47
- </SidecarBox.Root>
78
+ <CollapsibleContent>
79
+ <SidecarExamples
80
+ selectedContentIndex={selectedContentIndex}
81
+ selectedExampleIndex={selectedExampleIndex}
82
+ onExampleChange={(selected) => {
83
+ setSelectedContentIndex(selected.contentTypeIndex);
84
+ setSelectedExampleIndex(selected.exampleIndex);
85
+ }}
86
+ content={
87
+ responses.find((r) => r.statusCode === internalSelectedResponse)
88
+ ?.content ?? []
89
+ }
90
+ isOnScreen={isOnScreen}
91
+ shouldLazyHighlight={shouldLazyHighlight}
92
+ />
93
+ </CollapsibleContent>
94
+ </SidecarBox.Root>
95
+ </Collapsible>
48
96
  );
49
97
  };