zudoku 0.42.0 → 0.42.2

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 (552) hide show
  1. package/dist/app/main.js +0 -6
  2. package/dist/app/main.js.map +1 -1
  3. package/dist/config/validators/common.d.ts +288 -420
  4. package/dist/config/validators/common.js +0 -10
  5. package/dist/config/validators/common.js.map +1 -1
  6. package/dist/config/validators/validate.d.ts +108 -161
  7. package/dist/index.d.ts +0 -1
  8. package/dist/index.js +0 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/authentication/components/SignIn.d.ts +1 -1
  11. package/dist/lib/authentication/components/SignIn.js +5 -2
  12. package/dist/lib/authentication/components/SignIn.js.map +1 -1
  13. package/dist/lib/authentication/components/SignUp.d.ts +1 -1
  14. package/dist/lib/authentication/components/SignUp.js +4 -1
  15. package/dist/lib/authentication/components/SignUp.js.map +1 -1
  16. package/dist/lib/components/Markdown.d.ts +1 -3
  17. package/dist/lib/components/Markdown.js +14 -8
  18. package/dist/lib/components/Markdown.js.map +1 -1
  19. package/dist/lib/components/context/ZudokuContext.d.ts +1 -1
  20. package/dist/lib/components/index.d.ts +1 -2
  21. package/dist/lib/core/ZudokuContext.d.ts +0 -7
  22. package/dist/lib/core/ZudokuContext.js.map +1 -1
  23. package/dist/lib/errors/ErrorAlert.js +1 -1
  24. package/dist/lib/errors/ErrorAlert.js.map +1 -1
  25. package/dist/lib/plugins/openapi/CollapsibleCode.js +1 -1
  26. package/dist/lib/plugins/openapi/CollapsibleCode.js.map +1 -1
  27. package/dist/lib/plugins/openapi/ParameterListItem.js +8 -1
  28. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  29. package/dist/lib/plugins/openapi/Sidecar.js +1 -1
  30. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  31. package/dist/lib/plugins/openapi/SidecarExamples.js +1 -1
  32. package/dist/lib/plugins/openapi/SidecarExamples.js.map +1 -1
  33. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +5 -3
  34. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
  35. package/dist/lib/plugins/openapi/schema/SchemaView.js +1 -1
  36. package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
  37. package/dist/lib/plugins/openapi/schema/utils.d.ts +1 -0
  38. package/dist/lib/plugins/openapi/schema/utils.js +3 -0
  39. package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
  40. package/dist/lib/ui/Callout.js +1 -1
  41. package/dist/lib/ui/Callout.js.map +1 -1
  42. package/dist/lib/ui/SyntaxHighlight.d.ts +15 -10
  43. package/dist/lib/ui/SyntaxHighlight.js +60 -10
  44. package/dist/lib/ui/SyntaxHighlight.js.map +1 -1
  45. package/dist/lib/util/MdxComponents.d.ts +3 -9
  46. package/dist/lib/util/MdxComponents.js +10 -9
  47. package/dist/lib/util/MdxComponents.js.map +1 -1
  48. package/dist/vite/config.js +0 -34
  49. package/dist/vite/config.js.map +1 -1
  50. package/dist/vite/plugin-mdx.js +11 -4
  51. package/dist/vite/plugin-mdx.js.map +1 -1
  52. package/dist/vite/plugin.js +0 -2
  53. package/dist/vite/plugin.js.map +1 -1
  54. package/lib/AuthenticationPlugin-ByDF051g.js +99 -0
  55. package/lib/AuthenticationPlugin-ByDF051g.js.map +1 -0
  56. package/lib/{Button-Bdk_Ij3U.js → Button-BBNrKpQd.js} +3 -3
  57. package/lib/{Button-Bdk_Ij3U.js.map → Button-BBNrKpQd.js.map} +1 -1
  58. package/lib/{Callout-XadUe37J.js → Callout-D3Ja4OPX.js} +12 -12
  59. package/lib/{Callout-XadUe37J.js.map → Callout-D3Ja4OPX.js.map} +1 -1
  60. package/lib/Card-BtheiD7j.js +61 -0
  61. package/lib/Card-BtheiD7j.js.map +1 -0
  62. package/lib/{CategoryHeading-DZi-Szor.js → CategoryHeading-D06WK_Wo.js} +2 -2
  63. package/lib/{CategoryHeading-DZi-Szor.js.map → CategoryHeading-D06WK_Wo.js.map} +1 -1
  64. package/lib/{Dialog-CNf2oWXG.js → Dialog-ByYz4ABw.js} +2 -2
  65. package/lib/{Dialog-CNf2oWXG.js.map → Dialog-ByYz4ABw.js.map} +1 -1
  66. package/lib/{Drawer-BPBxzel2.js → Drawer-CEwbkLDb.js} +25 -25
  67. package/lib/{Drawer-BPBxzel2.js.map → Drawer-CEwbkLDb.js.map} +1 -1
  68. package/lib/Markdown-mFpg_n9p.js +17125 -0
  69. package/lib/Markdown-mFpg_n9p.js.map +1 -0
  70. package/lib/MdxPage-Cm7atiW3.js +85 -0
  71. package/lib/{MdxPage-Dxbq6lFr.js.map → MdxPage-Cm7atiW3.js.map} +1 -1
  72. package/lib/{OasProvider-DKpTJMH2.js → OasProvider-CDtbrUG_.js} +4 -4
  73. package/lib/{OasProvider-DKpTJMH2.js.map → OasProvider-CDtbrUG_.js.map} +1 -1
  74. package/lib/{OperationList-DVOyNeno.js → OperationList-DTyJIxKW.js} +1967 -1914
  75. package/lib/OperationList-DTyJIxKW.js.map +1 -0
  76. package/lib/{Pagination-COMmV-g9.js → Pagination-DLPL5z77.js} +4 -4
  77. package/lib/{Pagination-COMmV-g9.js.map → Pagination-DLPL5z77.js.map} +1 -1
  78. package/lib/RouteGuard-DRtEu9nh.js +744 -0
  79. package/lib/{RouteGuard-CGqivwrh.js.map → RouteGuard-DRtEu9nh.js.map} +1 -1
  80. package/lib/{SchemaList-BTWzXyYQ.js → SchemaList-B9lvArDe.js} +44 -43
  81. package/lib/{SchemaList-BTWzXyYQ.js.map → SchemaList-B9lvArDe.js.map} +1 -1
  82. package/lib/{SchemaView-DNKKW3nB.js → SchemaView-DXjql-Bl.js} +111 -108
  83. package/lib/SchemaView-DXjql-Bl.js.map +1 -0
  84. package/lib/Select-CT64Ou40.js +223 -0
  85. package/lib/{Select-m-ITdvFa.js.map → Select-CT64Ou40.js.map} +1 -1
  86. package/lib/SlotletProvider-CS_nO-XT.js +340 -0
  87. package/lib/SlotletProvider-CS_nO-XT.js.map +1 -0
  88. package/lib/SyntaxHighlight-CxhyyMkF.js +2890 -0
  89. package/lib/SyntaxHighlight-CxhyyMkF.js.map +1 -0
  90. package/lib/{Toc-CzMOgcPS.js → Toc-D_tV8_Ri.js} +3 -3
  91. package/lib/{Toc-CzMOgcPS.js.map → Toc-D_tV8_Ri.js.map} +1 -1
  92. package/lib/{chunk-BAXFHI7N-CFrZQ7Oh.js → chunk-BAXFHI7N-BVBOl9s0.js} +264 -257
  93. package/lib/{chunk-BAXFHI7N-CFrZQ7Oh.js.map → chunk-BAXFHI7N-BVBOl9s0.js.map} +1 -1
  94. package/lib/{circular-D__GEK2G.js → circular-ByJI6Mci.js} +47 -47
  95. package/lib/{circular-D__GEK2G.js.map → circular-ByJI6Mci.js.map} +1 -1
  96. package/lib/{cn-CwJPJKOE.js → cn-qaFjX9_3.js} +29 -28
  97. package/lib/{cn-CwJPJKOE.js.map → cn-qaFjX9_3.js.map} +1 -1
  98. package/lib/{createServer-B4l2NSkt.js → createServer-IW7v5hWm.js} +3868 -3724
  99. package/lib/{createServer-B4l2NSkt.js.map → createServer-IW7v5hWm.js.map} +1 -1
  100. package/lib/hook-CldJlP5c.js +1478 -0
  101. package/lib/{hook-CyNmcNr8.js.map → hook-CldJlP5c.js.map} +1 -1
  102. package/lib/{index-Z13x6tPX.js → index-CPNSgwSb.js} +5 -5
  103. package/lib/{index-Z13x6tPX.js.map → index-CPNSgwSb.js.map} +1 -1
  104. package/lib/{index-CCS3ifKs.js → index-Ckl3s_w-.js} +763 -769
  105. package/lib/index-Ckl3s_w-.js.map +1 -0
  106. package/lib/{index-CrcNWbel.js → index-CuBIgTKC.js} +9 -9
  107. package/lib/{index-CrcNWbel.js.map → index-CuBIgTKC.js.map} +1 -1
  108. package/lib/{index-zddirpDj.js → index-DcHeSvkE.js} +609 -581
  109. package/lib/{index-zddirpDj.js.map → index-DcHeSvkE.js.map} +1 -1
  110. package/lib/index-DnQftvP4.js +5031 -0
  111. package/lib/{index-BcMPFdRU.js.map → index-DnQftvP4.js.map} +1 -1
  112. package/lib/{index--oeBayMa.js → index-DwT-v3zK.js} +2 -2
  113. package/lib/{index--oeBayMa.js.map → index-DwT-v3zK.js.map} +1 -1
  114. package/lib/{index-BvvmIczU.js → index-LNp6rxyU.js} +2 -2
  115. package/lib/{index-BvvmIczU.js.map → index-LNp6rxyU.js.map} +1 -1
  116. package/lib/invariant-Caa8-XvF.js +26 -0
  117. package/lib/{invariant-D3QcI9fa.js.map → invariant-Caa8-XvF.js.map} +1 -1
  118. package/lib/mutation-DBQh7AOZ.js +211 -0
  119. package/lib/{mutation-narTVsCe.js.map → mutation-DBQh7AOZ.js.map} +1 -1
  120. package/lib/prism-bash.min-HHIMdNJ_.js +7 -0
  121. package/lib/prism-bash.min-HHIMdNJ_.js.map +1 -0
  122. package/lib/prism-csharp.min-C43x1RY2.js +63 -0
  123. package/lib/prism-csharp.min-C43x1RY2.js.map +1 -0
  124. package/lib/prism-java.min-CQzr40NQ.js +35 -0
  125. package/lib/prism-java.min-CQzr40NQ.js.map +1 -0
  126. package/lib/prism-javascript.min-CEqHqgbm.js +9 -0
  127. package/lib/prism-javascript.min-CEqHqgbm.js.map +1 -0
  128. package/lib/prism-json.min-B1GJqK1k.js +2 -0
  129. package/lib/prism-json.min-B1GJqK1k.js.map +1 -0
  130. package/lib/prism-jsstacktrace.min-BfobCF2F.js +2 -0
  131. package/lib/prism-jsstacktrace.min-BfobCF2F.js.map +1 -0
  132. package/lib/prism-markdown.min-C0Qn0m-5.js +61 -0
  133. package/lib/prism-markdown.min-C0Qn0m-5.js.map +1 -0
  134. package/lib/prism-markup-BNGj0Tvm.js +174 -0
  135. package/lib/prism-markup-BNGj0Tvm.js.map +1 -0
  136. package/lib/prism-objectivec.min-BXSWqpJJ.js +2 -0
  137. package/lib/prism-objectivec.min-BXSWqpJJ.js.map +1 -0
  138. package/lib/prism-ruby.min-L9OdQ6tU.js +38 -0
  139. package/lib/prism-ruby.min-L9OdQ6tU.js.map +1 -0
  140. package/lib/prism-typescript.min-qTySPvCh.js +34 -0
  141. package/lib/prism-typescript.min-qTySPvCh.js.map +1 -0
  142. package/lib/processors/removeParameters.js +28 -27
  143. package/lib/processors/removeParameters.js.map +1 -1
  144. package/lib/processors/removePaths.js +17 -17
  145. package/lib/processors/removePaths.js.map +1 -1
  146. package/lib/ui/Accordion.js +1 -1
  147. package/lib/ui/ActionButton.js +2 -2
  148. package/lib/ui/Alert.js +2 -2
  149. package/lib/ui/AlertDialog.js +1 -1
  150. package/lib/ui/Badge.js +2 -2
  151. package/lib/ui/Breadcrumb.js +1 -1
  152. package/lib/ui/Button.js +2 -2
  153. package/lib/ui/Callout.js +7 -7
  154. package/lib/ui/Callout.js.map +1 -1
  155. package/lib/ui/Card.js +1 -1
  156. package/lib/ui/Carousel.js +175 -175
  157. package/lib/ui/Carousel.js.map +1 -1
  158. package/lib/ui/Checkbox.js +1 -1
  159. package/lib/ui/Command.js +58 -58
  160. package/lib/ui/Command.js.map +1 -1
  161. package/lib/ui/Dialog.js +1 -1
  162. package/lib/ui/Drawer.js +2 -2
  163. package/lib/ui/DropdownMenu.js +1 -1
  164. package/lib/ui/Form.js +1 -1
  165. package/lib/ui/HoverCard.js +1 -1
  166. package/lib/ui/Input.js +1 -1
  167. package/lib/ui/Label.js +2 -2
  168. package/lib/ui/Pagination.js +1 -1
  169. package/lib/ui/Popover.js +1 -1
  170. package/lib/ui/Progress.js +1 -1
  171. package/lib/ui/RadioGroup.js +1 -1
  172. package/lib/ui/ScrollArea.js +1 -1
  173. package/lib/ui/Select.js +1 -1
  174. package/lib/ui/Skeleton.js +1 -1
  175. package/lib/ui/Slider.js +1 -1
  176. package/lib/ui/Switch.js +1 -1
  177. package/lib/ui/SyntaxHighlight.js +6 -4
  178. package/lib/ui/SyntaxHighlight.js.map +1 -1
  179. package/lib/ui/Tabs.js +1 -1
  180. package/lib/ui/Textarea.js +1 -1
  181. package/lib/ui/Toggle.js +2 -2
  182. package/lib/ui/ToggleGroup.js +1 -1
  183. package/lib/ui/Tooltip.js +1 -1
  184. package/lib/ui/util.js +1 -1
  185. package/lib/{useExposedProps-n1u49409.js → useExposedProps-DbIZXspi.js} +2 -2
  186. package/lib/{useExposedProps-n1u49409.js.map → useExposedProps-DbIZXspi.js.map} +1 -1
  187. package/lib/zudoku.auth-auth0.js +31 -28
  188. package/lib/zudoku.auth-auth0.js.map +1 -1
  189. package/lib/zudoku.auth-clerk.js +68 -62
  190. package/lib/zudoku.auth-clerk.js.map +1 -1
  191. package/lib/zudoku.auth-openid.js +483 -475
  192. package/lib/zudoku.auth-openid.js.map +1 -1
  193. package/lib/zudoku.components.js +7 -7
  194. package/lib/zudoku.hooks.js +2 -2
  195. package/lib/zudoku.plugin-api-catalog.js +45 -45
  196. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  197. package/lib/zudoku.plugin-api-keys.js +6 -6
  198. package/lib/zudoku.plugin-custom-pages.js +3 -3
  199. package/lib/zudoku.plugin-markdown.js +28 -25
  200. package/lib/zudoku.plugin-markdown.js.map +1 -1
  201. package/lib/zudoku.plugin-openapi.js +3 -3
  202. package/lib/zudoku.plugin-redirect.js +1 -1
  203. package/lib/zudoku.plugin-search-inkeep.js +27 -26
  204. package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
  205. package/lib/zudoku.plugin-search-pagefind.js +110 -107
  206. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  207. package/package.json +7 -17
  208. package/src/app/main.css +3 -53
  209. package/src/app/main.tsx +0 -7
  210. package/src/lib/authentication/components/SignIn.tsx +35 -2
  211. package/src/lib/authentication/components/SignUp.tsx +35 -1
  212. package/src/lib/components/Markdown.tsx +24 -29
  213. package/src/lib/core/ZudokuContext.ts +0 -4
  214. package/src/lib/errors/ErrorAlert.tsx +1 -1
  215. package/src/lib/plugins/openapi/CollapsibleCode.tsx +2 -5
  216. package/src/lib/plugins/openapi/ParameterListItem.tsx +30 -0
  217. package/src/lib/plugins/openapi/Sidecar.tsx +1 -1
  218. package/src/lib/plugins/openapi/SidecarExamples.tsx +2 -2
  219. package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +7 -4
  220. package/src/lib/plugins/openapi/schema/SchemaView.tsx +1 -6
  221. package/src/lib/plugins/openapi/schema/utils.ts +5 -0
  222. package/src/lib/ui/Callout.tsx +1 -1
  223. package/src/lib/ui/SyntaxHighlight.tsx +182 -18
  224. package/src/lib/util/MdxComponents.tsx +14 -27
  225. package/dist/lib/shiki.d.ts +0 -35
  226. package/dist/lib/shiki.js +0 -103
  227. package/dist/lib/shiki.js.map +0 -1
  228. package/dist/lib/ui/CodeBlock.d.ts +0 -16
  229. package/dist/lib/ui/CodeBlock.js +0 -18
  230. package/dist/lib/ui/CodeBlock.js.map +0 -1
  231. package/dist/vite/plugin-shiki-register.d.ts +0 -3
  232. package/dist/vite/plugin-shiki-register.js +0 -38
  233. package/dist/vite/plugin-shiki-register.js.map +0 -1
  234. package/lib/AuthenticationPlugin-EeQpQI3D.js +0 -55
  235. package/lib/AuthenticationPlugin-EeQpQI3D.js.map +0 -1
  236. package/lib/Markdown-1l-DtDbF.js +0 -7688
  237. package/lib/Markdown-1l-DtDbF.js.map +0 -1
  238. package/lib/MdxPage-Dxbq6lFr.js +0 -84
  239. package/lib/OperationList-DVOyNeno.js.map +0 -1
  240. package/lib/RouteGuard-CGqivwrh.js +0 -733
  241. package/lib/SchemaView-DNKKW3nB.js.map +0 -1
  242. package/lib/Select-m-ITdvFa.js +0 -211
  243. package/lib/SlotletProvider-DhK1Fmm9.js +0 -254
  244. package/lib/SlotletProvider-DhK1Fmm9.js.map +0 -1
  245. package/lib/SyntaxHighlight-CJ6FoYvt.js +0 -9104
  246. package/lib/SyntaxHighlight-CJ6FoYvt.js.map +0 -1
  247. package/lib/hook-CyNmcNr8.js +0 -1443
  248. package/lib/index-BcMPFdRU.js +0 -4975
  249. package/lib/index-CCS3ifKs.js.map +0 -1
  250. package/lib/invariant-D3QcI9fa.js +0 -22
  251. package/lib/mutation-narTVsCe.js +0 -196
  252. package/lib/ui/CodeBlock.js +0 -83
  253. package/lib/ui/CodeBlock.js.map +0 -1
  254. package/src/lib/shiki.ts +0 -129
  255. package/src/lib/ui/CodeBlock.tsx +0 -102
  256. package/src/shiki/langs/abap.js +0 -1
  257. package/src/shiki/langs/actionscript-3.js +0 -1
  258. package/src/shiki/langs/ada.js +0 -1
  259. package/src/shiki/langs/angular-expression.js +0 -1
  260. package/src/shiki/langs/angular-html.js +0 -1
  261. package/src/shiki/langs/angular-inline-style.js +0 -1
  262. package/src/shiki/langs/angular-inline-template.js +0 -1
  263. package/src/shiki/langs/angular-let-declaration.js +0 -1
  264. package/src/shiki/langs/angular-template-blocks.js +0 -1
  265. package/src/shiki/langs/angular-template.js +0 -1
  266. package/src/shiki/langs/angular-ts.js +0 -1
  267. package/src/shiki/langs/apache.js +0 -1
  268. package/src/shiki/langs/apex.js +0 -1
  269. package/src/shiki/langs/apl.js +0 -1
  270. package/src/shiki/langs/applescript.js +0 -1
  271. package/src/shiki/langs/ara.js +0 -1
  272. package/src/shiki/langs/asciidoc.js +0 -1
  273. package/src/shiki/langs/asm.js +0 -1
  274. package/src/shiki/langs/astro.js +0 -1
  275. package/src/shiki/langs/awk.js +0 -1
  276. package/src/shiki/langs/ballerina.js +0 -1
  277. package/src/shiki/langs/bat.js +0 -1
  278. package/src/shiki/langs/beancount.js +0 -1
  279. package/src/shiki/langs/berry.js +0 -1
  280. package/src/shiki/langs/bibtex.js +0 -1
  281. package/src/shiki/langs/bicep.js +0 -1
  282. package/src/shiki/langs/blade.js +0 -1
  283. package/src/shiki/langs/bsl.js +0 -1
  284. package/src/shiki/langs/c.js +0 -1
  285. package/src/shiki/langs/cadence.js +0 -1
  286. package/src/shiki/langs/cairo.js +0 -1
  287. package/src/shiki/langs/clarity.js +0 -1
  288. package/src/shiki/langs/clojure.js +0 -1
  289. package/src/shiki/langs/cmake.js +0 -1
  290. package/src/shiki/langs/cobol.js +0 -1
  291. package/src/shiki/langs/codeowners.js +0 -1
  292. package/src/shiki/langs/codeql.js +0 -1
  293. package/src/shiki/langs/coffee.js +0 -1
  294. package/src/shiki/langs/common-lisp.js +0 -1
  295. package/src/shiki/langs/coq.js +0 -1
  296. package/src/shiki/langs/cpp-macro.js +0 -1
  297. package/src/shiki/langs/cpp.js +0 -1
  298. package/src/shiki/langs/crystal.js +0 -1
  299. package/src/shiki/langs/csharp.js +0 -1
  300. package/src/shiki/langs/css.js +0 -1
  301. package/src/shiki/langs/csv.js +0 -1
  302. package/src/shiki/langs/cue.js +0 -1
  303. package/src/shiki/langs/cypher.js +0 -1
  304. package/src/shiki/langs/d.js +0 -1
  305. package/src/shiki/langs/dart.js +0 -1
  306. package/src/shiki/langs/dax.js +0 -1
  307. package/src/shiki/langs/desktop.js +0 -1
  308. package/src/shiki/langs/diff.js +0 -1
  309. package/src/shiki/langs/docker.js +0 -1
  310. package/src/shiki/langs/dotenv.js +0 -1
  311. package/src/shiki/langs/dream-maker.js +0 -1
  312. package/src/shiki/langs/edge.js +0 -1
  313. package/src/shiki/langs/elixir.js +0 -1
  314. package/src/shiki/langs/elm.js +0 -1
  315. package/src/shiki/langs/emacs-lisp.js +0 -1
  316. package/src/shiki/langs/erb.js +0 -1
  317. package/src/shiki/langs/erlang.js +0 -1
  318. package/src/shiki/langs/es-tag-css.js +0 -1
  319. package/src/shiki/langs/es-tag-glsl.js +0 -1
  320. package/src/shiki/langs/es-tag-html.js +0 -1
  321. package/src/shiki/langs/es-tag-sql.js +0 -1
  322. package/src/shiki/langs/es-tag-xml.js +0 -1
  323. package/src/shiki/langs/fennel.js +0 -1
  324. package/src/shiki/langs/fish.js +0 -1
  325. package/src/shiki/langs/fluent.js +0 -1
  326. package/src/shiki/langs/fortran-fixed-form.js +0 -1
  327. package/src/shiki/langs/fortran-free-form.js +0 -1
  328. package/src/shiki/langs/fsharp.js +0 -1
  329. package/src/shiki/langs/gdresource.js +0 -1
  330. package/src/shiki/langs/gdscript.js +0 -1
  331. package/src/shiki/langs/gdshader.js +0 -1
  332. package/src/shiki/langs/genie.js +0 -1
  333. package/src/shiki/langs/gherkin.js +0 -1
  334. package/src/shiki/langs/git-commit.js +0 -1
  335. package/src/shiki/langs/git-rebase.js +0 -1
  336. package/src/shiki/langs/gleam.js +0 -1
  337. package/src/shiki/langs/glimmer-js.js +0 -1
  338. package/src/shiki/langs/glimmer-ts.js +0 -1
  339. package/src/shiki/langs/glsl.js +0 -1
  340. package/src/shiki/langs/gnuplot.js +0 -1
  341. package/src/shiki/langs/go.js +0 -1
  342. package/src/shiki/langs/graphql.js +0 -1
  343. package/src/shiki/langs/groovy.js +0 -1
  344. package/src/shiki/langs/hack.js +0 -1
  345. package/src/shiki/langs/haml.js +0 -1
  346. package/src/shiki/langs/handlebars.js +0 -1
  347. package/src/shiki/langs/haskell.js +0 -1
  348. package/src/shiki/langs/haxe.js +0 -1
  349. package/src/shiki/langs/hcl.js +0 -1
  350. package/src/shiki/langs/hjson.js +0 -1
  351. package/src/shiki/langs/hlsl.js +0 -1
  352. package/src/shiki/langs/html-derivative.js +0 -1
  353. package/src/shiki/langs/html.js +0 -1
  354. package/src/shiki/langs/http.js +0 -1
  355. package/src/shiki/langs/hxml.js +0 -1
  356. package/src/shiki/langs/hy.js +0 -1
  357. package/src/shiki/langs/imba.js +0 -1
  358. package/src/shiki/langs/ini.js +0 -1
  359. package/src/shiki/langs/java.js +0 -1
  360. package/src/shiki/langs/javascript.js +0 -1
  361. package/src/shiki/langs/jinja-html.js +0 -1
  362. package/src/shiki/langs/jinja.js +0 -1
  363. package/src/shiki/langs/jison.js +0 -1
  364. package/src/shiki/langs/json.js +0 -1
  365. package/src/shiki/langs/json5.js +0 -1
  366. package/src/shiki/langs/jsonc.js +0 -1
  367. package/src/shiki/langs/jsonl.js +0 -1
  368. package/src/shiki/langs/jsonnet.js +0 -1
  369. package/src/shiki/langs/jssm.js +0 -1
  370. package/src/shiki/langs/jsx.js +0 -1
  371. package/src/shiki/langs/julia.js +0 -1
  372. package/src/shiki/langs/kotlin.js +0 -1
  373. package/src/shiki/langs/kusto.js +0 -1
  374. package/src/shiki/langs/latex.js +0 -1
  375. package/src/shiki/langs/lean.js +0 -1
  376. package/src/shiki/langs/less.js +0 -1
  377. package/src/shiki/langs/liquid.js +0 -1
  378. package/src/shiki/langs/llvm.js +0 -1
  379. package/src/shiki/langs/log.js +0 -1
  380. package/src/shiki/langs/logo.js +0 -1
  381. package/src/shiki/langs/lua.js +0 -1
  382. package/src/shiki/langs/luau.js +0 -1
  383. package/src/shiki/langs/make.js +0 -1
  384. package/src/shiki/langs/markdown-vue.js +0 -1
  385. package/src/shiki/langs/markdown.js +0 -1
  386. package/src/shiki/langs/marko.js +0 -1
  387. package/src/shiki/langs/matlab.js +0 -1
  388. package/src/shiki/langs/mdc.js +0 -1
  389. package/src/shiki/langs/mdx.js +0 -1
  390. package/src/shiki/langs/mermaid.js +0 -1
  391. package/src/shiki/langs/mipsasm.js +0 -1
  392. package/src/shiki/langs/mojo.js +0 -1
  393. package/src/shiki/langs/move.js +0 -1
  394. package/src/shiki/langs/narrat.js +0 -1
  395. package/src/shiki/langs/nextflow.js +0 -1
  396. package/src/shiki/langs/nginx.js +0 -1
  397. package/src/shiki/langs/nim.js +0 -1
  398. package/src/shiki/langs/nix.js +0 -1
  399. package/src/shiki/langs/nushell.js +0 -1
  400. package/src/shiki/langs/objective-c.js +0 -1
  401. package/src/shiki/langs/objective-cpp.js +0 -1
  402. package/src/shiki/langs/ocaml.js +0 -1
  403. package/src/shiki/langs/pascal.js +0 -1
  404. package/src/shiki/langs/perl.js +0 -1
  405. package/src/shiki/langs/php.js +0 -1
  406. package/src/shiki/langs/plsql.js +0 -1
  407. package/src/shiki/langs/po.js +0 -1
  408. package/src/shiki/langs/polar.js +0 -1
  409. package/src/shiki/langs/postcss.js +0 -1
  410. package/src/shiki/langs/powerquery.js +0 -1
  411. package/src/shiki/langs/powershell.js +0 -1
  412. package/src/shiki/langs/prisma.js +0 -1
  413. package/src/shiki/langs/prolog.js +0 -1
  414. package/src/shiki/langs/proto.js +0 -1
  415. package/src/shiki/langs/pug.js +0 -1
  416. package/src/shiki/langs/puppet.js +0 -1
  417. package/src/shiki/langs/purescript.js +0 -1
  418. package/src/shiki/langs/python.js +0 -1
  419. package/src/shiki/langs/qml.js +0 -1
  420. package/src/shiki/langs/qmldir.js +0 -1
  421. package/src/shiki/langs/qss.js +0 -1
  422. package/src/shiki/langs/r.js +0 -1
  423. package/src/shiki/langs/racket.js +0 -1
  424. package/src/shiki/langs/raku.js +0 -1
  425. package/src/shiki/langs/razor.js +0 -1
  426. package/src/shiki/langs/reg.js +0 -1
  427. package/src/shiki/langs/regexp.js +0 -1
  428. package/src/shiki/langs/rel.js +0 -1
  429. package/src/shiki/langs/riscv.js +0 -1
  430. package/src/shiki/langs/rst.js +0 -1
  431. package/src/shiki/langs/ruby.js +0 -1
  432. package/src/shiki/langs/rust.js +0 -1
  433. package/src/shiki/langs/sas.js +0 -1
  434. package/src/shiki/langs/sass.js +0 -1
  435. package/src/shiki/langs/scala.js +0 -1
  436. package/src/shiki/langs/scheme.js +0 -1
  437. package/src/shiki/langs/scss.js +0 -1
  438. package/src/shiki/langs/sdbl.js +0 -1
  439. package/src/shiki/langs/shaderlab.js +0 -1
  440. package/src/shiki/langs/shellscript.js +0 -1
  441. package/src/shiki/langs/shellsession.js +0 -1
  442. package/src/shiki/langs/smalltalk.js +0 -1
  443. package/src/shiki/langs/solidity.js +0 -1
  444. package/src/shiki/langs/soy.js +0 -1
  445. package/src/shiki/langs/sparql.js +0 -1
  446. package/src/shiki/langs/splunk.js +0 -1
  447. package/src/shiki/langs/sql.js +0 -1
  448. package/src/shiki/langs/ssh-config.js +0 -1
  449. package/src/shiki/langs/stata.js +0 -1
  450. package/src/shiki/langs/stylus.js +0 -1
  451. package/src/shiki/langs/svelte.js +0 -1
  452. package/src/shiki/langs/swift.js +0 -1
  453. package/src/shiki/langs/system-verilog.js +0 -1
  454. package/src/shiki/langs/systemd.js +0 -1
  455. package/src/shiki/langs/talonscript.js +0 -1
  456. package/src/shiki/langs/tasl.js +0 -1
  457. package/src/shiki/langs/tcl.js +0 -1
  458. package/src/shiki/langs/templ.js +0 -1
  459. package/src/shiki/langs/terraform.js +0 -1
  460. package/src/shiki/langs/tex.js +0 -1
  461. package/src/shiki/langs/toml.js +0 -1
  462. package/src/shiki/langs/ts-tags.js +0 -1
  463. package/src/shiki/langs/tsv.js +0 -1
  464. package/src/shiki/langs/tsx.js +0 -1
  465. package/src/shiki/langs/turtle.js +0 -1
  466. package/src/shiki/langs/twig.js +0 -1
  467. package/src/shiki/langs/typescript.js +0 -1
  468. package/src/shiki/langs/typespec.js +0 -1
  469. package/src/shiki/langs/typst.js +0 -1
  470. package/src/shiki/langs/v.js +0 -1
  471. package/src/shiki/langs/vala.js +0 -1
  472. package/src/shiki/langs/vb.js +0 -1
  473. package/src/shiki/langs/verilog.js +0 -1
  474. package/src/shiki/langs/vhdl.js +0 -1
  475. package/src/shiki/langs/viml.js +0 -1
  476. package/src/shiki/langs/vue-directives.js +0 -1
  477. package/src/shiki/langs/vue-html.js +0 -1
  478. package/src/shiki/langs/vue-interpolations.js +0 -1
  479. package/src/shiki/langs/vue-sfc-style-variable-injection.js +0 -1
  480. package/src/shiki/langs/vue.js +0 -1
  481. package/src/shiki/langs/vyper.js +0 -1
  482. package/src/shiki/langs/wasm.js +0 -1
  483. package/src/shiki/langs/wenyan.js +0 -1
  484. package/src/shiki/langs/wgsl.js +0 -1
  485. package/src/shiki/langs/wikitext.js +0 -1
  486. package/src/shiki/langs/wit.js +0 -1
  487. package/src/shiki/langs/wolfram.js +0 -1
  488. package/src/shiki/langs/xml.js +0 -1
  489. package/src/shiki/langs/xsl.js +0 -1
  490. package/src/shiki/langs/yaml.js +0 -1
  491. package/src/shiki/langs/zenscript.js +0 -1
  492. package/src/shiki/langs/zig.js +0 -1
  493. package/src/shiki/themes/andromeeda.js +0 -1
  494. package/src/shiki/themes/aurora-x.js +0 -1
  495. package/src/shiki/themes/ayu-dark.js +0 -1
  496. package/src/shiki/themes/catppuccin-frappe.js +0 -1
  497. package/src/shiki/themes/catppuccin-latte.js +0 -1
  498. package/src/shiki/themes/catppuccin-macchiato.js +0 -1
  499. package/src/shiki/themes/catppuccin-mocha.js +0 -1
  500. package/src/shiki/themes/dark-plus.js +0 -1
  501. package/src/shiki/themes/dracula-soft.js +0 -1
  502. package/src/shiki/themes/dracula.js +0 -1
  503. package/src/shiki/themes/everforest-dark.js +0 -1
  504. package/src/shiki/themes/everforest-light.js +0 -1
  505. package/src/shiki/themes/github-dark-default.js +0 -1
  506. package/src/shiki/themes/github-dark-dimmed.js +0 -1
  507. package/src/shiki/themes/github-dark-high-contrast.js +0 -1
  508. package/src/shiki/themes/github-dark.js +0 -1
  509. package/src/shiki/themes/github-light-default.js +0 -1
  510. package/src/shiki/themes/github-light-high-contrast.js +0 -1
  511. package/src/shiki/themes/github-light.js +0 -1
  512. package/src/shiki/themes/gruvbox-dark-hard.js +0 -1
  513. package/src/shiki/themes/gruvbox-dark-medium.js +0 -1
  514. package/src/shiki/themes/gruvbox-dark-soft.js +0 -1
  515. package/src/shiki/themes/gruvbox-light-hard.js +0 -1
  516. package/src/shiki/themes/gruvbox-light-medium.js +0 -1
  517. package/src/shiki/themes/gruvbox-light-soft.js +0 -1
  518. package/src/shiki/themes/houston.js +0 -1
  519. package/src/shiki/themes/kanagawa-dragon.js +0 -1
  520. package/src/shiki/themes/kanagawa-lotus.js +0 -1
  521. package/src/shiki/themes/kanagawa-wave.js +0 -1
  522. package/src/shiki/themes/laserwave.js +0 -1
  523. package/src/shiki/themes/light-plus.js +0 -1
  524. package/src/shiki/themes/material-theme-darker.js +0 -1
  525. package/src/shiki/themes/material-theme-lighter.js +0 -1
  526. package/src/shiki/themes/material-theme-ocean.js +0 -1
  527. package/src/shiki/themes/material-theme-palenight.js +0 -1
  528. package/src/shiki/themes/material-theme.js +0 -1
  529. package/src/shiki/themes/min-dark.js +0 -1
  530. package/src/shiki/themes/min-light.js +0 -1
  531. package/src/shiki/themes/monokai.js +0 -1
  532. package/src/shiki/themes/night-owl.js +0 -1
  533. package/src/shiki/themes/nord.js +0 -1
  534. package/src/shiki/themes/one-dark-pro.js +0 -1
  535. package/src/shiki/themes/one-light.js +0 -1
  536. package/src/shiki/themes/plastic.js +0 -1
  537. package/src/shiki/themes/poimandres.js +0 -1
  538. package/src/shiki/themes/red.js +0 -1
  539. package/src/shiki/themes/rose-pine-dawn.js +0 -1
  540. package/src/shiki/themes/rose-pine-moon.js +0 -1
  541. package/src/shiki/themes/rose-pine.js +0 -1
  542. package/src/shiki/themes/slack-dark.js +0 -1
  543. package/src/shiki/themes/slack-ochin.js +0 -1
  544. package/src/shiki/themes/snazzy-light.js +0 -1
  545. package/src/shiki/themes/solarized-dark.js +0 -1
  546. package/src/shiki/themes/solarized-light.js +0 -1
  547. package/src/shiki/themes/synthwave-84.js +0 -1
  548. package/src/shiki/themes/tokyo-night.js +0 -1
  549. package/src/shiki/themes/vesper.js +0 -1
  550. package/src/shiki/themes/vitesse-black.js +0 -1
  551. package/src/shiki/themes/vitesse-dark.js +0 -1
  552. package/src/shiki/themes/vitesse-light.js +0 -1
@@ -1,5 +1,13 @@
1
1
  import { useEffect } from "react";
2
- import { useSearchParams } from "react-router";
2
+ import { Link, useSearchParams } from "react-router";
3
+ import { Button } from "zudoku/ui/Button.js";
4
+ import {
5
+ Card,
6
+ CardContent,
7
+ CardDescription,
8
+ CardHeader,
9
+ CardTitle,
10
+ } from "zudoku/ui/Card.js";
3
11
  import { useZudoku } from "../../components/context/ZudokuContext.js";
4
12
 
5
13
  export const SignIn = () => {
@@ -11,5 +19,30 @@ export const SignIn = () => {
11
19
  });
12
20
  }, [context.authentication, search]);
13
21
 
14
- return null;
22
+ return (
23
+ <div className="flex items-center justify-center mt-8">
24
+ <Card className="max-w-md w-full">
25
+ <CardHeader>
26
+ <CardTitle className="text-lg">Sign in</CardTitle>
27
+ <CardDescription>
28
+ You're being redirected to our secure login provider to complete
29
+ your sign-in process.
30
+ </CardDescription>
31
+ </CardHeader>
32
+ <CardContent>
33
+ <div className="flex flex-col gap-2 justify-center">
34
+ <Button
35
+ onClick={() => context.authentication?.signIn()}
36
+ variant="default"
37
+ >
38
+ Login
39
+ </Button>
40
+ <Button variant="link" className="text-muted-foreground" asChild>
41
+ <Link to="/">Go home</Link>
42
+ </Button>
43
+ </div>
44
+ </CardContent>
45
+ </Card>
46
+ </div>
47
+ );
15
48
  };
@@ -1,11 +1,45 @@
1
1
  import { useEffect } from "react";
2
+ import { Button, Link } from "zudoku/components";
3
+ import {
4
+ Card,
5
+ CardContent,
6
+ CardDescription,
7
+ CardHeader,
8
+ CardTitle,
9
+ } from "zudoku/ui/Card.js";
2
10
  import { useZudoku } from "../../components/context/ZudokuContext.js";
3
11
 
4
12
  export const SignUp = () => {
5
13
  const context = useZudoku();
14
+
6
15
  useEffect(() => {
7
16
  void (context.authentication?.signUp() ?? context.authentication?.signIn());
8
17
  }, [context.authentication]);
9
18
 
10
- return null;
19
+ return (
20
+ <div className="flex items-center justify-center mt-8">
21
+ <Card className="max-w-md w-full">
22
+ <CardHeader>
23
+ <CardTitle className="text-lg">Sign up</CardTitle>
24
+ <CardDescription>
25
+ You're being redirected to our secure login provider to complete
26
+ your sign up process.
27
+ </CardDescription>
28
+ </CardHeader>
29
+ <CardContent>
30
+ <div className="flex flex-col gap-2 justify-center">
31
+ <Button
32
+ onClick={() => context.authentication?.signIn()}
33
+ variant="default"
34
+ >
35
+ Register
36
+ </Button>
37
+ <Button variant="link" className="text-muted-foreground" asChild>
38
+ <Link to="/">Go home</Link>
39
+ </Button>
40
+ </div>
41
+ </CardContent>
42
+ </Card>
43
+ </div>
44
+ );
11
45
  };
@@ -1,42 +1,37 @@
1
1
  import { memo } from "react";
2
- import { MarkdownHooks, type Components } from "react-markdown";
2
+ import rehypeRaw from "rehype-raw";
3
3
  import remarkGfm from "remark-gfm";
4
- import { createConfiguredShikiRehypePlugins } from "../shiki.js";
4
+ import { visit } from "unist-util-visit";
5
5
  import { MdxComponents } from "../util/MdxComponents.js";
6
- import { useZudoku } from "./context/ZudokuContext.js";
6
+ import { ReactMarkdown } from "./ReactMarkdown.js";
7
+
8
+ // same as in packages/dev-portal/framework/vite.ts
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ const rehypeCodeBlockPlugin = () => (tree: any) => {
11
+ visit(tree, "element", (node, _index, parent) => {
12
+ if (node.tagName === "code") {
13
+ node.properties.inline = String(parent?.tagName !== "pre");
14
+ }
15
+ });
16
+ };
7
17
 
8
18
  const remarkPlugins = [remarkGfm];
19
+ const rehypePlugins = [rehypeCodeBlockPlugin, rehypeRaw];
9
20
 
10
21
  // other styles are defined in main.css .prose
11
22
  export const ProseClasses = "prose dark:prose-invert prose-neutral";
12
23
 
13
24
  export const Markdown = memo(
14
- ({
15
- content,
16
- className,
17
- components,
18
- }: {
19
- content: string;
20
- className?: string;
21
- components?: Components;
22
- }) => {
23
- const { syntaxHighlighting } = useZudoku().options;
24
- const rehypePlugins = createConfiguredShikiRehypePlugins(
25
- syntaxHighlighting?.themes,
26
- );
27
-
28
- return (
29
- <div className={className}>
30
- <MarkdownHooks
31
- remarkPlugins={remarkPlugins}
32
- rehypePlugins={rehypePlugins}
33
- components={{ ...MdxComponents, ...components }}
34
- >
35
- {content}
36
- </MarkdownHooks>
37
- </div>
38
- );
39
- },
25
+ ({ content, className }: { content: string; className?: string }) => (
26
+ <ReactMarkdown
27
+ remarkPlugins={remarkPlugins}
28
+ rehypePlugins={rehypePlugins}
29
+ components={MdxComponents}
30
+ className={className}
31
+ >
32
+ {content}
33
+ </ReactMarkdown>
34
+ ),
40
35
  );
41
36
 
42
37
  Markdown.displayName = "Markdown";
@@ -2,7 +2,6 @@ import type { QueryClient } from "@tanstack/react-query";
2
2
  import { createNanoEvents } from "nanoevents";
3
3
  import type { ReactNode } from "react";
4
4
  import type { Location } from "react-router";
5
- import type { BundledTheme } from "shiki";
6
5
  import type { z } from "zod";
7
6
  import type {
8
7
  FooterSchema,
@@ -90,9 +89,6 @@ export type ZudokuContextOptions = {
90
89
  };
91
90
  overrides?: ComponentsContextType;
92
91
  protectedRoutes?: string[];
93
- syntaxHighlighting?: {
94
- themes?: { light: BundledTheme; dark: BundledTheme };
95
- };
96
92
  };
97
93
 
98
94
  export class ZudokuContext {
@@ -32,7 +32,7 @@ export function ErrorAlert({ error }: { error: unknown }) {
32
32
  <div>
33
33
  <SyntaxHighlight
34
34
  className="max-h-[400px] border mt-2"
35
- language="js"
35
+ language="jsstacktrace"
36
36
  code={stringError}
37
37
  />
38
38
  </div>
@@ -49,7 +49,7 @@ export const CollapsibleCode = ({
49
49
  )}
50
50
  >
51
51
  {!open && isOverflowing && (
52
- <div className=" absolute inset-0 bg-gradient-to-b from-transparent to-zinc-50/60 dark:to-zinc-950/90 z-10 transition-all group-hover:to-transparent"></div>
52
+ <div className=" absolute inset-0 bg-gradient-to-b from-transparent to-zinc-50/60 dark:to-zinc-950/90 z-10 group-hover:to-transparent"></div>
53
53
  )}
54
54
  <div ref={contentRef}>{children}</div>
55
55
  {!open && isOverflowing && (
@@ -68,10 +68,7 @@ export const CollapsibleCode = ({
68
68
  </CollapsibleContent>
69
69
  {isOverflowing && (
70
70
  <div
71
- className={cn(
72
- "flex justify-center w-full py-2 bg-muted/50",
73
- !open && "hidden",
74
- )}
71
+ className={cn("flex justify-center w-full mb-2", !open && "hidden")}
75
72
  >
76
73
  <CollapsibleTrigger asChild>
77
74
  <Button variant="outline" size="sm">
@@ -1,5 +1,9 @@
1
+ import * as Collapsible from "@radix-ui/react-collapsible";
2
+ import { MinusIcon, PlusIcon } from "lucide-react";
3
+ import { useState } from "react";
1
4
  import { Markdown } from "../../components/Markdown.js";
2
5
  import { type SchemaObject } from "../../oas/graphql/index.js";
6
+ import { Button } from "../../ui/Button.js";
3
7
  import { ColorizedParam } from "./ColorizedParam.js";
4
8
  import type { OperationListItemResult } from "./OperationList.js";
5
9
  import type { ParameterGroup } from "./OperationListItem.js";
@@ -7,6 +11,8 @@ import { ParamInfos } from "./ParamInfos.js";
7
11
  import { EnumValues } from "./components/EnumValues.js";
8
12
  import { SelectOnClick } from "./components/SelectOnClick.js";
9
13
  import { SchemaExampleAndDefault } from "./schema/SchemaExampleAndDefault.js";
14
+ import { SchemaView } from "./schema/SchemaView.js";
15
+ import { isArrayType } from "./schema/utils.js";
10
16
 
11
17
  const getParameterSchema = (
12
18
  parameter: ParameterListItemResult,
@@ -33,6 +39,7 @@ export const ParameterListItem = ({
33
39
  id: string;
34
40
  }) => {
35
41
  const paramSchema = getParameterSchema(parameter);
42
+ const [isOpen, setIsOpen] = useState(false);
36
43
 
37
44
  return (
38
45
  <li className="p-4 bg-border/20 text-sm flex flex-col gap-1.5">
@@ -74,6 +81,29 @@ export const ParameterListItem = ({
74
81
  paramSchema.enum && <EnumValues values={paramSchema.enum} />
75
82
  )}
76
83
  <SchemaExampleAndDefault schema={paramSchema} />
84
+ {(paramSchema.type === "object" || isArrayType(paramSchema)) && (
85
+ <Collapsible.Root
86
+ defaultOpen={false}
87
+ onOpenChange={setIsOpen}
88
+ open={isOpen}
89
+ >
90
+ <Collapsible.Trigger asChild>
91
+ <Button variant="expand" size="sm">
92
+ {isOpen ? <MinusIcon size={12} /> : <PlusIcon size={12} />}
93
+ {isOpen ? "Hide properties" : "Show properties"}
94
+ </Button>
95
+ </Collapsible.Trigger>
96
+ <Collapsible.Content>
97
+ <div className="mt-2">
98
+ <SchemaView
99
+ schema={
100
+ "items" in paramSchema ? paramSchema.items : paramSchema
101
+ }
102
+ />
103
+ </div>
104
+ </Collapsible.Content>
105
+ </Collapsible.Root>
106
+ )}
77
107
  </li>
78
108
  );
79
109
  };
@@ -225,7 +225,7 @@ export const Sidecar = ({
225
225
  <SyntaxHighlight
226
226
  language={selectedLang}
227
227
  noBackground
228
- className="[--scrollbar-color:gray] rounded-none text-xs max-h-[500px] p-2"
228
+ className="[--scrollbar-color:gray] text-xs max-h-[500px] p-2"
229
229
  code={code!}
230
230
  />
231
231
  </CollapsibleCode>
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useMemo, useState } from "react";
2
- import { type SchemaObject } from "../../oas/parser/index.js";
2
+ import { SchemaObject } from "../../oas/parser/index.js";
3
3
  import { SyntaxHighlight } from "../../ui/SyntaxHighlight.js";
4
4
  import { CollapsibleCode } from "./CollapsibleCode.js";
5
5
  import type { OperationListItemResult } from "./OperationList.js";
@@ -97,7 +97,7 @@ export const SidecarExamples = ({
97
97
  <SyntaxHighlight
98
98
  language={language}
99
99
  noBackground
100
- className="[--scrollbar-color:gray] rounded-none text-xs max-h-[500px] p-2"
100
+ className="[--scrollbar-color:gray] text-xs max-h-[500px] p-2"
101
101
  code={formattedExample}
102
102
  />
103
103
  </CollapsibleCode>
@@ -15,6 +15,7 @@ import { SchemaExampleAndDefault } from "./SchemaExampleAndDefault.js";
15
15
  import { SchemaView } from "./SchemaView.js";
16
16
  import {
17
17
  hasLogicalGroupings,
18
+ isArrayType,
18
19
  isCircularRef,
19
20
  isComplexType,
20
21
  LogicalSchemaTypeMap,
@@ -93,7 +94,7 @@ export const SchemaPropertyItem = ({
93
94
  group !== "optional" && (
94
95
  <span className="text-primary">required</span>
95
96
  ),
96
- schema.type === "array" &&
97
+ isArrayType(schema) &&
97
98
  "items" in schema &&
98
99
  isCircularRef(schema.items) && <RecursiveIndicator />,
99
100
  ]}
@@ -110,7 +111,9 @@ export const SchemaPropertyItem = ({
110
111
  )}
111
112
  {schema.enum && <EnumValues values={schema.enum} />}
112
113
  <SchemaExampleAndDefault schema={schema} />
113
- {(hasLogicalGroupings(schema) || isComplexType(schema)) && (
114
+ {(hasLogicalGroupings(schema) ||
115
+ isComplexType(schema) ||
116
+ isArrayType(schema)) && (
114
117
  <Collapsible.Root
115
118
  defaultOpen={defaultOpen}
116
119
  open={isOpen}
@@ -118,7 +121,7 @@ export const SchemaPropertyItem = ({
118
121
  >
119
122
  {showCollapseButton && (
120
123
  <Collapsible.Trigger asChild>
121
- <Button variant="expand" size="sm" className="h-7">
124
+ <Button variant="expand" size="sm">
122
125
  {isOpen ? <MinusIcon size={12} /> : <PlusIcon size={12} />}
123
126
  {!isOpen ? "Show properties" : "Hide properties"}
124
127
  </Button>
@@ -131,7 +134,7 @@ export const SchemaPropertyItem = ({
131
134
  ) : schema.type === "object" ? (
132
135
  <SchemaView schema={schema} />
133
136
  ) : (
134
- schema.type === "array" &&
137
+ isArrayType(schema) &&
135
138
  "items" in schema &&
136
139
  typeof schema.items === "object" &&
137
140
  !isCircularRef(schema.items) && (
@@ -57,12 +57,7 @@ export const SchemaView = ({
57
57
  }
58
58
 
59
59
  if (schema.type === "array" && typeof schema.items === "object") {
60
- return (
61
- <Card className="p-4 space-y-2 text-sm">
62
- <ParamInfos schema={schema} />
63
- <SchemaView schema={schema.items as SchemaObject} />
64
- </Card>
65
- );
60
+ return <SchemaView schema={schema.items as SchemaObject} />;
66
61
  }
67
62
 
68
63
  if (schema.type === "object") {
@@ -7,6 +7,11 @@ export const isBasicType = (
7
7
  typeof type === "string" &&
8
8
  ["string", "number", "boolean", "integer", "null"].includes(type);
9
9
 
10
+ export const isArrayType = (value: SchemaObject) =>
11
+ value.type === "array" ||
12
+ // schema.type might be an array of types, so we need to check if "array" is one of them
13
+ (Array.isArray(value.type) && value.type.includes("array"));
14
+
10
15
  export const isComplexType = (value: SchemaObject) =>
11
16
  (value.type === "object" && Object.keys(value.properties ?? {}).length > 0) ||
12
17
  (value.type === "array" &&
@@ -77,7 +77,7 @@ export const Callout = ({
77
77
  "grid grid-cols-[min-content_1fr] items-baseline grid-rows-[fit-content_1fr] gap-x-4 gap-y-2",
78
78
  !icon && title && "flex flex-col gap-2",
79
79
  "[&_a]:underline [&_a]:decoration-current [&_a]:decoration-from-font [&_a]:underline-offset-4 hover:[&_a]:decoration-1",
80
- "[&_.code-block-wrapper]:border",
80
+ "[&_code]:!bg-gray-50 [&_code]:dark:!bg-gray-800 [&_code]:!border-none",
81
81
  "[&_ul]:list-disc [&_ol]:list-decimal [&_ul]:ps-4 [&_ul>li]:ps-1 [&_ul>li]:my-1",
82
82
  icon && title && "items-center",
83
83
  border,
@@ -1,22 +1,186 @@
1
- import { memo } from "react";
2
- import { useZudoku } from "../components/context/ZudokuContext.js";
3
- import { highlight } from "../shiki.js";
4
- import { CodeBlock, type CodeBlockProps } from "./CodeBlock.js";
5
-
6
- type SyntaxHighlightProps = CodeBlockProps &
7
- ({ code: string; children?: never } | { code?: never; children: string });
8
-
9
- export const SyntaxHighlight = memo(
10
- ({ code, children, ...props }: SyntaxHighlightProps) => {
11
- const { syntaxHighlighting } = useZudoku().options;
12
- const highlightedCode = highlight(
13
- code ?? children,
14
- props.language,
15
- syntaxHighlighting?.themes,
1
+ import {
2
+ Highlight,
3
+ Prism,
4
+ themes,
5
+ type HighlightProps,
6
+ } from "prism-react-renderer";
7
+
8
+ import { CheckIcon, CopyIcon } from "lucide-react";
9
+
10
+ globalThis.Prism = Prism;
11
+ // @ts-expect-error This is untyped
12
+ void import("prismjs/components/prism-bash.min.js");
13
+ // @ts-expect-error This is untyped
14
+ void import("prismjs/components/prism-ruby.min.js");
15
+ // @ts-expect-error This is untyped
16
+ void import("prismjs/components/prism-markup.js");
17
+ // @ts-expect-error This is untyped
18
+ void import("prismjs/components/prism-json.min.js");
19
+ // @ts-expect-error This is untyped
20
+ void import("prismjs/components/prism-java.min.js");
21
+ // @ts-expect-error This is untyped
22
+ void import("prismjs/components/prism-csharp.min.js");
23
+ // @ts-expect-error This is untyped
24
+ void import("prismjs/components/prism-objectivec.min.js");
25
+ // @ts-expect-error This is untyped
26
+ void import("prismjs/components/prism-markdown.min.js");
27
+ // @ts-expect-error This is untyped
28
+ void import("prismjs/components/prism-javascript.min.js");
29
+ // @ts-expect-error This is untyped
30
+ void import("prismjs/components/prism-typescript.min.js");
31
+ // @ts-expect-error This is untyped
32
+ void import("prismjs/components/prism-jsstacktrace.min.js");
33
+
34
+ import { useTheme } from "next-themes";
35
+ import { memo, useState } from "react";
36
+ import { ClientOnly } from "../components/ClientOnly.js";
37
+ import { cn } from "../util/cn.js";
38
+
39
+ export type SyntaxHighlightProps = {
40
+ className?: string;
41
+ noBackground?: boolean;
42
+ wrapLines?: boolean;
43
+ showLanguageIndicator?: boolean;
44
+ language?: string;
45
+ title?: string;
46
+ children?: string;
47
+ code?: string;
48
+ showCopy?: "hover" | "always" | "never";
49
+ showCopyText?: boolean;
50
+ disabled?: boolean;
51
+ } & Omit<HighlightProps, "children" | "language">;
52
+
53
+ const remapLang = {
54
+ mdx: "md",
55
+ } as Record<string, string>;
56
+
57
+ const SyntaxHighlightInner = ({
58
+ language = "plain",
59
+ showCopy = "hover",
60
+ showCopyText,
61
+ title,
62
+ children,
63
+ disabled,
64
+ ...props
65
+ }: SyntaxHighlightProps) => {
66
+ const { resolvedTheme } = useTheme();
67
+ const [isCopied, setIsCopied] = useState(false);
68
+
69
+ const code = children ?? props.code;
70
+
71
+ if (!code) {
72
+ return null;
73
+ }
74
+
75
+ const highlightTheme =
76
+ resolvedTheme === "dark" ? themes.vsDark : themes.github;
77
+
78
+ // hardcoded values from the themes to avoid color flash in SSR
79
+ const themeColorClasses =
80
+ "bg-[#f6f8fa] text-[#393a34] dark:bg-[#1e1e1e] dark:text-[#9cdcfe]";
81
+
82
+ const Wrapper = ({
83
+ children,
84
+ className,
85
+ style,
86
+ }: {
87
+ children: React.ReactNode;
88
+ className?: string;
89
+ style?: React.CSSProperties;
90
+ }) => (
91
+ <div className="relative group">
92
+ {title && (
93
+ <div className="text-xs text-muted-foreground absolute top-2 font-mono border-b w-full pb-2 px-4 ">
94
+ {title}
95
+ </div>
96
+ )}
97
+ <pre
98
+ className={cn(
99
+ "relative scrollbar overflow-x-auto",
100
+ props.className,
101
+ props.noBackground ? "!bg-transparent" : themeColorClasses,
102
+ props.wrapLines && "whitespace-pre-wrap break-words",
103
+ title && "pt-10",
104
+ className,
105
+ )}
106
+ style={style}
107
+ >
108
+ {children}
109
+ </pre>
110
+ {props.showLanguageIndicator && (
111
+ <span className="absolute top-1.5 right-3 text-[11px] font-mono text-muted-foreground transition group-hover:opacity-0">
112
+ {language}
113
+ </span>
114
+ )}
115
+ {showCopy !== "never" && (
116
+ <button
117
+ type="button"
118
+ aria-label="Copy code"
119
+ title="Copy code"
120
+ className={cn(
121
+ "absolute top-2 right-2 p-2 hover:outline hover:outline-border/75 dark:hover:outline-border rounded-md text-sm text-muted-foreground transition",
122
+ showCopy === "hover"
123
+ ? "opacity-0 group-hover:opacity-100 group-hover:bg-zinc-100 group-hover:dark:bg-zinc-700"
124
+ : "bg-zinc-100 dark:bg-zinc-700",
125
+ showCopyText && "flex gap-2 items-center font-medium",
126
+ )}
127
+ disabled={isCopied}
128
+ onClick={() => {
129
+ setIsCopied(true);
130
+ void navigator.clipboard.writeText(code);
131
+ setTimeout(() => setIsCopied(false), 2000);
132
+ }}
133
+ >
134
+ {isCopied ? (
135
+ <CheckIcon
136
+ className="text-emerald-600"
137
+ size={16}
138
+ strokeWidth={2.5}
139
+ absoluteStrokeWidth
140
+ />
141
+ ) : (
142
+ <CopyIcon size={16} />
143
+ )}
144
+ {showCopyText && "Copy"}
145
+ </button>
146
+ )}
147
+ </div>
148
+ );
149
+
150
+ if (disabled) {
151
+ return (
152
+ <ClientOnly fallback={<Wrapper>{code}</Wrapper>}>
153
+ <Wrapper>{code}</Wrapper>
154
+ </ClientOnly>
16
155
  );
156
+ }
157
+
158
+ return (
159
+ <ClientOnly fallback={<Wrapper>{code}</Wrapper>}>
160
+ <Highlight
161
+ theme={highlightTheme}
162
+ language={remapLang[language] ?? language}
163
+ {...props}
164
+ code={code}
165
+ >
166
+ {({ className, style, tokens, getLineProps, getTokenProps }) => (
167
+ <Wrapper className={className} style={style}>
168
+ {tokens.map((line, i) => (
169
+ // eslint-disable-next-line react/no-array-index-key
170
+ <div key={i} {...getLineProps({ line })}>
171
+ {line.map((token, key) => (
172
+ // eslint-disable-next-line react/no-array-index-key
173
+ <span key={key} {...getTokenProps({ token })} />
174
+ ))}
175
+ </div>
176
+ ))}
177
+ </Wrapper>
178
+ )}
179
+ </Highlight>
180
+ </ClientOnly>
181
+ );
182
+ };
17
183
 
18
- return <CodeBlock {...props}>{highlightedCode}</CodeBlock>;
19
- },
20
- );
184
+ export const SyntaxHighlight = memo(SyntaxHighlightInner);
21
185
 
22
186
  SyntaxHighlight.displayName = "SyntaxHighlight";
@@ -1,5 +1,4 @@
1
1
  import { type MDXComponents } from "mdx/types.js";
2
- import { CodeBlock } from "zudoku/ui/CodeBlock.js";
3
2
  import { AnchorLink } from "../components/AnchorLink.js";
4
3
  import { Heading } from "../components/Heading.js";
5
4
  import { InlineCode } from "../components/InlineCode.js";
@@ -7,7 +6,6 @@ import { Button } from "../ui/Button.js";
7
6
  import { Callout } from "../ui/Callout.js";
8
7
  import { Stepper } from "../ui/Stepper.js";
9
8
  import { SyntaxHighlight } from "../ui/SyntaxHighlight.js";
10
- import { cn } from "./cn.js";
11
9
 
12
10
  export type MdxComponentsType = Readonly<MDXComponents> | null | undefined;
13
11
 
@@ -64,37 +62,26 @@ export const MdxComponents = {
64
62
  caution: (props) => <Callout type="caution" {...props} />,
65
63
  warning: (props) => <Callout type="caution" {...props} />,
66
64
  danger: (props) => <Callout type="danger" {...props} />,
67
- pre: (props) => (
68
- <pre className={cn("not-prose my-4", props.className)} {...props} />
69
- ),
70
- code: ({
71
- className,
72
- node: _node,
73
- children,
74
- title,
75
- inline,
76
- showLineNumbers,
77
- ...props
78
- }) => {
79
- const match = className?.match(/language?-(\w+)/);
65
+ pre: ({ children }) => <>{children}</>,
66
+ code: ({ className, children, ...props }) => {
67
+ // `inline` provided by the rehype plugin, as react-markdown removed support for that
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
+ const { inline, title } = props as Record<string, unknown>;
80
70
 
81
- if (inline === "true" || inline === true) {
82
- return (
83
- <InlineCode className={cn(className, "inline")}>{children}</InlineCode>
84
- );
71
+ if (inline === true || inline === "true") {
72
+ return <InlineCode className={className}>{children}</InlineCode>;
85
73
  }
86
74
 
75
+ const match = className?.match(/language?-(\w+)/);
76
+
87
77
  return (
88
- <CodeBlock
78
+ <SyntaxHighlight
89
79
  language={match?.[1]}
80
+ className="rounded-xl p-4 border dark:!bg-foreground/10 dark:border-transparent"
90
81
  showLanguageIndicator
91
- showLineNumbers={showLineNumbers}
92
- title={title}
93
- >
94
- <code className={cn(className, "not-inline")} {...props}>
95
- {children}
96
- </code>
97
- </CodeBlock>
82
+ code={String(children).trim()}
83
+ title={typeof title === "string" ? title : undefined}
84
+ />
98
85
  );
99
86
  },
100
87
  } satisfies MdxComponentsType;