zudoku 0.26.1 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/dist/app/main.d.ts +1 -1
  2. package/dist/app/main.js +19 -7
  3. package/dist/app/main.js.map +1 -1
  4. package/dist/config/loader.js +1 -1
  5. package/dist/config/loader.js.map +1 -1
  6. package/dist/config/validators/InputSidebarSchema.d.ts +2 -2
  7. package/dist/config/validators/common.d.ts +67 -0
  8. package/dist/config/validators/common.js +5 -0
  9. package/dist/config/validators/common.js.map +1 -1
  10. package/dist/config/validators/validate.d.ts +29 -0
  11. package/dist/lib/components/AnchorLink.js +5 -2
  12. package/dist/lib/components/AnchorLink.js.map +1 -1
  13. package/dist/lib/components/Header.js +1 -1
  14. package/dist/lib/components/Header.js.map +1 -1
  15. package/dist/lib/components/Heading.d.ts +1 -1
  16. package/dist/lib/components/Markdown.d.ts +2 -2
  17. package/dist/lib/components/Markdown.js +3 -1
  18. package/dist/lib/components/Markdown.js.map +1 -1
  19. package/dist/lib/components/StatusPage.d.ts +7 -0
  20. package/dist/lib/components/StatusPage.js +71 -0
  21. package/dist/lib/components/StatusPage.js.map +1 -0
  22. package/dist/lib/components/SyntaxHighlight.d.ts +2 -1
  23. package/dist/lib/components/SyntaxHighlight.js +2 -2
  24. package/dist/lib/components/SyntaxHighlight.js.map +1 -1
  25. package/dist/lib/components/ThemeSwitch.js +4 -4
  26. package/dist/lib/components/ThemeSwitch.js.map +1 -1
  27. package/dist/lib/components/cache.d.ts +6 -0
  28. package/dist/lib/components/cache.js +13 -0
  29. package/dist/lib/components/cache.js.map +1 -0
  30. package/dist/lib/components/context/ViewportAnchorContext.js +16 -4
  31. package/dist/lib/components/context/ViewportAnchorContext.js.map +1 -1
  32. package/dist/lib/components/context/ZudokuContext.js +2 -1
  33. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  34. package/dist/lib/components/index.d.ts +9 -2
  35. package/dist/lib/components/index.js +3 -0
  36. package/dist/lib/components/index.js.map +1 -1
  37. package/dist/lib/components/navigation/SidebarCategory.js +3 -3
  38. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  39. package/dist/lib/core/RouteGuard.d.ts +1 -0
  40. package/dist/lib/core/RouteGuard.js +28 -0
  41. package/dist/lib/core/RouteGuard.js.map +1 -0
  42. package/dist/lib/core/ZudokuContext.d.ts +4 -2
  43. package/dist/lib/core/ZudokuContext.js +9 -7
  44. package/dist/lib/core/ZudokuContext.js.map +1 -1
  45. package/dist/lib/oas/graphql/circular.d.ts +3 -0
  46. package/dist/lib/oas/graphql/circular.js +27 -0
  47. package/dist/lib/oas/graphql/circular.js.map +1 -0
  48. package/dist/lib/oas/graphql/index.d.ts +1 -0
  49. package/dist/lib/oas/graphql/index.js +46 -29
  50. package/dist/lib/oas/graphql/index.js.map +1 -1
  51. package/dist/lib/oas/parser/dereference/index.d.ts +0 -1
  52. package/dist/lib/oas/parser/dereference/index.js +1 -1
  53. package/dist/lib/oas/parser/dereference/index.js.map +1 -1
  54. package/dist/lib/plugins/openapi/Endpoint.js +2 -2
  55. package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
  56. package/dist/lib/plugins/openapi/{Route.d.ts → OpenApiRoute.d.ts} +2 -1
  57. package/dist/lib/plugins/openapi/{Route.js → OpenApiRoute.js} +3 -4
  58. package/dist/lib/plugins/openapi/OpenApiRoute.js.map +1 -0
  59. package/dist/lib/plugins/openapi/OperationList.d.ts +4 -1
  60. package/dist/lib/plugins/openapi/OperationList.js +20 -14
  61. package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
  62. package/dist/lib/plugins/openapi/OperationListItem.js +1 -1
  63. package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
  64. package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
  65. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  66. package/dist/lib/plugins/openapi/RequestBodySidecarBox.d.ts +1 -1
  67. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js +2 -0
  68. package/dist/lib/plugins/openapi/RequestBodySidecarBox.js.map +1 -1
  69. package/dist/lib/plugins/openapi/Sidecar.js +3 -3
  70. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  71. package/dist/lib/plugins/openapi/SidecarExamples.js +17 -14
  72. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  73. package/dist/lib/plugins/openapi/graphql/gql.d.ts +6 -2
  74. package/dist/lib/plugins/openapi/graphql/gql.js +3 -2
  75. package/dist/lib/plugins/openapi/graphql/gql.js.map +1 -1
  76. package/dist/lib/plugins/openapi/graphql/graphql.d.ts +47 -26
  77. package/dist/lib/plugins/openapi/graphql/graphql.js +20 -16
  78. package/dist/lib/plugins/openapi/graphql/graphql.js.map +1 -1
  79. package/dist/lib/plugins/openapi/index.js +101 -65
  80. package/dist/lib/plugins/openapi/index.js.map +1 -1
  81. package/dist/lib/plugins/openapi/interfaces.d.ts +8 -2
  82. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js +5 -5
  83. package/dist/lib/plugins/openapi/playground/ExamplesDropdown.js.map +1 -1
  84. package/dist/lib/plugins/openapi/playground/Headers.js +17 -16
  85. package/dist/lib/plugins/openapi/playground/Headers.js.map +1 -1
  86. package/dist/lib/plugins/openapi/playground/ParamsGrid.d.ts +5 -0
  87. package/dist/lib/plugins/openapi/playground/ParamsGrid.js +4 -0
  88. package/dist/lib/plugins/openapi/playground/ParamsGrid.js.map +1 -0
  89. package/dist/lib/plugins/openapi/playground/PathParams.js +4 -12
  90. package/dist/lib/plugins/openapi/playground/PathParams.js.map +1 -1
  91. package/dist/lib/plugins/openapi/playground/Playground.d.ts +13 -0
  92. package/dist/lib/plugins/openapi/playground/Playground.js +19 -31
  93. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  94. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js +1 -1
  95. package/dist/lib/plugins/openapi/playground/PlaygroundDialog.js.map +1 -1
  96. package/dist/lib/plugins/openapi/playground/QueryParams.js +4 -3
  97. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  98. package/dist/lib/plugins/openapi/playground/SubmitButton.d.ts +7 -0
  99. package/dist/lib/plugins/openapi/playground/SubmitButton.js +22 -0
  100. package/dist/lib/plugins/openapi/playground/SubmitButton.js.map +1 -0
  101. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.d.ts +7 -0
  102. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js +11 -0
  103. package/dist/lib/plugins/openapi/playground/result-panel/RequestTab.js.map +1 -0
  104. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.d.ts +8 -0
  105. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js +95 -0
  106. package/dist/lib/plugins/openapi/playground/result-panel/ResponseTab.js.map +1 -0
  107. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.d.ts +7 -0
  108. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js +16 -0
  109. package/dist/lib/plugins/openapi/playground/result-panel/ResultPanel.js.map +1 -0
  110. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.d.ts +10 -0
  111. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.js +32 -0
  112. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.js.map +1 -0
  113. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.d.ts +1 -0
  114. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.js +56 -0
  115. package/dist/lib/plugins/openapi/playground/result-panel/convertToTypes.test.js.map +1 -0
  116. package/dist/lib/plugins/openapi/schema/SchemaComponents.js +1 -1
  117. package/dist/lib/plugins/openapi/schema/SchemaComponents.js.map +1 -1
  118. package/dist/lib/ui/Command.js +1 -1
  119. package/dist/lib/ui/Command.js.map +1 -1
  120. package/dist/lib/ui/Select.js +2 -2
  121. package/dist/lib/ui/Select.js.map +1 -1
  122. package/dist/lib/util/MdxComponents.js +2 -2
  123. package/dist/lib/util/MdxComponents.js.map +1 -1
  124. package/dist/lib/util/joinUrl.js +1 -1
  125. package/dist/lib/util/joinUrl.js.map +1 -1
  126. package/dist/lib/util/joinUrl.test.d.ts +1 -0
  127. package/dist/lib/util/joinUrl.test.js +43 -0
  128. package/dist/lib/util/joinUrl.test.js.map +1 -0
  129. package/dist/lib/util/useScrollToAnchor.d.ts +1 -0
  130. package/dist/lib/util/useScrollToAnchor.js +26 -15
  131. package/dist/lib/util/useScrollToAnchor.js.map +1 -1
  132. package/dist/vite/plugin-api.js +15 -3
  133. package/dist/vite/plugin-api.js.map +1 -1
  134. package/dist/vite/prerender.js +1 -0
  135. package/dist/vite/prerender.js.map +1 -1
  136. package/dist/zuplo/enrich-with-zuplo.js +1 -1
  137. package/dist/zuplo/enrich-with-zuplo.js.map +1 -1
  138. package/dist/zuplo/with-zuplo.d.ts +2 -1
  139. package/dist/zuplo/with-zuplo.js +3 -1
  140. package/dist/zuplo/with-zuplo.js.map +1 -1
  141. package/lib/{AuthenticationPlugin-C9SwOxkc.js → AuthenticationPlugin-Du8cLBSr.js} +3 -3
  142. package/lib/{AuthenticationPlugin-C9SwOxkc.js.map → AuthenticationPlugin-Du8cLBSr.js.map} +1 -1
  143. package/lib/{Markdown-DFN6p0J-.js → Markdown-Cyrx_JrO.js} +1195 -1185
  144. package/lib/{Markdown-DFN6p0J-.js.map → Markdown-Cyrx_JrO.js.map} +1 -1
  145. package/lib/{MdxPage-D9c4z09Q.js → MdxPage-DewragjB.js} +6 -6
  146. package/lib/{MdxPage-D9c4z09Q.js.map → MdxPage-DewragjB.js.map} +1 -1
  147. package/lib/OpenApiRoute-UrC_t0e5.js +36 -0
  148. package/lib/OpenApiRoute-UrC_t0e5.js.map +1 -0
  149. package/lib/{OperationList-DGJWDx1G.js → OperationList-D_ejrepA.js} +1970 -1957
  150. package/lib/OperationList-D_ejrepA.js.map +1 -0
  151. package/lib/{Select-D3O7wISy.js → Select-CnCZ4WhS.js} +61 -61
  152. package/lib/Select-CnCZ4WhS.js.map +1 -0
  153. package/lib/{SlotletProvider-_3zzX_g_.js → SlotletProvider-mQiPDQIH.js} +4 -4
  154. package/lib/{SlotletProvider-_3zzX_g_.js.map → SlotletProvider-mQiPDQIH.js.map} +1 -1
  155. package/lib/{SyntaxHighlight-CJCSPG1F.js → SyntaxHighlight-B0L4SC_N.js} +309 -298
  156. package/lib/SyntaxHighlight-B0L4SC_N.js.map +1 -0
  157. package/lib/{ZudokuContext-DeQZEp-x.js → ZudokuContext-BTUJPpQl.js} +257 -246
  158. package/lib/ZudokuContext-BTUJPpQl.js.map +1 -0
  159. package/lib/{chunk-SYFQ2XB5-BF5IDYrB.js → chunk-SYFQ2XB5-BPvC-soB.js} +5 -5
  160. package/lib/{chunk-SYFQ2XB5-BF5IDYrB.js.map → chunk-SYFQ2XB5-BPvC-soB.js.map} +1 -1
  161. package/lib/circular-Dgpd6AN-.js +15397 -0
  162. package/lib/circular-Dgpd6AN-.js.map +1 -0
  163. package/lib/{createServer-BcaswoFO.js → createServer-BydbkTsd.js} +3487 -5601
  164. package/lib/createServer-BydbkTsd.js.map +1 -0
  165. package/lib/{hook-BRQEDRbn.js → hook-FT3SJLe_.js} +2 -2
  166. package/lib/{hook-BRQEDRbn.js.map → hook-FT3SJLe_.js.map} +1 -1
  167. package/lib/{index-LNp6rxyU.js → index-CjJS0l4l.js} +2 -2
  168. package/lib/{index-LNp6rxyU.js.map → index-CjJS0l4l.js.map} +1 -1
  169. package/lib/index-DGugJOLc.js +1974 -0
  170. package/lib/index-DGugJOLc.js.map +1 -0
  171. package/lib/{joinUrl-BTy9bvoK.js → joinUrl-nLx9pD-Z.js} +2 -2
  172. package/lib/joinUrl-nLx9pD-Z.js.map +1 -0
  173. package/lib/ui/Command.js +27 -27
  174. package/lib/ui/Command.js.map +1 -1
  175. package/lib/ui/Select.js +2 -2
  176. package/lib/ui/Select.js.map +1 -1
  177. package/lib/{useExposedProps-CetwhZpP.js → useExposedProps-BLKFBylA.js} +2 -2
  178. package/lib/{useExposedProps-CetwhZpP.js.map → useExposedProps-BLKFBylA.js.map} +1 -1
  179. package/lib/useScrollToAnchor-eRM9tVvD.js +289 -0
  180. package/lib/useScrollToAnchor-eRM9tVvD.js.map +1 -0
  181. package/lib/zudoku.auth-clerk.js +1 -1
  182. package/lib/zudoku.auth-openid.js +4 -4
  183. package/lib/zudoku.components.js +740 -979
  184. package/lib/zudoku.components.js.map +1 -1
  185. package/lib/zudoku.plugin-api-catalog.js +4 -4
  186. package/lib/zudoku.plugin-api-keys.js +5 -5
  187. package/lib/zudoku.plugin-custom-pages.js +2 -2
  188. package/lib/zudoku.plugin-markdown.js +1 -1
  189. package/lib/zudoku.plugin-openapi.js +6 -5
  190. package/lib/zudoku.plugin-openapi.js.map +1 -1
  191. package/lib/zudoku.plugin-redirect.js +1 -1
  192. package/package.json +2 -2
  193. package/src/app/main.tsx +26 -7
  194. package/src/lib/components/AnchorLink.tsx +5 -2
  195. package/src/lib/components/Header.tsx +1 -1
  196. package/src/lib/components/Markdown.tsx +14 -15
  197. package/src/lib/components/StatusPage.tsx +91 -0
  198. package/src/lib/components/SyntaxHighlight.tsx +14 -0
  199. package/src/lib/components/ThemeSwitch.tsx +14 -15
  200. package/src/lib/components/cache.ts +15 -0
  201. package/src/lib/components/context/ViewportAnchorContext.tsx +20 -6
  202. package/src/lib/components/context/ZudokuContext.ts +3 -1
  203. package/src/lib/components/index.ts +7 -0
  204. package/src/lib/components/navigation/SidebarCategory.tsx +3 -2
  205. package/src/lib/core/RouteGuard.tsx +35 -0
  206. package/src/lib/core/ZudokuContext.ts +9 -8
  207. package/src/lib/oas/graphql/circular.ts +29 -0
  208. package/src/lib/oas/graphql/index.ts +72 -44
  209. package/src/lib/oas/parser/dereference/index.ts +1 -2
  210. package/src/lib/plugins/openapi/Endpoint.tsx +2 -2
  211. package/src/lib/plugins/openapi/{Route.tsx → OpenApiRoute.tsx} +3 -3
  212. package/src/lib/plugins/openapi/OperationList.tsx +34 -12
  213. package/src/lib/plugins/openapi/OperationListItem.tsx +0 -2
  214. package/src/lib/plugins/openapi/ParameterListItem.tsx +1 -0
  215. package/src/lib/plugins/openapi/RequestBodySidecarBox.tsx +2 -0
  216. package/src/lib/plugins/openapi/Sidecar.tsx +4 -3
  217. package/src/lib/plugins/openapi/SidecarExamples.tsx +24 -24
  218. package/src/lib/plugins/openapi/graphql/gql.ts +12 -4
  219. package/src/lib/plugins/openapi/graphql/graphql.ts +66 -43
  220. package/src/lib/plugins/openapi/index.tsx +134 -82
  221. package/src/lib/plugins/openapi/interfaces.ts +11 -2
  222. package/src/lib/plugins/openapi/playground/ExamplesDropdown.tsx +30 -27
  223. package/src/lib/plugins/openapi/playground/Headers.tsx +65 -65
  224. package/src/lib/plugins/openapi/playground/ParamsGrid.tsx +8 -0
  225. package/src/lib/plugins/openapi/playground/PathParams.tsx +34 -74
  226. package/src/lib/plugins/openapi/playground/Playground.tsx +64 -116
  227. package/src/lib/plugins/openapi/playground/PlaygroundDialog.tsx +1 -1
  228. package/src/lib/plugins/openapi/playground/QueryParams.tsx +46 -45
  229. package/src/lib/plugins/openapi/playground/SubmitButton.tsx +75 -0
  230. package/src/lib/plugins/openapi/playground/result-panel/RequestTab.tsx +73 -0
  231. package/src/lib/plugins/openapi/playground/result-panel/ResponseTab.tsx +210 -0
  232. package/src/lib/plugins/openapi/playground/result-panel/ResultPanel.tsx +101 -0
  233. package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.test.ts +64 -0
  234. package/src/lib/plugins/openapi/playground/result-panel/convertToTypes.ts +36 -0
  235. package/src/lib/plugins/openapi/schema/SchemaComponents.tsx +1 -1
  236. package/src/lib/ui/Command.tsx +1 -1
  237. package/src/lib/ui/Select.tsx +1 -1
  238. package/src/lib/util/MdxComponents.tsx +2 -1
  239. package/src/lib/util/joinUrl.test.ts +62 -0
  240. package/src/lib/util/joinUrl.ts +1 -1
  241. package/src/lib/util/useScrollToAnchor.ts +32 -15
  242. package/dist/lib/plugins/openapi/Route.js.map +0 -1
  243. package/dist/lib/plugins/openapi/playground/ResponseTab.d.ts +0 -4
  244. package/dist/lib/plugins/openapi/playground/ResponseTab.js +0 -42
  245. package/dist/lib/plugins/openapi/playground/ResponseTab.js.map +0 -1
  246. package/lib/AnchorLink-bObQitZv.js +0 -34
  247. package/lib/AnchorLink-bObQitZv.js.map +0 -1
  248. package/lib/OperationList-DGJWDx1G.js.map +0 -1
  249. package/lib/Route-VdmEyOD0.js +0 -35
  250. package/lib/Route-VdmEyOD0.js.map +0 -1
  251. package/lib/Select-D3O7wISy.js.map +0 -1
  252. package/lib/StaggeredRender-DgsamH_G.js +0 -17
  253. package/lib/StaggeredRender-DgsamH_G.js.map +0 -1
  254. package/lib/SyntaxHighlight-CJCSPG1F.js.map +0 -1
  255. package/lib/ZudokuContext-DeQZEp-x.js.map +0 -1
  256. package/lib/createServer-BcaswoFO.js.map +0 -1
  257. package/lib/index-Bn6Lc9tq.js +0 -9
  258. package/lib/index-Bn6Lc9tq.js.map +0 -1
  259. package/lib/index-CXRrqOIl.js +0 -1750
  260. package/lib/index-CXRrqOIl.js.map +0 -1
  261. package/lib/index-TaRXY2w1.js +0 -43
  262. package/lib/index-TaRXY2w1.js.map +0 -1
  263. package/lib/joinUrl-BTy9bvoK.js.map +0 -1
  264. package/src/lib/plugins/openapi/playground/ResponseTab.tsx +0 -76
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CXRrqOIl.js","sources":["../src/lib/plugins/openapi/graphql/graphql.ts","../src/lib/plugins/openapi/graphql/gql.ts","../src/lib/plugins/openapi/client/GraphQLClient.tsx","../src/lib/ui/Alert.tsx","../src/lib/ui/Label.tsx","../src/lib/ui/RadioGroup.tsx","../src/lib/ui/Textarea.tsx","../src/lib/util/pastellize.ts","../src/lib/plugins/openapi/ColorizedParam.tsx","../src/lib/plugins/openapi/playground/createUrl.ts","../src/lib/ui/DropdownMenu.tsx","../src/lib/plugins/openapi/playground/ExamplesDropdown.tsx","../src/lib/ui/Card.tsx","../src/lib/ui/Checkbox.tsx","../src/lib/ui/Command.tsx","../src/lib/ui/Popover.tsx","../src/lib/components/Autocomplete.tsx","../src/lib/plugins/openapi/playground/Headers.tsx","../src/lib/plugins/openapi/playground/PathParams.tsx","../src/lib/util/createVariantComponent.tsx","../src/lib/plugins/openapi/playground/InlineInput.tsx","../src/lib/plugins/openapi/playground/QueryParams.tsx","../src/lib/plugins/openapi/SimpleSelect.tsx","../src/lib/plugins/openapi/playground/ResponseTab.tsx","../src/lib/plugins/openapi/playground/Playground.tsx","../src/lib/plugins/openapi/playground/PlaygroundDialog.tsx","../src/lib/plugins/openapi/index.tsx"],"sourcesContent":["/* eslint-disable */\nimport type { DocumentTypeDecoration } from \"@graphql-typed-document-node/core\";\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = {\n [K in keyof T]: T[K];\n};\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & {\n [SubKey in K]?: Maybe<T[SubKey]>;\n};\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & {\n [SubKey in K]: Maybe<T[SubKey]>;\n};\nexport type MakeEmpty<\n T extends { [key: string]: unknown },\n K extends keyof T,\n> = { [_ in K]?: never };\nexport type Incremental<T> =\n | T\n | {\n [P in keyof T]?: P extends \" $fragmentName\" | \"__typename\" ? T[P] : never;\n };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string; output: string };\n String: { input: string; output: string };\n Boolean: { input: boolean; output: boolean };\n Int: { input: number; output: number };\n Float: { input: number; output: number };\n /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSON: { input: any; output: any };\n /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSONObject: { input: any; output: any };\n};\n\nexport type EncodingItem = {\n __typename?: \"EncodingItem\";\n allowReserved?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n contentType?: Maybe<Scalars[\"String\"][\"output\"]>;\n explode?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n headers?: Maybe<Scalars[\"JSONObject\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n style?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type ExampleItem = {\n __typename?: \"ExampleItem\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n externalValue?: Maybe<Scalars[\"String\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n value?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n};\n\nexport type MediaTypeObject = {\n __typename?: \"MediaTypeObject\";\n encoding?: Maybe<Array<EncodingItem>>;\n examples?: Maybe<Array<ExampleItem>>;\n mediaType: Scalars[\"String\"][\"output\"];\n schema?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n};\n\nexport type OperationItem = {\n __typename?: \"OperationItem\";\n contentTypes: Array<Scalars[\"String\"][\"output\"]>;\n deprecated?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n method: Scalars[\"String\"][\"output\"];\n operationId?: Maybe<Scalars[\"String\"][\"output\"]>;\n parameters?: Maybe<Array<ParameterItem>>;\n path: Scalars[\"String\"][\"output\"];\n requestBody?: Maybe<RequestBodyObject>;\n responses: Array<ResponseItem>;\n slug: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n tags?: Maybe<Array<TagItem>>;\n};\n\nexport type ParameterIn = \"cookie\" | \"header\" | \"path\" | \"query\";\n\nexport type ParameterItem = {\n __typename?: \"ParameterItem\";\n allowEmptyValue?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n allowReserved?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n deprecated?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n examples?: Maybe<Array<ExampleItem>>;\n explode?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n in: ParameterIn;\n name: Scalars[\"String\"][\"output\"];\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n schema?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n style?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type PathItem = {\n __typename?: \"PathItem\";\n methods: Array<Scalars[\"String\"][\"output\"]>;\n path: Scalars[\"String\"][\"output\"];\n};\n\nexport type Query = {\n __typename?: \"Query\";\n schema: Schema;\n};\n\nexport type QuerySchemaArgs = {\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n};\n\nexport type RequestBodyObject = {\n __typename?: \"RequestBodyObject\";\n content?: Maybe<Array<MediaTypeObject>>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n required?: Maybe<Scalars[\"Boolean\"][\"output\"]>;\n};\n\nexport type ResponseItem = {\n __typename?: \"ResponseItem\";\n content?: Maybe<Array<MediaTypeObject>>;\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n headers?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n links?: Maybe<Scalars[\"JSON\"][\"output\"]>;\n statusCode: Scalars[\"String\"][\"output\"];\n};\n\nexport type Schema = {\n __typename?: \"Schema\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n openapi: Scalars[\"String\"][\"output\"];\n operations: Array<OperationItem>;\n paths: Array<PathItem>;\n servers: Array<Server>;\n tags: Array<SchemaTag>;\n title: Scalars[\"String\"][\"output\"];\n url: Scalars[\"String\"][\"output\"];\n version: Scalars[\"String\"][\"output\"];\n summary?: Maybe<Scalars[\"String\"][\"output\"]>;\n};\n\nexport type SchemaOperationsArgs = {\n method?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n operationId?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n path?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n tag?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n};\n\nexport type SchemaTagsArgs = {\n name?: InputMaybe<Scalars[\"String\"][\"input\"]>;\n};\n\nexport type SchemaTag = {\n __typename?: \"SchemaTag\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n name?: Maybe<Scalars[\"String\"][\"output\"]>;\n operations: Array<OperationItem>;\n};\n\nexport type SchemaType = \"file\" | \"raw\" | \"url\";\n\nexport type Server = {\n __typename?: \"Server\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n url: Scalars[\"String\"][\"output\"];\n};\n\nexport type TagItem = {\n __typename?: \"TagItem\";\n description?: Maybe<Scalars[\"String\"][\"output\"]>;\n name: Scalars[\"String\"][\"output\"];\n};\n\nexport type ServersQueryQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type ServersQueryQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n };\n};\n\nexport type OperationsFragmentFragment = {\n __typename?: \"OperationItem\";\n slug: string;\n summary?: string | null;\n method: string;\n description?: string | null;\n operationId?: string | null;\n contentTypes: Array<string>;\n path: string;\n parameters?: Array<{\n __typename?: \"ParameterItem\";\n name: string;\n in: ParameterIn;\n description?: string | null;\n required?: boolean | null;\n schema?: any | null;\n style?: string | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n }> | null;\n requestBody?: {\n __typename?: \"RequestBodyObject\";\n description?: string | null;\n required?: boolean | null;\n content?: Array<{\n __typename?: \"MediaTypeObject\";\n mediaType: string;\n schema?: any | null;\n encoding?: Array<{ __typename?: \"EncodingItem\"; name: string }> | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n }> | null;\n } | null;\n responses: Array<{\n __typename?: \"ResponseItem\";\n statusCode: string;\n links?: any | null;\n description?: string | null;\n content?: Array<{\n __typename?: \"MediaTypeObject\";\n mediaType: string;\n schema?: any | null;\n examples?: Array<{\n __typename?: \"ExampleItem\";\n name: string;\n description?: string | null;\n externalValue?: string | null;\n value?: any | null;\n summary?: string | null;\n }> | null;\n encoding?: Array<{ __typename?: \"EncodingItem\"; name: string }> | null;\n }> | null;\n }>;\n} & { \" $fragmentName\"?: \"OperationsFragmentFragment\" };\n\nexport type AllOperationsQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type AllOperationsQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n description?: string | null;\n summary?: string | null;\n title: string;\n url: string;\n version: string;\n tags: Array<{\n __typename?: \"SchemaTag\";\n name?: string | null;\n description?: string | null;\n operations: Array<\n { __typename?: \"OperationItem\"; slug: string } & {\n \" $fragmentRefs\"?: {\n OperationsFragmentFragment: OperationsFragmentFragment;\n };\n }\n >;\n }>;\n };\n};\n\nexport type GetServerQueryQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type GetServerQueryQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n servers: Array<{ __typename?: \"Server\"; url: string }>;\n };\n};\n\nexport type GetCategoriesQueryVariables = Exact<{\n input: Scalars[\"JSON\"][\"input\"];\n type: SchemaType;\n}>;\n\nexport type GetCategoriesQuery = {\n __typename?: \"Query\";\n schema: {\n __typename?: \"Schema\";\n url: string;\n tags: Array<{\n __typename: \"SchemaTag\";\n name?: string | null;\n operations: Array<{\n __typename: \"OperationItem\";\n slug: string;\n deprecated?: boolean | null;\n method: string;\n summary?: string | null;\n operationId?: string | null;\n path: string;\n }>;\n }>;\n };\n};\n\nexport class TypedDocumentString<TResult, TVariables>\n extends String\n implements DocumentTypeDecoration<TResult, TVariables>\n{\n __apiType?: DocumentTypeDecoration<TResult, TVariables>[\"__apiType\"];\n\n constructor(\n private value: string,\n public __meta__?: Record<string, any> | undefined,\n ) {\n super(value);\n }\n\n toString(): string & DocumentTypeDecoration<TResult, TVariables> {\n return this.value;\n }\n}\nexport const OperationsFragmentFragmentDoc = new TypedDocumentString(\n `\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n examples {\n name\n description\n externalValue\n value\n summary\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n examples {\n name\n description\n externalValue\n value\n summary\n }\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n}\n `,\n { fragmentName: \"OperationsFragment\" },\n) as unknown as TypedDocumentString<OperationsFragmentFragment, unknown>;\nexport const ServersQueryDocument = new TypedDocumentString(`\n query ServersQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n}\n `) as unknown as TypedDocumentString<\n ServersQueryQuery,\n ServersQueryQueryVariables\n>;\nexport const AllOperationsDocument = new TypedDocumentString(`\n query AllOperations($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n description\n summary\n title\n url\n version\n tags {\n name\n description\n operations {\n slug\n ...OperationsFragment\n }\n }\n }\n}\n fragment OperationsFragment on OperationItem {\n slug\n summary\n method\n description\n operationId\n contentTypes\n path\n parameters {\n name\n in\n description\n required\n schema\n style\n examples {\n name\n description\n externalValue\n value\n summary\n }\n }\n requestBody {\n content {\n mediaType\n encoding {\n name\n }\n examples {\n name\n description\n externalValue\n value\n summary\n }\n schema\n }\n description\n required\n }\n responses {\n statusCode\n links\n description\n content {\n examples {\n name\n description\n externalValue\n value\n summary\n }\n mediaType\n encoding {\n name\n }\n schema\n }\n }\n}`) as unknown as TypedDocumentString<\n AllOperationsQuery,\n AllOperationsQueryVariables\n>;\nexport const GetServerQueryDocument = new TypedDocumentString(`\n query getServerQuery($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n servers {\n url\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetServerQueryQuery,\n GetServerQueryQueryVariables\n>;\nexport const GetCategoriesDocument = new TypedDocumentString(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n __typename\n name\n operations {\n __typename\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n}\n `) as unknown as TypedDocumentString<\n GetCategoriesQuery,\n GetCategoriesQueryVariables\n>;\n","/* eslint-disable */\nimport * as types from \"./graphql.js\";\n\n/**\n * Map of all GraphQL operations in the project.\n *\n * This map has several performance disadvantages:\n * 1. It is not tree-shakeable, so it will include all operations in the project.\n * 2. It is not minifiable, so the string of a GraphQL query will be multiple times inside the bundle.\n * 3. It does not support dead code elimination, so it will add unused operations.\n *\n * Therefore it is highly recommended to use the babel or swc plugin for production.\n * Learn more about it here: https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size\n */\nconst documents = {\n \"\\n query ServersQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\":\n types.ServersQueryDocument,\n \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n parameters {\\n name\\n in\\n description\\n required\\n schema\\n style\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n }\\n requestBody {\\n content {\\n mediaType\\n encoding {\\n name\\n }\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n schema\\n }\\n description\\n required\\n }\\n responses {\\n statusCode\\n links\\n description\\n content {\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n mediaType\\n encoding {\\n name\\n }\\n schema\\n }\\n }\\n }\\n\":\n types.OperationsFragmentFragmentDoc,\n \"\\n query AllOperations($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n description\\n summary\\n title\\n url\\n version\\n tags {\\n name\\n description\\n operations {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n }\\n\":\n types.AllOperationsDocument,\n \"\\n query getServerQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\":\n types.GetServerQueryDocument,\n \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n __typename\\n name\\n operations {\\n __typename\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n }\\n\":\n types.GetCategoriesDocument,\n};\n\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query ServersQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").ServersQueryDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n fragment OperationsFragment on OperationItem {\\n slug\\n summary\\n method\\n description\\n operationId\\n contentTypes\\n path\\n parameters {\\n name\\n in\\n description\\n required\\n schema\\n style\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n }\\n requestBody {\\n content {\\n mediaType\\n encoding {\\n name\\n }\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n schema\\n }\\n description\\n required\\n }\\n responses {\\n statusCode\\n links\\n description\\n content {\\n examples {\\n name\\n description\\n externalValue\\n value\\n summary\\n }\\n mediaType\\n encoding {\\n name\\n }\\n schema\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").OperationsFragmentFragmentDoc;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query AllOperations($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n description\\n summary\\n title\\n url\\n version\\n tags {\\n name\\n description\\n operations {\\n slug\\n ...OperationsFragment\\n }\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").AllOperationsDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query getServerQuery($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n servers {\\n url\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetServerQueryDocument;\n/**\n * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.\n */\nexport function graphql(\n source: \"\\n query GetCategories($input: JSON!, $type: SchemaType!) {\\n schema(input: $input, type: $type) {\\n url\\n tags {\\n __typename\\n name\\n operations {\\n __typename\\n slug\\n deprecated\\n method\\n summary\\n operationId\\n path\\n }\\n }\\n }\\n }\\n\",\n): typeof import(\"./graphql.js\").GetCategoriesDocument;\n\nexport function graphql(source: string) {\n return (documents as any)[source] ?? {};\n}\n","import type { GraphQLError } from \"graphql/error/index.js\";\nimport { ZudokuError } from \"../../../util/invariant.js\";\nimport type { TypedDocumentString } from \"../graphql/graphql.js\";\nimport type { OpenApiPluginOptions } from \"../index.js\";\nimport type { LocalServer } from \"./createServer.js\";\n\nlet localServerPromise: Promise<LocalServer> | undefined;\n\ntype GraphQLResponse<TResult> = {\n errors?: GraphQLError[];\n data: TResult;\n};\n\nconst throwIfError = (response: GraphQLResponse<unknown>) => {\n if (!response.errors?.[0]) return;\n\n throw new ZudokuError(response.errors[0].message, {\n developerHint:\n \"Check your configuration value `apis.type` and `apis.input` in the Zudoku config.\",\n });\n};\n\nexport class GraphQLClient {\n constructor(private readonly config: OpenApiPluginOptions) {}\n\n #getLocalServer = async () => {\n if (!localServerPromise) {\n localServerPromise = import(\"./createServer.js\").then((m) =>\n m.createServer(this.config),\n );\n }\n return localServerPromise;\n };\n\n #executeFetch = async (init: RequestInit): Promise<Response> => {\n if (this.config.server) {\n return fetch(this.config.server, init);\n }\n\n const localServer = await this.#getLocalServer();\n return localServer.fetch(\"http://localhost/graphql\", init);\n };\n\n fetch = async <TResult, TVariables>(\n query: TypedDocumentString<TResult, TVariables>,\n ...[variables]: TVariables extends Record<string, never> ? [] : [TVariables]\n ): Promise<TResult> => {\n const operationName = query.match(/query (\\w+)/)?.[1];\n\n const response = await this.#executeFetch({\n method: \"POST\",\n body: JSON.stringify({ query, variables, operationName }),\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n const result = (await response.json()) as GraphQLResponse<TResult>;\n throwIfError(result);\n\n return result.data;\n };\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertDescription, AlertTitle };\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport { Circle } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n );\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n","import * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nexport type TextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","const c2n = (c: string) =>\n Math.abs(\n isNaN(parseInt(c))\n ? c.toLowerCase().charCodeAt(0) - 96\n : isNaN(parseInt(c))\n ? 0\n : parseInt(c),\n );\nconst s2n = (s: string) =>\n s.length > 1\n ? parseInt(s.split(\"\").reduce((a, c) => `${c2n(a) + c2n(c)}`))\n : c2n(s);\n\nexport const pastellize = (\n s: string,\n options: {\n saturation?: number;\n lightness?: number;\n } = {},\n) => {\n const hue = (3 * s2n(s) + 2 * s2n(s) + s2n(s)) % 360;\n const { saturation = 75, lightness = 60 } = options;\n\n return `${hue}deg ${saturation}% ${lightness}%`;\n};\n","import { useTheme } from \"next-themes\";\nimport { useEffect, useRef, type CSSProperties, type ReactNode } from \"react\";\nimport { cn } from \"../../util/cn.js\";\nimport { pastellize } from \"../../util/pastellize.js\";\n\nexport const DATA_ATTR = \"data-linked-param\";\n\nexport const usePastellizedColor = (name: string) => {\n const { resolvedTheme } = useTheme();\n\n return {\n text: pastellize(\n name,\n resolvedTheme === \"light\" ? { saturation: 95, lightness: 38 } : {},\n ),\n background: pastellize(\n name,\n resolvedTheme === \"light\" ? { saturation: 85, lightness: 40 } : {},\n ),\n };\n};\n\nexport const useParamColor = (name: string) => {\n const normalized = name.replace(/[{}]/g, \"\");\n return usePastellizedColor(normalized);\n};\n\nexport const ColorizedParam = ({\n name,\n className,\n slug,\n title,\n children,\n onClick,\n}: {\n name: string;\n className?: string;\n backgroundOpacity?: string;\n borderOpacity?: string;\n slug?: string;\n children?: ReactNode;\n title?: string;\n onClick?: () => void;\n}) => {\n const ref = useRef<HTMLSpanElement>(null);\n const normalizedSlug = slug?.replace(/[{}]/g, \"\");\n const normalized = name.replace(/[{}]/g, \"\");\n const { text, background } = usePastellizedColor(normalized);\n\n const textColor = `hsl(${text} / 100%)`;\n const backgroundColor = `hsl(${background} / 10%)`;\n const borderColor = `hsl(${background} / 50%)`;\n\n useEffect(() => {\n if (!normalizedSlug) return;\n if (!ref.current) return;\n\n const onMouseEnter = () => {\n document\n .querySelectorAll(`[${DATA_ATTR}=\"${normalizedSlug}\"]`)\n .forEach((el) => {\n if (el instanceof HTMLElement) {\n el.dataset.active = \"true\";\n }\n });\n };\n const onMouseLeave = () => {\n document\n .querySelectorAll(`[${DATA_ATTR}=\"${normalizedSlug}\"]`)\n .forEach((el) => {\n if (el instanceof HTMLElement) {\n el.dataset.active = \"false\";\n }\n });\n };\n\n const el = ref.current;\n\n el.addEventListener(\"mouseenter\", onMouseEnter);\n el.addEventListener(\"mouseleave\", onMouseLeave);\n\n return () => {\n el.removeEventListener(\"mouseenter\", onMouseEnter);\n el.removeEventListener(\"mouseleave\", onMouseLeave);\n };\n }, [normalizedSlug]);\n\n return (\n <span\n {...{ [DATA_ATTR]: normalizedSlug }}\n className={cn(\n \"relative inline-block rounded transition-all duration-100\",\n \"rounded-lg\",\n \"border border-[--border-color] p-0.5 text-[--param-color] bg-[--background-color]\",\n \"data-[active=true]:border-[--param-color] data-[active=true]:shadow data-[active=true]:-translate-y-px\",\n className,\n )}\n title={title}\n suppressHydrationWarning\n ref={ref}\n onClick={onClick}\n style={\n {\n \"--param-color\": textColor,\n \"--border-color\": borderColor,\n \"--background-color\": backgroundColor,\n } as CSSProperties\n }\n >\n {children ?? name}\n </span>\n );\n};\n","import type { PlaygroundForm } from \"./Playground.js\";\n\nexport const createUrl = (host: string, path: string, data: PlaygroundForm) => {\n const filledPath = path.replace(/(:\\w+|\\{\\w+})/g, (match) => {\n const key = match.replace(/[:{}]/g, \"\");\n const value = data.pathParams.find((part) => part.name === key)?.value;\n\n return value ?? match;\n });\n\n // Ensure host ends with a slash and path doesn't start with one,\n // so they form a correct URL, without overriding the host's path.\n const url = new URL(\n filledPath.replace(/^\\//, \"\"),\n host.endsWith(\"/\") ? host : `${host}/`,\n );\n\n data.queryParams\n .filter((param) => param.active)\n .forEach((param) => {\n url.searchParams.set(param.name, param.value);\n });\n\n return url;\n};\n","import * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\n\nimport { CheckIcon, ChevronRightIcon, DotIcon } from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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 className,\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"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 className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors 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 <DropdownMenuPrimitive.ItemIndicator>\n <DotIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className,\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import { Button } from \"zudoku/ui/Button.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"zudoku/ui/DropdownMenu.js\";\nimport { Content, Example } from \"../SidecarExamples.js\";\n\nconst ExamplesDropdown = ({\n examples,\n onSelect,\n}: {\n examples: Content;\n onSelect: (example: Example) => void;\n}) => {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">Use Example</Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\">\n {examples.map((example) => {\n return (\n <div key={example.mediaType}>\n <DropdownMenuLabel>{example.mediaType}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n <DropdownMenuGroup>\n {example.examples?.map((example) => {\n return (\n <DropdownMenuItem\n key={example.name}\n onSelect={() => onSelect(example)}\n >\n {example.name}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuGroup>\n </div>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n\nexport default ExamplesDropdown;\n","import * as React from \"react\";\nimport { cn } from \"../util/cn.js\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n};\n","import * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Check } from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst checkboxVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:text-primary\",\n {\n variants: {\n variant: {\n default: \"border border-primary data-[state=checked]:bg-primary\",\n outline: \"border border-input data-[state=checked]:bg-accent\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ninterface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>,\n VariantProps<typeof checkboxVariants> {}\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, variant, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(checkboxVariants({ variant, className }))}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox, type CheckboxProps };\n","import { type DialogProps } from \"@radix-ui/react-dialog\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { Search } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Dialog, DialogContent } from \"zudoku/ui/Dialog.js\";\nimport { cn } from \"../util/cn.js\";\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n // eslint-disable-next-line react/no-unknown-property\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandInlineInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n // eslint-disable-next-line react/no-unknown-property\n <div className=\"flex items-center\" cmdk-input-wrapper=\"\">\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\",\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInlineInput.displayName = CommandPrimitive.Input.displayName;\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n));\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className,\n )}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = \"CommandShortcut\";\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInlineInput,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n};\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"../util/cn.js\";\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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 className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverContent, PopoverTrigger };\n","import { PopoverAnchor } from \"@radix-ui/react-popover\";\nimport { useCommandState } from \"cmdk\";\nimport { useRef, useState, type Ref } from \"react\";\nimport {\n Command,\n CommandInlineInput,\n CommandItem,\n CommandList,\n} from \"zudoku/ui/Command.js\";\nimport { Popover, PopoverContent } from \"zudoku/ui/Popover.js\";\nimport { cn } from \"../util/cn.js\";\n\ntype AutocompleteProps = {\n value: string;\n options: readonly string[];\n onChange: (e: string) => void;\n className?: string;\n placeholder?: string;\n onEnterPress?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n ref?: Ref<HTMLInputElement>;\n};\n\nconst AutocompletePopover = ({\n value,\n options,\n onChange,\n className,\n placeholder = \"Enter value\",\n onEnterPress,\n ref,\n}: AutocompleteProps) => {\n const [open, setOpen] = useState(false);\n const [dontClose, setDontClose] = useState(false);\n const count = useCommandState((state) => state.filtered.count);\n const inputRef = useRef<HTMLInputElement>(null);\n return (\n <Popover open={open}>\n <PopoverAnchor>\n <CommandInlineInput\n ref={(el) => {\n inputRef.current = el;\n if (typeof ref === \"function\") {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }}\n value={value}\n placeholder={placeholder}\n className={cn(\"h-9 bg-transparent\", className)}\n onFocus={() => setOpen(true)}\n onBlur={() => {\n if (dontClose) {\n return;\n }\n setOpen(false);\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n setOpen(false);\n inputRef.current?.blur();\n onEnterPress?.(e);\n }\n }}\n onValueChange={(e) => onChange(e)}\n />\n </PopoverAnchor>\n <PopoverContent\n onMouseEnter={() => setDontClose(true)}\n onMouseLeave={() => setDontClose(false)}\n onOpenAutoFocus={(e) => e.preventDefault()}\n className={cn(\"p-0 w-[--radix-popover-trigger-width]\", {\n \"border-0\": count === 0,\n })}\n align=\"start\"\n side=\"bottom\"\n onWheel={(e) => {\n // See: https://github.com/radix-ui/primitives/issues/1159\n e.stopPropagation();\n }}\n onTouchMove={(e) => {\n e.stopPropagation();\n }}\n >\n <CommandList className=\"max-h-[140px]\">\n {options.map((enumValue) => (\n <CommandItem\n key={enumValue}\n value={enumValue}\n onSelect={(selected) => {\n onChange(selected);\n setOpen(false);\n }}\n className=\"cursor-pointer\"\n >\n {enumValue}\n </CommandItem>\n ))}\n </CommandList>\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const Autocomplete = (props: AutocompleteProps) => {\n return (\n <Command className=\"bg-transparent\">\n <AutocompletePopover {...props} />\n </Command>\n );\n};\n","import { XIcon } from \"lucide-react\";\nimport { useRef } from \"react\";\nimport {\n Control,\n Controller,\n useFieldArray,\n useFormContext,\n UseFormRegister,\n} from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Checkbox } from \"zudoku/ui/Checkbox.js\";\nimport { Autocomplete } from \"../../../components/Autocomplete.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { type PlaygroundForm } from \"./Playground.js\";\n\nconst headerOptions = Object.freeze([\n \"Accept\",\n \"Accept-Encoding\",\n \"Accept-Language\",\n \"Authorization\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Disposition\",\n \"Content-Encoding\",\n \"Content-Language\",\n \"Content-Length\",\n \"Content-Range\",\n \"Content-Security-Policy\",\n \"Content-Type\",\n \"Cookie\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"Host\",\n \"If-Modified-Since\",\n \"Location\",\n \"Origin\",\n \"Pragma\",\n \"Referer\",\n \"Set-Cookie\",\n \"User-Agent\",\n \"X-Requested-With\",\n]);\n\nexport const Headers = ({\n control,\n register,\n}: {\n register: UseFormRegister<PlaygroundForm>;\n control: Control<PlaygroundForm>;\n}) => {\n const { fields, append, remove } = useFieldArray<PlaygroundForm>({\n control,\n name: \"headers\",\n });\n const { setValue } = useFormContext<PlaygroundForm>();\n const valueRefs = useRef<Array<HTMLInputElement | null>>([]);\n const nameRefs = useRef<Array<HTMLInputElement | null>>([]);\n\n const addNewHeader = () => {\n append({\n name: \"\",\n value: \"\",\n active: false,\n } as PlaygroundForm[\"headers\"][number]);\n };\n\n const handleHeaderEnter = (index: number) => {\n valueRefs.current[index]?.focus();\n };\n\n const handleValueEnter = (index: number) => {\n addNewHeader();\n requestAnimationFrame(() => nameRefs.current[index + 1]?.focus());\n };\n\n return (\n <div className=\"flex flex-col gap-2\">\n <Card className=\"flex flex-col gap-2 overflow-hidden\">\n <table className=\"w-full\">\n <tbody>\n {fields.map((header, i) => (\n <tr\n key={header.id}\n className=\"group has-[:focus]:bg-muted/50 hover:bg-muted/50\"\n >\n <td className=\"flex gap-2 items-center pl-3\">\n <Controller\n control={control}\n name={`headers.${i}.active`}\n render={({ field }) => (\n <Checkbox\n variant=\"outline\"\n id={`headers.${i}.active`}\n checked={field.value}\n onCheckedChange={(checked) => {\n field.onChange(checked);\n }}\n />\n )}\n />\n <Controller\n control={control}\n name={`headers.${i}.name`}\n render={({ field }) => (\n <Autocomplete\n {...field}\n placeholder=\"Name\"\n className=\"border-0 shadow-none bg-transparent text-xs font-mono\"\n options={headerOptions}\n onEnterPress={() => handleHeaderEnter(i)}\n onChange={(e) => {\n field.onChange(e);\n setValue(`headers.${i}.active`, true);\n }}\n ref={(el) => {\n nameRefs.current[i] = el;\n }}\n />\n )}\n />\n </td>\n <td>\n <div className=\"flex items-center gap-2\">\n <Input\n placeholder=\"Value\"\n className=\"w-full border-0 shadow-none text-xs font-mono\"\n {...register(`headers.${i}.value`)}\n ref={(el) => {\n valueRefs.current[i] = el;\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && e.currentTarget.value.trim()) {\n handleValueEnter(i);\n }\n }}\n autoComplete=\"off\"\n />\n <Button\n size=\"icon\"\n variant=\"ghost\"\n className=\"text-muted-foreground opacity-0 group-hover:opacity-100\"\n onClick={() => {\n remove(i);\n }}\n type=\"button\"\n >\n <XIcon size={16} />\n </Button>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </Card>\n <div className=\"text-end\">\n <Button\n className=\"\"\n onClick={addNewHeader}\n type=\"button\"\n variant=\"secondary\"\n >\n Add header\n </Button>\n </div>\n </div>\n );\n};\n","import { EraserIcon } from \"lucide-react\";\nimport { Control, Controller, useFieldArray } from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { ColorizedParam, useParamColor } from \"../ColorizedParam.js\";\nimport type { PlaygroundForm } from \"./Playground.js\";\n\nconst PathParamLabel = ({ name }: { name: string }) => {\n const color = useParamColor(name);\n\n return (\n <div className=\"flex items-center\">\n <div\n className=\"w-2 h-2 rounded-full\"\n style={{ backgroundColor: `hsl(${color})` }}\n />\n\n <ColorizedParam\n slug={name}\n name={name}\n className=\"font-mono text-xs m-2 px-1\"\n />\n </div>\n );\n};\n\nexport const PathParams = ({\n control,\n}: {\n control: Control<PlaygroundForm>;\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"pathParams\",\n });\n\n return (\n <Card className=\"rounded-lg\">\n <table className=\"w-full\">\n <tbody>\n {fields.map((part, i) => (\n <tr key={part.id} className=\"hover:bg-accent/40\">\n <td className=\"w-5/12\">\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={() => <PathParamLabel name={part.name} />}\n />\n </td>\n <td className=\"w-7/12\">\n <div className=\"flex justify-between items-center\">\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={({ field }) => (\n <Input\n {...field}\n required\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none text-xs font-mono hover:bg-accent\"\n />\n )}\n />\n <Controller\n control={control}\n name={`pathParams.${i}.value`}\n render={({ field }) => (\n <Button\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n aria-label=\"Clear value\"\n className={cn(\n \"ms-2 mr-1\",\n field.value.length === 0\n ? \"opacity-0 pointer-events-none\"\n : \"opacity-100\",\n )}\n title=\"Clear value\"\n onClick={() => field.onChange(\"\")}\n >\n <EraserIcon size={16} />\n </Button>\n )}\n />\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </Card>\n );\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport type { ClassValue } from \"clsx\";\nimport * as React from \"react\";\nimport { type HTMLElementType, type JSX } from \"react\";\nimport { cn } from \"./cn.js\";\n\nconst createVariantComponent = <\n E extends HTMLElementType,\n C extends ReturnType<typeof cva>,\n>(\n tag: E,\n cvx: ClassValue | C,\n // variantProps: Array<keyof VariantProps<C>> = [],\n) => {\n const MyVariant = React.forwardRef<\n HTMLElement,\n JSX.IntrinsicElements[E] & { className?: ClassValue; asChild?: boolean }\n >(({ className, asChild, ...props }, ref) => {\n const Comp = asChild ? Slot : tag;\n\n return React.createElement(Comp, {\n ...props,\n ref,\n className:\n typeof cvx === \"function\" ? cvx({ className }) : cn(cvx, className),\n });\n });\n\n MyVariant.displayName = `VariantComponent(${tag})`;\n\n return MyVariant;\n};\n\nexport default createVariantComponent;\n","import createVariantComponent from \"../../../util/createVariantComponent.js\";\n\nexport const InlineInput = createVariantComponent(\n \"input\",\n \"px-2 bg-transparent h-6 font-mono text-xs m-2\",\n);\n","import {\n Control,\n Controller,\n useFieldArray,\n useFormContext,\n} from \"react-hook-form\";\nimport { Card } from \"zudoku/ui/Card.js\";\nimport { Checkbox } from \"zudoku/ui/Checkbox.js\";\nimport { Autocomplete } from \"../../../components/Autocomplete.js\";\nimport { Input } from \"../../../ui/Input.js\";\nimport { InlineInput } from \"./InlineInput.js\";\nimport { type PlaygroundForm, type QueryParam } from \"./Playground.js\";\n\nexport const QueryParams = ({\n control,\n queryParams,\n}: {\n control: Control<PlaygroundForm>;\n queryParams: QueryParam[];\n}) => {\n const { fields } = useFieldArray<PlaygroundForm>({\n control,\n name: \"queryParams\",\n });\n const form = useFormContext<PlaygroundForm>();\n\n const requiredFields = queryParams.map((param) => Boolean(param.isRequired));\n\n return (\n <Card className=\"rounded-lg\">\n <div className=\"w-full \">\n {fields.map((field, i) => {\n const currentParam = queryParams.find(\n (param) => param.name === field.name,\n );\n return (\n <div\n key={field.id}\n className=\"hover:bg-accent/40 grid grid-cols-[min-content_1fr_1fr] gap-2 items-center px-3\"\n >\n <Controller\n control={control}\n name={`queryParams.${i}.active`}\n render={({ field }) => (\n <Checkbox\n variant=\"outline\"\n id={`queryParams.${i}.active`}\n className=\"mr-2\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n )}\n />\n <Controller\n control={control}\n render={({ field }) =>\n !requiredFields[i] ? (\n <Autocomplete\n value={field.value}\n options={queryParams.map((param) => param.name)}\n onChange={(e) => {\n field.onChange(e);\n }}\n className=\"border-0 font-mono text-xs bg-transparent hover:bg-transparent\"\n />\n ) : (\n <InlineInput asChild>\n <label\n className=\"flex items-center cursor-pointer gap-1\"\n htmlFor={`queryParams.${i}.active`}\n title={requiredFields[i] ? \"Required field\" : undefined}\n >\n {field.value}\n {requiredFields[i] && <sup>&nbsp;*</sup>}\n </label>\n </InlineInput>\n )\n }\n name={`queryParams.${i}.name`}\n />\n\n <div className=\"flex justify-between items-center\">\n <Controller\n control={control}\n render={({ field }) => {\n const hasEnum =\n currentParam?.enum && currentParam.enum.length > 0;\n\n if (!hasEnum) {\n return (\n <Input\n {...field}\n onChange={(e) => {\n field.onChange(e.target.value);\n if (e.target.value.length > 0) {\n form.setValue(`queryParams.${i}.active`, true);\n }\n }}\n placeholder=\"Enter value\"\n className=\"w-full border-0 shadow-none text-xs font-mono\"\n />\n );\n }\n\n return (\n <Autocomplete\n value={field.value}\n options={currentParam.enum ?? []}\n onChange={(e) => {\n field.onChange(e);\n form.setValue(`queryParams.${i}.active`, true);\n }}\n className=\"font-mono text-xs border-0 ring-1 ring-ring\"\n />\n );\n }}\n name={`queryParams.${i}.value`}\n />\n </div>\n </div>\n );\n })}\n </div>\n </Card>\n );\n};\n","import { ChevronsUpDownIcon } from \"lucide-react\";\nimport type { ChangeEventHandler } from \"react\";\nimport { cn } from \"../../util/cn.js\";\n\nexport const SimpleSelect = ({\n value,\n onChange,\n className,\n options,\n showChevrons = true,\n}: {\n value: string;\n onChange: ChangeEventHandler<HTMLSelectElement>;\n className?: string;\n options: {\n value: string;\n label: string;\n }[];\n showChevrons?: boolean;\n}) => (\n <div className=\"grid\">\n <select\n className={cn(\n \"row-start-1 col-start-1 border border-input text-foreground px-2 py-1 pe-6\",\n \"rounded-md appearance-none bg-zinc-50 hover:bg-white dark:bg-zinc-800 hover:dark:bg-zinc-800/75\",\n className,\n )}\n value={value}\n onChange={onChange}\n >\n {options.map((option) => (\n <option value={option.value} key={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n <div\n className={cn(\n !showChevrons && \"hidden\",\n \"row-start-1 col-start-1 self-center justify-self-end relative end-2 pointer-events-none\",\n )}\n >\n <ChevronsUpDownIcon size={14} />\n </div>\n </div>\n);\n","import { useState } from \"react\";\nimport { SyntaxHighlight } from \"../../../components/SyntaxHighlight.js\";\nimport { Card } from \"../../../ui/Card.js\";\nimport { SimpleSelect } from \"../SimpleSelect.js\";\n\nconst mimeTypeToLanguage = (mimeType: string) => {\n const mimeTypeMapping = {\n \"application/json\": \"json\",\n \"text/json\": \"json\",\n \"text/html\": \"html\",\n \"text/css\": \"css\",\n \"text/javascript\": \"javascript\",\n \"application/xml\": \"xml\",\n \"application/xhtml+xml\": \"xhtml\",\n };\n\n return Object.entries(mimeTypeMapping).find(([mime]) =>\n mimeType.includes(mime),\n )?.[1];\n};\n\nconst detectLanguage = (headers: Headers) => {\n const contentType = headers.get(\"Content-Type\") || \"\";\n return mimeTypeToLanguage(contentType);\n};\n\nconst tryParseJson = (body: string) => {\n try {\n return JSON.stringify(JSON.parse(body), null, 2);\n } catch {\n return null;\n }\n};\n\nexport const ResponseTab = ({\n body = \"\",\n headers,\n}: {\n body?: string;\n headers: Headers;\n}) => {\n const detectedLanguage = detectLanguage(headers);\n const jsonContent = tryParseJson(body);\n const beautifiedBody = jsonContent || body;\n const [view, setView] = useState<\"formatted\" | \"raw\">(\n jsonContent ? \"formatted\" : \"raw\",\n );\n\n return (\n <div className=\"flex flex-col gap-2\">\n <Card className=\"shadow-none\">\n <SyntaxHighlight\n language={\n view === \"raw\" ? (jsonContent ? \"plain\" : detectedLanguage) : \"json\"\n }\n noBackground\n // playground dialog has h-5/6 ≈ 83.333vh\n className=\"overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]\"\n code={view === \"raw\" ? body : beautifiedBody}\n />\n </Card>\n {jsonContent && (\n <div className=\"flex justify-end\">\n <SimpleSelect\n value={view}\n onChange={(e) => setView(e.target.value as \"formatted\" | \"raw\")}\n options={[\n { value: \"formatted\", label: \"Formatted\" },\n { value: \"raw\", label: \"Raw\" },\n ]}\n />\n </div>\n )}\n </div>\n );\n};\n","import { useMutation } from \"@tanstack/react-query\";\nimport { InfoIcon } from \"lucide-react\";\nimport { Fragment, useEffect, useRef, useTransition } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { Alert, AlertDescription, AlertTitle } from \"zudoku/ui/Alert.js\";\nimport { Label } from \"zudoku/ui/Label.js\";\nimport { RadioGroup, RadioGroupItem } from \"zudoku/ui/RadioGroup.js\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"zudoku/ui/Select.js\";\nimport { Textarea } from \"zudoku/ui/Textarea.js\";\nimport { useSelectedServerStore } from \"../../../authentication/state.js\";\nimport { useApiIdentities } from \"../../../components/context/ZudokuContext.js\";\nimport { Spinner } from \"../../../components/Spinner.js\";\nimport { Button } from \"../../../ui/Button.js\";\nimport { Callout } from \"../../../ui/Callout.js\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"../../../ui/Card.js\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"../../../ui/Tabs.js\";\nimport { cn } from \"../../../util/cn.js\";\nimport { ColorizedParam } from \"../ColorizedParam.js\";\nimport { Content } from \"../SidecarExamples.js\";\nimport { createUrl } from \"./createUrl.js\";\nimport ExamplesDropdown from \"./ExamplesDropdown.js\";\nimport { Headers } from \"./Headers.js\";\nimport { PathParams } from \"./PathParams.js\";\nimport { QueryParams } from \"./QueryParams.js\";\nimport { ResponseTab } from \"./ResponseTab.js\";\n\nexport const NO_IDENTITY = \"__none\";\n\nconst statusCodeMap: Record<number, string> = {\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 204: \"No Content\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 500: \"Internal Server Error\",\n};\n\nexport type Header = {\n name: string;\n defaultValue?: string;\n defaultActive?: boolean;\n};\nexport type QueryParam = {\n name: string;\n defaultValue?: string;\n defaultActive?: boolean;\n isRequired?: boolean;\n enum?: string[];\n type?: string;\n};\nexport type PathParam = {\n name: string;\n defaultValue?: string;\n isRequired?: boolean;\n};\n\nexport type PlaygroundForm = {\n body: string;\n queryParams: Array<{\n name: string;\n value: string;\n active: boolean;\n enum?: string[];\n }>;\n pathParams: Array<{ name: string; value: string }>;\n headers: Array<{\n name: string;\n value: string;\n active: boolean;\n }>;\n identity?: string;\n};\n\nexport type PlaygroundContentProps = {\n server: string;\n servers?: string[];\n url: string;\n method: string;\n headers?: Header[];\n queryParams?: QueryParam[];\n pathParams?: PathParam[];\n defaultBody?: string;\n examples?: Content;\n};\n\nexport const Playground = ({\n server,\n servers,\n url,\n method,\n headers = [],\n queryParams = [],\n pathParams = [],\n defaultBody = \"\",\n examples,\n}: PlaygroundContentProps) => {\n const { selectedServer, setSelectedServer } = useSelectedServerStore();\n const [, startTransition] = useTransition();\n const { register, control, handleSubmit, watch, setValue, ...form } =\n useForm<PlaygroundForm>({\n defaultValues: {\n body: defaultBody,\n queryParams: queryParams\n .map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n active: param.defaultActive ?? false,\n enum: param.enum ?? [],\n }))\n .concat([\n {\n name: \"\",\n value: \"\",\n active: false,\n enum: [],\n },\n ]),\n pathParams: pathParams.map((param) => ({\n name: param.name,\n value: param.defaultValue ?? \"\",\n })),\n headers: headers\n .map((header) => ({\n name: header.name,\n value: header.defaultValue ?? \"\",\n active: header.defaultActive ?? false,\n }))\n .concat([\n {\n name: \"\",\n value: \"\",\n active: false,\n },\n ]),\n identity: NO_IDENTITY,\n },\n });\n const formState = watch();\n const identities = useApiIdentities();\n\n const setOnce = useRef(false);\n useEffect(() => {\n if (setOnce.current) return;\n const firstIdentity = identities.data?.at(0);\n if (firstIdentity) {\n setValue(\"identity\", firstIdentity.id);\n setOnce.current = true;\n }\n }, [setValue, identities.data]);\n\n const queryMutation = useMutation({\n mutationFn: async (data: PlaygroundForm) => {\n const requestUrl = createUrl(selectedServer ?? server, url, data);\n const start = performance.now();\n\n const request = new Request(requestUrl, {\n method: method.toUpperCase(),\n headers: Object.fromEntries(\n data.headers\n .filter((h) => h.name && h.active)\n .map((header) => [header.name, header.value]),\n ),\n body: data.body ? data.body : undefined,\n });\n\n if (data.identity !== NO_IDENTITY) {\n identities.data\n ?.find((i) => i.id === data.identity)\n ?.authorizeRequest(request);\n }\n try {\n const response = await fetch(request, {\n signal: AbortSignal.timeout(5000),\n });\n\n const time = performance.now() - start;\n\n const body = await response.text();\n\n return {\n status: response.status,\n headers: response.headers,\n size: body.length,\n body,\n time,\n };\n } catch (error) {\n if (error instanceof TypeError) {\n throw new Error(\n \"The request failed, possibly due to network issues or CORS policy.\",\n );\n } else {\n throw error;\n }\n }\n },\n });\n\n const path = url.split(\"/\").map((part, i, arr) => {\n const isPathParam =\n (part.startsWith(\"{\") && part.endsWith(\"}\")) || part.startsWith(\":\");\n const replaced = part.replace(/[:{}]/g, \"\");\n const value = formState.pathParams.find((p) => p.name === replaced)?.value;\n\n const pathParamValue = (\n <ColorizedParam\n backgroundOpacity=\"25%\"\n name={part}\n slug={part}\n title={\n !value\n ? `Missing value for path parameter \\`${replaced}\\``\n : undefined\n }\n >\n {value ? encodeURIComponent(value) : part}\n </ColorizedParam>\n );\n\n return (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={part + i}>\n {isPathParam ? pathParamValue : part}\n {i < arr.length - 1 && \"/\"}\n <wbr />\n </Fragment>\n );\n });\n\n const headerEntries = Array.from(queryMutation.data?.headers.entries() ?? []);\n\n const urlQueryParams = formState.queryParams\n .filter((p) => p.active)\n .map((p, i, arr) => (\n <Fragment key={p.name}>\n {p.name}={encodeURIComponent(p.value).replaceAll(\"%20\", \"+\")}\n {i < arr.length - 1 && \"&\"}\n <wbr />\n </Fragment>\n ));\n\n const serverSelect = (\n <div className=\"inline-block opacity-50 hover:opacity-100 transition\">\n {servers && servers.length > 1 ? (\n <Select\n onValueChange={(value) => {\n startTransition(() => {\n setSelectedServer(value);\n });\n }}\n value={selectedServer}\n defaultValue={selectedServer}\n >\n <SelectTrigger className=\"p-0 border-none flex-row-reverse bg-transparent text-xs gap-0.5 h-auto\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {servers.map((s) => (\n <SelectItem key={s} value={s}>\n {s.replace(/^https?:\\/\\//, \"\")}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <span>{server.replace(/^https?:\\/\\//, \"\")}</span>\n )}\n </div>\n );\n\n return (\n <FormProvider\n {...{ register, control, handleSubmit, watch, setValue, ...form }}\n >\n <form onSubmit={handleSubmit((data) => queryMutation.mutateAsync(data))}>\n <div className=\"grid grid-cols-[8fr_7fr] text-sm h-full\">\n <div className=\"flex flex-col gap-4 p-4 after:bg-muted-foreground/20 relative after:absolute after:w-px after:inset-0 after:left-auto\">\n <div className=\"flex gap-2 items-stretch\">\n <div className=\"flex flex-1 items-center w-full border rounded-md\">\n <div className=\"border-r p-2 bg-muted rounded-l-md self-stretch font-semibold font-mono flex items-center\">\n {method.toUpperCase()}\n </div>\n <div className=\"flex items-center flex-wrap p-2 font-mono text-xs\">\n {serverSelect}\n {path}\n {urlQueryParams.length > 0 ? \"?\" : \"\"}\n {urlQueryParams}\n </div>\n </div>\n <Button type=\"submit\" className=\"h-auto flex gap-1\">\n Send\n </Button>\n </div>\n <Tabs defaultValue=\"parameters\">\n <div className=\"flex flex-wrap gap-1 justify-between\">\n <TabsList>\n <TabsTrigger value=\"parameters\">\n Parameters\n {(formState.pathParams.some((p) => p.value !== \"\") ||\n formState.queryParams.some((p) => p.active)) && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"headers\">\n Headers\n {formState.headers.filter((h) => h.active).length > 0 && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"auth\">\n Auth\n {formState.identity !== NO_IDENTITY && (\n <div className=\"w-2 h-2 rounded-full bg-blue-400 ml-2\" />\n )}\n </TabsTrigger>\n <TabsTrigger value=\"body\">Body</TabsTrigger>\n </TabsList>\n </div>\n <TabsContent value=\"headers\">\n <Headers control={control} register={register} />\n </TabsContent>\n <TabsContent value=\"parameters\">\n {pathParams.length > 0 && (\n <div className=\"flex flex-col gap-4 my-4\">\n <span className=\"font-semibold\">Path Parameters</span>\n <PathParams control={control} />\n </div>\n )}\n <div className=\"flex flex-col gap-4 my-4\">\n <span className=\"font-semibold\">Query Parameters</span>\n <QueryParams control={control} queryParams={queryParams} />\n </div>\n </TabsContent>\n <TabsContent value=\"body\">\n {![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n ) && (\n <Alert className=\"mb-2\">\n <InfoIcon className=\"w-4 h-4\" />\n <AlertTitle>Body</AlertTitle>\n <AlertDescription>\n Body is only supported for POST, PUT, PATCH, and DELETE\n requests\n </AlertDescription>\n </Alert>\n )}\n <Textarea\n {...register(\"body\")}\n className={cn(\n \"border w-full rounded-lg p-2 bg-muted h-40 font-mono\",\n ![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n ) && \"h-20\",\n )}\n placeholder={\n ![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n )\n ? \"This request does not support a body\"\n : undefined\n }\n disabled={\n ![\"POST\", \"PUT\", \"PATCH\", \"DELETE\"].includes(\n method.toUpperCase(),\n )\n }\n />\n {examples && (\n <ExamplesDropdown\n examples={examples}\n onSelect={(example) =>\n setValue(\"body\", JSON.stringify(example.value, null, 2))\n }\n />\n )}\n </TabsContent>\n <TabsContent value=\"auth\">\n <div className=\"flex flex-col gap-4 my-4\">\n {identities.data?.length === 0 && (\n <Alert>\n <InfoIcon className=\"w-4 h-4\" />\n <AlertTitle>Authentication</AlertTitle>\n <AlertDescription>\n No identities found. Please create an identity first.\n </AlertDescription>\n </Alert>\n )}\n <div className=\"flex flex-col items-center gap-2\">\n <Card className=\"w-full overflow-hidden\">\n <RadioGroup\n onValueChange={(value) => setValue(\"identity\", value)}\n value={formState.identity}\n defaultValue={formState.identity}\n className=\"gap-0\"\n disabled={identities.data?.length === 0}\n >\n <Label\n className=\"h-12 border-b items-center flex p-4 cursor-pointer hover:bg-accent\"\n htmlFor=\"none\"\n >\n <RadioGroupItem value={NO_IDENTITY} id=\"none\">\n None\n </RadioGroupItem>\n <Label htmlFor=\"none\" className=\"ml-2\">\n None\n </Label>\n </Label>\n {identities.data?.map((identity) => (\n <Label\n key={identity.id}\n className=\"h-12 border-b items-center flex p-4 cursor-pointer hover:bg-accent\"\n >\n <RadioGroupItem\n value={identity.id}\n id={identity.id}\n >\n {identity.label}\n </RadioGroupItem>\n <Label htmlFor={identity.id} className=\"ml-2\">\n {identity.label}\n </Label>\n </Label>\n ))}\n </RadioGroup>\n </Card>\n </div>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n <div className=\"min-w-0 p-8 bg-muted/70\">\n {queryMutation.error ? (\n <div className=\"flex flex-col gap-2\">\n {formState.pathParams.some((p) => p.value === \"\") && (\n <Callout type=\"caution\">\n Some path parameters are missing values. Please fill them in\n to ensure the request is sent correctly.\n </Callout>\n )}\n <Card>\n <CardHeader>\n <CardTitle>Request failed</CardTitle>\n </CardHeader>\n <CardContent>\n Error:{\" \"}\n {queryMutation.error.message ||\n String(queryMutation.error) ||\n \"Unexpected error\"}\n </CardContent>\n </Card>\n </div>\n ) : queryMutation.data ? (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex gap-2\">\n <div className=\"flex text-xs gap-6\">\n <div>\n Status: {queryMutation.data.status}{\" \"}\n {statusCodeMap[queryMutation.data.status] ?? \"\"}\n </div>\n <div>Time: {queryMutation.data.time.toFixed(0)}ms</div>\n <div>Size: {queryMutation.data.size} B</div>\n </div>\n </div>\n <Tabs defaultValue=\"response\">\n <TabsList>\n <TabsTrigger value=\"response\">Response</TabsTrigger>\n <TabsTrigger value=\"headers\">\n {headerEntries.length\n ? `Headers (${headerEntries.length})`\n : \"No headers\"}\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"response\">\n <ResponseTab\n headers={queryMutation.data.headers}\n body={queryMutation.data.body}\n />\n </TabsContent>\n <TabsContent value=\"headers\">\n <Card\n // playground dialog has h-5/6 ≈ 83.333vh\n className=\"max-h-[calc(83.333vh-140px)] overflow-y-auto grid grid-cols-2 w-full gap-2.5 font-mono text-xs shadow-none p-4\"\n >\n <div className=\"font-semibold\">Key</div>\n <div className=\"font-semibold\">Value</div>\n {headerEntries.map(([key, value]) => (\n <Fragment key={key}>\n <div>{key}</div>\n <div className=\"break-words\">{value}</div>\n </Fragment>\n ))}\n </Card>\n </TabsContent>\n </Tabs>\n </div>\n ) : (\n <div className=\"grid place-items-center h-full\">\n <span className=\"text-[16px] font-semibold text-muted-foreground\">\n {queryMutation.isPending ? (\n <Spinner />\n ) : (\n \"Send a request first to see the response here\"\n )}\n </span>\n </div>\n )}\n </div>\n </div>\n </form>\n </FormProvider>\n );\n};\n\nexport default Playground;\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { type PropsWithChildren, useState } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"zudoku/ui/Dialog.js\";\nimport { Playground, type PlaygroundContentProps } from \"./Playground.js\";\n\nexport type PlaygroundDialogProps = PropsWithChildren<PlaygroundContentProps>;\n\nconst HeroPlayIcon = ({\n className,\n size = 16,\n}: {\n className?: string;\n size?: number;\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n width={size}\n height={size}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm14.024-.983a1.125 1.125 0 0 1 0 1.966l-5.603 3.113A1.125 1.125 0 0 1 9 15.113V8.887c0-.857.921-1.4 1.671-.983l5.603 3.113Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst PlaygroundDialog = (props: PlaygroundDialogProps) => {\n const [open, setOpen] = useState(false);\n return (\n <Dialog onOpenChange={(open) => setOpen(open)}>\n <DialogTrigger asChild>\n {props.children ?? (\n <button className=\"flex gap-1 items-center px-2 py-1 rounded-md transition text-xs bg-primary text-primary-foreground shadow-sm hover:bg-primary/80\">\n Test\n <HeroPlayIcon className=\"\" size={14} />\n </button>\n )}\n </DialogTrigger>\n\n <DialogContent\n className=\"max-w-screen-xl w-full h-5/6 overflow-auto p-0\"\n aria-describedby={undefined}\n >\n <VisuallyHidden>\n <DialogTitle>Playground</DialogTitle>\n </VisuallyHidden>\n {open && <Playground {...props} />}\n </DialogContent>\n </Dialog>\n );\n};\n\nexport { PlaygroundDialog };\n","import { matchPath } from \"react-router\";\nimport { type ZudokuPlugin } from \"../../core/plugins.js\";\nimport { graphql } from \"./graphql/index.js\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { CirclePlayIcon, LogInIcon } from \"lucide-react\";\nimport type { SidebarItem } from \"../../../config/validators/SidebarSchema.js\";\nimport { useAuth } from \"../../authentication/hook.js\";\nimport { ColorMap } from \"../../components/navigation/SidebarBadge.js\";\nimport type { SchemaImports } from \"../../oas/graphql/index.js\";\nimport { Button } from \"../../ui/Button.js\";\nimport { joinPath } from \"../../util/joinPath.js\";\nimport { GraphQLClient } from \"./client/GraphQLClient.js\";\nimport { OasPluginConfig } from \"./interfaces.js\";\nimport type { PlaygroundContentProps } from \"./playground/Playground.js\";\nimport { PlaygroundDialog } from \"./playground/PlaygroundDialog.js\";\n\nconst GetCategoriesQuery = graphql(`\n query GetCategories($input: JSON!, $type: SchemaType!) {\n schema(input: $input, type: $type) {\n url\n tags {\n __typename\n name\n operations {\n __typename\n slug\n deprecated\n method\n summary\n operationId\n path\n }\n }\n }\n }\n`);\n\ntype InternalOasPluginConfig = { schemaImports?: SchemaImports };\n\nconst MethodColorMap: Record<string, keyof typeof ColorMap> = {\n get: \"green\",\n post: \"blue\",\n put: \"yellow\",\n delete: \"red\",\n patch: \"purple\",\n options: \"gray\",\n head: \"gray\",\n};\n\nexport type OpenApiPluginOptions = OasPluginConfig & InternalOasPluginConfig;\n\nexport const openApiPlugin = (config: OpenApiPluginOptions): ZudokuPlugin => {\n const basePath = joinPath(config.navigationId ?? \"/reference\");\n\n const versions = config.type === \"file\" ? Object.keys(config.input) : [];\n\n const client = new GraphQLClient(config);\n\n return {\n getHead: () => {\n if (config.type === \"url\" && !config.skipPreload) {\n return (\n <link\n rel=\"preload\"\n href={config.input}\n as=\"fetch\"\n crossOrigin=\"anonymous\"\n />\n );\n }\n\n if (config.server) {\n return <link rel=\"preconnect\" href={config.server} />;\n }\n },\n getMdxComponents: () => ({\n OpenPlaygroundButton: ({\n requireAuth,\n server,\n method,\n url,\n ...props\n }: Partial<PlaygroundContentProps> & { requireAuth: boolean }) => {\n const auth = useAuth();\n // We don't have the GraphQL context here\n const serverQuery = useQuery({\n queryFn: () =>\n client.fetch(GetCategoriesQuery, {\n type: config.type,\n input: config.input,\n }),\n enabled: !server,\n queryKey: [\"playground-server\"],\n });\n\n if (requireAuth && !auth.isAuthenticated) {\n return (\n <Button\n className=\"gap-2 items-center\"\n variant=\"outline\"\n onClick={auth.login}\n >\n Login to open in Playground <LogInIcon size={16} />\n </Button>\n );\n }\n\n return (\n <PlaygroundDialog\n url={url ?? \"/\"}\n method={method ?? \"get\"}\n server={\n server ?? serverQuery.data?.schema.url ?? \"https://example.com\"\n }\n {...props}\n >\n <Button className=\"gap-2 items-center\" variant=\"outline\">\n Open in Playground <CirclePlayIcon size={16} />\n </Button>\n </PlaygroundDialog>\n );\n },\n }),\n getSidebar: async (path: string) => {\n if (!matchPath({ path: basePath, end: false }, path)) {\n return [];\n }\n\n try {\n const version =\n versions.find((v) => path === joinPath(basePath, v)) ??\n Object.keys(config.input).at(0);\n\n const data = await client.fetch(GetCategoriesQuery, {\n type: config.type,\n input: config.type === \"file\" ? config.input[version!] : config.input,\n version,\n });\n\n const categories = data.schema.tags\n .filter((tag) => tag.operations.length > 0)\n .map<SidebarItem>((tag) => ({\n type: \"category\",\n label: tag.name || \"Other endpoints\",\n collapsible: true,\n collapsed: false,\n items: tag.operations.map((operation) => ({\n type: \"link\",\n label: operation.summary ?? operation.path,\n href: `#${operation.slug}`,\n badge: {\n label: operation.method,\n color: MethodColorMap[operation.method.toLowerCase()]!,\n invert: true,\n },\n })),\n }));\n\n categories.unshift({\n type: \"link\",\n label: \"Overview\",\n href: \"#description\",\n });\n\n return categories;\n } catch {\n return [];\n }\n },\n getRoutes: () => {\n const versionsInPath = [null, ...versions];\n\n return versionsInPath.map((version) => ({\n path: basePath + (version ? `/${version}` : \"\"),\n async lazy() {\n const { OpenApiRoute } = await import(\"./Route.js\");\n return {\n element: (\n <OpenApiRoute\n basePath={basePath}\n versions={versions}\n client={client}\n config={config}\n />\n ),\n };\n },\n children: [\n {\n index: true,\n async lazy() {\n const { OperationList } = await import(\"./OperationList.js\");\n return { element: <OperationList /> };\n },\n },\n ],\n }));\n },\n };\n};\n"],"names":["TypedDocumentString","value","__meta__","__publicField","OperationsFragmentFragmentDoc","ServersQueryDocument","AllOperationsDocument","GetServerQueryDocument","GetCategoriesDocument","documents","types.ServersQueryDocument","types.OperationsFragmentFragmentDoc","types.AllOperationsDocument","types.GetServerQueryDocument","types.GetCategoriesDocument","graphql","source","localServerPromise","throwIfError","response","_a","ZudokuError","GraphQLClient","config","__privateAdd","_getLocalServer","m","_executeFetch","init","__privateGet","query","variables","operationName","result","alertVariants","cva","Alert","React","className","variant","props","ref","jsx","cn","AlertTitle","AlertDescription","labelVariants","Label","LabelPrimitive","RadioGroup","RadioGroupPrimitive","RadioGroupItem","Circle","Textarea","c2n","c","s2n","s","pastellize","options","hue","saturation","lightness","DATA_ATTR","usePastellizedColor","name","resolvedTheme","useTheme","useParamColor","normalized","ColorizedParam","slug","title","children","onClick","useRef","normalizedSlug","text","background","textColor","backgroundColor","borderColor","useEffect","onMouseEnter","el","onMouseLeave","createUrl","host","path","data","filledPath","match","key","part","url","param","DropdownMenu","DropdownMenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuSubTrigger","inset","jsxs","ChevronRightIcon","DropdownMenuSubContent","DropdownMenuContent","sideOffset","DropdownMenuItem","DropdownMenuCheckboxItem","checked","CheckIcon","DropdownMenuRadioItem","DotIcon","DropdownMenuLabel","DropdownMenuSeparator","ExamplesDropdown","examples","onSelect","Button","example","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","checkboxVariants","Checkbox","CheckboxPrimitive","Check","Command","CommandPrimitive","CommandInput","Search","CommandInlineInput","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","Popover","PopoverPrimitive","PopoverContent","align","AutocompletePopover","onChange","placeholder","onEnterPress","open","setOpen","useState","dontClose","setDontClose","count","useCommandState","state","inputRef","PopoverAnchor","e","enumValue","selected","Autocomplete","headerOptions","Headers","control","register","fields","append","remove","useFieldArray","setValue","useFormContext","valueRefs","nameRefs","addNewHeader","handleHeaderEnter","index","handleValueEnter","header","i","Controller","field","Input","XIcon","PathParamLabel","color","PathParams","EraserIcon","createVariantComponent","tag","cvx","MyVariant","asChild","Comp","Slot","InlineInput","QueryParams","queryParams","form","requiredFields","currentParam","SimpleSelect","showChevrons","option","ChevronsUpDownIcon","mimeTypeToLanguage","mimeType","mime","detectLanguage","headers","contentType","tryParseJson","body","ResponseTab","detectedLanguage","jsonContent","beautifiedBody","view","setView","SyntaxHighlight","NO_IDENTITY","statusCodeMap","Playground","server","servers","method","pathParams","defaultBody","selectedServer","setSelectedServer","useSelectedServerStore","startTransition","useTransition","handleSubmit","watch","useForm","formState","identities","useApiIdentities","setOnce","firstIdentity","queryMutation","useMutation","requestUrl","start","request","h","_b","time","error","arr","isPathParam","replaced","p","pathParamValue","Fragment","headerEntries","urlQueryParams","serverSelect","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","FormProvider","Tabs","TabsList","TabsTrigger","TabsContent","InfoIcon","_c","_d","identity","Callout","Spinner","HeroPlayIcon","size","PlaygroundDialog","Dialog","DialogTrigger","DialogContent","VisuallyHidden","DialogTitle","GetCategoriesQuery","MethodColorMap","openApiPlugin","basePath","joinPath","versions","client","requireAuth","auth","useAuth","serverQuery","useQuery","LogInIcon","CirclePlayIcon","matchPath","version","v","categories","operation","OpenApiRoute","OperationList"],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- const f = /* @__PURE__ */ new Map(), w = (s, a) => {
2
- f.has(s) || f.set(s, /* @__PURE__ */ new Map());
3
- const n = f.get(s);
4
- if (n.has(a))
5
- return n.get(a);
6
- const i = a.split("/").slice(1);
7
- let t = s;
8
- for (const l of i)
9
- (!t || typeof t != "object") && (t = null), t = t[l] ?? null;
10
- return n.set(a, t), t;
11
- }, p = "$[Circular Reference]", c = /* @__PURE__ */ new Map(), y = (s) => s !== null && typeof s == "object", v = async (s, a = []) => {
12
- if (c.has(s))
13
- return c.get(s);
14
- const n = structuredClone(s), i = /* @__PURE__ */ new Set(), t = async (e, g) => {
15
- if (y(e)) {
16
- if (i.has(e))
17
- return p;
18
- if (i.add(e), Array.isArray(e))
19
- for (let o = 0; o < e.length; o++)
20
- e[o] = await t(e[o]);
21
- else {
22
- if ("$ref" in e && typeof e.$ref == "string") {
23
- for (const d of a) {
24
- const r = await d(e.$ref);
25
- if (r) return await t(r);
26
- }
27
- const o = await w(n, e.$ref);
28
- return await t(o);
29
- }
30
- for (const o in e)
31
- e[o] = await t(e[o]);
32
- }
33
- i.delete(e);
34
- }
35
- return e;
36
- }, l = await t(n);
37
- return c.set(s, l), l;
38
- };
39
- export {
40
- p as C,
41
- v as d
42
- };
43
- //# sourceMappingURL=index-TaRXY2w1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-TaRXY2w1.js","sources":["../src/lib/oas/parser/dereference/resolveRef.ts","../src/lib/oas/parser/dereference/index.ts"],"sourcesContent":["import type { JSONSchema } from \"./index.js\";\n\nconst cache = new Map<JSONSchema, Map<string, unknown>>();\n\n/**\n * Resolves a $ref pointer in a schema and returns the referenced value.\n */\nexport const resolveLocalRef = (schema: JSONSchema, ref: string): unknown => {\n if (!cache.has(schema)) {\n cache.set(schema, new Map<string, unknown>());\n }\n const schemaCache = cache.get(schema);\n\n if (schemaCache!.has(ref)) {\n return schemaCache!.get(ref);\n }\n\n const path = ref.split(\"/\").slice(1);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let current: any = schema;\n for (const segment of path) {\n if (!current || typeof current !== \"object\") {\n // we've reached a dead end\n current = null;\n }\n current = current[segment] ?? null;\n }\n\n schemaCache!.set(ref, current);\n return current;\n};\n","import type { JSONSchema4, JSONSchema6 } from \"json-schema\";\nimport { resolveLocalRef } from \"./resolveRef.js\";\n\nexport type JSONSchema = JSONSchema4 | JSONSchema6;\n\nexport const CIRCULAR_REF = \"$[Circular Reference]\";\n\ntype CustomResolver = (ref: string) => Promise<JSONSchema | undefined>;\n\nconst cache = new Map<JSONSchema, JSONSchema>();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isIndexableObject = (obj: any): obj is Record<string, any> =>\n obj !== null && typeof obj === \"object\";\n\n// Taken and inspired from `dereference-json-schema` package.\nexport const dereference = async (\n schema: JSONSchema,\n resolvers: CustomResolver[] = [],\n) => {\n if (cache.has(schema)) {\n return cache.get(schema)!;\n }\n\n const cloned = structuredClone(schema);\n const visited = new Set<unknown>();\n\n const resolve = async (current: unknown, path: string) => {\n if (isIndexableObject(current)) {\n if (visited.has(current)) {\n return CIRCULAR_REF;\n }\n\n visited.add(current);\n\n if (Array.isArray(current)) {\n for (let index = 0; index < current.length; index++) {\n current[index] = await resolve(current[index], `${path}/${index}`);\n }\n } else {\n if (\"$ref\" in current && typeof current.$ref === \"string\") {\n for (const resolver of resolvers) {\n const resolved = await resolver(current.$ref);\n if (resolved) return await resolve(resolved, path);\n }\n const resolved = await resolveLocalRef(cloned, current.$ref);\n return await resolve(resolved, path);\n }\n\n for (const key in current) {\n current[key] = await resolve(current[key], `${path}/${key}`);\n }\n }\n\n visited.delete(current);\n }\n\n return current;\n };\n\n const result = (await resolve(cloned, \"#\")) as JSONSchema;\n cache.set(schema, result);\n return result;\n};\n"],"names":["cache","resolveLocalRef","schema","ref","schemaCache","path","current","segment","CIRCULAR_REF","isIndexableObject","obj","dereference","resolvers","cloned","visited","resolve","index","resolver","resolved","key","result"],"mappings":"AAEA,MAAMA,wBAAY,IAAsC,GAK3CC,IAAkB,CAACC,GAAoBC,MAAyB;AAC3E,EAAKH,EAAM,IAAIE,CAAM,KACnBF,EAAM,IAAIE,GAAY,oBAAA,IAAA,CAAsB;AAExC,QAAAE,IAAcJ,EAAM,IAAIE,CAAM;AAEhC,MAAAE,EAAa,IAAID,CAAG;AACf,WAAAC,EAAa,IAAID,CAAG;AAG7B,QAAME,IAAOF,EAAI,MAAM,GAAG,EAAE,MAAM,CAAC;AAGnC,MAAIG,IAAeJ;AACnB,aAAWK,KAAWF;AACpB,KAAI,CAACC,KAAW,OAAOA,KAAY,cAEvBA,IAAA,OAEFA,IAAAA,EAAQC,CAAO,KAAK;AAGnB,SAAAH,EAAA,IAAID,GAAKG,CAAO,GACtBA;AACT,GC1BaE,IAAe,yBAItBR,wBAAY,IAA4B,GAGxCS,IAAoB,CAACC,MACzBA,MAAQ,QAAQ,OAAOA,KAAQ,UAGpBC,IAAc,OACzBT,GACAU,IAA8B,OAC3B;AACC,MAAAZ,EAAM,IAAIE,CAAM;AACX,WAAAF,EAAM,IAAIE,CAAM;AAGnB,QAAAW,IAAS,gBAAgBX,CAAM,GAC/BY,wBAAc,IAAa,GAE3BC,IAAU,OAAOT,GAAkBD,MAAiB;AACpD,QAAAI,EAAkBH,CAAO,GAAG;AAC1B,UAAAQ,EAAQ,IAAIR,CAAO;AACd,eAAAE;AAKL,UAFJM,EAAQ,IAAIR,CAAO,GAEf,MAAM,QAAQA,CAAO;AACvB,iBAASU,IAAQ,GAAGA,IAAQV,EAAQ,QAAQU;AAClC,UAAAV,EAAAU,CAAK,IAAI,MAAMD,EAAQT,EAAQU,CAAK,CAAqB;AAAA,WAE9D;AACL,YAAI,UAAUV,KAAW,OAAOA,EAAQ,QAAS,UAAU;AACzD,qBAAWW,KAAYL,GAAW;AAChC,kBAAMM,IAAW,MAAMD,EAASX,EAAQ,IAAI;AAC5C,gBAAIY,EAAU,QAAO,MAAMH,EAAQG,CAAc;AAAA,UAAA;AAEnD,gBAAMA,IAAW,MAAMjB,EAAgBY,GAAQP,EAAQ,IAAI;AACpD,iBAAA,MAAMS,EAAQG,CAAc;AAAA,QAAA;AAGrC,mBAAWC,KAAOb;AACR,UAAAA,EAAAa,CAAG,IAAI,MAAMJ,EAAQT,EAAQa,CAAG,CAAmB;AAAA,MAC7D;AAGF,MAAAL,EAAQ,OAAOR,CAAO;AAAA,IAAA;AAGjB,WAAAA;AAAA,EACT,GAEMc,IAAU,MAAML,EAAQF,CAAW;AACnC,SAAAb,EAAA,IAAIE,GAAQkB,CAAM,GACjBA;AACT;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"joinUrl-BTy9bvoK.js","sources":["../src/lib/util/joinUrl.ts"],"sourcesContent":["// Mostly adapted from https://github.com/moxystudio/js-proper-url-join\nconst defaultUrlRegExp = /^(\\w+:\\/\\/[^/?]+)?(.*?)(\\?.+)?$/;\n\nconst normalizeParts = (\n parts: (string | number | null | undefined | false)[],\n): string[] =>\n parts\n .filter(\n (part): part is string | number =>\n part !== null &&\n part !== undefined &&\n part !== false &&\n (typeof part === \"string\" || typeof part === \"number\"),\n )\n .map((part) => `${part}`)\n .filter((part) => part);\n\ninterface ParsedParts {\n prefix: string;\n pathname: string[];\n}\n\nconst parseParts = (parts: string[]): ParsedParts => {\n const partsStr = parts.join(\"/\");\n const [, prefix = \"\", pathname = \"\"] = partsStr.match(defaultUrlRegExp) ?? [];\n\n return {\n prefix,\n pathname: pathname.split(\"/\").filter((part) => part !== \"\"),\n };\n};\n\nconst buildUrl = (parsedParts: ParsedParts): string => {\n const { prefix, pathname } = parsedParts;\n let url = prefix;\n\n if (pathname.length > 0) {\n if (url) {\n url += \"/\";\n } else {\n url = \"/\";\n }\n url += pathname.join(\"/\");\n } else if (!url) {\n url = \"/\";\n }\n\n return url;\n};\n\nexport const joinUrl = (\n ...parts: Array<string | number | null | undefined | false>\n): string => {\n const normalizedParts = normalizeParts(parts);\n const parsedParts = parseParts(normalizedParts);\n return buildUrl(parsedParts);\n};\n"],"names":["defaultUrlRegExp","normalizeParts","parts","part","parseParts","partsStr","prefix","pathname","buildUrl","parsedParts","url","joinUrl","normalizedParts"],"mappings":"AACA,MAAMA,IAAmB,mCAEnBC,IAAiB,CACrBC,MAEAA,EACG;AAAA,EACC,CAACC,MACCA,KAAS,QAETA,MAAS,OACR,OAAOA,KAAS,YAAY,OAAOA,KAAS;AACjD,EACC,IAAI,CAACA,MAAS,GAAGA,CAAI,EAAE,EACvB,OAAO,CAACA,MAASA,CAAI,GAOpBC,IAAa,CAACF,MAAiC;AAC7C,QAAAG,IAAWH,EAAM,KAAK,GAAG,GACzB,CAAG,EAAAI,IAAS,IAAIC,IAAW,EAAE,IAAIF,EAAS,MAAML,CAAgB,KAAK,CAAC;AAErE,SAAA;AAAA,IACL,QAAAM;AAAA,IACA,UAAUC,EAAS,MAAM,GAAG,EAAE,OAAO,CAACJ,MAASA,MAAS,EAAE;AAAA,EAC5D;AACF,GAEMK,IAAW,CAACC,MAAqC;AAC/C,QAAA,EAAE,QAAAH,GAAQ,UAAAC,EAAA,IAAaE;AAC7B,MAAIC,IAAMJ;AAEN,SAAAC,EAAS,SAAS,KAChBG,IACKA,KAAA,MAEDA,IAAA,KAEDA,KAAAH,EAAS,KAAK,GAAG,KACdG,MACJA,IAAA,MAGDA;AACT,GAEaC,IAAU,IAClBT,MACQ;AACL,QAAAU,IAAkBX,EAAeC,CAAK,GACtCO,IAAcL,EAAWQ,CAAe;AAC9C,SAAOJ,EAASC,CAAW;AAC7B;"}
@@ -1,76 +0,0 @@
1
- import { useState } from "react";
2
- import { SyntaxHighlight } from "../../../components/SyntaxHighlight.js";
3
- import { Card } from "../../../ui/Card.js";
4
- import { SimpleSelect } from "../SimpleSelect.js";
5
-
6
- const mimeTypeToLanguage = (mimeType: string) => {
7
- const mimeTypeMapping = {
8
- "application/json": "json",
9
- "text/json": "json",
10
- "text/html": "html",
11
- "text/css": "css",
12
- "text/javascript": "javascript",
13
- "application/xml": "xml",
14
- "application/xhtml+xml": "xhtml",
15
- };
16
-
17
- return Object.entries(mimeTypeMapping).find(([mime]) =>
18
- mimeType.includes(mime),
19
- )?.[1];
20
- };
21
-
22
- const detectLanguage = (headers: Headers) => {
23
- const contentType = headers.get("Content-Type") || "";
24
- return mimeTypeToLanguage(contentType);
25
- };
26
-
27
- const tryParseJson = (body: string) => {
28
- try {
29
- return JSON.stringify(JSON.parse(body), null, 2);
30
- } catch {
31
- return null;
32
- }
33
- };
34
-
35
- export const ResponseTab = ({
36
- body = "",
37
- headers,
38
- }: {
39
- body?: string;
40
- headers: Headers;
41
- }) => {
42
- const detectedLanguage = detectLanguage(headers);
43
- const jsonContent = tryParseJson(body);
44
- const beautifiedBody = jsonContent || body;
45
- const [view, setView] = useState<"formatted" | "raw">(
46
- jsonContent ? "formatted" : "raw",
47
- );
48
-
49
- return (
50
- <div className="flex flex-col gap-2">
51
- <Card className="shadow-none">
52
- <SyntaxHighlight
53
- language={
54
- view === "raw" ? (jsonContent ? "plain" : detectedLanguage) : "json"
55
- }
56
- noBackground
57
- // playground dialog has h-5/6 ≈ 83.333vh
58
- className="overflow-x-auto p-4 text-xs max-h-[calc(83.333vh-180px)]"
59
- code={view === "raw" ? body : beautifiedBody}
60
- />
61
- </Card>
62
- {jsonContent && (
63
- <div className="flex justify-end">
64
- <SimpleSelect
65
- value={view}
66
- onChange={(e) => setView(e.target.value as "formatted" | "raw")}
67
- options={[
68
- { value: "formatted", label: "Formatted" },
69
- { value: "raw", label: "Raw" },
70
- ]}
71
- />
72
- </div>
73
- )}
74
- </div>
75
- );
76
- };