zudoku 0.22.0 → 0.23.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 (335) hide show
  1. package/dist/app/demo.js +1 -1
  2. package/dist/app/demo.js.map +1 -1
  3. package/dist/app/entry.client.js +1 -15
  4. package/dist/app/entry.client.js.map +1 -1
  5. package/dist/app/entry.server.js +1 -2
  6. package/dist/app/entry.server.js.map +1 -1
  7. package/dist/app/main.d.ts +1 -1
  8. package/dist/app/sentry.js +1 -1
  9. package/dist/app/sentry.js.map +1 -1
  10. package/dist/app/standalone.js +1 -1
  11. package/dist/app/standalone.js.map +1 -1
  12. package/dist/cli/cmds/build.js +1 -0
  13. package/dist/cli/cmds/build.js.map +1 -1
  14. package/dist/config/validators/common.d.ts +104 -104
  15. package/dist/config/validators/icon-types.d.ts +1 -1
  16. package/dist/config/validators/validate.d.ts +90 -90
  17. package/dist/lib/authentication/components/CallbackHandler.js +1 -1
  18. package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
  19. package/dist/lib/authentication/components/SignIn.js +1 -1
  20. package/dist/lib/authentication/components/SignIn.js.map +1 -1
  21. package/dist/lib/authentication/components/SignOut.js +1 -1
  22. package/dist/lib/authentication/components/SignOut.js.map +1 -1
  23. package/dist/lib/components/AnchorLink.d.ts +1 -1
  24. package/dist/lib/components/AnchorLink.js +1 -1
  25. package/dist/lib/components/AnchorLink.js.map +1 -1
  26. package/dist/lib/components/Bootstrap.d.ts +1 -2
  27. package/dist/lib/components/Bootstrap.js +3 -3
  28. package/dist/lib/components/Bootstrap.js.map +1 -1
  29. package/dist/lib/components/Header.js +1 -1
  30. package/dist/lib/components/Header.js.map +1 -1
  31. package/dist/lib/components/Layout.js +1 -1
  32. package/dist/lib/components/Layout.js.map +1 -1
  33. package/dist/lib/components/NotFoundPage.js +1 -1
  34. package/dist/lib/components/NotFoundPage.js.map +1 -1
  35. package/dist/lib/components/SlotletProvider.d.ts +2 -2
  36. package/dist/lib/components/TopNavigation.js +1 -1
  37. package/dist/lib/components/TopNavigation.js.map +1 -1
  38. package/dist/lib/components/Zudoku.js +1 -1
  39. package/dist/lib/components/Zudoku.js.map +1 -1
  40. package/dist/lib/components/context/ZudokuContext.js +1 -1
  41. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  42. package/dist/lib/components/index.d.ts +4 -4
  43. package/dist/lib/components/index.js +1 -1
  44. package/dist/lib/components/index.js.map +1 -1
  45. package/dist/lib/components/navigation/SidebarCategory.js +1 -1
  46. package/dist/lib/components/navigation/SidebarCategory.js.map +1 -1
  47. package/dist/lib/components/navigation/SidebarItem.js +1 -1
  48. package/dist/lib/components/navigation/SidebarItem.js.map +1 -1
  49. package/dist/lib/components/navigation/utils.js +1 -1
  50. package/dist/lib/components/navigation/utils.js.map +1 -1
  51. package/dist/lib/core/plugins.d.ts +3 -5
  52. package/dist/lib/core/plugins.js.map +1 -1
  53. package/dist/lib/errors/RouterError.js +1 -1
  54. package/dist/lib/errors/RouterError.js.map +1 -1
  55. package/dist/lib/plugins/api-keys/CreateApiKey.js +1 -1
  56. package/dist/lib/plugins/api-keys/CreateApiKey.js.map +1 -1
  57. package/dist/lib/plugins/api-keys/ProtectedRoute.js +1 -1
  58. package/dist/lib/plugins/api-keys/ProtectedRoute.js.map +1 -1
  59. package/dist/lib/plugins/api-keys/SettingsApiKeys.js +1 -1
  60. package/dist/lib/plugins/api-keys/SettingsApiKeys.js.map +1 -1
  61. package/dist/lib/plugins/markdown/MdxPage.js +1 -1
  62. package/dist/lib/plugins/markdown/MdxPage.js.map +1 -1
  63. package/dist/lib/plugins/markdown/index.d.ts +1 -0
  64. package/dist/lib/plugins/markdown/index.js.map +1 -1
  65. package/dist/lib/plugins/openapi/Route.js +1 -1
  66. package/dist/lib/plugins/openapi/Route.js.map +1 -1
  67. package/dist/lib/plugins/openapi/Sidecar.js +1 -1
  68. package/dist/lib/plugins/openapi/Sidecar.js.map +1 -1
  69. package/dist/lib/plugins/openapi/index.js +1 -1
  70. package/dist/lib/plugins/openapi/index.js.map +1 -1
  71. package/dist/lib/plugins/redirect/index.js +1 -1
  72. package/dist/lib/plugins/redirect/index.js.map +1 -1
  73. package/dist/lib/util/MdxComponents.d.ts +16 -16
  74. package/dist/lib/util/MdxComponents.js +1 -3
  75. package/dist/lib/util/MdxComponents.js.map +1 -1
  76. package/dist/lib/util/createVariantComponent.d.ts +2 -2
  77. package/dist/lib/util/useExposedProps.js +1 -1
  78. package/dist/lib/util/useExposedProps.js.map +1 -1
  79. package/dist/lib/util/useOnScreen.d.ts +1 -1
  80. package/dist/lib/util/useScrollToAnchor.js +1 -1
  81. package/dist/lib/util/useScrollToAnchor.js.map +1 -1
  82. package/dist/lib/util/useScrollToTop.js +1 -1
  83. package/dist/lib/util/useScrollToTop.js.map +1 -1
  84. package/dist/vite/config.js +15 -8
  85. package/dist/vite/config.js.map +1 -1
  86. package/dist/vite/css/collect.d.ts +2 -0
  87. package/dist/vite/css/collect.js +27 -0
  88. package/dist/vite/css/collect.js.map +1 -0
  89. package/dist/vite/css/plugin.d.ts +5 -0
  90. package/dist/vite/css/plugin.js +79 -0
  91. package/dist/vite/css/plugin.js.map +1 -0
  92. package/dist/vite/dev-server.js +7 -3
  93. package/dist/vite/dev-server.js.map +1 -1
  94. package/dist/vite/plugin-mdx.js +2 -0
  95. package/dist/vite/plugin-mdx.js.map +1 -1
  96. package/dist/vite/plugin.js +4 -0
  97. package/dist/vite/plugin.js.map +1 -1
  98. package/lib/{AnchorLink-BR0MvI7n.js → AnchorLink-DFZZbmvr.js} +13 -14
  99. package/lib/AnchorLink-DFZZbmvr.js.map +1 -0
  100. package/lib/{AuthenticationPlugin-D0Em0SwR.js → AuthenticationPlugin-DQy635W9.js} +15 -16
  101. package/lib/AuthenticationPlugin-DQy635W9.js.map +1 -0
  102. package/lib/{Button-jK0EsymC.js → Button-DeAoTouo.js} +4 -4
  103. package/lib/{Button-jK0EsymC.js.map → Button-DeAoTouo.js.map} +1 -1
  104. package/lib/{CategoryHeading-Bb9dqxD3.js → CategoryHeading-CBconmtI.js} +3 -3
  105. package/lib/{CategoryHeading-Bb9dqxD3.js.map → CategoryHeading-CBconmtI.js.map} +1 -1
  106. package/lib/ClientOnly-E7hGysn1.js.map +1 -1
  107. package/lib/{Dialog-k70Qfukb.js → Dialog-Bxv1yEIg.js} +3 -3
  108. package/lib/{Dialog-k70Qfukb.js.map → Dialog-Bxv1yEIg.js.map} +1 -1
  109. package/lib/{Markdown-CRsmPPfY.js → Markdown-CZDLNOFc.js} +3080 -3058
  110. package/lib/{Markdown-CRsmPPfY.js.map → Markdown-CZDLNOFc.js.map} +1 -1
  111. package/lib/{MdxPage-Wp8QU0-q.js → MdxPage-CBa4X6L5.js} +9 -9
  112. package/lib/MdxPage-CBa4X6L5.js.map +1 -0
  113. package/lib/OperationList-Bj-6EKhp.js +4889 -0
  114. package/lib/{OperationList-u8xHU9-b.js.map → OperationList-Bj-6EKhp.js.map} +1 -1
  115. package/lib/Route-C9cYcP-j.js +11 -0
  116. package/lib/Route-C9cYcP-j.js.map +1 -0
  117. package/lib/{Select-O9ZM3ZgX.js → Select-Bb_Hqc70.js} +5 -5
  118. package/lib/{Select-O9ZM3ZgX.js.map → Select-Bb_Hqc70.js.map} +1 -1
  119. package/lib/{SidebarBadge-DxFJcJ6V.js → SidebarBadge-Bm793GDY.js} +3 -3
  120. package/lib/{SidebarBadge-DxFJcJ6V.js.map → SidebarBadge-Bm793GDY.js.map} +1 -1
  121. package/lib/SlotletProvider-pfc9oejW.js +221 -0
  122. package/lib/SlotletProvider-pfc9oejW.js.map +1 -0
  123. package/lib/{Spinner-3cQDBVGr.js → Spinner-DuxJLLNE.js} +2 -2
  124. package/lib/{Spinner-3cQDBVGr.js.map → Spinner-DuxJLLNE.js.map} +1 -1
  125. package/lib/{SyntaxHighlight-C31iouiO.js → SyntaxHighlight-Bz-lOJtH.js} +8 -10
  126. package/lib/{SyntaxHighlight-C31iouiO.js.map → SyntaxHighlight-Bz-lOJtH.js.map} +1 -1
  127. package/lib/assets/{index-B_Jk_Yzp.js → index-C7jnHK4b.js} +218 -197
  128. package/lib/assets/index-C7jnHK4b.js.map +1 -0
  129. package/lib/assets/{worker-C_2va8B8.js → worker-BmEAZjUP.js} +5249 -4922
  130. package/lib/assets/worker-BmEAZjUP.js.map +1 -0
  131. package/lib/chunk-D52XG6IA-Dl7HLe6j.js +1823 -0
  132. package/lib/chunk-D52XG6IA-Dl7HLe6j.js.map +1 -0
  133. package/lib/{cn-BmFQLtkS.js → cn-qaFjX9_3.js} +2 -2
  134. package/lib/cn-qaFjX9_3.js.map +1 -0
  135. package/lib/{context-D1nXWxm7.js → context-h_UkBLvr.js} +2 -2
  136. package/lib/{context-D1nXWxm7.js.map → context-h_UkBLvr.js.map} +1 -1
  137. package/lib/{createServer-BCAHdrpE.js → createServer-BVFp6Bl3.js} +4521 -4195
  138. package/lib/createServer-BVFp6Bl3.js.map +1 -0
  139. package/lib/{hook-hEqe7fPB.js → hook-DMHiUaIV.js} +3 -3
  140. package/lib/{hook-hEqe7fPB.js.map → hook-DMHiUaIV.js.map} +1 -1
  141. package/lib/{index-CmdLGbbk.js → index-B6rTMjdI.js} +47 -47
  142. package/lib/{index-CmdLGbbk.js.map → index-B6rTMjdI.js.map} +1 -1
  143. package/lib/{index-CkwDvuPt.js → index-CBXSgjaE.js} +259 -238
  144. package/lib/index-CBXSgjaE.js.map +1 -0
  145. package/lib/index-CPNSgwSb.js +36 -0
  146. package/lib/index-CPNSgwSb.js.map +1 -0
  147. package/lib/index-LNp6rxyU.js.map +1 -1
  148. package/lib/index.esm-BSV1C092.js +692 -0
  149. package/lib/{index.esm-Bm8pj-bc.js.map → index.esm-BSV1C092.js.map} +1 -1
  150. package/lib/index.esm-BnnBRKJX.js +1214 -0
  151. package/lib/index.esm-BnnBRKJX.js.map +1 -0
  152. package/lib/invariant-Caa8-XvF.js.map +1 -1
  153. package/lib/jsx-runtime-Dx-03ztt.js +446 -0
  154. package/lib/jsx-runtime-Dx-03ztt.js.map +1 -0
  155. package/lib/object_hash-BNWPnMN9.js +787 -0
  156. package/lib/object_hash-BNWPnMN9.js.map +1 -0
  157. package/lib/post-processors/removeExtensions.js.map +1 -1
  158. package/lib/post-processors/removePaths.js.map +1 -1
  159. package/lib/post-processors/traverse.js.map +1 -1
  160. package/lib/prism-csharp.min-DUwvItt4.js +63 -0
  161. package/lib/{prism-csharp.min-Yizuc34Y.js.map → prism-csharp.min-DUwvItt4.js.map} +1 -1
  162. package/lib/prism-java.min-BtgBR4yd.js +35 -0
  163. package/lib/{prism-java.min-d5iT_mOd.js.map → prism-java.min-BtgBR4yd.js.map} +1 -1
  164. package/lib/prism-markup-BNGj0Tvm.js.map +1 -1
  165. package/lib/prism-ruby.min-DeDXCp1r.js +38 -0
  166. package/lib/{prism-ruby.min-C7LwcKyz.js.map → prism-ruby.min-DeDXCp1r.js.map} +1 -1
  167. package/lib/prism-typescript.min-CD7H2IYQ.js +34 -0
  168. package/lib/{prism-typescript.min-oSVeWCAd.js.map → prism-typescript.min-CD7H2IYQ.js.map} +1 -1
  169. package/lib/state-CFQsUZUP.js +202 -0
  170. package/lib/state-CFQsUZUP.js.map +1 -0
  171. package/lib/ui/Accordion.js +2 -2
  172. package/lib/ui/Accordion.js.map +1 -1
  173. package/lib/ui/ActionButton.js +4 -4
  174. package/lib/ui/ActionButton.js.map +1 -1
  175. package/lib/ui/Alert.js +3 -3
  176. package/lib/ui/Alert.js.map +1 -1
  177. package/lib/ui/AlertDialog.js +2 -2
  178. package/lib/ui/AlertDialog.js.map +1 -1
  179. package/lib/ui/Badge.js +3 -3
  180. package/lib/ui/Badge.js.map +1 -1
  181. package/lib/ui/Breadcrumb.js +2 -2
  182. package/lib/ui/Breadcrumb.js.map +1 -1
  183. package/lib/ui/Button.js +3 -3
  184. package/lib/ui/Button.js.map +1 -1
  185. package/lib/ui/Callout.js +2 -2
  186. package/lib/ui/Callout.js.map +1 -1
  187. package/lib/ui/Card.js +2 -2
  188. package/lib/ui/Card.js.map +1 -1
  189. package/lib/ui/Carousel.js +407 -401
  190. package/lib/ui/Carousel.js.map +1 -1
  191. package/lib/ui/Checkbox.js +2 -2
  192. package/lib/ui/Checkbox.js.map +1 -1
  193. package/lib/ui/Command.js +111 -108
  194. package/lib/ui/Command.js.map +1 -1
  195. package/lib/ui/Dialog.js +2 -2
  196. package/lib/ui/Dialog.js.map +1 -1
  197. package/lib/ui/Drawer.js +2 -2
  198. package/lib/ui/Drawer.js.map +1 -1
  199. package/lib/ui/DropdownMenu.js +2 -2
  200. package/lib/ui/DropdownMenu.js.map +1 -1
  201. package/lib/ui/Form.js +3 -3
  202. package/lib/ui/Form.js.map +1 -1
  203. package/lib/ui/HoverCard.js +2 -2
  204. package/lib/ui/Input.js +2 -2
  205. package/lib/ui/Input.js.map +1 -1
  206. package/lib/ui/Label.js +3 -3
  207. package/lib/ui/Pagination.js +2 -2
  208. package/lib/ui/Pagination.js.map +1 -1
  209. package/lib/ui/Popover.js +2 -2
  210. package/lib/ui/Popover.js.map +1 -1
  211. package/lib/ui/Progress.js +2 -2
  212. package/lib/ui/Progress.js.map +1 -1
  213. package/lib/ui/RadioGroup.js +2 -2
  214. package/lib/ui/RadioGroup.js.map +1 -1
  215. package/lib/ui/ScrollArea.js +2 -2
  216. package/lib/ui/ScrollArea.js.map +1 -1
  217. package/lib/ui/Select.js +2 -2
  218. package/lib/ui/Select.js.map +1 -1
  219. package/lib/ui/Skeleton.js +2 -2
  220. package/lib/ui/Skeleton.js.map +1 -1
  221. package/lib/ui/Slider.js +2 -2
  222. package/lib/ui/Switch.js +2 -2
  223. package/lib/ui/Switch.js.map +1 -1
  224. package/lib/ui/Tabs.js +2 -2
  225. package/lib/ui/Textarea.js +2 -2
  226. package/lib/ui/Textarea.js.map +1 -1
  227. package/lib/ui/Toggle.js +3 -3
  228. package/lib/ui/Toggle.js.map +1 -1
  229. package/lib/ui/ToggleGroup.js +2 -2
  230. package/lib/ui/ToggleGroup.js.map +1 -1
  231. package/lib/ui/Tooltip.js +2 -2
  232. package/lib/useExposedProps-DE9lR6MF.js +9 -0
  233. package/lib/useExposedProps-DE9lR6MF.js.map +1 -0
  234. package/lib/{utils-DcpDOncX.js → utils-R0j3Raw1.js} +30 -31
  235. package/lib/{utils-DcpDOncX.js.map → utils-R0j3Raw1.js.map} +1 -1
  236. package/lib/zudoku.auth-auth0.js +1 -1
  237. package/lib/zudoku.auth-auth0.js.map +1 -1
  238. package/lib/zudoku.auth-clerk.js +2 -2
  239. package/lib/zudoku.auth-clerk.js.map +1 -1
  240. package/lib/zudoku.auth-openid.js +348 -346
  241. package/lib/zudoku.auth-openid.js.map +1 -1
  242. package/lib/zudoku.components.js +679 -939
  243. package/lib/zudoku.components.js.map +1 -1
  244. package/lib/zudoku.openapi-worker.js +1 -1
  245. package/lib/zudoku.openapi-worker.js.map +1 -1
  246. package/lib/zudoku.plugin-api-catalog.js +3 -3
  247. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  248. package/lib/zudoku.plugin-api-keys.js +15 -16
  249. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  250. package/lib/zudoku.plugin-custom-pages.js +4 -4
  251. package/lib/zudoku.plugin-custom-pages.js.map +1 -1
  252. package/lib/zudoku.plugin-markdown.js +2 -2
  253. package/lib/zudoku.plugin-markdown.js.map +1 -1
  254. package/lib/zudoku.plugin-openapi.js +5 -5
  255. package/lib/zudoku.plugin-redirect.js +1 -1
  256. package/lib/zudoku.plugin-redirect.js.map +1 -1
  257. package/lib/zudoku.plugin-search-inkeep.js +1 -1
  258. package/lib/zudoku.plugin-search-inkeep.js.map +1 -1
  259. package/package.json +35 -35
  260. package/src/app/demo.tsx +1 -1
  261. package/src/app/entry.client.tsx +1 -15
  262. package/src/app/entry.server.tsx +2 -2
  263. package/src/app/main.tsx +1 -1
  264. package/src/app/sentry.ts +1 -1
  265. package/src/app/standalone.tsx +1 -1
  266. package/src/lib/authentication/components/CallbackHandler.tsx +1 -1
  267. package/src/lib/authentication/components/SignIn.tsx +1 -1
  268. package/src/lib/authentication/components/SignOut.tsx +1 -1
  269. package/src/lib/components/AnchorLink.tsx +1 -1
  270. package/src/lib/components/Bootstrap.tsx +4 -6
  271. package/src/lib/components/Header.tsx +1 -1
  272. package/src/lib/components/Layout.tsx +1 -1
  273. package/src/lib/components/NotFoundPage.tsx +1 -1
  274. package/src/lib/components/SlotletProvider.tsx +1 -1
  275. package/src/lib/components/TopNavigation.tsx +1 -1
  276. package/src/lib/components/Zudoku.tsx +1 -1
  277. package/src/lib/components/context/ZudokuContext.ts +1 -1
  278. package/src/lib/components/index.ts +1 -1
  279. package/src/lib/components/navigation/SidebarCategory.tsx +1 -1
  280. package/src/lib/components/navigation/SidebarItem.tsx +1 -1
  281. package/src/lib/components/navigation/utils.ts +1 -1
  282. package/src/lib/core/plugins.ts +3 -7
  283. package/src/lib/errors/RouterError.tsx +1 -1
  284. package/src/lib/plugins/api-keys/CreateApiKey.tsx +1 -1
  285. package/src/lib/plugins/api-keys/ProtectedRoute.tsx +1 -1
  286. package/src/lib/plugins/api-keys/SettingsApiKeys.tsx +1 -1
  287. package/src/lib/plugins/api-keys/index.tsx +1 -1
  288. package/src/lib/plugins/custom-pages/index.tsx +1 -1
  289. package/src/lib/plugins/markdown/MdxPage.tsx +1 -1
  290. package/src/lib/plugins/markdown/index.tsx +2 -1
  291. package/src/lib/plugins/openapi/Route.tsx +1 -1
  292. package/src/lib/plugins/openapi/Sidecar.tsx +1 -1
  293. package/src/lib/plugins/openapi/index.tsx +1 -1
  294. package/src/lib/plugins/redirect/index.tsx +1 -1
  295. package/src/lib/util/MdxComponents.tsx +1 -3
  296. package/src/lib/util/createVariantComponent.tsx +2 -2
  297. package/src/lib/util/useExposedProps.tsx +1 -1
  298. package/src/lib/util/useScrollToAnchor.ts +1 -1
  299. package/src/lib/util/useScrollToTop.ts +1 -1
  300. package/lib/AnchorLink-BR0MvI7n.js.map +0 -1
  301. package/lib/AuthenticationPlugin-D0Em0SwR.js.map +0 -1
  302. package/lib/MdxPage-Wp8QU0-q.js.map +0 -1
  303. package/lib/OperationList-u8xHU9-b.js +0 -4706
  304. package/lib/Route-DlG_HTMu.js +0 -11
  305. package/lib/Route-DlG_HTMu.js.map +0 -1
  306. package/lib/SlotletProvider-BgvYIPQe.js +0 -252
  307. package/lib/SlotletProvider-BgvYIPQe.js.map +0 -1
  308. package/lib/assets/index-B_Jk_Yzp.js.map +0 -1
  309. package/lib/assets/worker-C_2va8B8.js.map +0 -1
  310. package/lib/cn-BmFQLtkS.js.map +0 -1
  311. package/lib/createServer-BCAHdrpE.js.map +0 -1
  312. package/lib/index-BuAyrJe3.js +0 -46
  313. package/lib/index-BuAyrJe3.js.map +0 -1
  314. package/lib/index-CkwDvuPt.js.map +0 -1
  315. package/lib/index-Czzd9rjU.js +0 -899
  316. package/lib/index-Czzd9rjU.js.map +0 -1
  317. package/lib/index-Yn8c3UWE.js +0 -921
  318. package/lib/index-Yn8c3UWE.js.map +0 -1
  319. package/lib/index.esm-Bm8pj-bc.js +0 -675
  320. package/lib/index.esm-C5mr_sKO.js +0 -1193
  321. package/lib/index.esm-C5mr_sKO.js.map +0 -1
  322. package/lib/jsx-runtime-B6kdoens.js +0 -635
  323. package/lib/jsx-runtime-B6kdoens.js.map +0 -1
  324. package/lib/object_hash-CvlLgU-M.js +0 -785
  325. package/lib/object_hash-CvlLgU-M.js.map +0 -1
  326. package/lib/prism-csharp.min-Yizuc34Y.js +0 -35
  327. package/lib/prism-java.min-d5iT_mOd.js +0 -7
  328. package/lib/prism-ruby.min-C7LwcKyz.js +0 -10
  329. package/lib/prism-typescript.min-oSVeWCAd.js +0 -6
  330. package/lib/router-lfyopgBI.js +0 -3024
  331. package/lib/router-lfyopgBI.js.map +0 -1
  332. package/lib/state-tsXBLONe.js +0 -203
  333. package/lib/state-tsXBLONe.js.map +0 -1
  334. package/lib/useExposedProps-CTPtylCV.js +0 -10
  335. package/lib/useExposedProps-CTPtylCV.js.map +0 -1
@@ -3,7 +3,7 @@ import {
3
3
  createBrowserRouter,
4
4
  matchRoutes,
5
5
  type RouteObject,
6
- } from "react-router-dom";
6
+ } from "react-router";
7
7
  import config from "virtual:zudoku-config";
8
8
  import "virtual:zudoku-theme.css";
9
9
  import "vite/modulepreload-polyfill";
@@ -45,13 +45,6 @@ async function hydrateLazyRoutes(routes: RouteObject[]) {
45
45
  function render(routes: RouteObject[]) {
46
46
  const router = createBrowserRouter(routes, {
47
47
  basename: config.basePath,
48
- future: {
49
- v7_relativeSplatPath: true,
50
- v7_fetcherPersist: true,
51
- v7_partialHydration: true,
52
- v7_skipActionErrorRevalidation: true,
53
- v7_normalizeFormMethod: true,
54
- },
55
48
  });
56
49
  createRoot(root).render(<Bootstrap router={router} />);
57
50
  }
@@ -60,13 +53,6 @@ async function hydrate(routes: RouteObject[]) {
60
53
  await hydrateLazyRoutes(routes);
61
54
  const router = createBrowserRouter(routes, {
62
55
  basename: config.basePath,
63
- future: {
64
- v7_relativeSplatPath: true,
65
- v7_fetcherPersist: true,
66
- v7_partialHydration: true,
67
- v7_skipActionErrorRevalidation: true,
68
- v7_normalizeFormMethod: true,
69
- },
70
56
  });
71
57
 
72
58
  hydrateRoot(root, <Bootstrap hydrate router={router} />);
@@ -4,11 +4,11 @@ import type express from "express";
4
4
  import logger from "loglevel";
5
5
  import { Transform } from "node:stream";
6
6
  import { renderToPipeableStream, renderToStaticMarkup } from "react-dom/server";
7
- import { isRouteErrorResponse } from "react-router-dom";
8
7
  import {
9
8
  createStaticHandler,
10
9
  createStaticRouter,
11
- } from "react-router-dom/server.js";
10
+ isRouteErrorResponse,
11
+ } from "react-router";
12
12
  import "virtual:zudoku-theme.css";
13
13
  import "vite/modulepreload-polyfill";
14
14
  import { BootstrapStatic, ServerError } from "zudoku/components";
package/src/app/main.tsx CHANGED
@@ -1,4 +1,4 @@
1
- import { type RouteObject } from "react-router-dom";
1
+ import { type RouteObject } from "react-router";
2
2
  import { configuredApiKeysPlugin } from "virtual:zudoku-api-keys-plugin";
3
3
  import {
4
4
  configuredApiCatalogPlugins,
package/src/app/sentry.ts CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  matchRoutes,
6
6
  useLocation,
7
7
  useNavigationType,
8
- } from "react-router-dom";
8
+ } from "react-router";
9
9
 
10
10
  export const initSentry = ({ dsn }: { dsn: string }) => {
11
11
  Sentry.init({
@@ -1,5 +1,5 @@
1
1
  import { createRoot } from "react-dom/client";
2
- import { createBrowserRouter } from "react-router-dom";
2
+ import { createBrowserRouter } from "react-router";
3
3
  import { Bootstrap } from "zudoku/components";
4
4
  import type { ZudokuConfig } from "../config/validators/validate.js";
5
5
  import { openApiPlugin } from "../lib/plugins/openapi/index.js";
@@ -1,5 +1,5 @@
1
1
  import { useSuspenseQuery } from "@tanstack/react-query";
2
- import { Navigate } from "react-router-dom";
2
+ import { Navigate } from "react-router";
3
3
  import { ZudokuError } from "../../util/invariant.js";
4
4
 
5
5
  export function CallbackHandler({
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from "react";
2
- import { useSearchParams } from "react-router-dom";
2
+ import { useSearchParams } from "react-router";
3
3
  import { useZudoku } from "../../components/context/ZudokuContext.js";
4
4
 
5
5
  export const SignIn = () => {
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from "react";
2
- import { useNavigate } from "react-router-dom";
2
+ import { useNavigate } from "react-router";
3
3
  import { useZudoku } from "../../components/context/ZudokuContext.js";
4
4
 
5
5
  export const SignOut = () => {
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { Link, type LinkProps, useLocation } from "react-router-dom";
2
+ import { Link, type LinkProps, useLocation } from "react-router";
3
3
 
4
4
  /**
5
5
  * Link that scrolls to anchor even if the hash is already set in the URL.
@@ -5,12 +5,13 @@ import {
5
5
  } from "@tanstack/react-query";
6
6
  import { type HelmetData, HelmetProvider } from "@zudoku/react-helmet-async";
7
7
  import { StrictMode } from "react";
8
- import { type createBrowserRouter, RouterProvider } from "react-router-dom";
9
8
  import {
9
+ type createBrowserRouter,
10
10
  type createStaticRouter,
11
11
  type StaticHandlerContext,
12
12
  StaticRouterProvider,
13
- } from "react-router-dom/server.js";
13
+ } from "react-router";
14
+ import { RouterProvider } from "react-router/dom";
14
15
  import { StaggeredRenderContext } from "../plugins/openapi/StaggeredRender.js";
15
16
 
16
17
  const queryClient = new QueryClient({
@@ -33,10 +34,7 @@ const Bootstrap = ({
33
34
  <HydrationBoundary state={hydrate ? (window as any).DATA : undefined}>
34
35
  <HelmetProvider>
35
36
  <StaggeredRenderContext.Provider value={{ stagger: !hydrate }}>
36
- <RouterProvider
37
- router={router}
38
- future={{ v7_startTransition: true }}
39
- />
37
+ <RouterProvider router={router} />
40
38
  </StaggeredRenderContext.Provider>
41
39
  </HelmetProvider>
42
40
  </HydrationBoundary>
@@ -1,5 +1,5 @@
1
1
  import { memo } from "react";
2
- import { Link } from "react-router-dom";
2
+ import { Link } from "react-router";
3
3
  import { Button } from "zudoku/ui/Button.js";
4
4
  import { Skeleton } from "zudoku/ui/Skeleton.js";
5
5
  import { useAuth } from "../authentication/hook.js";
@@ -1,7 +1,7 @@
1
1
  import { Helmet } from "@zudoku/react-helmet-async";
2
2
  import { PanelLeftIcon } from "lucide-react";
3
3
  import { Suspense, useEffect, useRef, useState, type ReactNode } from "react";
4
- import { Outlet, useLocation, useNavigation } from "react-router-dom";
4
+ import { Outlet, useLocation, useNavigation } from "react-router";
5
5
  import { useSpinDelay } from "spin-delay";
6
6
  import { Drawer, DrawerTrigger } from "../ui/Drawer.js";
7
7
  import { cn } from "../util/cn.js";
@@ -1,5 +1,5 @@
1
1
  import { UnlinkIcon } from "lucide-react";
2
- import { Link, useParams } from "react-router-dom";
2
+ import { Link, useParams } from "react-router";
3
3
  import { CategoryHeading } from "./CategoryHeading.js";
4
4
  import { DeveloperHint } from "./DeveloperHint.js";
5
5
  import { Heading } from "./Heading.js";
@@ -10,7 +10,7 @@ import {
10
10
  type NavigateFunction,
11
11
  type Params,
12
12
  type SetURLSearchParams,
13
- } from "react-router-dom";
13
+ } from "react-router";
14
14
  import { useExposedProps } from "../util/useExposedProps.js";
15
15
 
16
16
  export type Slotlets = Record<
@@ -1,6 +1,6 @@
1
1
  import { cx } from "class-variance-authority";
2
2
  import { Suspense } from "react";
3
- import { NavLink, useNavigation } from "react-router-dom";
3
+ import { NavLink, useNavigation } from "react-router";
4
4
  import { TopNavigationItem } from "../../config/validators/common.js";
5
5
  import { useAuth } from "../authentication/hook.js";
6
6
  import { ZudokuError } from "../util/invariant.js";
@@ -11,7 +11,7 @@ import {
11
11
  useState,
12
12
  } from "react";
13
13
  import { ErrorBoundary } from "react-error-boundary";
14
- import { Outlet, useNavigation } from "react-router-dom";
14
+ import { Outlet, useNavigation } from "react-router";
15
15
  import { hasHead, isMdxProviderPlugin } from "../core/plugins.js";
16
16
  import { ZudokuContext, ZudokuContextOptions } from "../core/ZudokuContext.js";
17
17
  import { TopLevelError } from "../errors/TopLevelError.js";
@@ -1,6 +1,6 @@
1
1
  import { useQuery, useSuspenseQuery } from "@tanstack/react-query";
2
2
  import { createContext, useContext } from "react";
3
- import { matchPath, useLocation } from "react-router-dom";
3
+ import { matchPath, useLocation } from "react-router";
4
4
  import { ZudokuContext } from "../../core/ZudokuContext.js";
5
5
  import { joinPath } from "../../util/joinPath.js";
6
6
  import { traverseSidebar } from "../navigation/utils.js";
@@ -1,6 +1,6 @@
1
1
  import { useMDXComponents as useMDXComponentsImport } from "@mdx-js/react";
2
2
  import { Helmet } from "@zudoku/react-helmet-async";
3
- import { Link as LinkImport } from "react-router-dom";
3
+ import { Link as LinkImport } from "react-router";
4
4
  import { useAuthState } from "../authentication/state.js";
5
5
  import { RouterError as RouterErrorImport } from "../errors/RouterError.js";
6
6
  import { ServerError as ServerErrorImport } from "../errors/ServerError.js";
@@ -1,7 +1,7 @@
1
1
  import * as Collapsible from "@radix-ui/react-collapsible";
2
2
  import { ChevronRightIcon } from "lucide-react";
3
3
  import { useEffect, useState } from "react";
4
- import { NavLink, useMatch } from "react-router-dom";
4
+ import { NavLink, useMatch } from "react-router";
5
5
  import type { SidebarItemCategory } from "../../../config/validators/SidebarSchema.js";
6
6
  import { cn } from "../../util/cn.js";
7
7
  import { joinPath } from "../../util/joinPath.js";
@@ -1,6 +1,6 @@
1
1
  import { cva } from "class-variance-authority";
2
2
  import { ExternalLinkIcon } from "lucide-react";
3
- import { NavLink, useSearchParams } from "react-router-dom";
3
+ import { NavLink, useSearchParams } from "react-router";
4
4
 
5
5
  import type { SidebarItem as SidebarItemType } from "../../../config/validators/SidebarSchema.js";
6
6
  import { joinPath } from "../../util/joinPath.js";
@@ -1,4 +1,4 @@
1
- import { useLocation } from "react-router-dom";
1
+ import { useLocation } from "react-router";
2
2
  import type {
3
3
  SidebarItem,
4
4
  SidebarItemCategory,
@@ -1,6 +1,6 @@
1
- import type { LucideProps } from "lucide-react";
1
+ import type { LucideIcon } from "lucide-react";
2
2
  import { type ReactElement } from "react";
3
- import { type RouteObject } from "react-router-dom";
3
+ import { type RouteObject } from "react-router";
4
4
  import type { Sidebar } from "../../config/validators/SidebarSchema.js";
5
5
  import { MdxComponentsType } from "../util/MdxComponents.js";
6
6
  import { ZudokuContext, type ApiIdentity } from "./ZudokuContext.js";
@@ -40,11 +40,7 @@ export type ProfileNavigationItem = {
40
40
  weight?: number;
41
41
  category?: "top" | "middle" | "bottom";
42
42
  children?: ProfileNavigationItem[];
43
- icon?: React.ComponentType<
44
- LucideProps & {
45
- [key: string]: any;
46
- }
47
- >;
43
+ icon?: LucideIcon;
48
44
  };
49
45
 
50
46
  export interface CommonPlugin {
@@ -1,4 +1,4 @@
1
- import { isRouteErrorResponse, useRouteError } from "react-router-dom";
1
+ import { isRouteErrorResponse, useRouteError } from "react-router";
2
2
  import { NotFoundPage } from "../components/NotFoundPage.js";
3
3
  import { ErrorAlert } from "./ErrorAlert.js";
4
4
 
@@ -1,6 +1,6 @@
1
1
  import { useMutation } from "@tanstack/react-query";
2
2
  import { useForm } from "react-hook-form";
3
- import { Link, useNavigate } from "react-router-dom";
3
+ import { Link, useNavigate } from "react-router";
4
4
  import {
5
5
  Select,
6
6
  SelectContent,
@@ -1,4 +1,4 @@
1
- import { Outlet } from "react-router-dom";
1
+ import { Outlet } from "react-router";
2
2
  import { useAuth } from "../../authentication/hook.js";
3
3
  import { DeveloperHint } from "../../components/DeveloperHint.js";
4
4
  import { Button } from "../../ui/Button.js";
@@ -12,7 +12,7 @@ import {
12
12
  TrashIcon,
13
13
  } from "lucide-react";
14
14
  import { useState } from "react";
15
- import { Link } from "react-router-dom";
15
+ import { Link } from "react-router";
16
16
  import { useZudoku } from "../../components/context/ZudokuContext.js";
17
17
  import { Slotlet } from "../../components/SlotletProvider.js";
18
18
  import { Button } from "../../ui/Button.js";
@@ -1,5 +1,5 @@
1
1
  import { FileKey2Icon } from "lucide-react";
2
- import { type RouteObject } from "react-router-dom";
2
+ import { type RouteObject } from "react-router";
3
3
  import { ZudokuContext } from "../../core/ZudokuContext.js";
4
4
  import {
5
5
  type ApiIdentityPlugin,
@@ -1,5 +1,5 @@
1
1
  import { type ComponentType, type ReactNode } from "react";
2
- import type { RouteObject } from "react-router-dom";
2
+ import type { RouteObject } from "react-router";
3
3
  import { type ExposedComponentProps } from "../../components/SlotletProvider.js";
4
4
  import type { NavigationPlugin, ZudokuPlugin } from "../../core/plugins.js";
5
5
  import { CustomPage } from "./CustomPage.js";
@@ -2,7 +2,7 @@ import { useMDXComponents } from "@mdx-js/react";
2
2
  import slugify from "@sindresorhus/slugify";
3
3
  import { Helmet } from "@zudoku/react-helmet-async";
4
4
  import { type PropsWithChildren, useEffect } from "react";
5
- import { Link } from "react-router-dom";
5
+ import { Link } from "react-router";
6
6
  import { CategoryHeading } from "../../components/CategoryHeading.js";
7
7
  import { Heading } from "../../components/Heading.js";
8
8
  import { ProseClasses } from "../../components/Markdown.js";
@@ -1,6 +1,7 @@
1
1
  import type { Toc } from "@stefanprobst/rehype-extract-toc";
2
2
  import type { MDXProps } from "mdx/types.js";
3
- import { RouteObject } from "react-router-dom";
3
+ import { type JSX } from "react";
4
+ import { RouteObject } from "react-router";
4
5
  import { ZudokuDocsConfig } from "../../../config/validators/common.js";
5
6
  import type { ZudokuPlugin } from "../../core/plugins.js";
6
7
  import { DocResolver } from "./resolver.js";
@@ -1,4 +1,4 @@
1
- import { Outlet } from "react-router-dom";
1
+ import { Outlet } from "react-router";
2
2
  import type { GraphQLClient } from "./client/GraphQLClient.js";
3
3
  import { GraphQLProvider } from "./client/GraphQLContext.js";
4
4
  import { OasConfigProvider } from "./context.js";
@@ -1,7 +1,7 @@
1
1
  import { useSuspenseQuery } from "@tanstack/react-query";
2
2
  import { HTTPSnippet } from "@zudoku/httpsnippet";
3
3
  import { Fragment, useMemo, useTransition } from "react";
4
- import { useSearchParams } from "react-router-dom";
4
+ import { useSearchParams } from "react-router";
5
5
  import { useSelectedServerStore } from "../../authentication/state.js";
6
6
  import { TextColorMap } from "../../components/navigation/SidebarBadge.js";
7
7
  import { SyntaxHighlight } from "../../components/SyntaxHighlight.js";
@@ -1,4 +1,4 @@
1
- import { matchPath, type RouteObject } from "react-router-dom";
1
+ import { matchPath, type RouteObject } from "react-router";
2
2
  import { type ZudokuPlugin } from "../../core/plugins.js";
3
3
  import { graphql } from "./graphql/index.js";
4
4
 
@@ -1,4 +1,4 @@
1
- import { redirect } from "react-router-dom";
1
+ import { redirect } from "react-router";
2
2
  import { ZudokuRedirect } from "../../../config/validators/common.js";
3
3
  import type { ZudokuPlugin } from "../../core/plugins.js";
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { MDXComponents } from "mdx/types.js";
2
- import { Link } from "react-router-dom";
2
+ import { Link } from "react-router";
3
3
  import { Heading } from "../components/Heading.js";
4
4
  import { InlineCode } from "../components/InlineCode.js";
5
5
  import { SyntaxHighlight } from "../components/SyntaxHighlight.js";
@@ -8,7 +8,6 @@ import { Callout } from "../ui/Callout.js";
8
8
  export type MdxComponentsType = Readonly<MDXComponents> | null | undefined;
9
9
 
10
10
  export const MdxComponents = {
11
- // @ts-expect-error Node is not in types but still gets passed
12
11
  img: ({ node, ...props }) => {
13
12
  if (/\.(mp4|webm|mov|avi)$/.test(props.src ?? "")) {
14
13
  return <video src={props.src} controls playsInline autoPlay loop />;
@@ -45,7 +44,6 @@ export const MdxComponents = {
45
44
  {children}
46
45
  </Heading>
47
46
  ),
48
- // @ts-expect-error Node is not in types but still gets passed
49
47
  a: ({ href, node, ...props }) =>
50
48
  href && !href.startsWith("http") ? (
51
49
  <Link to={href} relative="path" {...props} />
@@ -2,11 +2,11 @@ import { Slot } from "@radix-ui/react-slot";
2
2
  import { cva } from "class-variance-authority";
3
3
  import type { ClassValue } from "clsx";
4
4
  import * as React from "react";
5
- import type { JSX } from "react/jsx-runtime";
5
+ import { type HTMLElementType, type JSX } from "react";
6
6
  import { cn } from "./cn.js";
7
7
 
8
8
  const createVariantComponent = <
9
- E extends keyof React.ReactHTML,
9
+ E extends HTMLElementType,
10
10
  C extends ReturnType<typeof cva>,
11
11
  >(
12
12
  tag: E,
@@ -3,7 +3,7 @@ import {
3
3
  useNavigate,
4
4
  useParams,
5
5
  useSearchParams,
6
- } from "react-router-dom";
6
+ } from "react-router";
7
7
  import type { ExposedComponentProps } from "../components/SlotletProvider.js";
8
8
 
9
9
  export const useExposedProps = (): ExposedComponentProps => {
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from "react";
2
- import { useLocation } from "react-router-dom";
2
+ import { useLocation } from "react-router";
3
3
  import { useViewportAnchor } from "../components/context/ViewportAnchorContext.js";
4
4
  import { DATA_ANCHOR_ATTR } from "../components/navigation/SidebarItem.js";
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useRef } from "react";
2
- import { useLocation } from "react-router-dom";
2
+ import { useLocation } from "react-router";
3
3
 
4
4
  export const useScrollToTop = () => {
5
5
  const location = useLocation();
@@ -1 +0,0 @@
1
- {"version":3,"file":"AnchorLink-BR0MvI7n.js","sources":["../../../node_modules/.pnpm/@mdx-js+react@3.0.1_@types+react@18.3.11_react@18.3.1/node_modules/@mdx-js/react/lib/index.js","../src/lib/components/AnchorLink.tsx"],"sourcesContent":["/**\n * @typedef {import('mdx/types.js').MDXComponents} MDXComponents\n * @typedef {import('react').Component<{}, {}, unknown>} Component\n * @typedef {import('react').ReactNode} ReactNode\n */\n\n/**\n * @callback MergeComponents\n * Custom merge function.\n * @param {Readonly<MDXComponents>} currentComponents\n * Current components from the context.\n * @returns {MDXComponents}\n * Additional components.\n *\n * @typedef Props\n * Configuration for `MDXProvider`.\n * @property {ReactNode | null | undefined} [children]\n * Children (optional).\n * @property {Readonly<MDXComponents> | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @property {boolean | null | undefined} [disableParentContext=false]\n * Turn off outer component context (default: `false`).\n */\n\nimport React from 'react'\n\n/** @type {Readonly<MDXComponents>} */\nconst emptyComponents = {}\n\nconst MDXContext = React.createContext(emptyComponents)\n\n/**\n * Get current components from the MDX Context.\n *\n * @param {Readonly<MDXComponents> | MergeComponents | null | undefined} [components]\n * Additional components to use or a function that creates them (optional).\n * @returns {MDXComponents}\n * Current components.\n */\nexport function useMDXComponents(components) {\n const contextComponents = React.useContext(MDXContext)\n\n // Memoize to avoid unnecessary top-level context changes\n return React.useMemo(\n function () {\n // Custom merge via a function prop\n if (typeof components === 'function') {\n return components(contextComponents)\n }\n\n return {...contextComponents, ...components}\n },\n [contextComponents, components]\n )\n}\n\n/**\n * Provider for MDX context.\n *\n * @param {Readonly<Props>} properties\n * Properties.\n * @returns {JSX.Element}\n * Element.\n * @satisfies {Component}\n */\nexport function MDXProvider(properties) {\n /** @type {Readonly<MDXComponents>} */\n let allComponents\n\n if (properties.disableParentContext) {\n allComponents =\n typeof properties.components === 'function'\n ? properties.components(emptyComponents)\n : properties.components || emptyComponents\n } else {\n allComponents = useMDXComponents(properties.components)\n }\n\n return React.createElement(\n MDXContext.Provider,\n {value: allComponents},\n properties.children\n )\n}\n","import React from \"react\";\nimport { Link, type LinkProps, useLocation } from \"react-router-dom\";\n\n/**\n * Link that scrolls to anchor even if the hash is already set in the URL.\n */\nexport const AnchorLink = (props: LinkProps) => {\n const location = useLocation();\n const hash = typeof props.to === \"string\" ? props.to : props.to.hash;\n\n const handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (!hash?.startsWith(\"#\") || hash !== location.hash) return;\n\n event.preventDefault();\n document.getElementById(hash.slice(1))?.scrollIntoView();\n };\n\n return <Link onClick={handleClick} {...props} />;\n};\n"],"names":["emptyComponents","MDXContext","React","useMDXComponents","components","contextComponents","MDXProvider","properties","allComponents","AnchorLink","props","location","useLocation","hash","handleClick","event","_a","jsx","Link"],"mappings":";;;;AA2BA,MAAMA,IAAkB,CAAE,GAEpBC,IAAaC,EAAM,cAAcF,CAAe;AAU/C,SAASG,EAAiBC,GAAY;AAC3C,QAAMC,IAAoBH,EAAM,WAAWD,CAAU;AAGrD,SAAOC,EAAM;AAAA,IACX,WAAY;AAEV,aAAI,OAAOE,KAAe,aACjBA,EAAWC,CAAiB,IAG9B,EAAC,GAAGA,GAAmB,GAAGD,EAAU;AAAA,IAC5C;AAAA,IACD,CAACC,GAAmBD,CAAU;AAAA,EAC/B;AACH;AAWO,SAASE,EAAYC,GAAY;AAEtC,MAAIC;AAEJ,SAAID,EAAW,uBACbC,IACE,OAAOD,EAAW,cAAe,aAC7BA,EAAW,WAAWP,CAAe,IACrCO,EAAW,cAAcP,IAE/BQ,IAAgBL,EAAiBI,EAAW,UAAU,GAGjDL,EAAM;AAAA,IACXD,EAAW;AAAA,IACX,EAAC,OAAOO,EAAa;AAAA,IACrBD,EAAW;AAAA,EACZ;AACH;AC7Ea,MAAAE,IAAa,CAACC,MAAqB;AAC9C,QAAMC,IAAWC,KACXC,IAAO,OAAOH,EAAM,MAAO,WAAWA,EAAM,KAAKA,EAAM,GAAG,MAE1DI,IAAc,CAACC,MAA+C;;AAClE,IAAI,EAACF,KAAA,QAAAA,EAAM,WAAW,SAAQA,MAASF,EAAS,SAEhDI,EAAM,eAAe,IACrBC,IAAA,SAAS,eAAeH,EAAK,MAAM,CAAC,CAAC,MAArC,QAAAG,EAAwC;AAAA,EAAe;AAGzD,SAAQC,gBAAAA,EAAAA,IAAAC,GAAA,EAAK,SAASJ,GAAc,GAAGJ,EAAO,CAAA;AAChD;","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthenticationPlugin-D0Em0SwR.js","sources":["../src/lib/authentication/components/SignIn.tsx","../src/lib/authentication/components/SignOut.tsx","../src/lib/authentication/components/SignUp.tsx","../src/lib/authentication/AuthenticationPlugin.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { useZudoku } from \"../../components/context/ZudokuContext.js\";\n\nexport const SignIn = () => {\n const context = useZudoku();\n const [search] = useSearchParams();\n useEffect(() => {\n void context.authentication?.signIn({\n redirectTo: search.get(\"redirect\") ?? undefined,\n });\n }, [context.authentication, search]);\n\n return null;\n};\n","import { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useZudoku } from \"../../components/context/ZudokuContext.js\";\n\nexport const SignOut = () => {\n const context = useZudoku();\n const navigate = useNavigate();\n useEffect(() => {\n void context.authentication?.signOut().then(() => navigate(\"/\"));\n }, [navigate, context.authentication]);\n\n return null;\n};\n","import { useEffect } from \"react\";\nimport { useZudoku } from \"../../components/context/ZudokuContext.js\";\n\nexport const SignUp = () => {\n const context = useZudoku();\n useEffect(() => {\n void (context.authentication?.signUp() ?? context.authentication?.signIn());\n }, [context.authentication]);\n\n return null;\n};\n","import { LogOutIcon } from \"lucide-react\";\nimport {\n CommonPlugin,\n NavigationPlugin,\n ProfileMenuPlugin,\n} from \"../core/plugins.js\";\nimport { SignIn } from \"./components/SignIn.js\";\nimport { SignOut } from \"./components/SignOut.js\";\nimport { SignUp } from \"./components/SignUp.js\";\n\ntype PluginInterface = NavigationPlugin & CommonPlugin & ProfileMenuPlugin;\n\nexport class AuthenticationPlugin implements PluginInterface {\n getRoutes() {\n return [\n {\n path: \"/signout\",\n element: <SignOut />,\n },\n {\n path: \"/signin\",\n element: <SignIn />,\n },\n {\n path: \"/signup\",\n element: <SignUp />,\n },\n ];\n }\n\n getProfileMenuItems() {\n return [\n {\n label: \"Logout\",\n path: \"/signout\",\n category: \"bottom\",\n icon: LogOutIcon,\n } as const,\n ];\n }\n}\n"],"names":["SignIn","context","useZudoku","search","useSearchParams","useEffect","_a","SignOut","navigate","useNavigate","SignUp","_b","AuthenticationPlugin","LogOutIcon"],"mappings":";;;;;;AAIO,MAAMA,IAAS,MAAM;AAC1B,QAAMC,IAAUC,KACV,CAACC,CAAM,IAAIC;AACjB,SAAAC,EAAU,MAAM;;AACT,KAAAC,IAAAL,EAAQ,mBAAR,QAAAK,EAAwB,OAAO;AAAA,MAClC,YAAYH,EAAO,IAAI,UAAU,KAAK;AAAA,IAAA;AAAA,EAEvC,GAAA,CAACF,EAAQ,gBAAgBE,CAAM,CAAC,GAE5B;AACT,GCVaI,IAAU,MAAM;AAC3B,QAAMN,IAAUC,KACVM,IAAWC;AACjB,SAAAJ,EAAU,MAAM;;AACT,KAAAC,IAAAL,EAAQ,mBAAR,QAAAK,EAAwB,UAAU,KAAK,MAAME,EAAS,GAAG;AAAA,EAC7D,GAAA,CAACA,GAAUP,EAAQ,cAAc,CAAC,GAE9B;AACT,GCTaS,IAAS,MAAM;AAC1B,QAAMT,IAAUC;AAChB,SAAAG,EAAU,MAAM;;AACd,MAAMC,IAAAL,EAAQ,mBAAR,gBAAAK,EAAwB,eAAYK,IAAAV,EAAQ,mBAAR,QAAAU,EAAwB;AAAA,EAAO,GACxE,CAACV,EAAQ,cAAc,CAAC,GAEpB;AACT;ACEO,MAAMW,EAAgD;AAAA,EAC3D,YAAY;AACH,WAAA;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,+BAAUL,GAAQ,EAAA;AAAA,MACpB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,+BAAUP,GAAO,EAAA;AAAA,MACnB;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,+BAAUU,GAAO,EAAA;AAAA,MACnB;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,sBAAsB;AACb,WAAA;AAAA,MACL;AAAA,QACE,OAAO;AAAA,QACP,MAAM;AAAA,QACN,UAAU;AAAA,QACV,MAAMG;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AACF;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MdxPage-Wp8QU0-q.js","sources":["../src/lib/plugins/markdown/Toc.tsx","../src/lib/plugins/markdown/MdxPage.tsx"],"sourcesContent":["import type { TocEntry } from \"@stefanprobst/rehype-extract-toc\";\nimport { ListTreeIcon } from \"lucide-react\";\nimport {\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type PropsWithChildren,\n} from \"react\";\nimport { AnchorLink } from \"../../components/AnchorLink.js\";\nimport { useViewportAnchor } from \"../../components/context/ViewportAnchorContext.js\";\nimport { cn } from \"../../util/cn.js\";\n\nconst DATA_ANCHOR_ATTR = \"data-active\";\n\nconst TocItem = ({\n item,\n children,\n className,\n isActive,\n}: PropsWithChildren<{\n item: TocEntry;\n isActive: boolean;\n className?: string;\n}>) => {\n return (\n <li\n className={cn(\n \"truncate\",\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75\",\n className,\n )}\n title={item.value}\n >\n <AnchorLink\n to={`#${item.id}`}\n {...{ [DATA_ANCHOR_ATTR]: item.id }}\n className={cn(\n isActive\n ? \"text-primary\"\n : \"text-foreground/65 dark:text-foreground/75 hover:text-foreground\",\n )}\n >\n {item.value}\n </AnchorLink>\n {children}\n </li>\n );\n};\n\nexport const Toc = ({ entries }: { entries: TocEntry[] }) => {\n const { activeAnchor } = useViewportAnchor();\n const listWrapperRef = useRef<HTMLUListElement>(null);\n const paintedOnce = useRef(false);\n const [indicatorStyle, setIndicatorStyles] = useState<CSSProperties>({\n top: 0,\n opacity: 0,\n });\n\n // synchronize active anchor indicator with the scroll position\n useEffect(() => {\n if (!listWrapperRef.current) return;\n\n const activeElement = listWrapperRef.current.querySelector(\n `[${DATA_ANCHOR_ATTR}='${activeAnchor}']`,\n );\n\n if (!activeElement) {\n setIndicatorStyles({ top: 0, opacity: 0 });\n return;\n }\n\n const topParent = listWrapperRef.current.getBoundingClientRect().top;\n const topElement = activeElement.getBoundingClientRect().top;\n\n setIndicatorStyles({\n opacity: 1,\n top: `${topElement - topParent}px`,\n });\n\n if (paintedOnce.current) return;\n\n // after all is painted, the indicator should animate\n requestIdleCallback(() => {\n paintedOnce.current = true;\n });\n }, [activeAnchor]);\n\n return (\n <aside className=\"sticky scrollbar top-[--header-height] h-[calc(100vh-var(--header-height))] pt-[--padding-content-top] pb-[--padding-content-bottom] overflow-y-auto ps-1 text-sm\">\n <div className=\"flex items-center gap-2 font-medium mb-2\">\n <ListTreeIcon size={16} />\n On this page\n </div>\n <div className=\"relative ms-2 ps-4\">\n <div className=\"absolute inset-0 right-auto bg-border w-[2px]\" />\n <div\n className={cn(\n \"absolute -left-px -translate-y-1 h-6 w-[4px] rounded bg-primary\",\n paintedOnce.current &&\n \"ease-out [transition:top_150ms,opacity_325ms]\",\n )}\n style={indicatorStyle}\n />\n <ul\n ref={listWrapperRef}\n className=\"relative font-medium list-none space-y-2\"\n >\n {entries.map((item) => (\n <TocItem\n isActive={item.id === activeAnchor}\n key={item.id}\n item={item}\n className=\"pl-0\"\n >\n {item.children && (\n <ul className=\"list-none pl-4 pt-2 space-y-2\">\n {item.children.map((child) => (\n <TocItem\n item={child}\n isActive={child.id === activeAnchor}\n key={child.id}\n />\n ))}\n </ul>\n )}\n </TocItem>\n ))}\n </ul>\n </div>\n </aside>\n );\n};\n","import { useMDXComponents } from \"@mdx-js/react\";\nimport slugify from \"@sindresorhus/slugify\";\nimport { Helmet } from \"@zudoku/react-helmet-async\";\nimport { type PropsWithChildren, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { CategoryHeading } from \"../../components/CategoryHeading.js\";\nimport { Heading } from \"../../components/Heading.js\";\nimport { ProseClasses } from \"../../components/Markdown.js\";\nimport {\n useCurrentItem,\n usePrevNext,\n} from \"../../components/navigation/utils.js\";\nimport type { MdxComponentsType } from \"../../util/MdxComponents.js\";\nimport { cn } from \"../../util/cn.js\";\nimport { Toc } from \"./Toc.js\";\nimport { MarkdownPluginDefaultOptions, MDXImport } from \"./index.js\";\n\ndeclare global {\n interface Window {\n __getReactRefreshIgnoredExports?: (args: {\n id: string;\n }) => string[] | undefined;\n }\n}\n\nconst MarkdownHeadings = {\n h2: ({ children, id }) => (\n <Heading level={2} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n h3: ({ children, id }) => (\n <Heading level={3} id={id} registerSidebarAnchor>\n {children}\n </Heading>\n ),\n} satisfies MdxComponentsType;\n\nexport const MdxPage = ({\n mdxComponent: MdxComponent,\n file,\n frontmatter = {},\n defaultOptions,\n tableOfContents,\n excerpt,\n}: PropsWithChildren<\n Omit<MDXImport, \"default\"> & {\n file: string;\n mdxComponent: MDXImport[\"default\"];\n defaultOptions?: MarkdownPluginDefaultOptions;\n }\n>) => {\n const categoryTitle = useCurrentItem()?.categoryLabel;\n const title = frontmatter.title;\n const category = frontmatter.category ?? categoryTitle;\n const hideToc = frontmatter.toc === false || defaultOptions?.toc === false;\n const pageTitle =\n tableOfContents.find((item) => item.depth === 1)?.value ?? title;\n const hidePager =\n frontmatter.disablePager ?? defaultOptions?.disablePager ?? false;\n\n const tocEntries =\n tableOfContents.find((item) => item.depth === 1)?.children ??\n // if `title` is provided by frontmatter it does not appear in the table of contents\n tableOfContents.filter((item) => item.depth === 2);\n\n const showToc = !hideToc && tocEntries.length > 0;\n\n const { prev, next } = usePrevNext();\n\n useEffect(() => {\n if (process.env.NODE_ENV === \"development\") {\n window.__getReactRefreshIgnoredExports = ({ id }) => {\n if (!id.endsWith(file)) return;\n\n return [\"frontmatter\", \"tableOfContents\"];\n };\n\n return () => {\n window.__getReactRefreshIgnoredExports = undefined;\n };\n }\n }, [file]);\n\n return (\n <div className=\"xl:grid grid-cols-[--sidecar-grid-cols] gap-8 justify-between\">\n <Helmet>\n <title>{pageTitle}</title>\n {excerpt && <meta name=\"description\" content={excerpt} />}\n </Helmet>\n <div\n className={cn(\n ProseClasses,\n \"max-w-full xl:w-full xl:max-w-prose flex-1 flex-shrink pt-[--padding-content-top] pb-[--padding-content-bottom]\",\n )}\n >\n {(category || title) && (\n <header>\n {category && <CategoryHeading>{category}</CategoryHeading>}\n {title && (\n <Heading level={1} id={slugify(title)}>\n {title}\n </Heading>\n )}\n </header>\n )}\n <MdxComponent\n components={{ ...useMDXComponents(), ...MarkdownHeadings }}\n />\n {!hidePager && (\n <>\n <hr />\n <div className=\"not-prose flex flex-wrap items-center justify-between gap-2 lg:gap-8\">\n {prev ? (\n <Link\n to={prev.id}\n className=\"flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-start hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={prev.label}\n >\n <div className=\"text-sm text-muted-foreground\">\n ← Previous page\n </div>\n <div className=\"text-lg text-primary truncate\">\n {prev.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n {next ? (\n <Link\n to={next.id}\n className=\"flex flex-col items-stretch gap-2 flex-1 min-w-max border rounded px-6 py-4 text-end hover:border-primary/85 transition shadow-sm hover:shadow-md\"\n title={next.label}\n >\n <div className=\"text-sm text-muted-foreground\">\n Next page →\n </div>\n <div className=\"text-lg text-primary truncate\">\n {next.label}\n </div>\n </Link>\n ) : (\n <div className=\"flex-1\" />\n )}\n </div>\n </>\n )}\n </div>\n <div className=\"hidden xl:block\">\n {showToc && <Toc entries={tocEntries} />}\n </div>\n </div>\n );\n};\n"],"names":["DATA_ANCHOR_ATTR","TocItem","item","children","className","isActive","jsxs","cn","jsx","AnchorLink","Toc","entries","activeAnchor","useViewportAnchor","listWrapperRef","useRef","paintedOnce","indicatorStyle","setIndicatorStyles","useState","useEffect","activeElement","topParent","topElement","ListTreeIcon","child","MarkdownHeadings","id","Heading","MdxPage","MdxComponent","file","frontmatter","defaultOptions","tableOfContents","excerpt","categoryTitle","_a","useCurrentItem","title","category","hideToc","pageTitle","_b","hidePager","tocEntries","_c","showToc","prev","next","usePrevNext","Helmet","ProseClasses","CategoryHeading","slugify","useMDXComponents","Fragment","Link"],"mappings":"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"}