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 +0,0 @@
1
- {"version":3,"file":"SchemaView-D3hm65cc.js","sources":["../src/lib/util/groupBy.ts","../src/lib/plugins/openapi/components/ConstValue.tsx","../src/lib/plugins/openapi/components/EnumValues.tsx","../src/lib/plugins/openapi/ParamInfos.tsx","../src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupConnector.tsx","../src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupItem.tsx","../src/lib/plugins/openapi/schema/AllOfGroup/AllOfGroupView.tsx","../src/lib/plugins/openapi/schema/SchemaExampleAndDefault.tsx","../src/lib/plugins/openapi/schema/utils.ts","../src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx","../src/lib/plugins/openapi/schema/union-helpers.ts","../src/lib/plugins/openapi/schema/UnionView.tsx","../src/lib/plugins/openapi/schema/SchemaView.tsx"],"sourcesContent":["// biome-ignore-all lint/suspicious/noExplicitAny: Allow any type\nexport const groupBy = <\n T extends Record<PropertyKey, any>,\n KeySelector extends (item: T) => PropertyKey,\n>(\n arr: T[],\n keySelector: KeySelector,\n): Partial<Record<ReturnType<KeySelector>, T[]>> => {\n return arr.reduce(\n (accumulator, val) => {\n const groupedKey = keySelector(val) as ReturnType<KeySelector>;\n if (!accumulator[groupedKey]) {\n accumulator[groupedKey] = [];\n }\n accumulator[groupedKey].push(val);\n return accumulator;\n },\n {} as Record<ReturnType<KeySelector>, T[]>,\n );\n};\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { SelectOnClick } from \"./SelectOnClick.js\";\n\nexport const ConstValue = ({\n schema,\n hideDescription = false,\n}: {\n schema: SchemaObject;\n hideDescription?: boolean;\n}) => {\n return (\n <div className=\"flex flex-col gap-1 text-xs\">\n <div>\n <span className=\"text-muted-foreground\">Const value: </span>\n <SelectOnClick className=\"border rounded px-1 font-mono\">\n {schema.const}\n </SelectOnClick>\n {!hideDescription && schema.description && (\n <div className=\"text-muted-foreground\">{schema.description}</div>\n )}\n </div>\n </div>\n );\n};\n","import { ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { Button } from \"zudoku/ui/Button.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { SelectOnClick } from \"./SelectOnClick.js\";\n\nexport const EnumValues = ({\n values,\n className,\n maxVisibleValues = 8,\n}: {\n values: Array<string | number>;\n className?: string;\n maxVisibleValues?: number;\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n if (!values.length) return null;\n\n const shouldCollapse = values.length > maxVisibleValues;\n const visibleValues =\n shouldCollapse && !isOpen ? values.slice(0, maxVisibleValues) : values;\n\n return (\n <div className={cn(\"flex flex-wrap gap-1.5 text-xs\", className)}>\n <span className=\"text-muted-foreground\">Enum values: </span>\n {visibleValues.map((value) => (\n <div key={value}>\n <SelectOnClick className=\"border rounded-sm px-1 font-mono\">\n {value}\n </SelectOnClick>\n </div>\n ))}\n {shouldCollapse && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-fit px-0\"\n onClick={() => setIsOpen(!isOpen)}\n >\n {isOpen ? (\n <div className=\"flex items-center gap-1\">\n <ChevronUpIcon size={12} />\n <span className=\"text-muted-foreground\">show less</span>\n </div>\n ) : (\n <div className=\"flex items-center gap-1\">\n <ChevronDownIcon size={12} />\n <span className=\"text-muted-foreground\">\n show {values.length - maxVisibleValues} more\n </span>\n </div>\n )}\n </Button>\n )}\n </div>\n );\n};\n","import { ChevronsLeftRightIcon } from \"lucide-react\";\nimport { isValidElement, useState } from \"react\";\nimport { InlineCode } from \"../../components/InlineCode.js\";\nimport type { SchemaObject } from \"../../oas/parser/index.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst Pattern = ({ pattern }: { pattern: string }) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const isExpandable = pattern.length > 20;\n const shortPattern = isExpandable ? `${pattern.slice(0, 20)}…` : pattern;\n\n return (\n <InlineCode\n className={cn(\"text-xs\", isExpandable && \"cursor-pointer\")}\n onClick={() => setIsExpanded(!isExpanded)}\n selectOnClick={false}\n >\n {isExpanded ? pattern : shortPattern}\n {isExpandable && (\n <button type=\"button\" className=\"p-1 translate-y-[2px]\">\n {!isExpanded && <ChevronsLeftRightIcon size={12} />}\n </button>\n )}\n </InlineCode>\n );\n};\n\nconst getSchemaInfos = (schema?: SchemaObject) => {\n if (!schema) return [];\n\n return [\n schema.type === \"array\" && schema.items.type\n ? Array.isArray(schema.items.type)\n ? `(${schema.items.type.join(\" | \")})[]`\n : `${schema.items.type}[]`\n : Array.isArray(schema.type)\n ? schema.type.join(\" | \")\n : schema.type,\n\n schema.enum && \"enum\",\n schema.const && \"const\",\n schema.format,\n schema.minimum !== undefined && `min: ${schema.minimum}`,\n schema.maximum !== undefined && `max: ${schema.maximum}`,\n schema.minLength !== undefined && `minLength: ${schema.minLength}`,\n schema.maxLength !== undefined && `maxLength: ${schema.maxLength}`,\n schema.minItems !== undefined && `minItems: ${schema.minItems}`,\n schema.maxItems !== undefined && `maxItems: ${schema.maxItems}`,\n schema.minProperties !== undefined && `minProps: ${schema.minProperties}`,\n schema.maxProperties !== undefined && `maxProps: ${schema.maxProperties}`,\n schema.uniqueItems && \"unique\",\n schema.readOnly && \"readOnly\",\n schema.writeOnly && \"writeOnly\",\n schema.deprecated && \"deprecated\",\n schema.pattern && (\n <>\n pattern: <Pattern pattern={schema.pattern} />\n </>\n ),\n ];\n};\n\nexport const ParamInfos = ({\n schema,\n extraItems = [],\n className,\n}: {\n schema?: SchemaObject;\n extraItems?: unknown[];\n className?: string;\n}) => {\n const filteredItems = [...getSchemaInfos(schema), ...extraItems].flatMap(\n (item) => (typeof item === \"string\" || isValidElement(item) ? item : []),\n );\n\n return (\n <span className={className}>\n {filteredItems.map((item, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: index should be stable\n <span className=\"text-muted-foreground\" key={index}>\n {item}\n {index < filteredItems.length - 1 && (\n <span className=\"text-muted-foreground/50\">\n &nbsp;&middot;&nbsp;\n </span>\n )}\n </span>\n ))}\n </span>\n );\n};\n","import { ChevronDownIcon, CircleFadingPlusIcon } from \"lucide-react\";\nimport { cn } from \"../../../../util/cn.js\";\n\nexport const AllOfGroupConnector = ({\n isOpen,\n className,\n schemeName,\n}: {\n isOpen: boolean;\n className?: string;\n schemeName?: string;\n}) => {\n return (\n <div\n className={cn(\n \"text-green-500 dark:text-green-300/60\",\n \"relative text-sm flex py-2\",\n \"before:border-l before:absolute before:-top-2 before:-bottom-2 before:border-border before:border-dashed before:content-['']\",\n className,\n )}\n >\n <div className=\"-translate-x-[7px] flex gap-1 items-center\">\n <CircleFadingPlusIcon size={16} className=\"fill-card\" />\n <div\n className={cn(\n \"translate-y-px mx-px opacity-0 group-hover:opacity-100 transition\",\n !isOpen && \"-rotate-90\",\n )}\n >\n <ChevronDownIcon size={16} />\n </div>\n <span className=\"text-sm text-foreground\">{schemeName}</span>\n </div>\n </div>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { useState } from \"react\";\nimport type { SchemaObject } from \"../../../../oas/parser/index.js\";\nimport { SchemaView } from \"../SchemaView.js\";\nimport { AllOfGroupConnector } from \"./AllOfGroupConnector.js\";\n\nexport const AllOfGroupItem = (props: { schema: SchemaObject }) => {\n const [isOpen, setIsOpen] = useState(true);\n\n return (\n <Collapsible.Root\n open={isOpen}\n onOpenChange={() => setIsOpen((prev) => !prev)}\n className=\"group\"\n >\n <Collapsible.Trigger>\n <AllOfGroupConnector isOpen={isOpen} schemeName={props.schema.title} />\n </Collapsible.Trigger>\n {!isOpen && <div className=\"wavy-line bg-border translate-y-1\" />}\n <Collapsible.Content>\n <SchemaView schema={props.schema} />\n </Collapsible.Content>\n </Collapsible.Root>\n );\n};\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { SquareMinusIcon, SquarePlusIcon } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport type { SchemaObject } from \"../../../../oas/parser/index.js\";\nimport { Card } from \"../../../../ui/Card.js\";\nimport { AllOfGroupItem } from \"./AllOfGroupItem.js\";\n\nexport const AllOfGroupView = ({\n schema,\n cardHeader,\n}: {\n schema: SchemaObject;\n cardHeader?: React.ReactNode;\n}) => {\n const [isOpen, setIsOpen] = useState(true);\n const toggleOpen = useCallback(() => setIsOpen((prev) => !prev), []);\n\n if (!schema.allOf) return null;\n\n return (\n <Collapsible.Root open={isOpen} onOpenChange={toggleOpen} asChild>\n <Card className=\"overflow-hidden\">\n {cardHeader}\n <Collapsible.Trigger className=\"flex gap-2 items-center py-2 px-6 w-full text-sm text-muted-foreground -translate-x-1.5\">\n {isOpen ? (\n <SquareMinusIcon size={14} />\n ) : (\n <SquarePlusIcon size={14} />\n )}\n <span>All of</span>\n </Collapsible.Trigger>\n\n <Collapsible.Content className=\"pb-4 px-6\">\n {schema.allOf.map((subSchema, index) => (\n // biome-ignore lint/suspicious/noArrayIndexKey: Index needed for key\n <AllOfGroupItem key={index} schema={subSchema} />\n ))}\n </Collapsible.Content>\n </Card>\n </Collapsible.Root>\n );\n};\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { SelectOnClick } from \"../components/SelectOnClick.js\";\n\nexport const SchemaExampleAndDefault = ({\n schema,\n}: {\n schema: SchemaObject;\n}) => {\n const example = schema.examples?.at(0);\n const defaultValue = schema.default;\n\n if (example === undefined && defaultValue === undefined) return null;\n\n return (\n <div className=\"flex flex-col gap-1 text-xs\">\n {example !== undefined && (\n <div>\n <span className=\"text-muted-foreground\">Example: </span>\n <SelectOnClick className=\"border rounded-sm px-1 font-mono\">\n {typeof example === \"object\" || typeof example === \"boolean\"\n ? JSON.stringify(example)\n : example}\n </SelectOnClick>\n </div>\n )}\n {defaultValue !== undefined && (\n <div>\n <span className=\"text-muted-foreground\">Default: </span>\n <SelectOnClick className=\"border rounded-sm px-1 font-mono\">\n {typeof defaultValue === \"object\" ||\n typeof defaultValue === \"boolean\"\n ? JSON.stringify(defaultValue)\n : defaultValue}\n </SelectOnClick>\n </div>\n )}\n </div>\n );\n};\n","import { CIRCULAR_REF } from \"../../../oas/graphql/circular.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\n\nexport const isBasicType = (\n type: unknown,\n): type is \"string\" | \"number\" | \"boolean\" | \"integer\" | \"null\" =>\n (typeof type === \"string\" &&\n [\"string\", \"number\", \"boolean\", \"integer\", \"null\"].includes(type)) ||\n (Array.isArray(type) && type.every(isBasicType));\n\nexport const isArrayType = (value: SchemaObject) =>\n value.type === \"array\" ||\n // schema.type might be an array of types, so we need to check if \"array\" is one of them\n (Array.isArray(value.type) && value.type.includes(\"array\"));\n\nexport const isComplexType = (value?: SchemaObject) =>\n value &&\n ((value.type === \"object\" &&\n Object.keys(value.properties ?? {}).length > 0) ||\n (value.type === \"array\" &&\n typeof value.items === \"object\" &&\n (!value.items.type || value.items.type === \"object\")));\n\nexport const isCircularRef = (schema: unknown): schema is string =>\n typeof schema === \"string\" && schema.startsWith(CIRCULAR_REF);\n\nexport const isArrayCircularRef = (\n schema: SchemaObject,\n): schema is SchemaObject & { items: SchemaObject } =>\n isArrayType(schema) && \"items\" in schema && isCircularRef(schema.items);\n\nexport const extractCircularRefInfo = (\n ref?: string | SchemaObject,\n): string | undefined =>\n typeof ref === \"string\" ? ref.split(\":\")[1] : undefined;\n","import * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { MinusIcon, PlusIcon, RefreshCcwDotIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { InlineCode } from \"../../../components/InlineCode.js\";\nimport { Markdown } from \"../../../components/Markdown.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { ConstValue } from \"../components/ConstValue.js\";\nimport { EnumValues } from \"../components/EnumValues.js\";\nimport { SelectOnClick } from \"../components/SelectOnClick.js\";\nimport { ParamInfos } from \"../ParamInfos.js\";\nimport { AllOfGroupView } from \"./AllOfGroup/AllOfGroupView.js\";\nimport { SchemaExampleAndDefault } from \"./SchemaExampleAndDefault.js\";\nimport { SchemaView } from \"./SchemaView.js\";\nimport {\n extractCircularRefInfo,\n isArrayCircularRef,\n isArrayType,\n isCircularRef,\n isComplexType,\n} from \"./utils.js\";\n\nconst RecursiveIndicator = ({ circularProp }: { circularProp?: string }) => (\n <InlineCode\n className=\"inline-flex items-center gap-1.5 italic text-xs translate-y-0.5\"\n selectOnClick={false}\n >\n <RefreshCcwDotIcon size={13} />\n <span>{circularProp ? `${circularProp} (circular)` : \"circular\"}</span>\n </InlineCode>\n);\n\nexport const SchemaPropertyItem = ({\n name,\n schema,\n group,\n defaultOpen = false,\n showCollapseButton = true,\n}: {\n name: string;\n schema: SchemaObject;\n group: \"required\" | \"optional\" | \"deprecated\";\n defaultOpen?: boolean;\n showCollapseButton?: boolean;\n}) => {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n if (isCircularRef(schema)) {\n return (\n <li className=\"p-4 bg-border/20 hover:bg-border/30\">\n <div className=\"flex flex-col gap-2.5 justify-between text-sm\">\n <div className=\"space-x-2 rtl:space-x-reverse\">\n <code>{name}</code>\n <ParamInfos\n schema={schema}\n extraItems={[<RecursiveIndicator key=\"circular-ref\" />]}\n />\n </div>\n <SchemaExampleAndDefault schema={schema} />\n </div>\n </li>\n );\n }\n\n const isCollapsible = Boolean(\n (schema.allOf ||\n schema.anyOf ||\n schema.oneOf ||\n isComplexType(schema) ||\n (isArrayType(schema) &&\n \"items\" in schema &&\n isComplexType(schema.items)) ||\n schema.additionalProperties) &&\n !isArrayCircularRef(schema),\n );\n\n return (\n <li className=\"p-4 bg-border/20 hover:bg-border/30\">\n <div className=\"flex flex-col gap-2.5 justify-between text-sm\">\n <div className=\"space-x-2 rtl:space-x-reverse\">\n <SelectOnClick asChild>\n <code>{name}</code>\n </SelectOnClick>\n <ParamInfos\n schema={schema}\n extraItems={[\n group !== \"optional\" && (\n <span className=\"text-primary\">required</span>\n ),\n isArrayCircularRef(schema) && (\n <RecursiveIndicator\n circularProp={extractCircularRefInfo(schema.items)}\n />\n ),\n ]}\n />\n </div>\n {schema.description && (\n <Markdown\n className=\"text-sm leading-normal\"\n content={schema.description}\n />\n )}\n {schema.type === \"array\" && \"items\" in schema && schema.items.enum && (\n <EnumValues values={schema.items.enum} />\n )}\n {schema.const && <ConstValue schema={schema} hideDescription />}\n {schema.enum && <EnumValues values={schema.enum} />}\n <SchemaExampleAndDefault schema={schema} />\n\n {isCollapsible && (\n <Collapsible.Root\n defaultOpen={defaultOpen}\n open={isOpen}\n onOpenChange={() => setIsOpen(!isOpen)}\n >\n {showCollapseButton && (\n <Collapsible.Trigger asChild>\n <Button variant=\"expand\" size=\"sm\">\n {isOpen ? <MinusIcon size={12} /> : <PlusIcon size={12} />}\n {!isOpen ? \"Show properties\" : \"Hide properties\"}\n </Button>\n </Collapsible.Trigger>\n )}\n <Collapsible.Content>\n <div className=\"mt-2\">\n {schema.allOf ? (\n <AllOfGroupView schema={schema} />\n ) : schema.anyOf || schema.oneOf || schema.type === \"object\" ? (\n <SchemaView schema={schema} />\n ) : isArrayType(schema) && \"items\" in schema ? (\n <SchemaView schema={schema.items} />\n ) : null}\n </div>\n </Collapsible.Content>\n </Collapsible.Root>\n )}\n </div>\n </li>\n );\n};\n","import type { SchemaObject } from \"../../../oas/parser/index.js\";\n\nexport type FieldSignature = {\n type?: SchemaObject[\"type\"];\n const?: unknown;\n enum?: unknown[];\n format?: string;\n pattern?: string;\n minimum?: number;\n maximum?: number;\n exclusiveMinimum?: boolean | number;\n exclusiveMaximum?: boolean | number;\n minLength?: number;\n maxLength?: number;\n minItems?: number;\n maxItems?: number;\n itemsType?: string | string[];\n additionalProps?: \"true\" | \"false\" | \"schema\";\n};\n\nexport type FieldDoc = {\n name: string;\n humanType: string;\n description?: string;\n requiredInAll: boolean;\n};\n\nexport const unionVariants = (schema: SchemaObject): SchemaObject[] => {\n const variants = (schema.oneOf ?? schema.anyOf ?? []) as SchemaObject[];\n\n // If parent schema has properties that variants don't, merge them\n // This handles the pattern where anyOf/oneOf is used just for required field combinations\n if (schema.properties && Object.keys(schema.properties).length > 0) {\n return variants.map((variant) => {\n // If variant doesn't define its own properties or type, inherit from parent\n const shouldInherit =\n !variant.properties &&\n !variant.type &&\n !variant.allOf &&\n !variant.oneOf &&\n !variant.anyOf;\n\n if (shouldInherit) {\n return {\n ...variant,\n type: \"object\" as const,\n properties: schema.properties,\n required: variant.required ?? schema.required,\n };\n }\n\n return variant;\n });\n }\n\n return variants;\n};\n\nexport const decideExclusivity = (\n schema: SchemaObject,\n): \"exactly-one\" | \"at-least-one\" => {\n if (Array.isArray(schema.oneOf)) return \"exactly-one\";\n\n const discriminator = schema.discriminator?.propertyName;\n if (!discriminator) return \"at-least-one\";\n\n const variants = unionVariants(schema);\n const seen = new Set<string>();\n\n for (const variant of variants) {\n const prop = variant.properties?.[discriminator];\n\n const value =\n prop?.const ??\n (Array.isArray(prop?.enum) && prop.enum.length === 1\n ? String(prop.enum[0])\n : undefined);\n\n if (value == null || seen.has(String(value))) return \"at-least-one\";\n seen.add(String(value));\n }\n\n return \"exactly-one\";\n};\n\nexport const labelForVariant = (index: number, variant: SchemaObject) =>\n variant.title?.trim() || `Variant ${index + 1}`;\n\nexport const quickGuards = (variant: SchemaObject, root?: SchemaObject) => {\n const guards: string[] = [];\n\n if (variant.type) {\n guards.push(\n `type = ${Array.isArray(variant.type) ? variant.type.join(\"|\") : variant.type}`,\n );\n }\n\n const discriminator = root?.discriminator?.propertyName;\n if (discriminator) {\n const discriminatorProp = variant.properties?.[discriminator] as\n | SchemaObject\n | undefined;\n\n const discriminatorValue =\n discriminatorProp?.const ??\n (Array.isArray(discriminatorProp?.enum) &&\n discriminatorProp.enum.length === 1\n ? discriminatorProp.enum[0]\n : undefined);\n\n if (discriminatorValue !== undefined) {\n guards.push(`${discriminator}=${JSON.stringify(discriminatorValue)}`);\n }\n }\n\n const required = (variant.required ?? []).filter((k) => k !== discriminator);\n if (required.length) {\n const head = required.slice(0, 3).join(\", \");\n const more = required.length > 3 ? ` +${required.length - 3} more` : \"\";\n guards.push(`requires: ${head}${more}`);\n }\n\n return guards;\n};\n","import { useState } from \"react\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Badge } from \"../../../ui/Badge.js\";\nimport { Card } from \"../../../ui/Card.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { SchemaView } from \"./SchemaView.js\";\nimport {\n decideExclusivity,\n labelForVariant,\n quickGuards,\n unionVariants,\n} from \"./union-helpers.js\";\n\nconst DecisionTable = ({\n variants,\n schema,\n selectedVariant,\n onSelectVariant,\n}: {\n variants: SchemaObject[];\n schema: SchemaObject;\n selectedVariant: string;\n onSelectVariant: (label: string) => void;\n}) => {\n const rows = variants.map((v, i) => ({\n label: labelForVariant(i, v),\n guards: quickGuards(v, schema),\n }));\n\n return (\n <div className=\"flex flex-col gap-2 text-sm\">\n <h4 className=\"font-medium\">Decision Table</h4>\n <div className=\"border rounded-md overflow-hidden\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th className=\"text-left p-2 font-medium\">Variant</th>\n <th className=\"text-left p-2 font-medium\">Matching Criteria</th>\n </tr>\n </thead>\n <tbody className=\"divide-y\">\n {rows.map((row) => (\n <tr key={row.label} className=\"hover:bg-muted/30\">\n <td className=\"p-2 font-medium\">\n <button\n type=\"button\"\n className={cn(\n \"hover:underline\",\n selectedVariant === row.label && \"text-primary\",\n )}\n onClick={() => onSelectVariant(row.label)}\n >\n {row.label}\n </button>\n </td>\n <td className=\"p-2 text-muted-foreground text-xs\">\n {row.guards.length > 0\n ? row.guards.join(\" · \")\n : \"No specific criteria\"}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};\n\nconst VariantPanel = ({ variant }: { variant: SchemaObject }) => {\n return (\n <div className=\"space-y-2\">\n {variant.description && (\n <p className=\"text-sm text-muted-foreground\">{variant.description}</p>\n )}\n <SchemaView schema={variant} />\n </div>\n );\n};\n\nexport const UnionView = ({\n schema,\n cardHeader,\n}: {\n schema: SchemaObject;\n cardHeader?: React.ReactNode;\n}) => {\n const mode = Array.isArray(schema.oneOf)\n ? \"oneOf\"\n : Array.isArray(schema.anyOf)\n ? \"anyOf\"\n : undefined;\n\n const variants = mode ? unionVariants(schema) : [];\n const [selectedVariant, setSelectedVariant] = useState(() =>\n variants[0] ? labelForVariant(0, variants[0]) : \"\",\n );\n\n if (!mode) return null;\n\n const exclusivity = decideExclusivity(schema);\n\n const semanticsMessage =\n exclusivity === \"exactly-one\" ? (\n <>\n Exactly one variant <b>must match</b>.\n </>\n ) : (\n <>\n At least one variant <b>must match</b>. Multiple variants{\" \"}\n <i>may match</i> simultaneously.\n </>\n );\n\n const currentVariantIndex = variants.findIndex(\n (v, i) => labelForVariant(i, v) === selectedVariant,\n );\n const currentVariant =\n currentVariantIndex >= 0 ? variants[currentVariantIndex] : null;\n\n return (\n <Card className=\"overflow-hidden text-sm\">\n {cardHeader}\n <div className=\"flex flex-col gap-4 p-4\">\n <div className=\"flex items-center gap-2\">\n <Badge variant=\"outline\">{mode}</Badge>\n <div className=\"flex-1 p-2\">\n <span className=\"text-sm\">{semanticsMessage}</span>\n </div>\n </div>\n\n <DecisionTable\n variants={variants}\n schema={schema}\n selectedVariant={selectedVariant}\n onSelectVariant={setSelectedVariant}\n />\n <strong>Properties for {selectedVariant}:</strong>\n {currentVariant && <VariantPanel variant={currentVariant} />}\n </div>\n </Card>\n );\n};\n","import { InfoIcon } from \"lucide-react\";\nimport { Markdown } from \"../../../components/Markdown.js\";\nimport type { SchemaObject } from \"../../../oas/parser/index.js\";\nimport { Card } from \"../../../ui/Card.js\";\nimport { groupBy } from \"../../../util/groupBy.js\";\nimport { ConstValue } from \"../components/ConstValue.js\";\nimport { EnumValues } from \"../components/EnumValues.js\";\nimport { ParamInfos } from \"../ParamInfos.js\";\nimport { AllOfGroupView } from \"./AllOfGroup/AllOfGroupView.js\";\nimport { SchemaExampleAndDefault } from \"./SchemaExampleAndDefault.js\";\nimport { SchemaPropertyItem } from \"./SchemaPropertyItem.js\";\nimport { UnionView } from \"./UnionView.js\";\nimport { isBasicType } from \"./utils.js\";\n\nconst renderMarkdown = (content?: string) =>\n content && (\n <Markdown\n className=\"text-sm leading-normal line-clamp-4\"\n content={content}\n />\n );\n\nconst renderBasicSchema = (\n schema: SchemaObject,\n cardHeader?: React.ReactNode,\n) => (\n <Card className=\"overflow-hidden\">\n {cardHeader}\n <div className=\"p-4 space-y-2\">\n <span className=\"text-sm text-muted-foreground\">\n <ParamInfos schema={schema} />\n </span>\n {schema.enum && <EnumValues values={schema.enum} />}\n {renderMarkdown(schema.description)}\n <SchemaExampleAndDefault schema={schema} />\n </div>\n </Card>\n);\n\nexport const SchemaView = ({\n schema,\n defaultOpen = false,\n cardHeader,\n embedded,\n}: {\n schema?: SchemaObject | null;\n defaultOpen?: boolean;\n cardHeader?: React.ReactNode;\n embedded?: boolean;\n}) => {\n if (!schema || Object.keys(schema).length === 0) {\n return (\n <Card className=\"overflow-hidden\">\n {cardHeader}\n <div className=\"text-sm text-muted-foreground italic p-4\">\n No data returned\n </div>\n </Card>\n );\n }\n\n if (schema.const) {\n return <ConstValue schema={schema} />;\n }\n\n if (Array.isArray(schema.oneOf) || Array.isArray(schema.anyOf)) {\n return <UnionView schema={schema} cardHeader={cardHeader} />;\n }\n\n if (Array.isArray(schema.allOf)) {\n return <AllOfGroupView schema={schema} cardHeader={cardHeader} />;\n }\n\n if (isBasicType(schema.type)) {\n return renderBasicSchema(schema, cardHeader);\n }\n\n if (schema.type === \"array\" && typeof schema.items === \"object\") {\n return <SchemaView schema={schema.items} cardHeader={cardHeader} />;\n }\n\n if (schema.type === \"object\") {\n const groupedProperties = groupBy(\n Object.entries(schema.properties ?? {}),\n ([propertyName, property]) => {\n return property.deprecated\n ? \"deprecated\"\n : schema.required?.includes(propertyName)\n ? \"required\"\n : \"optional\";\n },\n );\n const groupNames = [\"required\", \"optional\", \"deprecated\"] as const;\n\n const additionalProperties =\n typeof schema.additionalProperties === \"object\" ? (\n <SchemaView schema={schema.additionalProperties} embedded />\n ) : schema.additionalProperties === true ? (\n <div className=\"text-sm p-4 bg-border/20 hover:bg-border/30 flex items-center gap-1\">\n <span>Additional properties are allowed</span>\n <a\n className=\"p-0.5 -m-0.5\"\n href=\"https://swagger.io/docs/specification/v3_0/data-models/dictionaries/\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n <InfoIcon size={14} />\n </a>\n </div>\n ) : null;\n\n const Component = embedded ? \"div\" : Card;\n\n return (\n <Component className=\"divide-y overflow-hidden\">\n {cardHeader}\n {groupNames.map(\n (group) =>\n groupedProperties[group] && (\n <ul key={group} className=\"divide-y\">\n {groupedProperties[group].map(([name, schema]) => (\n <SchemaPropertyItem\n key={name}\n name={name}\n schema={schema}\n group={group}\n defaultOpen={defaultOpen}\n />\n ))}\n </ul>\n ),\n )}\n {additionalProperties}\n </Component>\n );\n }\n\n return null;\n};\n"],"names":["groupBy","arr","keySelector","accumulator","val","groupedKey","ConstValue","schema","hideDescription","jsx","SelectOnClick","EnumValues","values","className","maxVisibleValues","isOpen","setIsOpen","useState","shouldCollapse","visibleValues","cn","value","Button","jsxs","ChevronUpIcon","ChevronDownIcon","Pattern","pattern","isExpanded","setIsExpanded","isExpandable","shortPattern","InlineCode","ChevronsLeftRightIcon","getSchemaInfos","Fragment","ParamInfos","extraItems","filteredItems","item","isValidElement","index","AllOfGroupConnector","schemeName","CircleFadingPlusIcon","AllOfGroupItem","props","Collapsible","prev","SchemaView","AllOfGroupView","cardHeader","toggleOpen","useCallback","Card","SquareMinusIcon","SquarePlusIcon","subSchema","SchemaExampleAndDefault","example","defaultValue","isBasicType","type","isArrayType","isComplexType","isCircularRef","CIRCULAR_REF","isArrayCircularRef","extractCircularRefInfo","ref","RecursiveIndicator","circularProp","RefreshCcwDotIcon","SchemaPropertyItem","name","group","defaultOpen","showCollapseButton","isCollapsible","Markdown","MinusIcon","PlusIcon","unionVariants","variants","variant","decideExclusivity","discriminator","seen","prop","labelForVariant","quickGuards","root","guards","discriminatorProp","discriminatorValue","required","k","head","more","DecisionTable","selectedVariant","onSelectVariant","rows","v","i","row","VariantPanel","UnionView","mode","setSelectedVariant","semanticsMessage","currentVariantIndex","currentVariant","Badge","renderMarkdown","content","renderBasicSchema","embedded","groupedProperties","propertyName","property","groupNames","additionalProperties","InfoIcon","Component"],"mappings":"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"}
@@ -1,372 +0,0 @@
1
- import * as n from "react";
2
- import { useState as C } from "react";
3
- import { g as R } from "./mutation-BSU0xu4m.js";
4
- import { S as O, s as k, h, n as f, g as I, i as E, k as M } from "./ZudokuContext-BUZ5hkWB.js";
5
- import { j as s } from "./jsx-runtime-BzflLqGi.js";
6
- import { c as z } from "./index-DI5SPFK9.js";
7
- import { c as o } from "./cn-dYga0KKN.js";
8
- import { EyeOffIcon as T, EyeIcon as B, CheckIcon as U, CopyIcon as D, ChevronDown as x, ChevronUp as A, Check as K } from "lucide-react";
9
- import { u as L } from "./useCopyToClipboard-B_085nfO.js";
10
- import { Button as p } from "./ui/Button.js";
11
- import * as i from "@radix-ui/react-select";
12
- var V = class extends O {
13
- #s;
14
- #a = void 0;
15
- #t;
16
- #e;
17
- constructor(t, e) {
18
- super(), this.#s = t, this.setOptions(e), this.bindMethods(), this.#r();
19
- }
20
- bindMethods() {
21
- this.mutate = this.mutate.bind(this), this.reset = this.reset.bind(this);
22
- }
23
- setOptions(t) {
24
- const e = this.options;
25
- this.options = this.#s.defaultMutationOptions(t), k(this.options, e) || this.#s.getMutationCache().notify({
26
- type: "observerOptionsUpdated",
27
- mutation: this.#t,
28
- observer: this
29
- }), e?.mutationKey && this.options.mutationKey && h(e.mutationKey) !== h(this.options.mutationKey) ? this.reset() : this.#t?.state.status === "pending" && this.#t.setOptions(this.options);
30
- }
31
- onUnsubscribe() {
32
- this.hasListeners() || this.#t?.removeObserver(this);
33
- }
34
- onMutationUpdate(t) {
35
- this.#r(), this.#i(t);
36
- }
37
- getCurrentResult() {
38
- return this.#a;
39
- }
40
- reset() {
41
- this.#t?.removeObserver(this), this.#t = void 0, this.#r(), this.#i();
42
- }
43
- mutate(t, e) {
44
- return this.#e = e, this.#t?.removeObserver(this), this.#t = this.#s.getMutationCache().build(this.#s, this.options), this.#t.addObserver(this), this.#t.execute(t);
45
- }
46
- #r() {
47
- const t = this.#t?.state ?? R();
48
- this.#a = {
49
- ...t,
50
- isPending: t.status === "pending",
51
- isSuccess: t.status === "success",
52
- isError: t.status === "error",
53
- isIdle: t.status === "idle",
54
- mutate: this.mutate,
55
- reset: this.reset
56
- };
57
- }
58
- #i(t) {
59
- f.batch(() => {
60
- if (this.#e && this.hasListeners()) {
61
- const e = this.#a.variables, a = this.#a.context;
62
- t?.type === "success" ? (this.#e.onSuccess?.(t.data, e, a), this.#e.onSettled?.(t.data, null, e, a)) : t?.type === "error" && (this.#e.onError?.(t.error, e, a), this.#e.onSettled?.(
63
- void 0,
64
- t.error,
65
- e,
66
- a
67
- ));
68
- }
69
- this.listeners.forEach((e) => {
70
- e(this.#a);
71
- });
72
- });
73
- }
74
- };
75
- function at(t, e) {
76
- const a = I(e), [r] = n.useState(
77
- () => new V(
78
- a,
79
- t
80
- )
81
- );
82
- n.useEffect(() => {
83
- r.setOptions(t);
84
- }, [r, t]);
85
- const l = n.useSyncExternalStore(
86
- n.useCallback(
87
- (d) => r.subscribe(f.batchCalls(d)),
88
- [r]
89
- ),
90
- () => r.getCurrentResult(),
91
- () => r.getCurrentResult()
92
- ), c = n.useCallback(
93
- (d, u) => {
94
- r.mutate(d, u).catch(E);
95
- },
96
- [r]
97
- );
98
- if (l.error && M(r.options.throwOnError, [l.error]))
99
- throw l.error;
100
- return { ...l, mutate: c, mutateAsync: l.mutate };
101
- }
102
- const P = z(
103
- "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",
104
- {
105
- variants: {
106
- variant: {
107
- default: "bg-card text-card-foreground",
108
- destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"
109
- }
110
- },
111
- defaultVariants: {
112
- variant: "default"
113
- }
114
- }
115
- );
116
- function rt({
117
- className: t,
118
- variant: e,
119
- ...a
120
- }) {
121
- return /* @__PURE__ */ s.jsx(
122
- "div",
123
- {
124
- "data-slot": "alert",
125
- role: "alert",
126
- className: o(P({ variant: e }), t),
127
- ...a
128
- }
129
- );
130
- }
131
- function it({ className: t, ...e }) {
132
- return /* @__PURE__ */ s.jsx(
133
- "div",
134
- {
135
- "data-slot": "alert-title",
136
- className: o(
137
- "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
138
- t
139
- ),
140
- ...e
141
- }
142
- );
143
- }
144
- function ot({
145
- className: t,
146
- ...e
147
- }) {
148
- return /* @__PURE__ */ s.jsx(
149
- "div",
150
- {
151
- "data-slot": "alert-description",
152
- className: o(
153
- "text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
154
- t
155
- ),
156
- ...e
157
- }
158
- );
159
- }
160
- const _ = ({
161
- secret: t,
162
- revealed: e = !1,
163
- previewChars: a = 5,
164
- className: r
165
- }) => /* @__PURE__ */ s.jsxs("span", { className: o("w-full truncate", r), children: [
166
- /* @__PURE__ */ s.jsx(
167
- "div",
168
- {
169
- className: o(
170
- "w-40 inline-block md:w-fit",
171
- e ? "" : "opacity-50"
172
- ),
173
- children: e ? t.slice(0, a === 0 ? t.length : -a) : "•••• ".repeat(
174
- t.slice(
175
- 0,
176
- a === 0 ? t.length : -a
177
- ).length / 5
178
- ) + "•".repeat(
179
- t.slice(
180
- 0,
181
- a === 0 ? t.length : -a
182
- ).length % 5
183
- )
184
- }
185
- ),
186
- a > 0 && /* @__PURE__ */ s.jsx("span", { children: t.slice(-a) })
187
- ] }), nt = ({
188
- secret: t,
189
- preview: e = 5,
190
- className: a,
191
- status: r,
192
- onCopy: l,
193
- revealed: c,
194
- onReveal: d,
195
- noReveal: u
196
- }) => {
197
- const y = Math.abs(e), [v, j] = C(!1), [N, S] = L(), m = c ?? v;
198
- return /* @__PURE__ */ s.jsxs(
199
- "div",
200
- {
201
- className: o(
202
- "flex gap-2 items-center text-sm border rounded-md px-1",
203
- a
204
- ),
205
- children: [
206
- /* @__PURE__ */ s.jsxs("div", { className: "font-mono w-full h-9 items-center flex px-2 text-xs gap-2", children: [
207
- r && /* @__PURE__ */ s.jsx(
208
- "div",
209
- {
210
- className: o(
211
- "rounded-full shrink-0 w-2 h-2 mr-2",
212
- r === "active" && "bg-emerald-400",
213
- r === "expired" && "bg-neutral-200",
214
- r === "expiring" && "bg-yellow-400",
215
- r === "revoked" && "bg-red-400",
216
- r === "none" && "opacity-0"
217
- )
218
- }
219
- ),
220
- /* @__PURE__ */ s.jsx(
221
- _,
222
- {
223
- secret: t,
224
- revealed: m,
225
- previewChars: y
226
- }
227
- )
228
- ] }),
229
- u !== !0 && /* @__PURE__ */ s.jsx(
230
- p,
231
- {
232
- variant: "ghost",
233
- onClick: () => {
234
- j((w) => !w), d?.(!m);
235
- },
236
- size: "icon",
237
- children: m ? /* @__PURE__ */ s.jsx(T, { size: 16 }) : /* @__PURE__ */ s.jsx(B, { size: 16 })
238
- }
239
- ),
240
- /* @__PURE__ */ s.jsx(
241
- p,
242
- {
243
- variant: "ghost",
244
- onClick: () => {
245
- S(t), l?.(t);
246
- },
247
- size: "icon",
248
- children: N ? /* @__PURE__ */ s.jsx(U, { size: 16 }) : /* @__PURE__ */ s.jsx(D, { size: 16 })
249
- }
250
- )
251
- ]
252
- }
253
- );
254
- }, lt = i.Root, dt = i.Group, ct = i.Value, G = n.forwardRef(({ className: t, children: e, ...a }, r) => /* @__PURE__ */ s.jsxs(
255
- i.Trigger,
256
- {
257
- ref: r,
258
- className: o(
259
- "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring focus:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50",
260
- t
261
- ),
262
- ...a,
263
- children: [
264
- /* @__PURE__ */ s.jsx("span", { className: "truncate", children: e }),
265
- /* @__PURE__ */ s.jsx(i.Icon, { asChild: !0, children: /* @__PURE__ */ s.jsx(x, { className: "shrink-0 h-4 w-4 opacity-50" }) })
266
- ]
267
- }
268
- ));
269
- G.displayName = i.Trigger.displayName;
270
- const g = n.forwardRef(({ className: t, ...e }, a) => /* @__PURE__ */ s.jsx(
271
- i.ScrollUpButton,
272
- {
273
- ref: a,
274
- className: o(
275
- "flex cursor-default items-center justify-center py-1",
276
- t
277
- ),
278
- ...e,
279
- children: /* @__PURE__ */ s.jsx(A, { className: "h-4 w-4" })
280
- }
281
- ));
282
- g.displayName = i.ScrollUpButton.displayName;
283
- const b = n.forwardRef(({ className: t, ...e }, a) => /* @__PURE__ */ s.jsx(
284
- i.ScrollDownButton,
285
- {
286
- ref: a,
287
- className: o(
288
- "flex cursor-default items-center justify-center py-1",
289
- t
290
- ),
291
- ...e,
292
- children: /* @__PURE__ */ s.jsx(x, { className: "h-4 w-4" })
293
- }
294
- ));
295
- b.displayName = i.ScrollDownButton.displayName;
296
- const q = n.forwardRef(({ className: t, children: e, position: a = "popper", ...r }, l) => /* @__PURE__ */ s.jsx(i.Portal, { children: /* @__PURE__ */ s.jsxs(
297
- i.Content,
298
- {
299
- ref: l,
300
- className: o(
301
- "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
302
- a === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
303
- t
304
- ),
305
- position: a,
306
- ...r,
307
- children: [
308
- /* @__PURE__ */ s.jsx(g, {}),
309
- /* @__PURE__ */ s.jsx(
310
- i.Viewport,
311
- {
312
- className: o(
313
- a === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]",
314
- "divide-y"
315
- ),
316
- children: e
317
- }
318
- ),
319
- /* @__PURE__ */ s.jsx(b, {})
320
- ]
321
- }
322
- ) }));
323
- q.displayName = i.Content.displayName;
324
- const Q = n.forwardRef(({ className: t, ...e }, a) => /* @__PURE__ */ s.jsx(
325
- i.Label,
326
- {
327
- ref: a,
328
- className: o("py-1.5 pl-8 pr-2 text-sm font-semibold", t),
329
- ...e
330
- }
331
- ));
332
- Q.displayName = i.Label.displayName;
333
- const F = n.forwardRef(({ className: t, children: e, ...a }, r) => /* @__PURE__ */ s.jsxs(
334
- i.Item,
335
- {
336
- ref: r,
337
- className: o(
338
- "relative flex w-full cursor-default select-none items-center py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
339
- t
340
- ),
341
- ...a,
342
- children: [
343
- /* @__PURE__ */ s.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ s.jsx(i.ItemIndicator, { children: /* @__PURE__ */ s.jsx(K, { className: "h-4 w-4" }) }) }),
344
- /* @__PURE__ */ s.jsx(i.ItemText, { children: e })
345
- ]
346
- }
347
- ));
348
- F.displayName = i.Item.displayName;
349
- const H = n.forwardRef(({ className: t, ...e }, a) => /* @__PURE__ */ s.jsx(
350
- i.Separator,
351
- {
352
- ref: a,
353
- className: o("-mx-1 my-1 h-px bg-muted", t),
354
- ...e
355
- }
356
- ));
357
- H.displayName = i.Separator.displayName;
358
- export {
359
- rt as A,
360
- lt as S,
361
- it as a,
362
- ot as b,
363
- G as c,
364
- ct as d,
365
- q as e,
366
- dt as f,
367
- F as g,
368
- nt as h,
369
- _ as i,
370
- at as u
371
- };
372
- //# sourceMappingURL=Select-C1DeCqKv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Select-C1DeCqKv.js","sources":["../../../node_modules/.pnpm/@tanstack+query-core@5.85.5/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../node_modules/.pnpm/@tanstack+react-query@5.85.5_react@19.2.0/node_modules/@tanstack/react-query/build/modern/useMutation.js","../src/lib/ui/Alert.tsx","../src/lib/ui/Secret.tsx","../src/lib/ui/Select.tsx"],"sourcesContent":["// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const context = this.#currentResult.context;\n if (action?.type === \"success\") {\n this.#mutateOptions.onSuccess?.(action.data, variables, context);\n this.#mutateOptions.onSettled?.(action.data, null, variables, context);\n } else if (action?.type === \"error\") {\n this.#mutateOptions.onError?.(action.error, variables, context);\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n context\n );\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport {\n MutationObserver,\n noop,\n notifyManager,\n shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map","import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle };\n","import { CheckIcon, CopyIcon, EyeIcon, EyeOffIcon } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { cn } from \"../util/cn.js\";\nimport { useCopyToClipboard } from \"../util/useCopyToClipboard.js\";\nimport { Button } from \"./Button.js\";\n\ntype Status = \"active\" | \"expired\" | \"expiring\" | \"revoked\" | \"none\";\n\nexport const SecretText = ({\n secret,\n revealed = false,\n previewChars = 5,\n className,\n}: {\n secret: string;\n revealed?: boolean;\n previewChars?: number;\n className?: string;\n}) => {\n return (\n <span className={cn(\"w-full truncate\", className)}>\n <div\n className={cn(\n \"w-40 inline-block md:w-fit\",\n revealed ? \"\" : \"opacity-50\",\n )}\n >\n {revealed\n ? secret.slice(0, previewChars === 0 ? secret.length : -previewChars)\n : \"•••• \".repeat(\n secret.slice(\n 0,\n previewChars === 0 ? secret.length : -previewChars,\n ).length / 5,\n ) +\n \"•\".repeat(\n secret.slice(\n 0,\n previewChars === 0 ? secret.length : -previewChars,\n ).length % 5,\n )}\n </div>\n {previewChars > 0 && <span>{secret.slice(-previewChars)}</span>}\n </span>\n );\n};\n\nexport const Secret = ({\n secret,\n preview = 5,\n className,\n status,\n onCopy,\n revealed: controlledRevealed,\n onReveal,\n noReveal: disabledReveal,\n}: {\n revealed?: boolean;\n noReveal?: boolean;\n secret: string;\n status?: Status;\n className?: string;\n preview?: number;\n onCopy?: (secret: string) => void;\n onReveal?: (revealed: boolean) => void;\n}) => {\n const previewChars = Math.abs(preview);\n const [isRevealed, setRevealed] = useState(false);\n const [isCopied, copyToClipboard] = useCopyToClipboard();\n\n const revealed = controlledRevealed ?? isRevealed;\n\n return (\n <div\n className={cn(\n \"flex gap-2 items-center text-sm border rounded-md px-1\",\n className,\n )}\n >\n <div className=\"font-mono w-full h-9 items-center flex px-2 text-xs gap-2\">\n {status && (\n <div\n className={cn(\n \"rounded-full shrink-0 w-2 h-2 mr-2\",\n status === \"active\" && \"bg-emerald-400\",\n status === \"expired\" && \"bg-neutral-200\",\n status === \"expiring\" && \"bg-yellow-400\",\n status === \"revoked\" && \"bg-red-400\",\n status === \"none\" && \"opacity-0\",\n )}\n />\n )}\n <SecretText\n secret={secret}\n revealed={revealed}\n previewChars={previewChars}\n />\n </div>\n {disabledReveal !== true && (\n <Button\n variant=\"ghost\"\n onClick={() => {\n setRevealed((prev) => !prev);\n onReveal?.(!revealed);\n }}\n size=\"icon\"\n >\n {revealed ? <EyeOffIcon size={16} /> : <EyeIcon size={16} />}\n </Button>\n )}\n <Button\n variant=\"ghost\"\n onClick={() => {\n copyToClipboard(secret);\n onCopy?.(secret);\n }}\n size=\"icon\"\n >\n {isCopied ? <CheckIcon size={16} /> : <CopyIcon size={16} />}\n </Button>\n </div>\n );\n};\n","import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring focus:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"truncate\">{children}</span>\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"shrink-0 h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className,\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\",\n \"divide-y\",\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"names":["MutationObserver","Subscribable","#client","#currentResult","#currentMutation","#mutateOptions","client","options","#updateResult","prevOptions","shallowEqualObjects","hashKey","action","#notify","variables","state","getDefaultState","notifyManager","context","listener","useMutation","queryClient","useQueryClient","observer","React","result","onStoreChange","mutate","mutateOptions","noop","shouldThrowError","alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","SecretText","secret","revealed","previewChars","Secret","preview","status","onCopy","controlledRevealed","onReveal","disabledReveal","isRevealed","setRevealed","useState","isCopied","copyToClipboard","useCopyToClipboard","jsxs","Button","prev","EyeOffIcon","EyeIcon","CheckIcon","CopyIcon","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","children","ref","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","position","SelectLabel","SelectItem","Check","SelectSeparator"],"mappings":"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","x_google_ignoreList":[0,1]}